Calculate the parent blocks for this block and its children.
(optional): The parent block to this one, if it has one. Defaults to None.
(optional): Used internally to remember blocks that have been visited. Set to None.
gets the block that follows this one
Minimize the number of blocks in the graph of blocks starting with start by combining sequential blocks. This operation does not alter the operations of the graph or the functionality of its underlying program, however it does mutate the input graph.
The new starting point of the altered graph. May be the same or different than start.
Generated using TypeDoc
Represents a basic block of TealComponents in a graph that does not contain a branch condition.


Introduction
Welcome to the Feedback API! You can use our API to access Feedback API endpoints, which can get information on various surveys, projects, and users in our database.
We have language bindings in Javascript and C#! You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.
Authentication
To authorize, use this code:
var httprequest;
var thisIsJavScript;
Make sure to replace
YOUR_API_KEY
with your API key.
Information about how to obtain JWT TOKEN and include it in the request header. We need to make a decision on how to handle tokens. Included it in the request header like this:
Authorization: Bearer YOUR_API_KEY
Queries
Get All Queries
const kittn = require('kittn');
let api = kittn.authorize('meowmeowmeow');
let kittens = api.kittens.get();
The above command returns JSON structured like this:
[
{
"id": 1,
"name": "Fluffums",
"breed": "calico",
"fluffiness": 6,
"cuteness": 7
},
{
"id": 2,
"name": "Max",
"breed": "unknown",
"fluffiness": 5,
"cuteness": 10
}
]
This endpoint retrieves all kittens.
HTTP Request
GET http://example.com/api/kittens
Query Parameters
| Parameter | Default | Description |
|---|---|---|
| include_cats | false | If set to true, the result will also include cats. |
| available | true | If set to false, the result will include kittens that have already been adopted. |
Get a Specific Query
const query = require('query');
let api = query.authorize('meowmeowmeow');
let max = api.query.get(2);
The above command returns JSON structured like this:
{
"id": 2,
"name": "Max",
"breed": "unknown",
"fluffiness": 5,
"cuteness": 10
}
This endpoint retrieves a specific kitten.
HTTP Request
GET http://example.com/Queries/<ID>
URL Parameters
| Parameter | Description |
|---|---|
| ID | The ID of the query to retrieve |
Errors
The Feedback API uses the following error codes:
| Error Code | Meaning |
|---|---|
| 400 | Bad Request – Your request sucks |
| 401 | Unauthorized – Your API key is wrong |
| 403 | Forbidden – The object requested is hidden for administrators only |
| 404 | Not Found – The specified object could not be found |
| 406 | Not Acceptable – You requested a format that isn’t json |
| 429 | Too Many Requests – You’re requesting too many kittens! Slow down! |
| 500 | Internal Server Error – We had a problem with our server. Try again later. |
| 503 | Service Unavailable – We’re temporarily offline for maintenance. Please try again later. |


| DOSE: T+ 0:00 |
2 nuts |
oral |
Nutmeg |
|
| T+ 2:30 |
5 hits |
smoked |
Cannabis |
(plant material) |
About two years ago, me and a friend were planning to try nutmeg. We were searching for something that was relatively cheap and easy to get and we found that nutmeg was the thing to try. Neither me nor my friend ever did any drug other than cannabis and it was the first time I've heard about nutmeg and its psychotropic abilities. Needless to say mental preparation was almost an obligation as we all didn’t know a single hint of how a 'spice' trip could feel like. So me and my friend, S, were off in search for some nutmeg and we found them quite easily at a vegetarian grocery. We bought 3 bags containing 4 nuts each, which means approximately 20g per bag. Being informed about the dosage, I know that we wouldn't take all of it, but we decided to buy this much just in case, it was pretty cheap anyway (1$/bag).
When it was the time to get high we realized that we didn't have anything to ground the thing so we thought “What the hell” and just ate the nuts whole. We took two nuts each. Thinking about it, this was quite hazardous since we didn't really know the dosage that a whole nut could contain. But it just happened to be the right dosage. I've read about “the awful as hell” taste that people were complaining about on some of the experiences, but to me, as I was chewing, the nuts had only a extreme bitter taste. And liking everything that's bitter (especially strong coffees and coca nuts), it didn't disturb me too much. My friend, though, had a hard time trying to swallow it down and had to use water to get the thing in. He told me it was because of the strange texture, which he compared to trying to eat wood. I agreed, although I didn't notice at first.
We didn't know exactly when the trip would kick in, so we just decided to wander on some internet sites. I thought it was taking quite long for the trip to kick in (2 hours actually, which is in the average – I'd learn about it after) so I said « damn it's not working, let's order something to eat ». So we did. While waiting for the food, we listened to some ambient music and that's when I felt the first wave coming in. I felt very heavy, my head was like a rock, my body felt like it was made of soft and heavy clay and my moves were very slow. S said he wasn't feeling anything yet.
After about 20 mins, the the lunch had arrived. While eating I found that the food tasted extremely good, although a bit strange. I was eating chicken wings and they had a « smokey » taste or something like it, but it was very good and delightful. It think I was beginning the trip, then. Everything around me, every colours and shades were more vivid but they were also very dark at the same time. They were appealing to my eyes but they were looking very “old-fashioned” (can't find a better description). And then I felt very relaxed, looking at the “old-fashioned” walls of my kitchen. Euphoria is slowly growing and every perception, especially sound and vision, is getting slightly different.
A few minute after we finished eating, some friends came by and one of them had a shitload of weed with him. Almost immediately after he had arrived, he prepared a bowl and offered me some hits. I was hesitant to smoke because I was just beginning to feel the nutmeg buzz and didn't know what to expect from it, but I decided to take a few hits anyway.
Upon smoking, I noticed the colours were not dark and “old-fashioned” anymore but very clear and blue-green like. I have to say that I am an synesthete (someone who can see colours when earing words, music, or touching objects, textures, etc.) and during this part of the trip, everything I heard (music, voices, noises) instantly generated beautiful green and blue waves before me. I was not actually seeing these waves but more like « day-dreaming » them, as in most case of synaesthesia. I never experienced anything as vivid as this before, and I'm quite sure this is not due to cannabis because like I said it never happened prior to this. It seems like everything is getting more and more brighter, music is incredibly good and I'm having lots of sociability.
Cannabis, however, seemed to make every single things incredibly funny. One of my friend, JP, was sitting near me and I was watching him. Then suddenly it occurred to me that JP could be compared to a ring (don't ask me why). I told him so and he told me he didn't understand that comparison. Hearing him and seeing he was perplexed made me laugh like hell. My friend who had also took nutmeg seemed to be tired and wasn't laughing. He told me later that everything that was said during the evening didn't made sense to him, he said he felt confused and numb but comfortable.
About an hour later or so we went upstairs to watch Clockwork Orange. I was coming down from the weed and I noticed the effects from the nutmegs were more present as ever. The colours shifted back to the dark “old-fashioned” ones and I became quite tired but yet still awake to concentrate on the movie, or so I thought. I was watching it for the first time and as it was playing, the more I tried to understand what was going on, the more I became confused and lost track of the plot. Actually, it seemed like I was a witness of the events and I couldn't do single thing about all of what was happening to that poor bum being beaten up to death. Then I thought, « do I like this movie, or not? ».
Thinking about it, I guess the nutmegs seemed to make objective judgements quite a hard task. After half of the movie, I became pissed off and went downstairs to make some cleaning in the kitchen to remove nutmeg rests and weed ashes. It seemed like I was cleaning for an eternity but I managed to do things quite fast. I can’t explain very well but it felt like I was acting faster than the speed of the time would allow me to. That was quite an odd feeling and I thought it was cool.
I smoke some more weed and go surf on the web for a couple of minutes. Then I notice that memory is seriously deficient. Everything I do is almost instantly forgotten. I didn't remember that I had done some cleaning and when I was about to go and do it, I noticed it was already done. Also, I was always forgetting what time it was and had to watch frequently at the clock.
The next morning, I wake up without remembering how and when I got into bed. I get up a bit dizzy but it's alright. I have a little headache and I still feel quite stoned, it felt like if I had smoked cannabis an hour ago or so. Everything feels good. Short-term memory is still very deficient and my eyes are still a little bit red. I play Age Of Empires 2 and I’m amazed that men once did what I’m playing. Actually, everything seems more amazing and interesting than normal. The rest of the day fells very dreamlike, still feeling numb like if I was constantly on a coming down of weed.
All in all, nutmeg was an extremely great experience and a mix with cannabis seemed to enhance the effects. No sign of tachycardia or health problems, only full pleasure and comfort.
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.


AM experts join to develop high-strength lightweight aluminium-based alloy 14 Nov 2019, 10:45 by Mike Richardson Share This Article Tweet ShareShareShare Subscribe to our FREE Newsletter Tags


Initial thoughts on c#
Posted October 13, 2016 by Matt Kraatz
Having just started the second half of the curriculum here at Nashville Software School, I am neck deep in C#. It’s been a very humbling reminder of my initial feelings three months ago with JavaScript, when I had just started NSS and was desperately trying to master the syntax and possibilities for my first programming language. But that reminder is encouraging, seeing how far I’ve come in a short three months, I’m confident that I can do it again with this new language, and potentially accomplish even more. In the meantime, I’ve found it surprisingly refreshing to take a break from my C# studies by working on some side projects I had started in JavaScript, where I actually know my around (enough).
The biggest shock to my system thus far with C# has been static typing. In JavaScript I rarely had to think about what type of data a variable would hold when I created it. That was convenient at times, but also turn into a breeding ground for bugs. Not explicitly declaring types also made it that much harder for other engineers to digest my code, resulting in more comments or even longer variable names. Working through challenges in C# that I never even had to consider in my front-end life has been a rewarding experience, and I’m even starting to carry some of those explicit principles through to my JavaScript code. While jarring at first, I’m learning to find comfort and elegance in explicit typing.
Speaking of types, there are so many! I’m fortunate to have an instructor team to guide me through the jungle here, working through use cases for certain types and explaining why others have been deprecated or are not applicable to certain situations. I also gained some enlightenment by working through Cory Foy’s koans repo, which helped understand–among other things–the intricacies of Array’s and why we rarely use them.
Also finally had a proper introduction to Test Driven Development, which, at first glance, seems far more straightforward to execute in C# than in the front-end applications we had been developing. Funny side note, I attended a JavaScript meetup just last night and heard an excellent talk from Jonathan Boston that–among other things–inspired me to write front-end code that can be easily tested without browser automation. Anyway, I’m looking forward to starting a project with TDD in mind. If done properly, bugs can be identified almost as soon as they’re created, and you have an explicit jumping off point for debugging. Previously, I could have created a bug without knowing it, and by the time it reared its ugly head, I’ve already written another thousand lines of code and have a heck of a time reverting back.
We’ve also spent a lot of time as a class discussing higher-level programming concepts. I really enjoy stretching my brain with theory, and have a bit of experience from college and my past career that I can apply to concepts like Entity Relationship Models and data structure. I’m excited to dig deeper into database languages like NoSQL and finally put together the complete picture of a full-stack application.
Tomorrow we’re going to work through building our own API. It’s crazy to think that we’re at this point after just a week of learning the syntax and philosophies of C#, but that’s encouraging more than anything else. Hopefully the other languages I plan to dig into over the next few months will get easier and easier the more I have under my belt.
Until next time, thanks for reading!


|
AnahitaPlus
|
This is a ROS package for interfacing with the PX4 hardware or the Sparton AHRS-8 hardware.
For the PX4, we are using the in-built inertial measurement unit (IMU) present in the PX4 for the robot. For the Sparton AHRS8, the driver communicates with the sensor using NMEA protocol and publishes the IMU data as ROS sensor messages.
The hardware_imu
package has been tested under ROS Kinetic and Ubuntu 16.04 LTS. The source code is released under a BSD 3-Clause license.
According to the installation instructions present here, run the following commands to install GeographicLib datasets which is required as a mavros dependency:
Download QGround Control and run it with PIXHAWK attached with your computer. Read the manual here for further instructions.
Run the following command from the root of your catkin workspace:
To run the PIXHAWK IMU:
where the PIXHAWK is assumed to be connected at the /dev/ttyACM0
port.
To run the Sparton AHRS8 IMU:
The mavros_node
is the main communication node for the MAVLink communication protocol used in the PX4 autopilot. The node belongs to the mavros package.
~imu/data
** (sensor_msgs/Imu) Imu data, orientation computed by FCU~imu/data_raw
** (sensor_msgs/Imu) Raw IMU data without orientation~imu/mag
** (sensor_msgs/MagneticField) FCU compass data~imu/temperature
** (sensor_msgs/Temperature) Temperature reported by FCU (usually from barometer)~imu/atm_pressure
** (sensor_msgs/FluidPressure) Air pressure.~imu/frame_id
** (string, default: fcu) Frame ID for this plugin.~imu/linear_acceleration_stdev
** (double, default: 0.0003) Gyro's standard deviation~imu/angular_velocity_stdev
** (double, default: !dec 0.02) Accel's standard deviation~imu/orientation_stdev
** (double, default: 1.0) Standard deviation for IMU.orientation~imu/magnetic_stdev
** (double, default: 0.0) Standard deviation for magnetic field message (undefined if: 0.0)This node takes the IMU data in quateranion format and convert it into euler angles. We calculate the roll, pitch and yaw using the following formulas:
where q = (w, x, y, z)
is the quaternion angle.
~/mavros/imu/data
** (sensor_msgs/Imu) Imu data, orientation computed by FCU/mavros/imu/yaw
** (std_msgs/Float64) Yaw data computed using quaternion to euler angles transformation **/mavros/imu/pitch
** (std_msgs/Float64) Pitch data computed using quaternion to euler angles transformation **/mavros/imu/roll
** (std_msgs/Float64) Roll data computed using quaternion to euler angles transformationThe node communicate with the sensor using the NMEA protocol and publishes IMU data.
~frame_id
** (string, default: ahrs8_imu
) Frame ID for this plugin~port
** (string, default: /dev/ttyUSB0
) Port at which sensor is connected~baud
** (double, default: 115200
) Baud rate for communication with the sensor~imu/data
** (sensor_msgs/Imu) IMU orientation data, orientation in the ahrs8_imu
frameThis node takes the IMU data in quateranion format and convert it into euler angles. We calculate the roll, pitch and yaw using the above formulas again
~/sparton/imu/data
** (sensor_msgs/Imu) Imu data, orientation computed by FCU/sparton/imu/yaw
** (std_msgs/Float64) Yaw data computed using quaternion to euler angles transformation **/sparton/imu/pitch
** (std_msgs/Float64) Pitch data computed using quaternion to euler angles transformation **/sparton/imu/roll
** (std_msgs/Float64) Roll data computed using quaternion to euler angles transformationPlease report bugs and request features using the Issue Tracker.


At Catalyst Behavioral Health we provide Individual Outpatient Mental Health Therapy for a wide range of mental health issues. We can also collaborate with schools and other medical providers to ensure continuity of care.
Therapy services are a useful tool for clients needing tools to make positive changes in their lives. Our providers offer therapy for anxiety, depression, anger management, and other mood disorders.
Eye Movement Desensitization and Reprocessing, or EMDR is a structured therapy which helps clients reduce the vividness and emotions associated with traumatic memories.
Cognitive-Behavioral Therapy, or CBT, treats problems and boosts happiness by modifying dysfunctional emotions, behaviors, and thoughts. CBT helps identify harmful thoughts, assess whether they are an accurate depiction of reality, and uses strategies to overcome them.
Resolve conflicts, and improve your relationship through couples counseling. You can make thoughtful decisions about rebuilding and strengthening your relationship or going your separate ways. Our providers focus on strengthening the relationship, achieving a deeper understanding of each other, and working on communications problems. Other issues addressed are infidelity, substance abuse, anger, child raising conflicts, and sexual difficulties.
In family therapy our providers address specific issues that are affecting the health of a family. We can assist with families going through difficult events, major transitions, or any mental and behavioral problems. Grief counseling is not only for those who have lost loved ones. Our providers can help individuals or families with many forms of change and loss, such as with divorce, miscarriages, relocations, and even the loss of a loved pet.
Our providers offer support for clients and their right to explore, define and articulate their own identity. We support and assist with the communication between clients and their families. We also offer our clients support for negative ideas or feelings of guilt, depression, anxiety, and low self esteem they may be experiencing.
We offer a 24/7 After-Hours Crisis Line for contacting your provider after office hours. In the event of a mental health emergency, please call our toll-free crisis Line at 1.800.247.4941, and they will alert your provider. Please Note: if this is a true medical emergency, you should call 911.
We work closely with a nearby off-site provider, Rebecca Olander at Encompass Care, for medication management services should they be needed.
Neuropsychological testing is an important component of the assessment and treatment of traumatic brain injury, dementia, neurological conditions, and psychiatric disorders. It is also used to examine the effects of toxic substances and medical conditions on brain function.
Offered by Dr. Tracy Kalnins
Concussion testing includes ImPACT (Immediate Post-Concussion Assessment and Cognitive Testing), an online neurocognitive assessment. It also includes baseline testing and post-injury testing which are used together to determine if a patient can safely return to physical activity.
Offered by Dr. Tracy Kalnins
Our providers assist clients in the process of ceasing to abuse addictive substances, such as drugs or alcohol, and they also help in maintaining sobriety. Clients with a primary diagnosis of chemical dependency and co-occurring mental health issues such as depression and anxiety attend therapy sessions with our providers in an outpatient setting.
Offered by Eric Harmes and Krysta Hunt
As a registered service provider for the state of Nebraska, Eric works closely with the office of probation to provide services to those on probation with legal concerns. Eric addresses mental health and substance abuse concerns from a trauma-informed approach.
Offered by Eric Harmes
Our providers regularly give professional presentations on a variety of issues in psychology. These can include educational seminars and staff trainings. If you know of a group who would benefit from additional education, please contact us to schedule this.
Offered by Dr. Tracy Kalnins
Other Services…
Each provider also has their own specialized areas and diagnoses. For a complete list of services provided, please view Our Providers page.


public class UnassignedInfo extends java.lang.Object implements ToXContent, Writeable<UnassignedInfo>
| Modifier and Type | Class and Description |
|---|---|
static class |
UnassignedInfo.Reason
Reason why the shard is in unassigned state.
|
ToXContent.DelegatingMapParams, ToXContent.MapParams, ToXContent.Params
| Modifier and Type | Field and Description |
|---|---|
static FormatDateTimeFormatter |
DATE_TIME_FORMATTER |
static java.lang.String |
INDEX_DELAYED_NODE_LEFT_TIMEOUT_SETTING |
EMPTY_PARAMS
| Constructor and Description |
|---|
UnassignedInfo(UnassignedInfo.Reason reason,
java.lang.String message)
creates an UnassingedInfo object based **current** time
|
UnassignedInfo(UnassignedInfo.Reason reason,
java.lang.String message,
java.lang.Throwable failure,
long unassignedTimeNanos,
long unassignedTimeMillis) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
equals(java.lang.Object o) |
static long |
findNextDelayedAllocationIn(ClusterState state)
Finds the next (closest) delay expiration of an unassigned shard in nanoseconds.
|
static long |
findSmallestDelayedAllocationSettingNanos(Settings settings,
ClusterState state)
Finds the smallest delay expiration setting in nanos of all unassigned shards that are still delayed.
|
long |
getAllocationDelayTimeoutSettingNanos(Settings settings,
Settings indexSettings)
The allocation delay value in nano seconds associated with the index (defaulting to node settings if not set).
|
java.lang.String |
getDetails()
Builds a string representation of the message and the failure if exists.
|
java.lang.Throwable |
getFailure()
Returns additional failure exception details if exists.
|
long |
getLastComputedLeftDelayNanos()
The delay in nanoseconds until this unassigned shard can be reassigned.
|
java.lang.String |
getMessage()
Returns optional details explaining the reasons.
|
static int |
getNumberOfDelayedUnassigned(ClusterState state)
Returns the number of shards that are unassigned and currently being delayed.
|
UnassignedInfo.Reason |
getReason()
The reason why the shard is unassigned.
|
long |
getUnassignedTimeInMillis()
The timestamp in milliseconds when the shard became unassigned, based on System.currentTimeMillis().
|
long |
getUnassignedTimeInNanos()
The timestamp in nanoseconds when the shard became unassigned, based on System.nanoTime().
|
int |
hashCode() |
UnassignedInfo |
readFrom(StreamInput in)
Reads a copy of an object with the same type form the stream input
The caller object remains unchanged.
|
java.lang.String |
shortSummary() |
java.lang.String |
toString() |
XContentBuilder |
toXContent(XContentBuilder builder,
ToXContent.Params params) |
long |
updateDelay(long nanoTimeNow,
Settings settings,
Settings indexSettings)
Updates delay left based on current time (in nanoseconds) and index/node settings.
|
void |
writeTo(StreamOutput out)
Writes the current object into the output stream out
|
public static final FormatDateTimeFormatter DATE_TIME_FORMATTER
public static final java.lang.String INDEX_DELAYED_NODE_LEFT_TIMEOUT_SETTING
public UnassignedInfo(UnassignedInfo.Reason reason, java.lang.String message)
reason
- the cause for making this shard unassigned. See UnassignedInfo.Reason
for more information.message
- more information about cause.public UnassignedInfo(UnassignedInfo.Reason reason, @Nullable java.lang.String message, @Nullable java.lang.Throwable failure, long unassignedTimeNanos, long unassignedTimeMillis)
reason
- the cause for making this shard unassigned. See UnassignedInfo.Reason
for more information.message
- more information about cause.failure
- the shard level failure that caused this shard to be unassigned, if exists.unassignedTimeNanos
- the time to use as the base for any delayed re-assignment calculationunassignedTimeMillis
- the time of unassignment used to display to in our reporting.public void writeTo(StreamOutput out) throws java.io.IOException
Writeable
writeTo
in interface Writeable<UnassignedInfo>
java.io.IOException
public UnassignedInfo readFrom(StreamInput in) throws java.io.IOException
StreamableReader
readFrom
in interface StreamableReader<UnassignedInfo>
java.io.IOException
public UnassignedInfo.Reason getReason()
public long getUnassignedTimeInMillis()
public long getUnassignedTimeInNanos()
@Nullable public java.lang.String getMessage()
@Nullable public java.lang.Throwable getFailure()
@Nullable public java.lang.String getDetails()
public long getAllocationDelayTimeoutSettingNanos(Settings settings, Settings indexSettings)
public long getLastComputedLeftDelayNanos()
updateDelay(long, Settings, Settings)
method.public long updateDelay(long nanoTimeNow, Settings settings, Settings indexSettings)
public static int getNumberOfDelayedUnassigned(ClusterState state)
public static long findSmallestDelayedAllocationSettingNanos(Settings settings, ClusterState state)
public static long findNextDelayedAllocationIn(ClusterState state)
public java.lang.String shortSummary()
public java.lang.String toString()
toString
in class java.lang.Object
public XContentBuilder toXContent(XContentBuilder builder, ToXContent.Params params) throws java.io.IOException
toXContent
in interface ToXContent
java.io.IOException
public boolean equals(java.lang.Object o)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object


Experienced in developing web applications with React, Rails, and PostgreSQL.
Creative problem-solver who thrives in the weeds.
Insatiable appetite for learning.
also...
a jazz bassist, a whisky enthusiast, and a pretty good cook.
Single-page React-on-Rails CRUD application inspired by Spotify with user authentication, playlists, and a persistent media player.
Interactive map of Scotch whisky regions rendering visualizations for tasting profiles.
A simple calculator application built as an exploration in React Native.


So far some components are available. To see them in action and to take a look at the code select documentation.


Bamazon
Products
Sort By Genre
Hip-Hop
Rock
Latin
Reggae
All
Cover
Title
Price
Stock
Qty
Checkout
×
Title:
Qty:
Sub-Total: $


I have a simple question. Does someone know how the Ammo Pack interval works?
For me it reload my ammo randomly.
Sometimes a must wait 1 minute for a new grenade, sometimes i have it instantly (in a few seconds).
Sometimes i must wait 1 minute for new mortar grenades, sometimes i have a new within seconds.
I don't see any system behind that refresh rate.
juress
Theme Developer
Isn't it like in BF3?
If all ammo full except explosives -> faster explosive replenish


Online CPD Opportunities
Online CPD Opportunities!
All Staff
GDPR mandatory training
Level 2 Safeguarding
Pastoral & Wellbeing
Teaching students who have suffered complex trauma
We all have mental health: an introduction for teachers
Child protection for teachers
Making sense of mental health problems
Keeping them safe
Young people and their mental health
ACEs: Introduction to Adverse Childhood Experiences & Early Trauma
Professional relationships with young people
Recognising and preventing FGM
Emotional intelligence at work
Understanding young minds
Safeguarding – child sexual abuse and exploitation
Introduction to child psychology
Get moving, get healthy
Bullying in schools
Understanding depression and low mood in young people
Special Educational Needs
Introducing British Sign Language
Disability matters learning packages
Understanding dyslexia
Understanding Autism
Dyslexia awareness part 1
Dyslexia awareness part 2
Focus on SEN CPD
Ed Tech
Education technology leadership in schools
Take your teaching online
Impact of technology
Accessibility of e-learning
The online educator: people and pedagogy
Understanding technology in evidence-based teaching and learning
The Arts
Becoming a better music teacher
Teaching secondary music
Why teach art?
Literacy across the curriculum
Introduction to teaching vocabulary
Introduction to speech, language and communication
English grammar in context
Building literacy with PowerPoint
Understanding language: learning and teaching
Understanding language and learning
Involving the family in supporting pupils’ literacy
Understanding English dictionaries
Language development for teachers
Literacy in science
Modern Foreign Languages
Teaching secondary MFL
Assessment in secondary MFL
STEM
Managing the practical classroom in secondary science
Girls in STEM: closing the STEM gap
Teaching Biology: inspiring students with plant science
Curriculum design for secondary science
Linking curriculum learning to STEM careers
Teaching practical science - Chemistry
Inspiring young people in STEM
Teaching mathematics
Using visualisation in maths teaching
Maths subject knowledge: understanding numbers
Maths subject knowledge: fractions, decimals and percentages
Maths subject knowledge: proportion, ratio and scaling
Religious Education
Muslims and Islam
Politics and society
Research
Engaging with educational research
Education research that matters
Cognitive science for teachers level 1
Cognitive science for teachers level 2
Metacognition for teachers
Dual coding for teachers
Rosenshine masterclass with Tom Sherrington
Chartered College of Teaching and free access to EBSCO
Resource library full of free research materials
Teaching & Learning
Teaching for good behaviour
Planning for learning: formative assessment
Inclusive education
Mentoring student teachers
Introduction to GDPR
Facilitating learning in practice
Teaching sustainable development goals
Supporting successful learning in secondary school
Evaluating school classroom discussion
Making Best Use of Teaching Assistants
Embedding employability skills in the curriculum
Transforming education in challenging environments
Teaching and learning tricky topics
Education for all: disability, diversity and inclusion
Differentiation for learning
The science of learning
Meeting the needs of diverse learners
Assessment for teachers
Leading blended professional learning
Looking globally: the future of education
Climate Change teacher free courses
Leadership
The what and why of educational leadership and management
Leadership and context
Introduction to Cloud for leaders
Exploring educational leadership
Inspiring social change leaders
Free trial membership to Leadership Matters
Virtual leadership workshops
Early Career Teachers
Becoming a reflective practitioner
Learning to teach: an introduction to classroom research
Learning to teach: making sense of learning to teach
Professional development for early career teachers


Scientists at UC Davis who are supported by Agricultural Experiment Station funding do research and outreach that address challenges in food and agriculture, natural resources, community development and many other areas that benefit society.
Research at the UC Davis College of Agricultural and Environmental Sciences is spread across three main areas of emphasis.
Agricultural Sciences
Environmental Sciences
Research conducted with Agricultural Experiment Station funding at the UC Davis College of Agricultural and Environmental Sciences touches the people of California and the world beyond. Projects range widely from topics such as ‘applied freshwater predator-prey ecology’ to ‘designing healthy youth environments.’ Hover over the circles to view details about project titles, funding and associated departments.
Total Funding: $- Million
# of Projects: -
Each circle represents a research project in a given topic.
Size of each circle correlates to the funding that a project receives.
Researchers in the College of Agricultural and Environmental Sciences impact California in numerous ways and discover new knowledge in the areas of: sustainable agriculture, environmental conservation, nutritious food, clean water and human health.
This map represents a small fraction of the 300+ faculty who provide critical scientific solutions to some of our state and nation’s biggest challenges. Hover over icons to explore the research we are doing in California.
Total Funding: $- Million
# of Projects: -
Transparency is important to us at the College of Agricultural and Environmental Sciences. Below you'll find a list of the funding sources that provide us with the tools to continue researching topics of importance to California and beyond.
Research in the UC Davis College of Agricultural and Environmental Sciences has an impact on California and beyond. Check out these highlighted articles for a more in-depth look at what we are doing in the fields of agriculture, the environment and the human and social sciences.
Department: Biological and Agricultural Engineering
Harvesting crops and fresh market fruit is among the most labor-intensive elements of any agricultural operation in terms of cost and dependence on a seasonal and sometimes semi-skilled workforce.
Agricultural robotics can automate and simplify many processes, speeding up harvesting, reducing labor needs and increasing efficiency. Researchers used camera-based sensing, conventional picking bags and an algorithm to maximize performance and were successful in creating a functional robotic orchard platform that achieved up to 25 percent faster harvesting speeds compared to the standard non-automated platform.
Department: Plant Sciences
Plant breeders are using genetics to create new varieties of germplasm that satisfy the needs of consumers, who want the fruit to be bright red, sweet and juicy; and growers, who want plants to be high-yielding and resistant to diseases. For more than 70 years, our researchers have revolutionized the strawberry industry by developing prominent strawberry varieties that support a market that leads to nearly $3 billion in sales annually.
Strawberries are vulnerable to soil-borne pathogens, which can destroy plants and greatly reduce yield. The goal of the Strawberry Breeding Program is to develop new varieties of strawberry plants that have higher quality berries, are less vulnerable to pests and diseases and can be grown more efficiently. CA&ES researchers have released seven new varieties in the past two years.
Department: Human Ecology
Reducing the amount of sugar-sweetened beverages consumption has become a major public health priority. Sugary drinks have been shown to contribute to weight gain and obesity, tooth decay, type 2 diabetes and cardiovascular disease.
Researchers found that simple, bright yellow warning labels on beverages like fruit-flavored drinks, sweetened teas and flavored milk in a college cafeteria helped students reduce their reported consumption of drinks by 14.5 percent. The results signal that such labels could reduce sugar consumption in larger settings.
Department: Animal Science
As cattle digest their food throughout the day, they burp and exhale methane, a potent heat-trapping gas.
Adding a touch of seaweed to cattle feed can dramatically cut greenhouse gas emissions from dairy cows and livestock by up to 80 percent. This discovery can help California’s farmers meet new carbon emission standards to reduce methane by 40 percent by 2030, receive carbon credits using emission reduction protocols, and produce food sustainably to help feed the world.
Department: Wildlife, Fish and Conservation Biology
Colonialist attitudes toward native fishes are rooted in elements of racism and sexism, and those attitudes continue to shape fisheries management today, often to the detriment of native fishes. Nearly all states have policies that encourage overfishing native species. Up to half of fish species globally are in some form of decline and 83 percent of native California fish species are declining.
Native fishes help ecosystems in many ways, including nutrient cycling and food chain support for other native species. Researchers offer several recommendations for how anglers and fisheries managers can shift to a new paradigm for integrating changes, including indigenous perspectives, bag limits, and supporting science on native fish.
Department: Plant Sciences
Traditional agricultural methods could be disrupted by drought, flood and extreme weather as climate change intensifies. Growing crops in a closed-loop system where lighting, water and ventilation are controlled provides a way to maintain food sources while also avoiding climate instability and reducing risk of foodborne pathogens.
Inside a 40-foot long shipping container, students are learning how to be next-generation farmers with skills in engineering, computer science and growing crops such as lettuce and other leafy greens. This laboratory helps us to better understand hydroponic growing systems to provide nutrition to a growing population.
Department: Human Ecology
This ongoing research project aims to determine if sheep, which intermittently graze a lawn on campus near the UC Davis Arboretum, can eat weeds and grass, fertilize the land and control pests as well as or better than using conventional landscaping methods.
Incorporating sheep into an existing urban green space has the potential to offer multiple operational, environmental and social benefits.
Department: Nutrition, Food Science and Technology
The foods we eat can directly affect overall health and disease risk. But it’s not one size fits all and new methods are needed to track how an individual responds to food.
The Dietary Biomarkers Development Center is using clinical trials to identify specific food biomarkers, which are indicators of what someone has eaten. The findings could lead to support personalized nutrition and culinary medicine.
Department: Viticulture and Enology
California wildfires have been especially hard on the state’s wine industry, damaging billions of dollars in property and grapes; wildfires of 2020 alone cost the wine industry $3.7 billion in lost property, wine inventory, grapes and wine production. When grapes are exposed to smoke, they can sometimes impart unwanted flavors into finished wine and thus must be assayed to determine if they can be used.
With existing testing labs stretched beyond capacity, CA&ES partnered with CDFA to provide hundreds of growers and vintners with a rapid assay to test wine grapes for smoke taint and outreach support on how to quickly ferment grapes in small batches during COVID-19 lockdown to test for smoke exposure.
Department: Food Science and Technology
Ice is used to keep foods fresh but can lead to cross-contamination as it melts, potentially passing microbes to other foods or down the drain.
CA&ES researchers have developed a jelly ice cube that doesn’t melt, is reusable and antimicrobial. The jelly ice cubes offer an alternative to traditional ice and could potentially reduce water consumption, environmental impact and help manage food waste by controlling microbial contaminations.


Developers Guide¶
This guide is a resource for using the Blue Sky Workflow Engine package. It is maintained by the Allen Institute for Brain Science.
The Blue Sky Workflow Engine uses a Celery Task Queue with a RabbitMQ broker to manage job submissions to a Portable Batch System (PBS) job scheduler. It organizes job queues using a workflow graph and a Django PostgreSQL database model to store information about the equeued objects. The Django Admin plugin provides user interface features.
Support features include a PyTest test suite, code coverage with pytest-cover, linting using prospector, Sphinx documentation, Pip packaging, and a Docker build.
Celery Task Queue and RabbitMQ Broker¶
The workflow engine is largely based on the integration of a Celery (over RabbitMQ) messaging system with a Django data model and admin plugin. As much as possible, the workflow engine is modeled after examples in the documentation.
(note: the workflow engine no longer makes significant use of chains)
- Monitoring Tools:
Django Web Framework and Admin Plugin¶
Settings¶
The primary location of settings are in two files specified by environment variables:
$DJANGO_SETTINGS_MODULE - examples of these are found in blue_sky/settings.py $BLUE_SKY_SETTINGS - examples of these are found in config/blue_sky_settings.yml
The Django settings module is well documented, but most current deployments have a fairly similar form to the examples provided.
blue_sky_settings.yml uses Celery lowercase settings The examples provided give the endpoint of the message broker as well as timeout settings for broker connection (including in processes that only send but do not handle messages).
Environments¶
The workflow in production mode requires several Python environments. Generally Anaconda is used to set these environments up, but venv or creative $PYTHONPATH management might also work. The circus process manager required a Python 2.7 environment at the time it was implemented. All other processes may share a Python 3.7 environment with dependencies installed from the workflow engine’s requirements.txt file. Executables can run in their own anaconda environment, which is set in the PBS template. The response messages are sent back from the compute cluster using an environment installed on that system.
Note: It is possible to share the primary and response environments, but they must be installed and accessed while mounted on the same directory path or the anaconda “source activate” script will get confused.
Users and Permissions¶
Note that when writing input.json and data files to a SAN, the directory must have setgid set properly or an equivalent setting.
Note that when running in a docker environment, the blue_sky_user must be set to use the production user id.
The Jupyter notebook, the Django admin console, the Moab endpoint, and the message broker and the database all have credentials that need to be set and managed. This requires further documentation.
Logging¶
Logging is primarily configured using the Python logging package. For each Django-aware process, the logging dict is present in setup.LOGGING in the Django settings module. It is suggested that the log levels be adjusted for different contexts (dev, production, etc).
In order to have each worker process log to a different file, the $DEBUG_LOG
environment variable is substituted into the setup.LOGGING dict.
The workflow_engine.process.process_manager
module sets this variable
as it starts the processes.
Celery tasks have some specific logging configuration quirks.
In order to use the standard logging system, the logger needs to be configured
in the after_setup_logger signal handler
as described in the celery logging documentation.
The handler is imported from workflow_engine.celery.setup_logging_handler.configure_logging_from_settings()
.
The Django processes (all of them)
that use workflow_engine.client_settings.configure_worker_app()
will do this automatically using celery’s app.conf.imports
configuration setting.
Builds¶
There is no current continuous build configured. Most operations can be run through the Makefile. Some operations are handled by scripts and a Makefile in the blue_sky/docker subdirectory. This includes anaconda environment deployment, which is currently incomplete.
Development Deployment¶
There is a docker-compose file in blue_sky/config. It can be started with:
docker-compose up -d
docker-compose exec -u blue_sky_user blue_sky /bin/bash
source activate /conda_envs/py_37
export DEBUG_LOG=dbg.log
python -m workflow_engine.management.manage showmigrations
python -m workflow_engine.management.manage migrate
python -m workflow_engine.management.manage createsuperuser
python -m workflow_engine.management.manage collectstatic
python -m workflow_engine.management.manage import_workflows /home/blue_sky_user/work/workflow_config.yml
python -m workflow_engine.management.manage help
restart_workers.sh blue_sky /home/blue_sky_user/work
At this point you can navigate to http://localhost:9001/ with a web browser.


Hello!
I'm Nancy Kigotho
A web developer/
mobile UI/UX Designer
Hello! My name is Nancy kigotho.i am currently at Moringa School pursuing software development.I decided to major in coding because i love making fun interactive things with code.I provide exeptional websites that provide intuitive user interface.
When am not coding ,i like to dance, travel to adventurous places and read romantic Novels.
Currently i am working on a monitoring and evaluation system for a very intresting and meaningful project.I cant wait to share it with y'all!This is about my Favourite Band Little mix.To view this project click on the button below
View projectThis project is called Easy Talk. It is a platform that provide counsellors and support groups for people with mental health condition.
View project


Healthchecks prepares its configuration in hc/settings.py
. It reads configuration
from environment variables. Below is a list of variables it reads and uses:
ALLOWED_HOSTS
Default: *
The host/domain names that this site can serve. You can specify multiple domain names by separating them with commas:
ALLOWED_HOSTS=my-hc.example.org,alternative-name.example.org
Apart from the comma-separated syntax, this is a standard Django setting. Read more about it in the Django documentation.
APPRISE_ENABLED
Default: False
A boolean that turns on/off the Apprise integration.
Before enabling the Apprise integration, make sure the apprise
package is installed:
pip install apprise
DB
Default: sqlite
The database enginge to use. Possible values: sqlite
, postgres
, mysql
.
DB_CONN_MAX_AGE
Default: 0
This is a standard Django setting, read more in Django documentation.
DB_HOST
Default: ""
(empty string)
This is a standard Django setting, read more in Django documentation.
DB_NAME
Default: hc
(PostgreSQL, MySQL) or /path/to/projectdir/hc.sqlite
(SQLite)
This is a standard Django setting, read more in Django documentation.
DB_PASSWORD
Default: ""
(empty string)
This is a standard Django setting, read more in Django documentation.
DB_PORT
Default: ""
(empty string)
This is a standard Django setting, read more in Django documentation.
DB_SSLMODE
Default: prefer
PostgreSQL-specific, details
DB_TARGET_SESSION_ATTRS
Default: read-write
PostgreSQL-specific, details
DB_USER
Default: postgres
(PostgreSQL) or root
(MySQL)
This is a standard Django setting, read more in Django documentation.
DEBUG
Default: True
A boolean that turns on/off debug mode.
Never run a Healthchecks instance in production with the debug mode turned on!
This is a standard Django setting, read more in Django documentation.
DEFAULT_FROM_EMAIL
Default<EMAIL_ADDRESS>This is a standard Django setting, read more in Django documentation.
DISCORD_CLIENT_ID
Default: None
The Discord Client ID, required by the Discord integration.
To set up the Discord integration:
SITE_ROOT/integrations/add_discord/
. For example, if your SITE_ROOT
is https://my-hc.example.org
then the Redirect URI would be
https://my-hc.example.org/integrations/add_discord/
DISCORD_CLIENT_ID
and DISCORD_CLIENT_SECRET
environment
variables.DISCORD_CLIENT_SECRET
Default: None
The Discord Client Secret, required by the Discord integration. Look it up at https://discordapp.com/developers/applications/me.
EMAIL_HOST
Default: ""
(empty string)
This is a standard Django setting, read more in Django documentation.
EMAIL_HOST_PASSWORD
Default: ""
(empty string)
This is a standard Django setting, read more in Django documentation.
EMAIL_HOST_USER
Default: ""
(empty string)
This is a standard Django setting, read more in Django documentation.
EMAIL_PORT
Default: 587
This is a standard Django setting, read more in Django documentation.
EMAIL_USE_TLS
Default: True
This is a standard Django setting, read more in Django documentation.
EMAIL_USE_VERIFICATION
Default: True
A boolean that turns on/off a verification step when adding an email integration.
If enabled, whenever an user adds an email integration, Healthchecks emails a verification link to the new address. The new integration becomes active only after user clicks the verification link.
If you are setting up a private healthchecks instance where
you trust your users, you can opt to disable the verification step. In that case,
set EMAIL_USE_VERIFICATION
to False
.
LINENOTIFY_CLIENT_ID
Default: None
LINENOTIFY_CLIENT_SECRET
Default: None
MASTER_BADGE_LABEL
Default: same as SITE_NAME
The label for the "Overall Status" status badge.
MATRIX_ACCESS_TOKEN
Default: None
The Matrix bot user's access token, required by the Matrix integration.
To set up the Matrix integration:
MATRIX_
environment variables. Example:MATRIX_ACCESS_TOKEN=[a long string of characters returned by the login call]
MATRIX_HOMESERVER=https://matrix.org
MATRIX_USER_ID=@mychecks:matrix.org
MATRIX_HOMESERVER
Default: None
The Matrix bot's homeserver address, required by the Matrix integration.
MATRIX_USER_ID
Default: None
The Matrix bot's user identifier, required by the Matrix integration.
MATTERMOST_ENABLED
Default: True
A boolean that turns on/off the Mattermost integration. Enabled by default.
MSTEAMS_ENABLED
Default: True
A boolean that turns on/off the MS Teams integration. Enabled by default.
OPSGENIE_ENABLED
Default: True
A boolean that turns on/off the Opsgenie integration. Enabled by default.
PAGERTREE_ENABLED
Default: True
A boolean that turns on/off the PagerTree integration. Enabled by default.
PD_APP_ID
Default: None
PagerDuty application ID. If set, enables the PagerDuty
Simple Install Flow.
If None
, Healthchecks will fall back to the even simpler flow where users manually
copy integration keys from PagerDuty and paste them in Healthchecks.
To set up:
https://your-domain.com/integrations/add_pagerduty/
PD_APP_ID
environment
variablePD_ENABLED
Default: True
A boolean that turns on/off the PagerDuty integration. Enabled by default.
PING_BODY_LIMIT
Default: 10000
The upper size limit in bytes for logged ping request bodies.
The default value is 10000 (10 kilobytes). You can adjust the limit or you can remove
it altogether by setting this value to None
.
PING_EMAIL_DOMAIN
Default: localhost
The domain to use for generating ping email addresses. Example:
PING_EMAIL_DOMAIN=ping.my-hc.example.org
In this example, Healthchecks would generate ping email addresses similar
to<EMAIL_ADDRESS>.
PING_ENDPOINT
Default: SITE_ROOT
+ /ping/
The base URL to use for generating ping URLs. Example:
PING_ENDPOINT=https://ping.my-hc.example.org
In this example, Healthchecks would generate ping URLs similar
to https://ping.my-hc.example.org/3f1a7317-8e96-437c-a17d-b0d550b51e86
.
PROMETHEUS_ENABLED
Default: True
A boolean that turns on/off the Prometheus integration. Enabled by default.
PUSHBULLET_CLIENT_ID
Default: None
PUSHBULLET_CLIENT_SECRET
Default: None
PUSHOVER_API_TOKEN
Default: None
The Pushover API token, required by the Pushover integration.
To enable the Pushover integration:
https://my-hc.example.org/
).PUSHOVER_API_TOKEN
and PUSHOVER_SUBSCRIPTION_URL
environment
variables. The Pushover subscription URL should look similar to
https://pushover.net/subscribe/yourAppName-randomAlphaNumericData
.PUSHOVER_EMERGENCY_EXPIRATION
Default: 86400
(24 hours)
Specifies how many seconds an emergency Pushoover notification will continue to be retried for.
More information in Pushover API documentation.
PUSHOVER_EMERGENCY_RETRY_DELAY
Default: 300
(5 minutes)
Specifies how often (in seconds) the Pushover servers will send the same notification to the user.
More information in Pushover API documentation.
PUSHOVER_SUBSCRIPTION_URL
Default: None
The Pushover Subscription URL, required by the Pushover integration.
REGISTRATION_OPEN
Default: True
A boolean that controls whether site visitors can create new accounts.
Set it to False
if you are setting up a private Healthchecks instance, but
it needs to be publicly accessible (so, for example, your cloud services
can send pings to it).
If you close new user registration, you can still selectively invite users to your team account.
REMOTE_USER_HEADER
Default: None
Specifies the request header to use for external authentication.
Healthchecks supports external authentication by means of HTTP headers set by reverse proxies or the WSGI server. This allows you to integrate it into your existing authentication system (e.g., LDAP or OAuth) via an authenticating proxy. When this option is enabled, Healtchecks will trust the header's value implicitly, so it is very important to ensure that attackers cannot set the value themselves (and thus impersonate any user). How to do this varies by your chosen proxy, but generally involves configuring it to strip out headers that normalize to the same name as the chosen identity header.
To enable this feature, set the REMOTE_USER_HEADER
value to a header you wish to authenticate with. HTTP headers will be prefixed with HTTP_
and have any dashes converted to underscores. Headers without that prefix can be set by the WSGI server itself only, which is more secure.
When REMOTE_USER_HEADER
is set, Healthchecks will:
RP_ID
Default: None
The Relying Party identifier, required by the WebAuthn second-factor authentication feature.
Healthchecks optionally supports two-factor authentication using the WebAuthn
standard. To enable WebAuthn support, set the RP_ID
setting to a non-null value.
Set its value to your site's domain without scheme and without port. For example,
if your site runs on https://my-hc.example.org
, set RP_ID
to my-hc.example.org
.
Note that WebAuthn requires HTTPS, even if running on localhost. To test WebAuthn
locally with a self-signed certificate, you can use the runsslserver
command
from the django-sslserver
package.
SECRET_KEY
Default: ---
A secret key used for cryptographic signing, and should be set to a unique, unpredictable value.
This is a standard Django setting, read more in Django documentation.
SHELL_ENABLED
Default: False
A boolean that turns on/off the "Shell Commands" integration.
The "Shell Commands" integration runs user-defined local shell commands when checks
go up or down. This integration is disabled by default, and can be enabled by setting
the SHELL_ENABLED
environment variable to True
.
Note: be careful when using "Shell Commands" integration, and only enable it when
you fully trust the users of your Healthchecks instance. The commands will be executed
by the manage.py sendalerts
process, and will run with its system permissions.
SIGNAL_CLI_SOCKET
Default: None
The path to the signal-cli UNIX socket.
Healthchecks uses signal-cli to send Signal notifications. Healthcecks interacts with signal-cli over UNIX socket (requires signal-cli 0.10.0 or later).
To enable the Signal integration:
signal-cli -a +xxxxxx daemon --socket /tmp/signal-cli-socket
SIGNAL_CLI_SOCKET
environment variable.SITE_LOGO_URL
Default: None
An URL pointing to the image you want to use as the site logo. If not set,
Healthchecks will use a fallback image (/static/img/logo.png
).
Example:
SITE_LOGO_URL=https://example.org/my-custom-logo.svg
SITE_NAME
Default: Mychecks
The display name of this Healthchecks instance. Healthchecks uses it throughout its web UI and documentation.
SITE_ROOT
Default: http://localhost:8000
The base URL of this Healthchecks instance. Healthchecks uses SITE_ROOT
whenever
it needs to construct absolute URLs.
SLACK_CLIENT_ID
Default: None
The Slack Client ID, used by the Slack integration.
The Slack integration can work with or without the Slack Client ID. If the Slack Client ID is not set, in the "Integrations - Add Slack" page, Healthchecks will ask the user to provide a webhook URL for posting notifications.
If the Slack Client is set, Healthchecks will use the OAuth2 flow to get the webhook URL from Slack. The OAuth2 flow is more user-friendly. To set it up, go to https://api.slack.com/apps/ and create a Slack app. When setting up the Slack app, make sure to:
SITE_ROOT/integrations/add_slack_btn/
.
For example, if your SITE_ROOT
is https://my-hc.example.org
then the
Redirect URL would be https://my-hc.example.org/integrations/add_slack_btn/
.SLACK_CLIENT_SECRET
Default: None
The Slack Client Secret. Required if SLACK_CLIENT_ID
is set.
Look it up at https://api.slack.com/apps/.
SLACK_ENABLED
Default: True
A boolean that turns on/off the Slack integration. Enabled by default.
SPIKE_ENABLED
Default: True
A boolean that turns on/off the Spike.sh integration. Enabled by default.
TELEGRAM_BOT_NAME
Default: ExampleBot
The Telegram bot name, required by the Telegram integration.
To set up the Telegram integration:
TELEGRAM_BOT_NAME
and TELEGRAM_TOKEN
environment variables.settelegramwebhook
management command. This command tells Telegram
where to forward channel messages by invoking Telegram's
setWebhook API call:$ ./manage.py settelegramwebhook
Done, Telegram's webhook set to: https://my-monitoring-project.com/integrations/telegram/bot/
For this to work, your SITE_ROOT
must be publicy accessible and use the "https://"
scheme.
TELEGRAM_TOKEN
Default: None
The Telegram bot user's authentication token, required by the Telegram integration.
TRELLO_APP_KEY
Default: None
The Trello app key, required by the Trello integration.
To set up the Trello integration, get a developer API key from
https://trello.com/app-key and put it in the
TRELLO_APP_KEY
environment variable.
TWILIO_ACCOUNT
Default: None
TWILIO_AUTH
Default: None
TWILIO_FROM
Default: None
TWILIO_USE_WHATSAPP
Default: False
USE_PAYMENTS
Default: False
A boolean that turns on/off billing features.
VICTOROPS_ENABLED
Default: True
A boolean that turns on/off the Splunk On-Call (VictorOps) integration. Enabled by default.
WEBHOOKS_ENABLED
Default: True
A boolean that turns on/off the Webhooks integration. Enabled by default.
ZULIP_ENABLED
Default: True
A boolean that turns on/off the Zulip integration. Enabled by default.


The Chief: A Glimpse Into Lucas Radebe’s Crib
by SL SocialHaving astutely plied his trade in arguably the best league in world football, it comes as no surprise that South African icon Lucas Radebe lives a good life.
We take a closer look at ‘Rhoo’s’ legendary crib
He was nicknamed ‘The Chief’ for his admirable leadership qualities and it was at clubs such as Kaizer Chiefs and Leeds United in England where Radebe became a household name.
Download The Soccer Laduma Social Media App & Earn Airtime for Selfies!
It’s been years since Radebe retired and these days the 50-year-old takes on a host of ambassadorial roles as well as forming an integral part at SAFA.
Radebe lives a comfortable life and recently gave fans a glimpse into his double-storey crib.
With the game running through his veins, the suave Radebe ensured that he has a lush lawn where he can practice his keepy-uppies while babysitting.
Check it out.
What are your thoughts on Radebe’s crib?


ofxCvBlob
ofxCvBlob represents an area identified by the OpenCV plug-in as being a contiguous object in the scene. It's most often stored within a contrountFind instance and populated by a call to findContours().
In the image below you can see two blobs detected in the grayscale image:
[img src="blobs.png"]
ofxCvBlob methods
draw(...)
void ofxCvBlob::draw(float x=0, float y=0)
This method draws the blob to the screen with the upper-left corner located at the point specified by the x and y values.
ofxCvBlob variables
ofRectangle boundingRect
ofRectangle ofxCvBlob::boundingRect
an ofRectangle instance that can be drawn to the screen and that shows the height and width of the blob. This can be helpful to determine large regions of interest, or it can lead to some inaccurate results depending on the shape of your object. For instance, a squarish shape will be well represented by a rectangle, whereas a long thin shape with an angle in the middle will not.
ofPoint centroid
ofPoint ofxCvBlob::centroid
This is an ofPoint instance with its x and y positions set at the center of the boundaries of the blob.
bool hole
bool ofxCvBlob::hole
This is a Boolean value that indicates whether the blob contains a whole. This is also dependent on whether the call to findContours() in ofxContourFinder has the findHoles parameter set to true.
int nPts
int ofxCvBlob::nPts
This is an int that represents the number of points that are contained within the contour.
vector< ofPoint > pts
vector< ofPoint > ofxCvBlob::pts
This is a vector of ofPoint objects that represent the contour of the blob. This is different from the bounding rectangle. It's listing the different points around the edge of the blob. The bounding rectangle is a rectangle around the extreme points of the blob.


| Package | com.thesven.audio.soundcontroller |
| Class | public class SoundController |
| Inheritance | SoundController flash.events.EventDispatcher |
| Property | Defined by | ||
|---|---|---|---|
| _soundController : SoundController
[static]
| SoundController | ||
| _soundGroupDict : Dictionary | SoundController | ||
| _soundGroups : Vector | SoundController | ||
| _sounds : Vector | SoundController | ||
| _soundsDict : Dictionary | SoundController |
| Method | Defined by | ||
|---|---|---|---|
|
Main Constructor PLEASE DO NOT USE THIS SoundController is a singleton class. | SoundController | ||
|
addEmbededOrLibrarySound(sndClassName:Class, sndName:String, vol:Number = 1, startTime:Number = 0, loops:int = 0):Boolean
Used to add a sound that has been added to your library or embeded as a class in your project Dispatches the SOUND_ADDED DataEvent with a value of "sndName" | SoundController | ||
|
addExternalSound(sndPath:String, sndName:String, buffer:Number = 1000, vol:Number = 1, startTime:Number = 0, loops:int = 0, checkPolicyFile:Boolean = false):Boolean
Used to add a sound that is extrnaly located Dispatches the SOUND_ADDED DataEvent with a value of "sndName" | SoundController | ||
|
addLibrarySound(linkageID:*, soundName:String):Boolean
This method is only here for backwards compatability reasons. | SoundController | ||
|
addSoundToGroup(sndName:String, groupName:String):void
can be used to add a sound to an existing sound group | SoundController | ||
|
createSoundGroup(sndGrpName:String, groupItems:Vector):Boolean
Used to create a new sound group In order to create a sound group all of the sounds must all ready be added using addEmbededOrLibrarySound or addExternalSound Using a sound group you can manage the state of one or more sounds by using a single call ie. | SoundController | ||
|
fadeSoundGroupVolume(groupName:String, length:Number, targetVol:Number):void
fades the volume of a sound group to a specified volume over a length of time | SoundController | ||
|
fadeSoundVolume(sndName:String, length:Number, targetVol:Number):void
fades the volume of a sound to a specified volume over a length of time | SoundController | ||
|
[static]
Used to return the current instance of the class Please use this insted of the Main Constructor | SoundController | ||
|
muteGlobalAudio():void
This method is used to mute the global volume of a flash project using SoundMixer Dispatches the GLOABL_VOLUME_CHANGE DataEvent with value "GLOBAL MUTE" | SoundController | ||
|
pauseAllSounds():void
Used to pause all sounds in the controller | SoundController | ||
|
pauseSound(sndName:String):void
used to pause a sound that is playing | SoundController | ||
|
pauseSoundGroup(sndGroupName:String):void
Used to pause a sound group that is currently playing | SoundController | ||
|
playAllSounds():void
Used to play all of the sounds in the library at once | SoundController | ||
|
playSound(sndName:String, useSndProps:Boolean = true, volume:Number = 1, startTime:Number = 0, loops:int = 0, useDelay:Boolean = false, delayInSeconds:Number = 0):void
Used to play a sound that has been added to the controller | SoundController | ||
|
playSoundGroup(groupName:String):void
Used to play a sound group that has been registered with the controller | SoundController | ||
|
removeAllSounds():void
Used to remove all of the sounds from the controller Once a sound is removed you will no longer be able to manage it through the SoundController, and all referances and listeners will be removed Dispatches the SOUND_ADDED DataEvent with a value of "ALL SOUNDS" | SoundController | ||
|
removeSound(sndName:String):Boolean
Used to remove a sound from the controller Once a sound is removed you will no longer be able to manage it through the SoundController, and all referances and listeners will be removed Dispatches the SOUND_REMOVED DataEvent with a value of "sndName" | SoundController | ||
|
removeSoundGroup(sndGroupName:String):Boolean
Used to remove a sound group from the controller Once a sound group is removed from the controller all referances and listeners will be removed. The sounds associated with the group will still remain the in controller Dispatches the GROUP_REMOVED DataEvent with a value of "sndGroupName" | SoundController | ||
|
setGobalVolume(globalVol:Number):void
this method is used to set the global volume of a flash project using SoundMixer | SoundController | ||
|
setSoundLoops(sndName:String, loopAmount:int):void
Sets the amount of loops for a sound that has been registered with the controller | SoundController | ||
|
setSoundStartTime(sndName:String, startTime:Number):void
Sets the start time of a sound that has been registered with the controller | SoundController | ||
|
setSoundVolume(sndName:String, newVol:Number):void
Sets the volume of a sound that has been registered with the controller | SoundController | ||
|
stopAllSounds():void
Used to stop all sounds in the controller | SoundController | ||
|
stopSound(sndName:String):void
Used to stop a sound | SoundController | ||
|
stopSoundGroup(sndGroupName:String):void
Used to stop a sound group that has been registered with the controller | SoundController | ||
|
unmuteGlobalAudio():void
This method is used to unmute the global volume of a flash project using SoundMixer Dispatches the GLOABL_VOLUME_CHANGE DataEvent with value "GLOBAL UNMUTE" | SoundController |
| Constant | Defined by | ||
|---|---|---|---|
| GLOBAL_VOLUME_CHANGE : String = "theGlobalVolumeHasBeenChanged" [static]
| SoundController | ||
| GROUP_ADDED : String = "aSoundGroupHasBeenAddedToSoundController" [static]
| SoundController | ||
| GROUP_REMOVED : String = "aSoundGroupHasBeenRemovedToSoundController" [static]
| SoundController | ||
| SOUND_ADDED : String = "aSoundHasBeenAddedToSoundController" [static]
| SoundController | ||
| SOUND_REMOVED : String = "aSoundHasBeenRemovedFromSoundController" [static]
| SoundController |
| _soundController | property |
protected static var _soundController:SoundController
| _soundGroupDict | property |
protected var _soundGroupDict:Dictionary
| _soundGroups | property |
protected var _soundGroups:Vector
| _sounds | property |
protected var _sounds:Vector
| _soundsDict | property |
protected var _soundsDict:Dictionary
| SoundController | () | constructor |
public function SoundController()
Main Constructor
PLEASE DO NOT USE THIS
SoundController is a singleton class. You will need to use the getInstance() method
See also
| addEmbededOrLibrarySound | () | method |
public function addEmbededOrLibrarySound(sndClassName:Class, sndName:String, vol:Number = 1, startTime:Number = 0, loops:int = 0):Boolean
Used to add a sound that has been added to your library or embeded as a class in your project
Dispatches the SOUND_ADDED DataEvent with a value of "sndName"
ParameterssndClassName:Class — - the class of the sound that you would like to use
|
|
sndName:String — - the name you wish to use for the sound
|
|
vol:Number (default = 1 ) — - the volume at which the sound should be played
|
|
startTime:Number (default = 0 ) — - the start time to be used when playing the sound
|
|
loops:int (default = 0 ) — - the amount of loops that the should should be played
|
Boolean — Boolean
|
| addExternalSound | () | method |
public function addExternalSound(sndPath:String, sndName:String, buffer:Number = 1000, vol:Number = 1, startTime:Number = 0, loops:int = 0, checkPolicyFile:Boolean = false):Boolean
Used to add a sound that is extrnaly located
Dispatches the SOUND_ADDED DataEvent with a value of "sndName"
ParameterssndPath:String — - the direct path or url the sound you wish to use
|
|
sndName:String — - the name you wish you use for this sound
|
|
buffer:Number (default = 1000 ) — - the amount of buffer to be used on the external sound
|
|
vol:Number (default = 1 ) — - the volume to be used when playing the sound
|
|
startTime:Number (default = 0 ) — - the start time to be used when playing the sound
|
|
loops:int (default = 0 ) — - the amount of loops this sound should be played
|
|
checkPolicyFile:Boolean (default = false ) — - is there a policy file that needs to be checked while loading the sound file
|
Boolean — Boolean
|
| addLibrarySound | () | method |
public function addLibrarySound(linkageID:*, soundName:String):Boolean
This method is only here for backwards compatability reasons. Please do not use it if it is not required. Use addEmbededOrLibrarySound()
ParameterslinkageID:* |
|
soundName:String |
Boolean |
| addSoundToGroup | () | method |
public function addSoundToGroup(sndName:String, groupName:String):void
can be used to add a sound to an existing sound group
ParameterssndName:String — - the name of the sound you wish to add
|
|
groupName:String — - the name of the group you wish to add the sound too
|
| createSoundGroup | () | method |
public function createSoundGroup(sndGrpName:String, groupItems:Vector):Boolean
Used to create a new sound group
In order to create a sound group all of the sounds must all ready be added using addEmbededOrLibrarySound or addExternalSound
Using a sound group you can manage the state of one or more sounds by using a single call ie. play, stop, pause
Individual sounds may be used in more than one group
Dispatches the GROUP_ADDED DataEvent with a value of "sndGroupName"
ParameterssndGrpName:String — - the name you wish to use for the sound group
|
|
groupItems:Vector — - a vector containing the names of the sound objects to be used in the sound group
|
Boolean — Boolean
|
See also
| fadeSoundGroupVolume | () | method |
public function fadeSoundGroupVolume(groupName:String, length:Number, targetVol:Number):void
fades the volume of a sound group to a specified volume over a length of time
ParametersgroupName:String — - the name of the sound group whos volume you wish to fade
|
|
length:Number — - the length of the fade in seconds
|
|
targetVol:Number — - the volume you wish to fade to ... value 0-1
|
| fadeSoundVolume | () | method |
public function fadeSoundVolume(sndName:String, length:Number, targetVol:Number):void
fades the volume of a sound to a specified volume over a length of time
ParameterssndName:String — - the name of the sound whos volume you wish to fade
|
|
length:Number — - the length of the fade in seconds
|
|
targetVol:Number — - the volume you wish to fade to ... value 0-1
|
| getInstance | () | method |
public static function getInstance():SoundController
Used to return the current instance of the class
Please use this insted of the Main Constructor
ReturnsSoundController —
SoundController
|
| muteGlobalAudio | () | method |
public function muteGlobalAudio():void
This method is used to mute the global volume of a flash project using SoundMixer
Dispatches the GLOABL_VOLUME_CHANGE DataEvent with value "GLOBAL MUTE"
| pauseAllSounds | () | method |
public function pauseAllSounds():void
Used to pause all sounds in the controller
| pauseSound | () | method |
public function pauseSound(sndName:String):void
used to pause a sound that is playing
ParameterssndName:String — - the name of the sound you wish to pause
|
| pauseSoundGroup | () | method |
public function pauseSoundGroup(sndGroupName:String):void
Used to pause a sound group that is currently playing
ParameterssndGroupName:String — - the name of the sound group you would wish to pause
|
| playAllSounds | () | method |
public function playAllSounds():void
Used to play all of the sounds in the library at once
| playSound | () | method |
public function playSound(sndName:String, useSndProps:Boolean = true, volume:Number = 1, startTime:Number = 0, loops:int = 0, useDelay:Boolean = false, delayInSeconds:Number = 0):void
Used to play a sound that has been added to the controller
ParameterssndName:String — - the name of the sound you wish to play
|
|
useSndProps:Boolean (default = true ) — - would you like to use the current properties associated with the sound, or supply new ones through the method parameters
|
|
volume:Number (default = 1 ) — - if useSoundProps = true, this new volume will be used when playing the sound
|
|
startTime:Number (default = 0 ) — - if useSoundProps = true, this new startTime will be used when playing the sound
|
|
loops:int (default = 0 ) — - if useSoundProps = true, this amount will over ride the current amount of loops that the sound plays
|
|
useDelay:Boolean (default = false ) — - if true a delay will be used before playing the sound
|
|
delayInSeconds:Number (default = 0 ) — - if useDelay = true, the sound will be delayed "x" seconds before playing
|
| playSoundGroup | () | method |
public function playSoundGroup(groupName:String):void
Used to play a sound group that has been registered with the controller
ParametersgroupName:String — - the name of the sound group you wish to play
|
| removeAllSounds | () | method |
public function removeAllSounds():void
Used to remove all of the sounds from the controller
Once a sound is removed you will no longer be able to manage it through the SoundController, and all referances and listeners will be removed
Dispatches the SOUND_ADDED DataEvent with a value of "ALL SOUNDS"
| removeSound | () | method |
public function removeSound(sndName:String):Boolean
Used to remove a sound from the controller
Once a sound is removed you will no longer be able to manage it through the SoundController, and all referances and listeners will be removed
Dispatches the SOUND_REMOVED DataEvent with a value of "sndName"
ParameterssndName:String — - the name of the sound you wish to remove
|
Boolean — Boolean
|
| removeSoundGroup | () | method |
public function removeSoundGroup(sndGroupName:String):Boolean
Used to remove a sound group from the controller
Once a sound group is removed from the controller all referances and listeners will be removed.
The sounds associated with the group will still remain the in controller
Dispatches the GROUP_REMOVED DataEvent with a value of "sndGroupName"
ParameterssndGroupName:String — - the name of the sound group you wish to remove
|
Boolean — Boolean
|
See also
| setGobalVolume | () | method |
public function setGobalVolume(globalVol:Number):void
this method is used to set the global volume of a flash project using SoundMixer
ParametersglobalVol:Number — - the new volume to be used
Dispatches the GLOABL_VOLUME_CHANGE DataEvent with value "GLOBAL VOL CHANGE :: {globalVol}" |
| setSoundLoops | () | method |
public function setSoundLoops(sndName:String, loopAmount:int):void
Sets the amount of loops for a sound that has been registered with the controller
ParameterssndName:String — - the sound you wish to change the loop amount of
|
|
loopAmount:int — - the new amount of loops to use when playing the song
|
| setSoundStartTime | () | method |
public function setSoundStartTime(sndName:String, startTime:Number):void
Sets the start time of a sound that has been registered with the controller
ParameterssndName:String — - the sound you wish to change the start time of
|
|
startTime:Number — - the new start time to use
|
| setSoundVolume | () | method |
public function setSoundVolume(sndName:String, newVol:Number):void
Sets the volume of a sound that has been registered with the controller
ParameterssndName:String — - the sound you wish to change the volume of
|
|
newVol:Number — - the volume to use
|
| stopAllSounds | () | method |
public function stopAllSounds():void
Used to stop all sounds in the controller
| stopSound | () | method |
public function stopSound(sndName:String):void
Used to stop a sound
ParameterssndName:String — - the name of the sound you wish to stop
|
| stopSoundGroup | () | method |
public function stopSoundGroup(sndGroupName:String):void
Used to stop a sound group that has been registered with the controller
ParameterssndGroupName:String — - the name of the sound group you wish to stop
|
| unmuteGlobalAudio | () | method |
public function unmuteGlobalAudio():void
This method is used to unmute the global volume of a flash project using SoundMixer
Dispatches the GLOABL_VOLUME_CHANGE DataEvent with value "GLOBAL UNMUTE"
| GLOBAL_VOLUME_CHANGE | constant |
public static const GLOBAL_VOLUME_CHANGE:String = "theGlobalVolumeHasBeenChanged"
| GROUP_ADDED | constant |
public static const GROUP_ADDED:String = "aSoundGroupHasBeenAddedToSoundController"
| GROUP_REMOVED | constant |
public static const GROUP_REMOVED:String = "aSoundGroupHasBeenRemovedToSoundController"
| SOUND_ADDED | constant |
public static const SOUND_ADDED:String = "aSoundHasBeenAddedToSoundController"
| SOUND_REMOVED | constant |
public static const SOUND_REMOVED:String = "aSoundHasBeenRemovedFromSoundController"


| PostgreSQL 9.6.15 Documentation | |||
|---|---|---|---|
| Prev | Up | Appendix E. Release Notes | Next |
Release date: 2017-02-09
This release contains a variety of fixes from 9.6.1. For information about new features in the 9.6 major release, see Section E.16.
A dump/restore is not required for those running 9.6.X.
However, if your installation has been affected by the bug described in the first changelog entry below, then after updating you may need to take action to repair corrupted indexes.
Also, if you are upgrading from a version earlier than 9.6.1, see Section E.15.
Fix a race condition that could cause indexes built with CREATE INDEX CONCURRENTLY to be corrupt (Pavan Deolasee, Tom Lane)
If CREATE INDEX CONCURRENTLY was used to build an index that depends on a column not previously indexed, then rows updated by transactions that ran concurrently with the CREATE INDEX command could have received incorrect index entries. If you suspect this may have happened, the most reliable solution is to rebuild affected indexes after installing this update.
Ensure that the special snapshot used for catalog scans is not invalidated by premature data pruning (Tom Lane)
Backends failed to account for this snapshot when advertising their oldest xmin, potentially allowing concurrent vacuuming operations to remove data that was still needed. This led to transient failures along the lines of "cache lookup failed for relation 1255".
Fix incorrect WAL logging for BRIN indexes (Kuntal Ghosh)
The WAL record emitted for a BRIN "revmap" page when moving an index tuple to a different page was incorrect. Replay would make the related portion of the index useless, forcing it to be recomputed.
Unconditionally WAL-log creation of the "init fork" for an unlogged table (Michael Paquier)
Previously, this was skipped when wal_level = minimal, but actually it's necessary even in that case to ensure that the unlogged table is properly reset to empty after a crash.
If the stats collector dies during hot standby, restart it (Takayuki Tsunakawa)
Ensure that hot standby feedback works correctly when it's enabled at standby server start (Ants Aasma, Craig Ringer)
Check for interrupts while hot standby is waiting for a conflicting query (Simon Riggs)
Avoid constantly respawning the autovacuum launcher in a corner case (Amit Khandekar)
This fix avoids problems when autovacuum is nominally off and there are some tables that require freezing, but all such tables are already being processed by autovacuum workers.
Disallow setting the num_sync field to zero in synchronous_standby_names (Fujii Masao)
The correct way to disable synchronous standby is to set the whole value to an empty string.
Don't count background worker processes against a user's connection limit (David Rowley)
Fix check for when an extension member object can be dropped (Tom Lane)
Extension upgrade scripts should be able to drop member objects, but this was disallowed for serial-column sequences, and possibly other cases.
Fix tracking of initial privileges for extension member objects so that it works correctly with ALTER EXTENSION ... ADD/DROP (Stephen Frost)
An object's current privileges at the time it is added to the extension will now be considered its default privileges; only later changes in its privileges will be dumped by subsequent pg_dump runs.
Make sure ALTER TABLE preserves index tablespace assignments when rebuilding indexes (Tom Lane, Michael Paquier)
Previously, non-default settings of default_tablespace could result in broken indexes.
Fix incorrect updating of trigger function properties when changing a foreign-key constraint's deferrability properties with ALTER TABLE ... ALTER CONSTRAINT (Tom Lane)
This led to odd failures during subsequent exercise of the foreign key, as the triggers were fired at the wrong times.
Prevent dropping a foreign-key constraint if there are pending trigger events for the referenced relation (Tom Lane)
This avoids "could not find trigger NNN" or "relation NNN has no triggers" errors.
Fix ALTER TABLE ... SET DATA TYPE ... USING when child table has different column ordering than the parent (Álvaro Herrera)
Failure to adjust the column numbering in the USING expression led to errors, typically "attribute N has wrong type".
Fix processing of OID column when a table with OIDs is associated to a parent with OIDs via ALTER TABLE ... INHERIT (Amit Langote)
The OID column should be treated the same as regular user columns in this case, but it wasn't, leading to odd behavior in later inheritance changes.
Ensure that CREATE TABLE ... LIKE ... WITH OIDS creates a table with OIDs, whether or not the LIKE-referenced table(s) have OIDs (Tom Lane)
Fix CREATE OR REPLACE VIEW to update the view query before attempting to apply the new view options (Dean Rasheed)
Previously the command would fail if the new options were inconsistent with the old view definition.
Report correct object identity during ALTER TEXT SEARCH CONFIGURATION (Artur Zakirov)
The wrong catalog OID was reported to extensions such as logical decoding.
Fix commit timestamp mechanism to not fail when queried about the special XIDs FrozenTransactionId and BootstrapTransactionId (Craig Ringer)
Fix incorrect use of view reloptions as regular table reloptions (Tom Lane)
The symptom was spurious "ON CONFLICT is not supported on table ... used as a catalog table" errors when the target of INSERT ... ON CONFLICT is a view with cascade option.
Fix incorrect "target lists can have at most N entries" complaint when using ON CONFLICT with wide tables (Tom Lane)
Fix spurious "query provides a value for a dropped column" errors during INSERT or UPDATE on a table with a dropped column (Tom Lane)
Prevent multicolumn expansion of foo.* in an UPDATE source expression (Tom Lane)
This led to "UPDATE target count mismatch --- internal error". Now the syntax is understood as a whole-row variable, as it would be in other contexts.
Ensure that column typmods are determined accurately for multi-row VALUES constructs (Tom Lane)
This fixes problems occurring when the first value in a column has a determinable typmod (e.g., length for a varchar value) but later values don't share the same limit.
Throw error for an unfinished Unicode surrogate pair at the end of a Unicode string (Tom Lane)
Normally, a Unicode surrogate leading character must be followed by a Unicode surrogate trailing character, but the check for this was missed if the leading character was the last character in a Unicode string literal (U&'...') or Unicode identifier (U&"...").
Fix execution of DISTINCT and ordered aggregates when multiple such aggregates are able to share the same transition state (Heikki Linnakangas)
Fix implementation of phrase search operators in tsquery (Tom Lane)
Remove incorrect, and inconsistently-applied, rewrite rules that tried to transform away AND/OR/NOT operators appearing below a PHRASE operator; instead upgrade the execution engine to handle such cases correctly. This fixes assorted strange behavior and possible crashes for text search queries containing such combinations. Also fix nested PHRASE operators to work sanely in combinations other than simple left-deep trees, correct the behavior when removing stopwords from a phrase search clause, and make sure that index searches behave consistently with simple sequential-scan application of such queries.
Ensure that a purely negative text search query, such as !foo, matches empty tsvectors (Tom Dunstan)
Such matches were found by GIN index searches, but not by sequential scans or GiST index searches.
Prevent crash when ts_rewrite()
replaces a non-top-level
subtree with an empty query (Artur Zakirov)
Fix performance problems in ts_rewrite()
(Tom Lane)
Fix ts_rewrite()
's handling of nested NOT operators
(Tom Lane)
Improve speed of user-defined aggregates that
use array_append()
as transition function (Tom Lane)
Fix array_fill()
to handle empty arrays properly (Tom Lane)
Fix possible crash in array_position()
or array_positions()
when processing arrays of records
(Junseok Yang)
Fix one-byte buffer overrun in quote_literal_cstr()
(Heikki Linnakangas)
The overrun occurred only if the input consisted entirely of single quotes and/or backslashes.
Prevent multiple calls of pg_start_backup()
and pg_stop_backup()
from running concurrently (Michael
Paquier)
This avoids an assertion failure, and possibly worse things, if someone tries to run these functions in parallel.
Disable transform that attempted to remove no-op AT TIME ZONE conversions (Tom Lane)
This resulted in wrong answers when the simplified expression was used in an index condition.
Avoid discarding interval-to-interval casts that aren't really no-ops (Tom Lane)
In some cases, a cast that should result in zeroing out low-order interval fields was mistakenly deemed to be a no-op and discarded. An example is that casting from INTERVAL MONTH to INTERVAL YEAR failed to clear the months field.
Fix crash if the number of workers available to a parallel query decreases during a rescan (Andreas Seltenreich)
Fix bugs in transmitting GUC parameter values to parallel workers (Michael Paquier, Tom Lane)
Allow statements prepared with PREPARE to be given parallel plans (Amit Kapila, Tobias Bussmann)
Fix incorrect generation of parallel plans for semi-joins (Tom Lane)
Fix planner's cardinality estimates for parallel joins (Robert Haas)
Ensure that these estimates reflect the number of rows predicted to be seen by each worker, rather than the total.
Fix planner to avoid trying to parallelize plan nodes containing initplans or subplans (Tom Lane, Amit Kapila)
Ensure that cached plans are invalidated by changes in foreign-table options (Amit Langote, Etsuro Fujita, Ashutosh Bapat)
Fix the plan generated for sorted partial aggregation with a constant GROUP BY clause (Tom Lane)
Fix "could not find plan for CTE" planner error when dealing with a UNION ALL containing CTE references (Tom Lane)
Fix mishandling of initplans when forcibly adding a Material node to a subplan (Tom Lane)
The typical consequence of this mistake was a "plan should not reference subplan's variable" error.
Fix foreign-key-based join selectivity estimation for semi-joins and anti-joins, as well as inheritance cases (Tom Lane)
The new code for taking the existence of a foreign key relationship into account did the wrong thing in these cases, making the estimates worse not better than the pre-9.6 code.
Fix pg_dump to emit the data of a sequence that is marked as an extension configuration table (Michael Paquier)
Fix mishandling of ALTER DEFAULT PRIVILEGES ... REVOKE in pg_dump (Stephen Frost)
pg_dump missed issuing the required REVOKE commands in cases where ALTER DEFAULT PRIVILEGES had been used to reduce privileges to less than they would normally be.
Fix pg_dump to dump user-defined casts and transforms that use built-in functions (Stephen Frost)
Fix pg_restore with --create --if-exists to behave more sanely if an archive contains unrecognized DROP commands (Tom Lane)
This doesn't fix any live bug, but it may improve the behavior in future if pg_restore is used with an archive generated by a later pg_dump version.
Fix pg_basebackup's rate limiting in the presence of slow I/O (Antonin Houska)
If disk I/O was transiently much slower than the specified rate limit, the calculation overflowed, effectively disabling the rate limit for the rest of the run.
Fix pg_basebackup's handling of symlinked pg_stat_tmp and pg_replslot subdirectories (Magnus Hagander, Michael Paquier)
Fix possible pg_basebackup failure on standby server when including WAL files (Amit Kapila, Robert Haas)
Improve initdb to insert the correct platform-specific default values for the xxx_flush_after parameters into postgresql.conf (Fabien Coelho, Tom Lane)
This is a cleaner way of documenting the default values than was used previously.
Fix possible mishandling of expanded arrays in domain check constraints and CASE execution (Tom Lane)
It was possible for a PL/pgSQL function invoked in these contexts to modify or even delete an array value that needs to be preserved for additional operations.
Fix nested uses of PL/pgSQL functions in contexts such as domain check constraints evaluated during assignment to a PL/pgSQL variable (Tom Lane)
Ensure that the Python exception objects we create for PL/Python are properly reference-counted (Rafa de la Torre, Tom Lane)
This avoids failures if the objects are used after a Python garbage collection cycle has occurred.
Fix PL/Tcl to support triggers on tables that have .tupno as a column name (Tom Lane)
This matches the (previously undocumented) behavior of PL/Tcl's spi_exec and spi_execp commands, namely that a magic .tupno column is inserted only if there isn't a real column named that.
Allow DOS-style line endings in ~/.pgpass files, even on Unix (Vik Fearing)
This change simplifies use of the same password file across Unix and Windows machines.
Fix one-byte buffer overrun if ecpg is given a file name that ends with a dot (Takayuki Tsunakawa)
Fix incorrect error reporting for duplicate data in psql's \crosstabview (Tom Lane)
psql sometimes quoted the wrong row and/or column values when complaining about multiple entries for the same crosstab cell.
Fix psql's tab completion for ALTER DEFAULT PRIVILEGES (Gilles Darold, Stephen Frost)
Fix psql's tab completion for ALTER TABLE t ALTER c DROP ... (Kyotaro Horiguchi)
In psql, treat an empty or all-blank setting of the PAGER environment variable as meaning "no pager" (Tom Lane)
Previously, such a setting caused output intended for the pager to vanish entirely.
Improve contrib/dblink's reporting of low-level libpq errors, such as out-of-memory (Joe Conway)
Teach contrib/dblink to ignore irrelevant server options when it uses a contrib/postgres_fdw foreign server as the source of connection options (Corey Huinker)
Previously, if the foreign server object had options that were not also libpq connection options, an error occurred.
Fix portability problems in contrib/pageinspect's functions for GIN indexes (Peter Eisentraut, Tom Lane)
Fix possible miss of socket read events while waiting on Windows (Amit Kapila)
This error was harmless for most uses, but it is known to cause hangs when trying to use the pldebugger extension.
On Windows, ensure that environment variable changes are propagated to DLLs built with debug options (Christian Ullrich)
Sync our copy of the timezone library with IANA release tzcode2016j (Tom Lane)
This fixes various issues, most notably that timezone data installation failed if the target directory didn't support hard links.
Update time zone data files to tzdata release 2016j for DST law changes in northern Cyprus (adding a new zone Asia/Famagusta), Russia (adding a new zone Europe/Saratov), Tonga, and Antarctica/Casey. Historical corrections for Italy, Kazakhstan, Malta, and Palestine. Switch to preferring numeric zone abbreviations for Tonga.


This was a digital media piece assigned as a personal project to explore our skills and beliefs as creators. Each student was tasked with creating a piece in their form of digital Media. Being a Game Developer I created this small story based, point and click game to explore the topics the project was to covered.
The topic assigned to us was the topic of "imago dei" (image of God). As creators we were to explore what that looked like to us. One last requierment was that our project resemble the style of a tryptic
What are People? is a isometric, point and click puzzle game. There are three puzzles in total to reflect the tryptic art style, and each puzzle represents a different aspect of my interpretation of imago Dei. Players may control the character by clicking around on screen and various objects.
The goal of the game is to escape this mysterious holding place you have woken up in. After some exploring the player can find other people in this place that can help explain what is happening and hint to the player that there is a way to escape. If the player manages to collect all the fragments of a center piece to the main room the way out will be revieled. In order to do this they will need to complete the challenges of the three puzzles around the map, each one relating to imago Dei.