/*
* Copyright 2020 Andrew Sayers<EMAIL_ADDRESS>*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use, copy,
* modify, merge, publish, distribute, sublicense, and/or sell copies
* of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
"use strict";
/**
* Valid record statuses
* @enum {string}
*/
const DiaryStandardRecordStatus = {
/** user is currently awake */
awake : "awake" ,
/** user is in bed but not asleep */
in_bed: "in bed",
/** user is asleep */
asleep: "asleep",
};
/**
* @typedef {{
* start : number,
* end : number,
* start_timezone : (string|undefined),
* end_timezone : (string|undefined),
* duration : (number|null|undefined),
* status : DiaryStandardRecordStatus,
* tags : Array<string>,
* comments : Array<string|{time:number,text:string}>,
* day_number : number,
* start_of_new_day : boolean,
* is_primary_sleep : boolean,
* missing_record_after: boolean
* }} DiaryStandardRecord
*
* A single record in a diary (e.g. one sleep) - see README.md for details
*
*/
let DiaryStandardRecord;
/**
* @public
* @unrestricted
* @augments DiaryBase
*
* @example
* let diary = new_sleep_diary(contents_of_my_file));
*
* // print the minimum expected day duration in milliseconds:
* console.log(diary.minimum_day_duration);
* -> 12345
*
* // print the maximum expected day duration in milliseconds:
* console.log(diary.maximum_day_duration);
* -> 23456
*
* // Print the complete list of records
* console.log(diary.records);
* -> [
* {
* // DiaryStandardRecordStatus value, usually "awake" or "asleep"
* status: "awake",
*
* // start and end time (in milliseconds past the Unix epoch), estimated if the user forgot to log some data:
* start: 12345678,
* end: 23456789,
* start_timezone: "Etc/GMT-1",
* end_timezone: "Europe/Paris",
*
* duration: 11111111, // or a falsey value if duration is unknown
*
* // tags associated with this period:
* tags: [
* "tag 1",
* "tag 2",
* ...
* ],
*
* // comments recorded during this period:
* comments: [
* "comment with no associated timestamp",
* { time: 23456543, text: "timestamped comment" },
* ...
* ],
*
* // (estimated) day this record is assigned to:
* day_number: 1,
*
* // true if the current day number is greater than the previous record's day number:
* start_of_new_day: true,
*
* // whether this value is the primary sleep for the current day number:
* is_primary_sleep: false,
*
* // this is set if it looks like the user forgot to log some data:
* missing_record_after: true
*
* },
*
* ...
*
* ]
*
* // Print the user's current sleep/wake status:
* console.log(diary.latest_sleep_status());
* -> "awake"
*
* // Print the user's sleep statistics:
* console.log( diary.summarise_records( record => record.status == "asleep" ) );
* -> {
* average : 12345.678,
* mean : 12356.789,
* interquartile_mean : 12345.678,
* standard_deviation: 12.56,
* interquartile_standard_deviation: 12.45,
* median : 12345,
* interquartile_range : 12,
* durations : [ undefined, 12345, null, ... ],
* interquartile_durations : [ 10000, 10001 ... 19998, 19999 ],
* }
*
* // Print the user's day length statistics for the past 30 days:
* let cutoff = new Date().getTime() - 1000*60*60*24*30;
* console.log( diary.summarise_days( record => record.start > cutoff ) );
* -> {
* average : 12345.678,
* mean : 12356.789,
* interquartile_mean : 12345.678,
* standard_deviation: 12.56,
* interquartile_standard_deviation: 12.45,
* median : 12345,
* interquartile_range : 12,
* durations : [ undefined, 12345, null, ... ],
* interquartile_durations : [ 10000, 10001 ... 19998, 19999 ],
* }
*/
class DiaryStandard extends DiaryBase {
/**
* @param {Object} file - file contents, or object containing records
* @param {Array=} file.records - individual records from the sleep diary
* @param {number=} file.minimum_day_duration - minimum expected day duration in milliseconds
* @param {number=} file.maximum_day_duration - maximum expected day duration in milliseconds
* @param {Function=} serialiser - function to serialise output
*/
constructor(file,serialiser) {
super(file,serialiser);
if ( file["records"] && !file["file_format"] ) {
file = {
"file_format": () => "Standard",
"contents" : file,
};
}
switch ( file["file_format"]() ) {
case "url":
return this.initialise_from_url(file);
case "archive": // unsupported
return this.invalid(file);
case "string":
file = {
"file_format": () => "Standard",
"contents": /** @type (Object|null) */ (JSON.parse(file["contents"])),
}
if ( file["contents"]["file_format"] != "Standard" ) {
return this.invalid(file);
}
// FALL THROUGH
default:
let contents = file["contents"];
if (
file["file_format"]() != "Standard" ||
contents === null ||
typeof(contents) != "object" ||
!Array.isArray(contents["records"])
) {
return this.invalid(file);
}
/**
* Individual records from the sleep diary
*
* @type Array<DiaryStandardRecord>
*/
this["records"] = contents["records"];
/**
* Minimum expected length for a day
*
*
We calculate day numbers by looking for "asleep"
* records at least this far apart.

*
* @type number
*/
this["minimum_day_duration"] = contents["minimum_day_duration"] || 20*60*60*1000;
/**
* Maximum expected length for a day
*
*
We calculate skipped days by looking for "asleep"
* records at this far apart

*
* @type number
*/
this["maximum_day_duration"] = contents["maximum_day_duration"] || this["minimum_day_duration"]*2;
/*
* Calculate extra information
*/
let day_start = 0,
day_number = 0,
prev = {
"status": "",
"day_number": -1
},
day_sleeps = [],
sleep_wake_record = prev
;
const minimum_day_duration = this["minimum_day_duration"],
maximum_day_duration = this["maximum_day_duration"]
;
contents["records"]
.sort( (a,b) => ( a["start"] - b["start"] ) || ( a["end"] - b["end"] ) )
.forEach( r => {
if ( !r.hasOwnProperty("duration") ) {
r["duration"] = r["end"] - r["start"];
if ( isNaN(r["duration"]) ) r["duration"] = null;
}
if ( r.hasOwnProperty("start_of_new_day") ) {
if ( r["start_of_new_day"] ) {
day_start = r["start"];
}
} else {
r["start_of_new_day"] =
r["status"] == "asleep" &&
r["start"] > day_start + minimum_day_duration
;
}
if ( r.hasOwnProperty("day_number") ) {
day_number = r["day_number"];
} else {
if ( r["start_of_new_day"] ) {
if ( r["start"] > day_start + maximum_day_duration ) {
// assume we skipped a day
day_number += 2;
} else {
day_number += 1;
}
day_start = r["start"];
}
r["day_number"] = day_number;
}
if ( r["status"] == "awake" || r["status"] == "asleep" ) {
if ( !sleep_wake_record.hasOwnProperty("missing_record_after") ) {
sleep_wake_record["missing_record_after"] = (
r["status"] == sleep_wake_record["status"]
);
}
sleep_wake_record = r;
}
if ( r["status"] == "asleep" ) {
if ( (day_sleeps[r["day_number"]]||{"duration":0})["duration"] < r["duration"] ) {
day_sleeps[r["day_number"]] = r;
}
}
prev = r;
})
;
day_sleeps.forEach( r => {
if ( r && !r.hasOwnProperty("is_primary_sleep") ) r["is_primary_sleep"] = true;
});
}
}
["to"](to_format) {
switch ( to_format ) {
case "output":
return this.serialise({
"file_format": () => "string",
"contents": JSON.stringify(Object.assign({"file_format":this["file_format"]()},this)),
});
default:
return super["to"](to_format);
}
}
["merge"](other) {
let records = {};
[ this, other["to"](this["file_format"]()) ].forEach(
f => f["records"].forEach(
r => records[[ r["start"], r["end"], r["status"] ].join()] = r
)
);
this["records"] = Object.values(records).sort( (a,b) => ( a["start"] - b["start"] ) || ( a["end"] - b["end"] ) );
return this;
}
["file_format"]() { return "Standard"; }
/**
* Internal function used by summarise_*
* @private
*/
static summarise(durations) {
let defined_durations = durations.filter( r => r ),
total_durations = defined_durations.length
;
if ( !total_durations ) return null;
let a_plus_b = (a,b) => a+b,
a_minus_b = (a,b) => a-b,
sum_of_squares = (a,r) => a + Math.pow(r - mean, 2) ,
sorted_durations = defined_durations.sort(a_minus_b),
interquartile_durations = sorted_durations.slice(
Math.round( sorted_durations.length*0.25 ),
Math.round( sorted_durations.length*0.75 ),
),
mean,
untrimmed_mean = defined_durations.reduce(a_plus_b) / (total_durations||1),
interquartile_mean = interquartile_durations.reduce(a_plus_b) / (interquartile_durations.length||1),
ret = {
"average": untrimmed_mean,
"mean": untrimmed_mean,
"interquartile_mean": interquartile_mean,
"median": sorted_durations[Math.floor(sorted_durations.length/2)],
"interquartile_range": (
interquartile_durations[interquartile_durations.length-1] -
interquartile_durations[0]
),
"durations": durations,
"interquartile_durations": interquartile_durations,
};
// calculate standard deviations:
mean = untrimmed_mean;
ret["standard_deviation"] = Math.sqrt( defined_durations.reduce(sum_of_squares,0) / total_durations );
mean = interquartile_mean;
ret["interquartile_standard_deviation"] = Math.sqrt( interquartile_durations.reduce(sum_of_squares,0) / interquartile_durations.length );
return ret;
}
/**
* Summary statistics (based on individual records)
*
*
Because real-world data tends to be quite messy, and because
* different users have different requirements, we provide several
* summaries for the data:

*
*

*
<tt>average</tt> is the best guess at what the
* user would intuitively consider the average duration of a
* record. The exact calculation is chosen from the list
* below, and may change in future. It is currently the
* <tt>trimmed_mean</tt>. If you don't have any specific
* requirements, you should use this and ignore the
* others.

*
<tt>mean</tt> and <tt>standard_deviation</tt> are
* traditional summary statistics for the duration, but are
* not recommended because real-world data tends to skew
* these values higher than one would expect.

*
<tt>interquartile_mean</tt> and <tt>interquartile_standard_deviation</tt>
* produce more robust values in cases like ours, because they
* ignore the highest and lowest few records.
*
<tt>median</tt> and <tt>interquartile_range</tt> produce
* more robust results, but tend to be less representative when
* there are only a few outliers in the data.
*
<tt>durations</tt> and <tt>interquartile_durations</tt>
* are the raw values the other statistics were created from.
*

*
* @nocollapse
* @public
*
* @param {function(*)=} filter - only examine records that match this filter
*
* @return {null|{
* average : number,
* mean : number,
* interquartile_mean : number,
* standard_deviation: number,
* interquartile_standard_deviation: number,
* median : number,
* interquartile_range : number,
* durations : Array<number|undefined>,
* interquartile_durations : Array<number|undefined>
* }}
*
*/
["summarise_records"](filter) {
return DiaryStandard.summarise(
( filter ? this["records"].filter(filter) : this["records"] )
.map( r => r["duration"] )
);
}
/**
* Summary statistics (based on records grouped by day_number)
*
*
Similar to {@link DiaryStandard#summarise_records}, but
* groups records by day_number.

*
* @nocollapse
* @public
*
* @see [summarise_records]{@link DiaryStandard#summarise_records}
* @tutorial Graph your day lengths
*
* @param {function(*)=} filter - only examine records that match this filter
*
* @return {null|{
* average : number,
* mean : number,
* interquartile_mean : number,
* standard_deviation: number,
* interquartile_standard_deviation: number,
* median : number,
* interquartile_range : number,
* durations : Array<number|undefined>,
* interquartile_durations : Array<number|undefined>
* }}
*
*/
["summarise_days"](filter) {
// get the earliest start time for each day:
let starts = [];
( filter ? this["records"].filter(filter) : this["records"] )
.forEach( r => {
if ( starts[r["day_number"]]||0 < r["start"] )
starts[r["day_number"]] = r["start"];
});
// remove leading undefined start times:
while ( starts.length && !starts[0] ) {
starts.shift();
}
// calculate day duration relative to previous day:
let durations = [];
for ( let n=1; n<starts.length; ++n ) {
if ( starts[n] && starts[n-1] ) {
durations[n-1] = starts[n] - starts[n-1];
}
}
return DiaryStandard.summarise(durations);
}
/**
* Latest sleep/wake status
*
* @nocollapse
* @public
*
* @return {string} "awake", "asleep" or "" (for an empty diary)
*/
["latest_sleep_status"]() {
for ( let n=this["records"].length-1; n>=0; --n ) {
let status = this["records"][n].status;
if ( status == "awake" || status == "asleep" ) return status;
}
return "";
}
}
DiaryBase.register({
"name": "Standard",
"constructor": DiaryStandard,
"title": "Standardised diary format",
"url": "/src/Standard",
});


In a recent office meeting, I had the opportunity to share my daily planning system. I explained a bit about what I do to plan my days and keep track of my goals and there was enough interest that I was asked to lead a “lunch and learn” on the subject. So I figured I might as well go ahead and share the same here.
In a Nutshell
Everyday, I fill out a daily planning worksheet. It is split into two main parts: The Morning Ritual and The Evening Ritual. They’re so named because I wanted to think of them as something I automatically do when I wake up and before I go to bed. At the end of each section, I include a few personal reminders of mental exercises I want to run through as well. Really, the purpose of the entire worksheet is to prompt me to think about or do something.
After filling in the worksheet, I take all the actionable items and transfer them into a to-do list application. Throughout the day, I refer to this list to make sure I’m addressing everything from the worksheet.
At the end of the day, I go back to the same worksheet and fill out The Evening Ritual. This gives me an opportunity to review my day and learn a few lessons.
The Worksheet
Below is a slimmed down version of my daily worksheet. I’ve removed things that apply to me.  Also, don’t be afraid to change your worksheet at any time.
Most of questions are pretty self explanatory, however, I’ve added notes where I think they might help.
The Morning Ritual
My Stand
**This came from another exercise. It lists the things you stand for. I like to review these everyday.
My Values
**This lists the things that I value and the things I want less of. Think of it as two categories: things I want more of in my life, and things I want less of.
How am I going to take care of the four parts of my being today? Or how will I deliberately practice them?
**This question does start to get into my personal beliefs but it may help prompt you to think about something similar. I personally prefer to think of myself as a four part being. Those parts are: physical, mental, emotional, and spiritual. I have found it very useful to think about and write down how I literally plan to improve each of those parts everyday. It doesn’t have to be something huge and unattainable; it merely has to address some aspect of each ‘part’.
One good thing about myself:
What and whom am I grateful for today?
What am I excited about and looking forward to doing today?
What is my purpose, and do my plans for today connect me to it?
How can I move the dial toward my goals today?
To whom can I reach out and serve or thank today?
Are my goals still aligned with my purpose?
The One Thing (the most important thing I will achieve this day and/or week):
Priority Tasks (that I must complete today or this week):
Projects (to work on one step at a minimum each day):
Contacts (calls/emails to people I need to connect with):
Habit (what am I working on this week, and how):
Notes, Ideas, Inspiration (any ideas that came up during the morning ritual):
The Evening Ritual
Did I achieve my One Thing?
Was I “on” and in the zone today or “off” and unbalanced?
What contributed to this feeling?
What were the top three positive things I accomplished or that happened today?
What did I learn from them?
Are there unsolved challenges I would like my subconscious mind to help me solve tonight?
What went wrong today and what is the silver lining?
One thing I’m grateful for:
The Results
Personally, I’ve found this system helps me to focus on the big life goals as well as the smaller day to day tasks. The prompting questions go a long way in making sure I address the various aspects of my life. It forces me to think about how I’ll be a better husband, father, or employee.
Additionally, forcing myself to write down what I’m good at, things and people I’m grateful for, and lessons learned has really started to alter how I perceive difficulties. Everything has started to become an opportunity rather than something to just be ‘dealt with’.
Questions
For anyone reading this, I’d really like to hear from you if you have any questions or comments about this system. I’m always up for incorporating new and potentially better ideas so send me an email and we’ll chat.


Make Some Salad, It Is Healthy
Ran on 8 devices with 8 passing and 0 failing in an average of 13 seconds
HTC-PG762
Droid
HTC One V
Nexus 7
PG86100
Nexus 4
Nexus S
T-Mobile myTouch 3G


--- categories: [] date: 2012-03-25T16:34:24Z status: publish tags: [] title: Rugby Havant tournament layout: post url: /2012/03/25/rugby-hamlet-tournament/ ---


assigned
by James R. Griffin III at 2020-11-23 16:46:19.Thank you very much for this @matthewjchandler! I am afraid that I need to reconcile some of these proposed changes with the private repository for the DataSpace installation upstream before I can offer a preview for this, but I can address this today.
assigned
by James R. Griffin III at 2020-11-23 16:46:27.mentioned
by Matthew J. Chandler at 2020-11-23 16:47:19.subscribed
by Matthew J. Chandler at 2020-11-23 16:47:19.closed
by James R. Griffin III at 2020-11-23 02:03:44.These were transferred successfully, but still need to be renamed. However, I contend that this should be scoped for a separate Issue.
closed
by James R. Griffin III at 2020-11-23 02:04:29.labeled
by James R. Griffin III at 2020-11-23 02:09:19.labeled
by James R. Griffin III at 2020-11-23 02:09:19.labeled
by James R. Griffin III at 2020-11-23 02:09:19.labeled
by James R. Griffin III at 2020-11-23 02:09:19.labeled
by James R. Griffin III at 2020-11-23 02:16:25.labeled
by James R. Griffin III at 2020-11-23 02:16:25.labeled
by James R. Griffin III at 2020-11-23 02:16:25.labeled
by James R. Griffin III at 2020-11-23 02:16:25.labeled
by James R. Griffin III at 2020-11-23 02:16:25.https://github.com/pulibrary/princeton_ansible/pull/1791/files did not update the necessary env. variables:
dspace@gcp-dataspace-prod1:~$ echo $AWS_ACCESS_KEY_ID
111111111111 # (this is *not* the access key ID)
This seems to be why the crontab was failing; Further, there was also the following error:
[Fatal Error] dublin_core.xml:6:1006: The content of elements must consist of well-formed character data or markup.
org.xml.sax.SAXParseException; systemId: file:/home/dspace/pulibrary-src/dspace-python/pppl/s3/imports/fnespoli_Nespoli_NME_2020/item_000/dublin_core.xml; lineNumber: 6; columnNumber: 1006; The content of elements must consist of well-formed character data or markup.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:205)
at org.dspace.app.itemimport.ItemImport.loadXML(ItemImport.java:1953)
at org.dspace.app.itemimport.ItemImport.loadDublinCore(ItemImport.java:1068)
at org.dspace.app.itemimport.ItemImport.loadMetadata(ItemImport.java:1053)
at org.dspace.app.itemimport.ItemImport.addItem(ItemImport.java:870)
at org.dspace.app.itemimport.ItemImport.addItems(ItemImport.java:736)
at org.dspace.app.itemimport.ItemImport.main(ItemImport.java:498)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.dspace.app.launcher.ScriptLauncher.runOneCommand(ScriptLauncher.java:226)
at org.dspace.app.launcher.ScriptLauncher.main(ScriptLauncher.java:78)
org.xml.sax.SAXParseException; systemId: file:/home/dspace/pulibrary-src/dspace-python/pppl/s3/imports/fnespoli_Nespoli_NME_2020/item_000/dublin_core.xml; lineNumber: 6; columnNumber: 1006; The content of elements must consist of well-formed character data or markup.
$HOME/dspace/app_configs/dataspace
does contain the proper values set by https://github.com/pulibrary/princeton_ansible/pull/1791/files. I am setting the following in order to ensure that synchronized imports are successful:
0 * * * * source $HOME/dspace/app_configs/dataspace; export AWS_DEFAULT_REGION=us-east-1; aws s3 sync s3://pppldataspace $HOME/pulibrary-src/dspace-python/pppl/s3; source $HOME/pulibrary-src/dspace-python/pppl/scripts/pppl_pull.sh
https://github.com/pulibrary/dspace-development/issues/254 was noted by PPPL users during the last session in which they tested the new imports from DataSpace and the OAR. This should be prioritized for a SN@P ticket.
unassigned
by James R. Griffin III at 2020-11-23 02:18:11.labeled
by James R. Griffin III at 2020-11-23 02:20:41.labeled
by James R. Griffin III at 2020-11-23 02:21:22.labeled
by James R. Griffin III at 2020-11-23 02:21:46.Advice / script from Atmire: ```bash
handle="88435/dsp01jq085k007"
id=$(psql -c "copy(select resourceid from handle where handle = '$handle' and resourcetype_id = 2) to stdout with csv")
solr-count statistics "type:0 AND owningItem:$id"
solr-facet statistics "type:0 AND owningItem:$id" ip
solr-count statistics "type:2 AND id:$id"
solr-facet statistics "type:2 AND id:$id" ip ```
Other facet queries that can be done for the above are "userAgent", "countryCode", "dns", and "isBot" (just replace "ip" at the end of the queries above with these instead). You can also put additional ANDs in there, to limit by isBot:false, e.g.:
solr-facet statistics "type:2 AND id:$id AND isBot:false" countryCode
For bitstream downloads, you can also facet on "id" to break it down by specific bitstream (if some items have multiple files in them).
assigned
by Kevin McElwee at 2020-11-23 15:09:44.closed
by Axa Mei Liauw at 2020-11-23 13:36:01.referenced
by Axa Mei Liauw at 2020-11-23 13:36:02.referenced
by Axa Mei Liauw at 2020-11-23 13:36:00.merged
by Axa Mei Liauw at 2020-11-23 13:36:00.closed
by Axa Mei Liauw at 2020-11-23 13:36:00.head_ref_deleted
by Axa Mei Liauw at 2020-11-23 13:36:03.head_ref_force_pushed
by None at 2020-11-23 13:00:17.labeled
by James R. Griffin III at 2020-11-23 16:30:45.head_ref_force_pushed
by None at 2020-11-23 15:43:02.head_ref_force_pushed
by None at 2020-11-23 17:12:26.head_ref_force_pushed
by None at 2020-11-23 19:00:46.head_ref_force_pushed
by None at 2020-11-23 19:08:56.head_ref_force_pushed
by None at 2020-11-23 19:13:03.head_ref_force_pushed
by None at 2020-11-23 19:22:08.Closed by #1676
closed
by Axa Mei Liauw at 2020-11-23 14:06:21.review_requested
by Axa Mei Liauw at 2020-11-23 13:59:48.referenced
by Kevin Reiss at 2020-11-23 14:24:58.merged
by Kevin Reiss at 2020-11-23 14:24:58.closed
by Kevin Reiss at 2020-11-23 14:24:58.head_ref_deleted
by Kevin Reiss at 2020-11-23 14:25:07.@kevinreiss we can get the following formats from libcal:
HTML: For processing via a web-script (PHP, ASP, AJAX, etc) or embedding directly in the page using an iframe. Javascript: Adding to page as JavaScript include. JSON: For processing via a script. XML: For processing via a script. RSS: For processing via a RSS Feed. Note: For 'All Locations' adding &display=1 to the Embed URL will exclude adding Department hours.
refs #1007
mentioned
by Kevin Reiss at 2020-11-23 14:47:41.subscribed
by Kevin Reiss at 2020-11-23 14:47:41.labeled
by Axa Mei Liauw at 2020-11-23 15:18:19.labeled
by Axa Mei Liauw at 2020-11-23 15:18:19.Works for me.
We're wondering if the parent component title could remain static while a user scrolls through the ToC; for example, when scrolling through the ToC for Toni Morrison, Writing->Novels->The Bluest Eye, could the Bluest Eye, and perhaps all of the parent titles above it, Novels and Writings, remain static as a user scrolls to view the child components?
This could be a candidate for user testing, though several staff, including myself and Mandy, had agreed that this would be very useful to help maintain context and so users remained oriented.
That's a good question. I'm not sure. This may be a good question to discuss with the ASpace working group. What do you think, @regineheberlein?
Personally, I think this is two different questions. I believe there's consensus that the Topics haven't been all too useful in their current form--Public Services should probably weigh in on this.
The Browse Names (probably better renamed as "Browse Agents"?) is important to keep in my view, but needs to be re-generated from the actual URI's once the records and links are in ASpace. We'll have actual data once Lyrasis has imported the third test load (I'm guessing two weeks from now).
Yes, good point; this should probably be two separate issues.
The plan is to keep the Topics for now as is as much as that's possible. ADAPT and PS staff will be reviewing their usage in the near future.
Agree with everyone that we should keep and review usage in the future.
mentioned
by None at 2020-11-23 15:54:32.subscribed
by None at 2020-11-23 15:54:32.unlabeled
by None at 2020-11-23 17:09:08.labeled
by None at 2020-11-23 17:09:09.assigned
by Eliot Jordan at 2020-11-23 18:23:02.@carolyncole referenced a practice in which EUS uses servicename-prod.princeton.edu
, with the hope of shifting this to servicename.princeton.edu
. @kayiwa confirmed that this could be supported using X.509 SAN entries.
labeled
by James R. Griffin III at 2020-11-23 14:30:17.milestoned
by James R. Griffin III at 2020-11-23 14:30:17.mentioned
by Francis Kayiwa at 2020-11-23 14:30:17.subscribed
by Francis Kayiwa at 2020-11-23 14:30:17.assigned
by James R. Griffin III at 2020-11-23 14:30:28.assigned
by Francis Kayiwa at 2020-11-23 14:30:34.mentioned
by Francis Kayiwa at 2020-11-23 18:37:20.subscribed
by Francis Kayiwa at 2020-11-23 18:37:20.mentioned
by None at 2020-11-23 18:37:20.subscribed
by None at 2020-11-23 18:37:20.https://pulfalight-staging.princeton.edu/catalog/MC120?expanded=true is still quite slow even with https://github.com/pulibrary/pulfalight/pull/435/commits/0b2440f1772e7d1c14178d5c747e17ceb409fe9d, but there were definitely improvements. My suspicion is that this might also just be traversing of the nested Solr Documents.
deployed
by Trey Pendragon at 2020-11-23 16:22:46.deployed
by Trey Pendragon at 2020-11-23 18:42:35.head_ref_force_pushed
by James R. Griffin III at 2020-11-23 21:23:33.deployed
by Trey Pendragon at 2020-11-23 21:23:54.head_ref_force_pushed
by Christina Chortaria at 2020-11-23 21:37:34.head_ref_force_pushed
by Christina Chortaria at 2020-11-23 22:27:43.head_ref_force_pushed
by Christina Chortaria at 2020-11-23 22:41:07.head_ref_force_pushed
by Christina Chortaria at 2020-11-23 22:58:36.Resolved: Library Catalog is back up in 3a67451
.
labeled
by Francis Kayiwa at 2020-11-23 03:20:36.labeled
by Francis Kayiwa at 2020-11-23 03:20:36.locked
by Francis Kayiwa at 2020-11-23 03:20:37.closed
by Francis Kayiwa at 2020-11-23 03:28:31.mentioned
by Princeton University Library at 2020-11-23 18:11:50.mentioned
by Anand Chowdhary at 2020-11-23 18:11:50.subscribed
by Anand Chowdhary at 2020-11-23 18:11:50.mentioned
by Upptime Bot at 2020-11-23 18:11:50.subscribed
by Upptime Bot at 2020-11-23 18:11:50.


networkx.algorithms.minors.quotient_graph¶
-
quotient_graph
(G, partition, edge_relation=None, node_data=None, edge_data=None, relabel=False, create_using=None)[source]¶ Returns the quotient graph of
G
under the specified equivalence relation on nodes.Parameters: G (NetworkX graph) – The graph for which to return the quotient graph with the specified node relation.
partition (function or list of sets) – If a function, this function must represent an equivalence relation on the nodes of
G
. It must take two arguments u and v and return True exactly when u and v are in the same equivalence class. The equivalence classes form the nodes in the returned graph.If a list of sets, the list must form a valid partition of the nodes of the graph. That is, each node must be in exactly one block of the partition.
edge_relation (Boolean function with two arguments) – This function must represent an edge relation on the blocks of
G
in the partition induced bynode_relation
. It must take two arguments, B and C, each one a set of nodes, and return True exactly when there should be an edge joining block B to block C in the returned graph.If
edge_relation
is not specified, it is assumed to be the following relation. Block B is related to block C if and only if some node in B is adjacent to some node in C, according to the edge set ofG
.edge_data (function) – This function takes two arguments, B and C, each one a set of nodes, and must return a dictionary representing the edge data attributes to set on the edge joining B and C, should there be an edge joining B and C in the quotient graph (if no such edge occurs in the quotient graph as determined by
edge_relation
, then the output of this function is ignored).If the quotient graph would be a multigraph, this function is not applied, since the edge data from each edge in the graph
G
appears in the edges of the quotient graph.node_data (function) – This function takes one argument, B, a set of nodes in
G
, and must return a dictionary representing the node data attributes to set on the node representing B in the quotient graph. If None, the following node attributes will be set:- ‘graph’, the subgraph of the graph
G
that this block represents, - ‘nnodes’, the number of nodes in this block,
- ‘nedges’, the number of edges within this block,
- ‘density’, the density of the subgraph of
G
that this block represents.
- ‘graph’, the subgraph of the graph
relabel (bool) – If True, relabel the nodes of the quotient graph to be nonnegative integers. Otherwise, the nodes are identified with
frozenset
instances representing the blocks given inpartition
.create_using (NetworkX graph constructor, optional (default=nx.Graph)) – Graph type to create. If graph instance, then cleared before populated.
Returns: The quotient graph of
G
under the equivalence relation specified bypartition
. If the partition were given as a list ofset
instances andrelabel
is False, each node will be afrozenset
corresponding to the sameset
.Return type: NetworkX graph
Raises: NetworkXException
– If the given partition is not a valid partition of the nodes ofG
.Examples
The quotient graph of the complete bipartite graph under the “same neighbors” equivalence relation is
K_2
. Under this relation, two nodes are equivalent if they are not adjacent but have the same neighbor set:>>> import networkx as nx >>> G = nx.complete_bipartite_graph(2, 3) >>> same_neighbors = lambda u, v: (u not in G[v] and v not in G[u] ... and G[u] == G[v]) >>> Q = nx.quotient_graph(G, same_neighbors) >>> K2 = nx.complete_graph(2) >>> nx.is_isomorphic(Q, K2) True
The quotient graph of a directed graph under the “same strongly connected component” equivalence relation is the condensation of the graph (see
condensation()
). This example comes from the Wikipedia article `Strongly connected component`_:>>> import networkx as nx >>> G = nx.DiGraph() >>> edges = ['ab', 'be', 'bf', 'bc', 'cg', 'cd', 'dc', 'dh', 'ea', ... 'ef', 'fg', 'gf', 'hd', 'hf'] >>> G.add_edges_from(tuple(x) for x in edges) >>> components = list(nx.strongly_connected_components(G)) >>> sorted(sorted(component) for component in components) [['a', 'b', 'e'], ['c', 'd', 'h'], ['f', 'g']] >>> >>> C = nx.condensation(G, components) >>> component_of = C.graph['mapping'] >>> same_component = lambda u, v: component_of[u] == component_of[v] >>> Q = nx.quotient_graph(G, same_component) >>> nx.is_isomorphic(C, Q) True
Node identification can be represented as the quotient of a graph under the equivalence relation that places the two nodes in one block and each other node in its own singleton block:
>>> import networkx as nx >>> K24 = nx.complete_bipartite_graph(2, 4) >>> K34 = nx.complete_bipartite_graph(3, 4) >>> C = nx.contracted_nodes(K34, 1, 2) >>> nodes = {1, 2} >>> is_contracted = lambda u, v: u in nodes and v in nodes >>> Q = nx.quotient_graph(K34, is_contracted) >>> nx.is_isomorphic(Q, C) True >>> nx.is_isomorphic(Q, K24) True
The blockmodeling technique described in [1] can be implemented as a quotient graph:
>>> G = nx.path_graph(6) >>> partition = [{0, 1}, {2, 3}, {4, 5}] >>> M = nx.quotient_graph(G, partition, relabel=True) >>> list(M.edges()) [(0, 1), (1, 2)]
References
[1] Patrick Doreian, Vladimir Batagelj, and Anuska Ferligoj. Generalized Blockmodeling. Cambridge University Press, 2004.


ABOUT US
HOW IT BEGAN
it was a hackathon and we people were given a task in which we have to make an appication that can be used by all and the most important thing was that we have to make use of some apis .After thinking alot we came with this idea that tries to help a person lost in an area who only knows his/her native language.the app tries to provide the shortest route to the person from his current location to destination location.


HackerRank: What and Why?
HackerRank is an online platform where developers all over the world can solve problems of various domains of Computer Science. Developers can practice their problem solving skills. They can also learn programming languages such as, C, C++, Python, Ruby etc. Not only that, they can practice basic algorithms and data structure with fun. We all know that data structures and algorithms are the heart of programming. One can practice Artificial Intelligence (AI), database, Linux shell etc. If you want to learn with fun, then this platform is going to be very helpful to you.
5 Interesting Facts about HackerRank:
{{post_author}}, {{date}}
Share this article on →


CK
Owner & Founder
Some text that describes me lorem ipsum ipsum lorem.
<EMAIL_ADDRESS>DB
Owner & Founder
Some text that describes me lorem ipsum ipsum lorem.
<EMAIL_ADDRESS>TBA
Programmer
Some text that describes me lorem ipsum ipsum lorem.
example@example.com


UCP release notes
Estimated reading time: 16 minutesThese are the docs for UCP version 1.1
To select a different version, use the selector below.
Here you can learn about new features, bug fixes, breaking changes and known issues for each UCP version. You can then use the upgrade instructions, to upgrade your installation to the latest release.
Version 1.1.6
(18 Jan 2017)
Note: UCP 1.1.6 supports Docker Engine 1.12 but does not use the built-in orchestration capabilities provided by the Docker Engine with swarm mode enabled. When installing this UCP version on a Docker Engine 1.12 host, UCP creates a cluster using the older Docker Swarm v1.2.
Security Update
This patch contains the following security-related updates:
- Fixed an issue by which a high number of ping requests could result in temporarily unresponsive UCP services
- Fixed an issue by which non-admin users with “View-Only” permissions could use the undocumented private API to restart/stop/delete containers.
- Only admins are now allowed to tag, save, and load images as UCP/DTR system images
- UCP will now warn admins during installation if there is an open TCP port which could be used to perform unauthorized actions on the cluster
These issues affect UCP version 1.1.5 and below. They were discovered by our development team during internal testing.
We’ve revised our guidelines on access control permissions as well. Read the permissions levels section for more details.
Version 1.1.5
(8 Dec 2016)
Note: UCP 1.1.5 supports Docker Engine 1.12 but does not use the built-in orchestration capabilities provided by the Docker Engine with swarm mode enabled. When installing this UCP version on a Docker Engine 1.12 host, UCP creates a cluster using the older Docker Swarm v1.2.
Bug fixes
- Fixed an issue where containers created using a network alias would be
rescheduled to another node on a
on-node-failure
event, but have incorrect DNS entries - Errors during an LDAP synchronization are now displayed in the UI
- UCP is now correctly configured after the controller service is restarted
- Usernames from both LDAP and managed users are now correctly normalized during the authentication process.
Version 1.1.4
(29 Sept 2016)
Note: UCP 1.1.4 supports Docker Engine 1.12 but does not use the built-in orchestration capabilities provided by the Docker Engine with swarm mode enabled. When installing this UCP version on a Docker Engine 1.12 host, UCP creates a cluster using Docker Swarm v1.2.5.
Bug fixes
- Fixed an issue that prevented authentication tokens to be generated for organization accounts
- Improved performance when deploying to a cluster with thousands of users
- Increased timeouts for adding new nodes and other network operations
Version 1.1.3
Note: UCP 1.1.3 supports Docker Engine 1.12 but does not use the built-in orchestration capabilities provided by the Docker Engine with swarm mode enabled. When installing this UCP version on a Docker Engine 1.12 host, UCP creates a cluster using Docker Swarm v1.2.5.
Security Update
Fixes a security issue by which a malicious user with limited privileges can escalate their privileges to perform unauthorized actions on the cluster via the API.
This issue affects deployments of Universal Control Plane versions 1.1.2 or prior, and can only be used to gain access to the system by someone who already has a UCP account.
This issue was discovered by our development team during internal testing.
Features
- Core
- Upgraded Docker Swarm to 1.2.5
- Non-admin users no longer have the ability to edit or delete UCP/DTR volumes and networks.
- The Pull Image, Delete Image, Create Volume, Delete Volume, Create Network and Delete Network operations are now inaccessible to users with View Only default permissions or lower.
Bug Fixes
- Improved system performance when large numbers of overlay networks are deployed on the cluster.
- Fixed an issue which affected container rescheduling on clusters with overlay networks.
- Fixed an issue which affected synchronizing organization owners (admins) in LDAP when migrating from DTR 1.4.3 to 2.0.x
- Fixed an issue where UCP/DTR integration config was not loaded when UCP controller was restarted.
- Fixed an issue in the GUI where the sidebar does not display when first logging into UCP.
- Fixed an issue where volumes created through the UCP GUI did not correctly populate the labels field.
Known Issues
- This version of UCP cannot be installed on Engine 1.12 host with swarm mode
enabled, and is not compatible with swarm-mode based APIs, e.g.
docker service
.
Version 1.1.2
Note: UCP 1.1.2 supports Docker Engine 1.12 but doesn’t use the new clustering capabilities provided by the Docker swarm mode. When installing this UCP version on a Docker Engine 1.12, UCP creates a “classic” Docker Swarm 1.2.3 cluster.
Features
- Core
- Upgraded etcd to version 2.3.6.
- Upgraded rethinkDB to version 2.3.4.
- The support dump generated by
dsinfo
now provides more information about the UCP deployment, that can be used by Docker support.
- docker/ucp image
- It’s now possible to generate a support dump directly from the CLI using the
support
command. - It’s now possible to tune how often UCP’s key-value store takes snapshots
using the
docker/ucp install --kv-snapshot-count
option. This can be used with the--kv-timeout
flag to tune the performance of the key-value store. Learn more about tuning the key-value store
- It’s now possible to generate a support dump directly from the CLI using the
- UI
- The dashboard now notifies admin users when an update for UCP is available.
- It’s now possible to see which specific controllers need to have root CAs inserted to achieve high-availability.
- It’s now possible to filter images on the
Images
tab.
Bug Fixes
- Fixed an issue in which UCP failed to install in machines where the hostname has more than 41 characters.
- Fixed an issue in which
ping
requests caused a memory leak in theucp-controller
anducp-kv
containers. - When installing in the CLI, UCP now displays the specified
ADMIN_USERNAME
variable rather than just “admin”. - Fixed an issue where container owner label permissions took priority over access label permissions when displaying a list of containers.
- Fixed an issue in which upgrading to UCP caused a user to still see an older version in the UI.
Known Issues
- This version of UCP can’t be installed on Engine 1.12 swarm-mode based
clusters, and is not compatible with swarm-mode based APIs, e.g.
docker service
.
Version 1.1.1
Features
- Core
- Upgraded Docker Swarm to version 1.2.3.
- An administrator can now reset their password. Use the
docker/ucp-auth passwd
command for this.
- docker/ucp image
- It’s now possible to configure the election timeout of the UCP key-value store
with the
docker/ucp install --kv-timeout
option. This is useful when running UCP across multiple regions. The heartbeat interval will be 1/10th of the specified election timeout value. Learn more - It’s now possible to skip TLS verification when joining new nodes to the
cluster, using the
docker/ucp join --insecure-fingerprint
option. However, to ensure your cluster is secure, don’t use this option for normal UCP deployments. - The restore operation now supports
--interactive, -i
flags, which require a backup file to be mounted in/backup.tar
instead of streamed throughstdin
.
- It’s now possible to configure the election timeout of the UCP key-value store
with the
- UI
- When pulling images on the UCP UI, you can now provide login credentials for a private registry.
- It’s now possible to disable a user account, to make it easier to switch from managed authentication to LDAP and vice-versa.
- Added a setting to submit usage reports without anonymizing data.
- When failing to pull an image on the UCP UI, a feedback message is now displayed.
- The Containers page now allows showing and hiding columns.
- The Containers page now allows filtering for running, stopped, and system containers.
Bug Fixes
- Fixed an issue that prevented new nodes to be joined to a cluster, after upgrading UCP from an older version to 1.1.0.
- Fixed an issue that prevented UCP from integrating with DTR for single-sign-on when pushing/pulling images.
- When upgrading, configurations for user, teams, and organizations are now preserved.
- When upgrading, version labels are correctly added to the containers.
- Improved error logs generated by the UP key-value store.
- The restore command now ensures the backup is not corrupt, that the UCP cluster is healthy and is running the same or later version of UCP before restoring.
- The restore command now works correctly on a freshly installed instance of UCP, assuming the same host IP and a correct backup file.
- LDAP domain names are now case-insensitive for easier syncing.
- Fixed an issue that caused LDAP syncs to run every minute, after upgrading UCP from an older version to 1.1.0.
- Fixed error by which user could get an “access denied” message when deploying a container from the UI due to cached permission labels.
- Fixed issue where environment variables were not being passed to new containers when “Allow users to deploy containers on UCP controllers” setting was disabled.
Misc
- Since container rescheduling has reached GA on Docker Swarm, you can use it
without having to install UCP with the
--swarm-experimental-flag
. - UCP now requires a minimum of 2 GB of RAM per node, instead of 1.5 GB.
- During installation, UCP now warns you to only restart the Docker Engine after joining all controller nodes to the cluster.
Known Issues
- When using UCP with a Docker Engine prior to 1.11.1-cs2, containers with a
restart policy set to
restart=always
and using an overlay network, may not resume properly when the Docker daemon is restarted. Upgrade the Docker Engine on your nodes to version 1.11.1-cs2 to fix this. This is especially important when running UCP and DTR on the same nodes, and with high-availability. - When attempting to restore a v1.1.0 backup on a new cluster installed with
the
fresh-install
flag, the restore operation may fail due to engine-discovery configuration issues. You should create new backups after upgrading to v1.1.1. - UCP fails to install in machines where the hostname has more than 41 characters. This will be fixed in a future release. (Fixed in UCP 1.1.2)
Version 1.1.0
Features
- Core
- UCP and DTR are now using a unified authentication service.
- Users and teams created in UCP are displayed in DTR under the ‘Datacenter’ organization.
- All controllers joined to the cluster now have replicated CAs. For this, you need to copy the root key material to controllers joined to the cluster,
- All UCP components were compiled with Go 1.5.4 and 1.6 to address a security vulnerability in Go.
- When joining nodes to the cluster, UCP automatically runs ‘engine-discovery’ to configure the Docker Engine for multi-host networking.
- If you’re using Docker Engine 1.11 with default configurations, when joining new nodes to the cluster multi-host networking is automatically configured without needing to restart the Docker daemon.
- docker/ucp image
- Added the ‘backup’ command to create backups of controller nodes.
- Added the ‘restore’ command, to restore a controller node from a backup.
- Added the ‘regen-certs’ command, to regenerate keys and certificates used on a controller node. You can use this for changing the SANS on the certificates or in case a CA is compromised.
- Added the ‘stop’ and ‘restart’ commands, to stop and start UCP containers.
- UI
- Now you can deploy apps from the UI using a docker-compose.yml file.
- There’s a new setting to prevent users from deploying containers to the UCP controller nodes.
- Improved usability of LDAP configuration settings.
- Images page no longer shows the sha256 id of each image ID.
- User profiles now display default permissions.
- Improved feedback when creating users and teams with invalid characters.
- Added horizontal scrollbar to wide pages.
Bug Fixes
- Improved messages when installing UCP on a host with firewall rules.
- Images page no longer shows images generated from intermediate builds.
- Images page no longer hangs when pulling an image.
- Scaling a container from the UI now preserves parameters like ‘net’ and ‘privileged’.
- Fixed
docker ps --filter
to filter containers correctly.
Misc
- All UCP containers now have the ‘com.docker.ucp.version’ label with their upstream version or UCP version.
- When running docker/ucp in interactive mode, the parameters and environment variables passed to the command are displayed.
- Renamed ‘external-ucp-ca’ flag to ‘external-server-cert’ for clarity. The former name is deprecated but still available.
- UCP is automatically configured to use overlay networking. Make sure ports 4789 and 7946 are open for this to work.
- The new authentication service requires ports 12383-12386 to be open.
Known Issues
- After upgrading to version
1.1.0
, if you join new nodes to the cluster, a success message is displayed, but that node will not be part of the cluster. As a workaround, join new controller nodes before upgrading, or perform a fresh installation of UCP 1.1.0. - If you have an active login session in UCP and do an upgrade, you should force refresh the browser or you may run into UI errors.
- When joining replicas to the cluster, you may be prompted to restart the Docker daemon on that node. For a faster installation, only restart the Docker daemon after joining all replicas.
- When deploying applications from the UI, using the
host
network option might cause errors. If this happens, deploy the application from the CLI. - UCP 1.1.0 may not integrate correctly with DTR for purposes of single-sign-on for pushing/pulling images. It is recommended to upgrade to UCP 1.1.1 for this.
Component Versions
UCP 1.1.0 uses:
- cfssl 1.2.0
- Docker Compose 1.7.0
- Docker Swarm: 1.1.3
- etcd 2.2.5
- RethinkDB 2.3.0
Version 1.0.4
Security update
Fixes a security issue by which a user can can obtain unauthorized access to UCP via LDAP authentication.
Version 1.0.3
Fixes a bug introduced by version 1.0.2 that was causing problems when a user navigated to their profile page.
Version 1.0.2
Security update
Fixes a security issue by which a non-admin user account can gain admin-level privileges via the UCP API.
Known Issues
Non-admin users might have an error when navigating to their profile page. This happens when the user is part of a team that has a label applied to it.
Version 1.0.1
Features
- Core
- Upgraded Swarm to 1.1.3
- Improved support for
docker cp
- System CA pool fallback for secure DTR connections
- Added
--swarm-experimental
option during UCP install
- UI
- Can provide one-time credentials to deploy a container from a private registry in UI
- Added checkbox to select all containers in Containers screen
- Removed click handlers from UI elements containing checkboxes
- Usernames and team names now need to be url-compatible
- Several usability improvements to Team screen
- Messages now display team name, instead of Id
- Added support for Growl style notifications
- Improved usability of Applications page, when there are no applications deployed
- Several improvements to form validations
- Improved error messages displayed when users try to pull an image with no name
- Don’t allow creating teams with the same name
- Non-admin users can no longer see cluster overview in Dashboard screen
- Page size control is no longer displayed when the list has few elements
- Renamed ‘Roles’ to ‘Permissions’
Bug fixes
- Users that are on a team and have permission set to ‘None’, can no longer see containers
- Volume driver options are now being correctly sent to Docker Engine
- Fix bug with visibility to User containers with the owner the same as a label
Version 1.0.0
Features
- Core
- License is now required to add nodes
- Improved access control system
- /_ping endpoint now checks the state of datastore and Swarm
- Use mutual TLS in CFSSL
- Improved access control for Docker Engine proxy
- Added support for custom server certificates and user bundles
- Users can now launch “private” containers if default permission is Restricted Control or greater
- UI
- Pages for Containers, Images, and Applications are now consistent
- Improved usability of LDAP configuration page
- Logs are displayed during LDAP configuration
- Users can now see their permissions and teams on their profile page
- Improved license configuration
- Improved error messages for restricted operations
- Support for enabling and disabling DTR integration
Bug fixes
- Users only see volumes, images, and networks if they have permissions
- User default role now setup properly with LDAP authentication
- Fixed container privilege escalation in access control
- Fixed UI issue that caused errors in Safari
Misc
- UCP now uses a vendored UCP Swarm image
- Removed timestamps from controller logs
- Switched from ‘Full Control’ to ‘Restricted Control’ for managing non-container resources
Known issues
In version 1.0.0 it’s not possible to create containers on user-defined bridge networks, using the UCP web app. This happens because the UCP web app is using the <node>/<network_name> syntax, which is not supported.
As a workaround, create the containers using the CLI and:
- Use only <network_name>, and let Swarm find the node with that network, or
- Use the network ID instead.
Upgrade notes
It’s not possible to upgrade from previous versions to v1.0. If you’ve participated in the Docker UCP beta program, you need to uninstall the beta version, before installing v1.0.
To ensure a smooth transition process, start by uninstalling UCP from
the regular nodes, followed by the controller nodes. Also, make sure you
use ucp uninstall
command from version 1.0:
docker run --rm -it --name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp:1.0.0 uninstall -i
After uninstalling, you can Install UCP on a sandbox, or Install UCP for production.
Docker, UCP, Release notes, Versions


Call the port captain before arrival on VHF 16.
He will contact the different authorities (Customs, Immigration, Health Department & Agriculture) and arrange a meeting: either you will meet everyone in his office or they will visit you on your boat.
The Gobernacion Maritima, Ave. Apina in Hanha Roa handles clearance.
Depending on the weather conditions, the officials may visit you at other places than Hanga Roa.
On departure, it is necessary to clear with both Customs and Immigration. Visit the Gobernacion Maritima and they will organise for Immigration to come and stamp your passport.
Last updated March 2016.
Entry requirements are as for Chile.
Passports must be valid for at least 6 months.
Visas are not required for citizens of U.S.A, Canada, Australia, New Zealand, South Africa, U.K. and other European countries for stays of up to 90 days.
If a visa is required, it must be obtained in advance.
Citizens of Australia, Canada, Mexico and the USA may be charged a processing fee which ranges from $15 to $132 depending on nationality.
Last updated July 2016.
Firearms must be declared on arrival.
If this is your first port in Chile, you will need see a Health officer on arrival. Vaccination certificates are not required.
Some cruisers have reported being charged a fee for Health Clearance (160 US$), others not.
Dengue fever is a danger here and the advice to to see a doctor immediately any fever is experienced.
There is a hospital on the island, staffed by medical personel from Chile, and a dentist. Medications are fairly limited.
If you are sailing towards Chile, you will be required to have the Pilot Charts of Chile on board. Chilean Pilot charts are available at the Port Captain's office for less than 10 US$/set.
For boats exceeding 25 tons, a fee will be required for the check-in/out procedure.
All boats have to pay a Lights & Buoys
fee (approx. 1 US$/ton).
The entrance fee to the Rapa Nui National Park is 45 US$ (if you pay in pesos) or 60 US$ if you pay in $. Tickets can be purchased at the Airport or at the Conaf “office” at the bottom of the Rano Kau volcano.
If this is your first Port of Call in Chile, there may be a fee for Health clearance.
Last updated March 2016.
It is strictly prohibited to remove ancient artefacts.
You are not allowed to bring ashore any fruits, vegetables, meats or any garbage of any type (including paper, plastics etc.) but you are allowed to keep them aboard.
At least one person must remain on board at night.
Animals not allowed to land


Plugin Information |
|---|
View Emma on the plugin site for more information. |
This plugin allows you to capture code coverage report from Emma. Jenkins will generate the trend report of coverage.
This functionality is replaced by the JaCoCo Plugin now!
Usage with Maven2
1. With maven 2.2.x you don't need to add anything to your POM file.
2. Add the "emma:emma" goal to your build to generate Emma reports.
Jenkins Configuration
1.- Add "emma:emma" goal to your maven Build
2.- Enable recording Emma coverage report, and configure it.
3.- Optional: if you want to store html coverage files generated by Emma, configure a post-build action to do that.
Usage with ANT
1.-  Tell emma where to find the code to instrument, and the new location to place that code. Note that you must instrument the code before running tests on it.
<emma enabled="true"> <instr instrpath="${class.dir}" destdir="${instrumented.dir}" metadatafile="${coverage.dir}/metadata.emma" merge="true"> <filter excludes="au.com.jenisys.view.*"/> </instr> </emma>
Use instrpathref instead of instrpath in conjunction with a previously-defined path for more complex setups. Use the filter nested element to include or exclude certain code from being instrumented. For more information on the instr element, see http://emma.sourceforge.net/reference/ch02s03.html
3.- After the instrumented code has been run, tell emma how to prepare the reports:
<emma enabled="true" > <report sourcepath="${src.dir}" > <fileset dir="${coverage.dir}" > <include name="*.emma" /> </fileset> <xml outfile="${coverage.dir}/coverage.xml" depth="method"/> </report> </emma>
This will generate an xml report, to the method depth of detail. For more information on the report element, see http://emma.sourceforge.net/reference/ch02s04.html
Change Log
Version 1.28 (May 21, 2012)
- Do not sort "Total" row.
- Sort line numerically.
- Don't include jobs which doesn't have a coverage in dashboard.
Version 1.27 (May 5, 2012)
- Enable development in Eclipse under M2E plugin (pull request #2).
- Failed to load hudson.plugins.emma.portlet.grid.EmmaBuilderGrid$EmmaGridDescriptor (JENKINS-12447).
- Failed to load hudson.plugins.emma.portlet.chart.EmmaBuilderTrendChart$DescriptorImpl (JENKINS-8839).
- Emma plugin causes maven release job to fail (JENKINS-10236).
Version 1.26 (Oct 18, 2011)
- Fixed broken image link on config screen.
- expand job parameters for report search path (JENKINS-11351).
- bumped dashboard plugin.
- added test class.
Version 1.25 (May 11, 2011)
- Fixed a NPE that could be thrown when parsing fails due to malformed coverage.xml files.
Version 1.24 (Feb 8, 2011)
- Dashboard portlets. Emma portlets for the Dashboard view plugin, a grid and a trend chart.
Version 1.23 (unreleased)
Version 1.21 (Sep 11, 2010)
- Fixed deprecated API.
- Added Japanese localization.
- Restored the floatingBox.jelly which was deleted in previous version.(JENKINS-7383)
- Help file is missing, so deleted the link.(JENKINS-7381)
- Added enlarge link.
- Removed refresh from coverage pages.(JENKINS-7428)
Version 1.20 (Mar 18, 2010)
- Improve Styling
Version 1.16 (Mar 09, 2010)
- Fixed sort in tables
Version 1.12 (Feb 21, 2010)
- Support for multimodule projects
- Able to automatically look for
coverage.xml
files in the workspace - Internationalization
- Spanish translation
Version 1.10 (Jun 9, 2009)
- Remote API improvement (patch)
Version 1.9 (Apr 6, 2009)
- Emma plugin now works with the Maven2 project type (JENKINS-3424)
Attachments:
emma_build.jpg (image/jpeg)
emma_emma.jpg (image/jpeg)
emma_html.jpg (image/jpeg)


MIT Alumni, CEO at Medium Biosciences
Research Engineer - Google DeepMind
Professor - Ecole Nationale Supérieure Polytechnique de Yaoundé
Research Engineer - Google
Researcher at Mila - Quebec AI Institute
Researcher - Mila
Researcher - IBM
Engineer - Dassault Systèmes
Data Scientist - Ipro
Researcher - Mila
Data Scientist - Ivalua
Engineer - DeepMind
CEO at KYME
IT Consultant - Freuli Partners


WITNESS LIST Ways & Means Committee February 24, 1999-2:00P SB 290severance tax For: Ash, Bill (Breckenridge ISD) Box, WanaDee (National Association of Royalty Owners) Boyd, Gary (Self and Kilgore College / City of Kilgore) Brazzel, Ray (Self and International Association of Drilling Contractors) Burns, Morris (Permian Basin Petroleum Association) Covert, Paul (Self and Royalty Owners) Gullion, James (Self and unemployed oilfield workers) Huseman, Kenneth (Self and Key Energy Services, Co., Inc. / Association of Energy Service Companies) McDonald, William (Self and Texas Independent Producers and Royalty Owners) Moore, Leonard (Self and Wenass ASG, Inc. / Association of Energy Servicing Contractors) Ramirez, Ruben (Self and LULAC Council #4650) Smith, Rickey (Self and Oilfield workers) Stevens, Bill (West Central Texas Oil & Gas Association and North Central Texas Oil & Gas Association) Stokes, Vernon (Self and public education) Against: Levine, Richard (Center for Public Policy Priorities) On: Garza, Tony (Self and The Texas Railroad Commission) Hamilton, Billy (Texas Comptroller of Public Accounts) Higgins, Gerald (Texas Comptroller of Public Accounts) LeBas, James (Texas Comptroller of Public Accounts) Matthews, Charles (Self and Texas Railroad Commission) For: Key, Robert (Association of Energy Service Companies) Registering, but not testifying: O'Brien, Obie (Apache Corporation) Smith, Sol (Self and National Association of Royalty Owners) sales, use, and excise tax On: Barton, Karey (Texas Comptroller of Public Accounts) Brooks, Kathy (City of Denton) Lavine, Richard (Center for Public Policy Priorities) Moore, Mikey (Texas Retailers Association) Walley, Elizabeth (City of Grand Prairie / Finance Officers Association of Texas) On: Seymour, Paul (Payless Shoe Source, Inc.) Registering, but not testifying:


This topic describes the various region shortcuts you can use to configure Geode regions.
Region shortcuts are groupings of pre-configured attributes that define the characteristics of a region. You can use a region shortcut as a starting point when configuring regions and you can add additional configurations to customize your application. To reference a region shortcut in a Geode cache.xml
file, use the refid
attribute of the <region>
element. For example:
<region name="myRegion" refid="PARTITION_REDUNDANT"/>
You can override the default values and add additional configurations within a <region-attributes>
element of the cache.xml
file. For example, the following configuration overrides the local-max-memory setting and adds the recovery-delay attribute:
<region name="myRegion" refid="PARTITION_REDUNDANT">
<region-attributes>
<partition-attributes
local-max-memory="512"
recovery-delay=-1/>
</region-attributes>
</region>
You can also create your own, named region shortcuts for common custom configurations. See Region Shortcuts and Custom Named Region Attributes.
To configure a region using the gfsh command-line tool, specify the shortcut name with the --type
argument. For example:
gfsh>create region --name=myRegion --type=PARTITION_REDUNDANT
Note: If you change the cache.xml file that defines a region, you must restart the member before the changes take effect.
For more information about configuring regions, see Region Management.
For more information about using the various types of Geode regions and when to use them, see Region Types.
Region Shortcuts Quick Reference
This section provides a quick reference for all region shortcuts.


{% extends "base.html" %} {% block title %}The Blue Alliance - Add Offseason Event{% endblock %} {% block meta_description %}Add an offseason event to The Blue Alliance.{% endblock %} {% block content %}
We'll review your suggestion and get it added to the site soon!
Please ensure you've entered valid data for all fields.
Thanks for helping make The Blue Alliance better! Let us know about offseason events so we can add them to the site!
All fields below are required, please do the best you can to fill them accurately


|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |
TimerManager
and
WorkManagers
TimerListener.timerExpired
method.
FooTimerManager.schedule
methods.TimerManager
s.WorkManager
s.WorkManager
thread pool.
WorkManager
.
WorkManager
thread pool.
TimerManager
.
true
if all TimerListeners have completed
following stop.
true
if this TimerManager is stopping or has
been stopped.
true
if this TimerManager is in the process
of or has completed suspending.
true
if this TimerManager is in the process
of or has completed suspending.
Work.release()
method.
firstTime
elapses.
firstTime
elapses.
WorkManager
thread pool.
WorkManager
.
WorkManager
thread pool.
Work
and
Timer
s.TimerManager
service.Timer
Service
for JBoss.WorkManager
Service
for JBoss.
|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |


Gregory L Trouth
Republican
retired Manufacturers Representative
MBA Univ of Colorado Business Adminstration BS Univ of No, Colorado Marketing/ Economics
80421-2368
Precinct captain, donated to local campaigns, donated to Presidential campaigns
Colorado Wildlife Advisory Board (w/ Rep Sonnenberg) providing input to issues with CDOW and Legislatures/Governor Small Business Institute providing guidance to Small Business Loan (SBA) partners in enhancing their business operations Better Business Bureau providing arbitration for consumer/business disputes
It is important that our representative districts reflect the demographic make-up of those districts. My home district is associated with heavily populated Front Range districts and in attempting to contact my Federal Representative, my zip code wasn't even recognized. We were a "forgotten" portion if the district. That needs to be amended. The 2010 Census Redistricting effort left Colorado fragmented to promote political strength and weakness. This is not how the districts were intended.
My early career started as a Customer Service Manager ,responsible for balancing the needs of our customers and that of the business. Solving problems was key. My later career as a Manufacturer's Representative and Consultant took me into all Rocky Mountain states, working with a variety of customers - sizes and locations- to work out solutions to their business problems on behalf of those customers. The career "life expectancy" of my colleagues was 3-4 years. I was successful for more than 30 years.
In my educational and career history: Statistics, Economics, Management, Consumer Behavior, Forecasting were all important aspects . For more than 30 years, scheduling, budgeting (both time and financial) was critical in dealing with the entire Rocky Mountain territory and do so on a timely basis to cover my responsibilities
male


To become a Warcryer your level must be over 40 and you must collect the Mark of the Pilgrim, the Mark of Glory, and the Mark of the War Spirit.
I see that you have collected all 3 marks, but lack the training to advance. Come back when you have completed your training and I will advance your occupation to Warcryer.


|
geopm-service
GEOPM Systemd Service
|
Abstraction around sd_bus interface for calling methods. More...
#include <SDBus.hpp>
Public Member Functions | |
| SDBus ()=default | |
| virtual | ~SDBus ()=default |
| virtual std::shared_ptr< SDBusMessage > | call_method (std::shared_ptr< SDBusMessage > message)=0 |
| Wrapper for the sd_bus_call(3) function. More... | |
| virtual std::shared_ptr< SDBusMessage > | call_method (const std::string &member)=0 |
| Wrapper for the sd_bus_call_method(3) function. More... | |
| virtual std::shared_ptr< SDBusMessage > | call_method (const std::string &member, const std::string &arg0, int arg1, int arg2)=0 |
| Wrapper for the sd_bus_call_method(3) function. More... | |
| virtual std::shared_ptr< SDBusMessage > | call_method (const std::string &member, const std::string &arg0, int arg1, int arg2, double arg3)=0 |
| Wrapper for the sd_bus_call_method(3) function. More... | |
| virtual std::shared_ptr< SDBusMessage > | call_method (const std::string &member, int arg0)=0 |
| Wrapper for the sd_bus_call_method(3) function. More... | |
| virtual std::shared_ptr< SDBusMessage > | make_call_message (const std::string &member)=0 |
| Wrapper for the sd_bus_message_new_method_call(3) function. More... | |
| virtual std::shared_ptr< SDBusMessage > | call_method (const std::string &member, const std::string &arg0)=0 |
Static Public Member Functions | |
| static std::unique_ptr< SDBus > | make_unique (void) |
| Factory method for SDBus interface. More... | |
Abstraction around sd_bus interface for calling methods.
A mock-able C++ interface wrapper around the sd_bus functions that initiate calls to GEOPM D-Bus methods. The sd_bus functions are provided by the libsystemd.so library and defined int the systemd/sd-bus.h" header file. The messages passed to and from these calls are abstracted by the SDBusMessage interface. The SDBus method syntax reflects the syntax of the underlying sd_bus interface, and for further information look at the sd-bus(3) man page and links therein.
|
default |
|
virtualdefault |
|
pure virtual |
Wrapper for the sd_bus_call_method(3) function.
Used to execute a GEOPM D-Bus API that takes no arguments.
| member | [in] Name of the API from the io.github.geopm interface. |
Implemented in geopm::SDBusImp.
|
pure virtual |
Implemented in geopm::SDBusImp.
|
pure virtual |
Wrapper for the sd_bus_call_method(3) function.
Used to execute a GEOPM D-Bus API that takes three arguments with types (string, integer, integer).
| member | [in] Name of the API from the io.github.geopm interface. |
| arg0 | [in] First parameter to pass to the D-Bus API. |
| arg1 | [in] Second parameter to pass to the D-Bus API. |
| arg2 | [in] Third parameter to pass to the D-Bus API. |
Implemented in geopm::SDBusImp.
|
pure virtual |
Wrapper for the sd_bus_call_method(3) function.
Used to execute a GEOPM D-Bus API that takes four arguments with types (string, integer, integer, double).
| member | [in] Name of the API from the io.github.geopm interface. |
| arg0 | [in] First parameter to pass to the D-Bus API. |
| arg1 | [in] Second parameter to pass to the D-Bus API. |
| arg2 | [in] Third parameter to pass to the D-Bus API. |
| arg2 | [in] Fourth parameter to pass to the D-Bus API. |
Implemented in geopm::SDBusImp.
|
pure virtual |
Wrapper for the sd_bus_call_method(3) function.
Used to execute a GEOPM D-Bus API that takes one integer argument.
| member | [in] Name of the API from the io.github.geopm interface. |
| arg0 | [in] First parameter to pass to the D-Bus API. |
Implemented in geopm::SDBusImp.
|
pure virtual |
Wrapper for the sd_bus_call(3) function.
Used to execute a GEOPM D-Bus API using an SDBusMessage created by the make_call_message() method. This enables the user to update the message with complex data types like arrays and structs to pass into the method.
One use case is to to pass lists of strings as inputs to GEOPM D-Bus APIs. The SDBusMessage that is created by make_call_message() is updated using SDBusMessage::append_strings() prior to passing the SDBusMessage to the call() method.
| message | [in] Complete SDBusMessage returned by call to make_call_message(). |
Implemented in geopm::SDBusImp.
|
pure virtual |
Wrapper for the sd_bus_message_new_method_call(3) function.
This is used to create a SDBusMessage that can be passed to the call() method. The user can append data to the message prior to passing the result to the call() method in order to send complex data types like arrays and structures. The D-Bus API that will be called later is a parameter to this function.
| member | [in] Name of the API from the io.github.geopm interface. |
Implemented in geopm::SDBusImp.
|
static |


Worldview
How was the world created?
God created the world. I am not sure exactly about when or how he did, but I strongly believe in an intelligent design.
What does it mean to be a human being?
To be a human being means to be made in the image of God. We are all in the line of a rational being, and so in a sense any physical descendant of a human being is a human. It means to be set apart from all other things in the universe as we have a soul and our choices reflect our acceptance or denial of our creator.

 At that moment you are faced with judgement and you will be in a state of seperation or union with God.


Information Officer II
Premier’s Office
Telephone: 468-3701 ext. 2076
Email<EMAIL_ADDRESS>SailClear, the advance web notification service for clearance, is supposed to now be operational here.
2015: Cruisers report that authorities in Spanish Town, Virgin Gorda, and Soper’s Hole (West End) Tortola, still do not use SailClear.
On approaching BVI during daylight, proceed directly to a Port of Entry and clear immigration controls. Yachts arriving outside of business hours must fly the Q
flag and register with Immigration on the next business day. It is advisable to contact Immigration in advance if you are likely to arrive at night. No persons may go ashore until the yacht has been cleared nor may it enter a marina unless an agent has been employed.
Failure to comply with these regulations can lead to heavy fines or imprisonment.
Normal business hours are 08:30 to 16:30 (Monday-Friday) and 08:30 to 12:30 (Saturday), but they do vary at different ports. See the individual port pages for more details.
Clearance outside normal working hours incurs additional charges. Call Customs at<PHONE_NUMBER> and Immigration at<PHONE_NUMBER> ext. 4700 to make after-hours arrangements.
Because space at jetties at the Ports of Entry (see bottom of page) is limited, vessels are allowed to anchor in the harbour before Clearing in.
Ship's papers, passports and last clearance must be shown, and an inward manifest and/or outward manifest, and crew list completed.
It should be noted that the British Virgin Islands and the US Virgin Islands require full Customs clearance out and in when sailing between them. If, however, your stay is short, you may be able to clear in and out at the same time.
Private boats are automatically given up to 30 days to cruise around the BVI. Recently (Feb 2015) some officials in some ports have been charging private yachts a fee of $1/foot/day. Cruisers have suggested that having paperwork showing that you have not previously been charged this fee will allow you to avoid it. However, according to the BVI Ports Authority's own statement, it currently should not be charged at all. See 'Fees' section below.
A cruising permit is required for all charter yachts cruising in the BVI.
If wishing to use a day mooring in a National Park, then a permit must be purchased when clearing in.
A recreational fishing permit must also be obtained if planning to fish. See Fisheries Department Tel: +284 494 5681
Last updated August 2016.
All visitors require a passport which is valid for at least 6 months. This law is strictly enforced.
Most visitors are granted a 1 month visa. Extensions must be applied for at the Immigration HQ in Road Town or Virgin Gorda.
For further information see www.bvitourism.co.uk/entry-requirements
If arriving by air and leaving by yacht, the crew member must have a letter signed by the captain.
Citizens of about 90 countries (including some Caribbean ones; Cuba, Dominican Republic, Haiti and Jamaica) will require a visa. US, Canadian, EU and northern European citizens do not. To establish the situation for other nationals, it is necessary to call the Immigration department. Be aware that it can take up to 3 months to obtain a visa. They can be obtained from any British Embassy or High Commission.
If the skipper has all the documents, then crew need not be present to clear Immigration.
Last updated August 2016.
Firearms are not allowed to be kept on board and must be surrendered to Customs until departure. This law is strictly enforced.
Jetskis/water bikes must also be declared to Customs as their use in BVI waters is illegal.
Meat cannot be brought into the islands unless it is less than 40lbs in weight and from North America.
Yachts in transit may import spare parts free of duty. If the parts are to be fitted by a local company, 5 per cent duty on the value (including shipping and insurance costs) must be paid.
Yachts can remain for 1 month automatically. If wishing to remain longer, then payment of a $200 temporary import fee will allow it to remain for 1 year.
Last updated February 2016.
Do not eat reef fish such as barracuda, grouper, snapper or parrot. They are a source of ciguatera.
Jelly fish are present during the summer months,
Manchioneel trees: these tress are dangerous. They grow along the shore. Do not eat the (apple-like) fruit or sit under them in the rain.
There is no hyperbaric chamber in the BVI. Patients requiring treatment for decompression illness are transferred to St. Thomas, U.S. Virgin Islands.
There is a small general hospital in Road Town, Tortola and also several clinics on the island. Virgin Gorda, Jost Van Dyke and Anegada are the only other islands with a clinic staffed by a nurse.
If wishing to use a mooring in the National Parks, a permit must be purchased.
Clearance and Immigration
There is a Immigration fee and a Customs clearance fee. The amount seems to vary from about $8 to $25.
Parks Permit
There is a charge for using the moorings in the National Parks. $6/day, $50/week or $150 for 1 year.
Private Vessels
Private boats are automatically given up to 30 days to cruise around the BVI. A 30 day cruising fee is charged which is based on tonnage (with a maximum of $55).
After 1 month, there is a Temporary Importation fee of $200. This covers the yacht for 1 year.
For more information call Customs on<PHONE_NUMBER>.
Note: In February 2015 some boats have been charged a fee of $1/foot/day, however, this notice has been posted by the BVI Ports Authority:-
Monday, February 9 – The BVI Ports Authority (BVIPA) is informing the public that the harbour charges recently introduced for vessels entering and remaining in ‘territorial waters’ have been postponed subject to further consultation with the industry stakeholders.
For the full confusing text see www.bvitourism.com.
Update April 2015: To add more confusion, the following notice has been released:-
"The Government of the Virgin Islands is informing the public that the recently introduced harbour charges for all charter vessels entering and remaining in the BVI ‘territorial waters’ has been discontinued until further notice."
Charter Vessels
A cruising permit is required for all charter yachts cruising in the British Virgin Islands.
Seasonal Rates (December 1 - April 30): All recorded charter boats - $2.00 per person per day. All non-recorded charter boats - $4.00 per person per day.
Out-of-Season Rates (May 1 - November 30): All recorded charter boats - $0.75 per person per day. All non-recorded charter boats - $4.00 per person per day.
Visiting crewed charter boats also have to pay a departure tax of US$4 per person. Charter licence annual fee from $400 (under 40 ft (12 m)) to $800 (over 50 ft (15 m).
Overtime must be paid for customs clearance outside 0830-1630 Monday to Friday, 0830-1230 Saturdays and on public holidays.
Last updated April 2015.
Non-residents must obtain a recreational fishing permit in order to fish in BVI waters. Failure to comply may result in a large fine or custodial sentence.
Spearfishing, lobstering and the collection of live shells is prohibited. Jet-skis are prohibited in BVI waters.
National parks: A reef protection programme is in operation in an effort to limit damage caused by visiting boats. Mooring buoys have been laid in a number of sensitive areas, which have suffered extensive damage due to increased anchoring activity. NOTE: These mooring are for day use only.
Cruising boats must obtain a National Parks moorings permit and follow these regulations:
(1)The reef protection buoys are colour coded: Red buoys: non-diving, day use only; Yellow buoys: commercial dive vessels only (or boats over 55ft); White buoys: non-commercial vessels for dive use only, on a first come first served basis and a 90 minute time limit; Blue buoys: dinghy use only.
(2) Vessels over 55 ft LOA or 35 tons may now use the larger yellow mooring buoys.
(3)Vessels must use the existing mooring line. To avoid chafe, the line may be extended.
(4)The use of the buoys are at the user's risk and neither the BVI Government, which owns the buoys, nor the BVI National Parks Trust, which manages them, will bear responsibility for any loss or injury.
(5) A fee is charged for the use of the moorings.
Last updated September 2015.
The local dress code is more formal than in some of the other Caribbean islands and beachwear is not acceptable in towns and stores.
Dogs and Cats
Dogs and Cats are only permitted entry after the Ministry of Agrigulture's Veterinary Division issues an Import Permit. The BVI is a rabies free territory and in order to protect against the spread of this disease there are strict regulations for pets coming in from countries that are known to have outbreaks of rabies, such as United States and Canada.
Caribbean nations of Anguilla, Antigua, Barbados, Dominica, Montserrat, St. Kitts, St. Lucia, St. Vincent, and the US Virgin Islands are rabies free.
Full details on requesting an Import Pertmit can be obtained from the Department of Agriculture, Veterinary Division, on Tel:<PHONE_NUMBER> ext. 6123 or apply on line at www.britishvirginislands.com.
All Animals
For all animals, a valid Health Certificate issued at least two weeks prior to arrival must be shown (plus a valid anti-rabies certificate for dogs and cats as above).
No animals can be landed without a permit and must remain secured on board at all times. A permit will contain full details (species, sex, age, colour, country of origin, owner's name and address, means of arrival).
A charge of US$5 per animal is made by Customs at the time of clearance and all certificates must be presented at the same time. The penalty for breaking the law is a fine and impounding of the animal. All animals entering the territory must be declared at Customs.
All pets must have current health certificates and vaccinations, especially with respect to rabies.
Last updated march 2016.


RATCATCHER A film review by Steve Rhodes Copyright 2001 Steve Rhodes RATING (0 TO ****): *
RATCATCHER, the first feature film by writer and director Lynne Ramsay, could have been called BLEAK AND BLEAKER. Unrelentingly downbeat, it tells a story of a family stuck in a miserable existence in the Glasgow slums. Although the family lives in dire conditions, the movie is never able to define any of its characters enough for us to care about their plight. With this rambling movie, which is only slightly better organized than a home video, Ramsay demonstrates almost no ability at storytelling. When the inevitable tragic ending occurs, you almost have to stop yourself from applauding since you are so glad to get this waste of time over with.
As the story starts, James, a young lad of about 12, is involved in some innocent horseplay beside a canal. His companion, Ryan, is accidentally drowned in the process. James is played without one scintilla of emotion by William Eadie, who had never acted before being chosen for the part. It shows. Playing the central character, Eadie is asked to carry the movie, a task of which he is totally incapable.
The rest of James's family are walking clichés. His father (Tommy Flanagan), for example, is a drunk who passes out frequently, causing him to drool on the living room sofa. The wife is the canonical long-suffering type who stands by her man. The only character of any interest in the story is a neighborhood girl named Margaret Anne (Leanne Mullen), who dispenses sexual favors to everyone for unexplained reasons, possibly in a failed attempt to be liked. The character has potential, but Mullen's lifeless performance doesn't do much with it.
As the characters go from tedious tribulation to tribulation, I found myself passing the time by observing how Scottish English differs from American English. The subtitling for the film doesn't try to translate the words. It just records them to make them more intelligible for American audiences. Among other words I found fascinating were: heid, innit and frae.
My wife said it best. "The depressing thing about this movie is that it isn't depressing," she remarked, shaking her head, as we left the theater. With circumstances this tragic, we should feel sad, but we don't because the movie is so poorly constructed and the acting so incredibly bland.
RATCATCHER runs a long 1:33. It is not rated but would be an R for sexual situations, nudity, violence and language. It would be acceptable for older teenagers.
Email<EMAIL_ADDRESS>Web: http://www.InternetReviews.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


{{ alert.text }}
Dismiss
No tests found.
+ Add
Update button will be enabled once the required form fields are filled out.
ID : {{ edit.ID }}
Started
Test nickname.
Test target
Profile CPU time.
Maximum CPU time allocated (in milliseconds).

Use the following fields to tell cleo how to reach your web server. Remember to have pprof deubg URLs enabled. You are not required to set a port number from an environment variable.
pprof
Number of requests to perform
View report
Start test


| Team | Played | Won | Draw | Lost | Scored | Took | Diffs | Points |
|---|---|---|---|---|---|---|---|---|
|
{{club.name}}
|
{{club.played}} | {{club.win}} | {{club.draw}} | {{club.loss}} | {{club.goalsfor}} | {{club.goalsagainst}} | {{club.goalsdifference}} | {{club.total}} |


module Condition:sig
..end
Condition variables.
Condition variables are useful when several threads wish to access a shared data structure that is protected by a mutex (a mutual exclusion lock).
A condition variable is a communication channel. On the receiver side, one or more threads can indicate that they wish to wait for a certain property to become true. On the sender side, a thread can signal that this property has become true, causing one (or more) waiting threads to be woken up.
For instance, in the implementation of a queue data structure, if a thread that wishes to extract an element finds that the queue is currently empty, then this thread waits for the queue to become nonempty. A thread that inserts an element into the queue signals that the queue has become nonempty. A condition variable is used for this purpose. This communication channel conveys the information that the property "the queue is nonempty" is true, or more accurately, may be true. (We explain below why the receiver of a signal cannot be certain that the property holds.)
To continue the example of the queue, assuming that the queue has a fixed maximum capacity, then a thread that wishes to insert an element may find that the queue is full. Then, this thread must wait for the queue to become not full, and a thread that extracts an element of the queue signals that the queue has become not full. Another condition variable is used for this purpose.
In short, a condition variable c
is used to convey the information
that a certain property P about a shared data structure D,
protected by a mutex m
, may be true.
Condition variables provide an efficient alternative to busy-waiting. When one wishes to wait for the property P to be true, instead of writing a busy-waiting loop:
Mutex.lock m;
while not P do
Mutex.unlock m; Mutex.lock m
done;
<update the data structure>;
Mutex.unlock m
one uses Condition.wait
in the body of the loop, as follows:
Mutex.lock m;
while not P do
Condition.wait c m
done;
<update the data structure>;
Mutex.unlock m
The busy-waiting loop is inefficient because the waiting thread
consumes processing time and creates contention of the mutex m
.
Calling Condition.wait
allows the waiting thread to be suspended, so it
does not consume any computing resources while waiting.
With a condition variable c
, exactly one mutex m
is associated.
This association is implicit: the mutex m
is not explicitly passed
as an argument to Condition.create
. It is up to the programmer to know, for
each condition variable c
, which is the associated mutex m
.
With a mutex m
, several condition variables can be associated.
In the example of the bounded queue, one condition variable is
used to indicate that the queue is nonempty, and another condition
variable is used to indicate that the queue is not full.
With a condition variable c
, exactly one logical property P
should be associated. Examples of such properties
include "the queue is nonempty" and "the queue is not full".
It is up to the programmer to keep track, for each condition
variable, of the corresponding property P.
A signal is sent on the condition variable c
as an indication that the property P is true, or may be true.
On the receiving end, however, a thread that is woken up
cannot assume that P is true;
after a call to Condition.wait
terminates,
one must explicitly test whether P is true.
There are several reasons why this is so.
One reason is that,
between the moment when the signal is sent
and the moment when a waiting thread receives the signal
and is scheduled,
the property P may be falsified by some other thread
that is able to acquire the mutex m
and alter the data structure D.
Another reason is that spurious wakeups may occur:
a waiting thread can be woken up even if no signal was sent.
Here is a complete example, where a mutex protects a sequential unbounded queue, and where a condition variable is used to signal that the queue is nonempty.
type 'a safe_queue =
{ queue : 'a Queue.t; mutex : Mutex.t; nonempty : Condition.t }
let create () =
{ queue = Queue.create(); mutex = Mutex.create();
nonempty = Condition.create() }
let add v q =
Mutex.lock q.mutex;
let was_empty = Queue.is_empty q.queue in
Queue.add v q.queue;
if was_empty then Condition.broadcast q.nonempty;
Mutex.unlock q.mutex
let take q =
Mutex.lock q.mutex;
while Queue.is_empty q.queue do Condition.wait q.nonempty q.mutex done;
let v = Queue.take q.queue in (* cannot fail since queue is nonempty *)
Mutex.unlock q.mutex;
v
Because the call to Condition.broadcast
takes place inside the critical
section, the following property holds whenever the mutex is unlocked:
if the queue is nonempty, then no thread is waiting,
or, in other words,
if some thread is waiting, then the queue must be empty.
This is a desirable property: if a thread
that attempts to execute a take
operation
could remain suspended
even though the queue is nonempty,
that would be a problematic situation,
known as a deadlock.
type
t
The type of condition variables.
val create : unit -> t
create()
creates and returns a new condition variable.
This condition variable should be associated (in the programmer's mind)
with a certain mutex m
and with a certain property P of the data
structure that is protected by the mutex m
.
val wait : t -> Mutex.t -> unit
The call wait c m
is permitted only if m
is the mutex associated
with the condition variable c
, and only if m
is currently locked.
This call atomically unlocks the mutex m
and suspends the
current thread on the condition variable c
. This thread can
later be woken up after the condition variable c
has been signaled
via Condition.signal
or Condition.broadcast
; however, it can also be woken up for
no reason. The mutex m
is locked again before wait
returns. One
cannot assume that the property P associated with the condition
variable c
holds when wait
returns; one must explicitly test
whether P holds after calling wait
.
val signal : t -> unit
signal c
wakes up one of the threads waiting on the condition
variable c
, if there is one. If there is none, this call has
no effect.
It is recommended to call signal c
inside a critical section,
that is, while the mutex m
associated with c
is locked.
val broadcast : t -> unit
broadcast c
wakes up all threads waiting on the condition
variable c
. If there are none, this call has no effect.
It is recommended to call broadcast c
inside a critical section,
that is, while the mutex m
associated with c
is locked.


[CHAPTER 321C]
OFFICE OF LANGUAGE ACCESS
Section
321C-1 General purpose; purpose of the office of language
access
321C-2 Definitions
321C-3 Oral and written language services
321C-4 Additional obligations
321C-5 Public meetings and public hearings
321C-6 Office of language access; established
321C-7 Language access advisory council
Note
Former language access provisions, §§371-31 to 371-37, were repealed by L 2012, c 201, §3.


A new data grid JSR
Following up on my previous response to Antonio Goncalves' blog post, I have submitted a JSR to the JCP on a data grid standard, titled "Java Data Grids". It has yet to be assigned a number by the JCP, but I thought I’d talk about it a little here anyway.
Here is the description of the JSR that I have submitted:
This specification proposes to provide an API for accessing, storing, and managing data in a distributed data grid. The primary API will build upon and extend JSR-107 (JCACHE) API. In addition to it’s genericized Map-like API to access a Cache, JSR-107 defines SPIs for spooling in-memory data to persistent storage, an API for obtaining a named Cache from a CacheManager and an API to register event listeners. Above and beyond JSR-107, this JSR will define characteristics and expectations from eviction, replication and distribution, and transactions (via the JTA specification). Further, it would define an asynchronous, non-blocking API as an alternative to JSR-107’s primary API, as non-blocking access to data becomes a concern when an implementation needs to perform remote calls, as in the case of a data grid. This specification builds upon JSR-107, which is not yet complete. We intend to work with the JSR-107 EG to ensure that their schedule is compatible with the schedule for this JSR. If JSR-107 is unable to complete, we propose merging the last available draft into this specification.
Data grids are gaining prominence and importance in enterprise Java, particularly as cloud-style deployments gain popularity:
-
Characteristics such as high availability, along with removal of single points of failure become increasingly important, since cloud infrastructure is inherently unreliable and can be re-provisioned with minimal notice; applications deployed on cloud need to be resilient to this.
-
Further, one of the major benefits of cloud-style deployments is elasticity. The ability to scale out (and back in) quickly and easily. Again, data grids have a role to play here.
-
Finally, with scalable middleware comes additional stress on the data tier (traditionally an RDBMS), as middleware nodes scale out to cope with load. Data grids - used as a distributed cache - can help with mitigating database bottlenecks.
With one of Java EE 7’s stated goals being "cloud-friendliness", the above are powerful arguments for the inclusion of a distributed data grid standard in Java EE 7.
What about JSR-107? JSR-107 - the temporary caching API proposed in 2001 - certainly has a role to play in Java EE too. Temporary caches are an important part of enterprise middleware, but yet a standard has been sadly missing from a Java EE umbrella specification for far too long. Spring, having identified the need as well, has a temporary caching abstraction in their current development versions. Several other non-Java frameworks define temporary caching APIs too (Ruby on Rails, Django for Python, .NET). There is no denying JSR-107 is necessary, and necessary as a part of Java EE.
But JSR-107 isn’t a data grid. JSR-107 falls short as a standard for data grids, specifically as it doesn’t take into account characteristics of distribution and replication of data, and doesn’t define a contract that implementations would have to adhere to when it comes to moving data around a cluster. Crucial things for a data grid that, if not baked into a specification, will hinder portability and render the standard itself useless and impotent.
Further, with remote capabilities in mind, a data grid should also expose a non-blocking API, since network calls can be a limiting factor. Invoking methods that involve remote calls should be able to be done in an asynchronous fashion. Stuff that is irrelevant to a temporary caching API like JSR-107.
So with all that in mind, I’d love to hear your thoughts on the data grid JSR. In addition to Red Hat, the JSR is currently backed by a major Java EE and data grid vendor which cannot be named at this stage, along with independent JCP members with relevant interest and background.
Cheers Manik


This bare, craggy limestone island lies immediately south of Leros separated by the narrow channel of Stenon Lerou.
It is the centre of the sponge fishing industry. The departure (April-May) and return (Sept-Oct) of the sponge-fishing fleet are celebrated with lively festivities.
The main port is Kalimnos (formerly called Pothia). From a distance Kalimnos town, the monastery on the hill and the shining cupola of the cathedral can be seen. With the Meltemi blowing there are strong gusts off the high land down into the approaches and in Ormos Kalimnou itself.
Vathi is a small port to the NE of Kalimnos providing good shelter. It has water available on the quay and very limited provisions, with of course a few taveranas, but has no repair facilities.
For full details on clearing into our out of Greece see Greek Formalities.
This is a Port of Entry during the summer only. May to September, maybe a little longer, but check first.
The Harbour Master and Port Police can be found on the main ferry pier at the southern end of the harbour.
Last updated September 2016.
In Kalimnos, there is berthing for visiting yachts on the NW quay just past the ferry dock. Being so close to the ferry dock this quay does suffer from surge created by ferry wash, so be sure to pull your boat a good distance off the quay and use snubbers. Fortunately the prevailing wind tends to blow boats off the quay.
Moor stern-to or bows-to on the quay. It is very crowded here and can be difficult to find a berth. The shelter is good, but the holding is less certain if the anchor does not penetrate the weed so be sure to let out lots of chain. Take care berthing stern-to as depths can be shallow in places (1.5-2m).
Water and electricity are available and fuel can be delivered by mini-tanker. The Harbour Master’s office is located on the ferry quay near the authorities, however it is likely he will find you first. See latest fees charged here in comments at bottom of page.
Whilst this quay offers good shelter, in a southerly the SW quay at the root of the ferry dock will offer better protection.
If arriving at night, there is space to anchor to starboard on entering the harbour, out of the main channel.
Work on the basic structure of a new Kalimnos Marina was completed in 2002, however no further work has been done since so it’s unlikely this will ever be operational.
Last updated September 2016.


algo
rhythm
Example file input
Email address
We'll never share your email with anyone else.
Password
Submit
...