by Diego Calderón / @codekult
Christian Heilmann. The next UX challenge on the web
We need to think about the advantages and problems of this approach and set a few things to focus on, in order to create a better user experience.
save vs sync. Offline-first advantages
localStorage
and sessionStorage
are both instances of the Storage
object, and function in a similar way, saving data based on named key/value pairs.
localStorage
persists when the browser is closed and reopened, in turn sessionStorage
endures for the duration of the page session.
Set data:
localStorage.setItem('color','beige');
Get data:
localStorage.getItem('color');
Remove/clear data:
localStorage.removeItem('color');
localStorage.clear(); // Clear all
All the data in web storage is saved as strings
We can work around this using JSON.stringify()
and JSON.parse()
methods for objects:
localStorage.setItem('myObj', JSON.stringify(myObj));
JSON.parse(localStorage.getItem('myObj'));
Or coerce the data into the expected JavaScript datatype:
var qty = parseInt(localStorage.getItem('qty'));
We can track when storage area changes using the storage
event, which is fired on window
object whenever setItem()
, removeItem()
, or clear()
is called and actually changes something.
StorageEvent
objectkey
: The changed key.oldValue
: Previous value (now overwritten), or `null` if a new item was added.newValue
: New value, or `null if an item was removed.url
: The page which called a method that triggered this change.IndexedDB is a transactional, object-oriented and noSQL database hosted and persisted in the browser.
First, some preliminal concepts:
Each database has a name and a current version, which starts at 1
but can be specified.
A database can have only version at a given time and we can change it by open the database with a greater number version.
This will start a versionchange
transaction and fire an upgradeneeded
event, and its handler is the only place where the schema of the database can be updated.
A database is composed of one or more:
The mechanism by which data is stored in the database. Holds key-value pair records. Those records are sorted according to the keys in an ascending order.
Must have an unique name within the database and can have a key generator, a key path, both, or none of them.
This is how we interact with the data in a database, everything we change happens in the context of a transaction.
There are three modes of transactions: readWrite
, readOnly
and versionChange
.
A database connection can have multiple transactions at a a time, so long as the transactions don't have overlapping scopes.
var db,
request = indexedDB.open("frontendDatabase");
request.onerror = function (event) {
alert("Error");
};
request.onsuccess = function (event) {
db = event.target.result;
};
This will return an special type of request (IDBOpenDBRequest
) with an error, or a database as result if success.
If the database doesn't exists or if the database exists but and greater version number is specified, an onupgradeneeded
event is fired. We can create the schema for the new database or update the existent one in the onupgradeneeded
event handler.
request.onupgradeneeded = function (event) {
var db = event.target.result;
// Create an objectStore for this database
var objectStore = db.createObjectStore("devs", { keyPath: "dni" });
};
var objectStore = db.createObjectStore("devs", { autoIncrement : true });
Created Object stores persist through versions. Here we can create new object stores, delete unnecesary ones, or change an existing object store (deleting the old and creating a new one, saving the necessary data).
If the onupgradeneeded
event exits successfully, the onsuccess
handler of the open database request will be triggered.
Open a transaction:
var transaction = db.transaction(["devs"], "readwrite");
Transactions can receive DOM events of three different types:error
, abort
, and complete
.
transaction.oncomplete = function (event) {
alert("Done!");
};
transaction.onerror = function (event) {
// Handle errors
};
var objectStore = transaction.objectStore("devs");
for (var i in devData) {
var request = objectStore.add(devData[i]);
request.onsuccess = function (event) {
// event.target.result == devData[i].dni;
};
}
Methods to manipulate data in object stores are:add()
, clear()
, delete()
, get()
, and put()
.
Shorthand example:
db.transaction("devs")
.objectStore("devs")
.get("33222111")
.onsuccess = function (event) {
alert("Name for DNI 33222111 is " + event.target.result.name);
};
An index is a specialized object store for looking up records in another object store, called the referenced object store.
var objectStore = db.createObjectStore("devs", { keyPath: "dni" }),
// Create an index to search devs by name. We may have duplicates
// so we can't use a unique index.
index = objectStore.createIndex("name", "name", { unique: false });
index.get("Alex").onsuccess = function (event) {
alert("Alex's DNI is " + event.target.result.dni);
};
A cursor is a mechanism for iterating over multiple records,
with an optional key range.
var devs = [];
objectStore.openCursor().onsuccess = function(event) {
var cursor = event.target.result;
if (cursor) {
devs(cursor.value);
cursor.continue();
} else {
alert("All devs: " + devs);
}
};
We can build a key range with:only()
, upperBound()
, lowerBound()
, bound()
.
Bounds methods accept a boolean parameter to specify is the bounds is included in the cursor (`false` include and `true` doesn't). Example:
var keyRangeExample = IDBKeyRange.bound("33222111", "34333222", true, true);
Allows a developer to specify which files the browser should cache and make available to offline users.
To enable the application cache for an app, include the manifest attribute on the document's html tag:
manifest="example.appcache"
The manifest attribute should be included on every page of your web application that you want cached.
A manifest file must be served with the mime-type text/cache-manifest in order to to work in older browsers and IE11.
You may need to add a custom file type to your web server or .htaccess
configuration.
A simple manifest looks something like this:
CACHE MANIFEST
index.html
stylesheet.css
images/logo.png
scripts/main.js
http://cdn.example.com/scripts/main.js
And a more complex example:
CACHE MANIFEST
# 2010-06-18:v2
# Explicitly cached 'master entries'.
CACHE:
/favicon.ico
index.html
stylesheet.css
images/logo.png
scripts/main.js
# Resources that require the user to be online.
NETWORK:
*
# static.html will be served if main.py is inaccessible
# offline.jpg will be served in place of all images in images/large/
# offline.html will be served in place of all other .html files
FALLBACK:
/main.py /static.html
images/large/ images/offline.jpg
A manifest can have three distinct sections:
This is the default section for entries. Files listed under this header (or immediately after the CACHE MANIFEST
) will be explicitly cached after they're downloaded for the first time.
Files listed in this section may come from the network if they aren't in the cache, otherwise the network isn't used, even if the user is online. You can white-list specific URLs here, or simply *
, which allows all URLs. Most sites need *
.
An optional section specifying fallback pages if a resource is inaccessible. The first URI is the resource, the second is the fallback used if the network request fails or errors. Both URIs must from the same origin as the manifest file. You can capture specific URLs but also URL prefixes. images/large/
will capture failures from URLs such as images/large/whatever/img.jpg
.
Once an application is offline it remains cached until one of the following happens:
Jake Archibald. Application Cache is a Douchebag
Especially for SPAs.
Service Worker is a kind of Web Worker. It runs in the browser's background, separate from the web page and has the ability to intercept and handle network requests, including programmatically managing a cache of responses.
It cannot access the DOM. Instead, it will use postMessage
to communicate with the pages and make extensive use of promises.
But this is subject of another talk ¯\_(ツ)_/¯
FileSystem API, push notifications, backgroundSync;
and third-parties tools: Hoodie, PouchDB, and so on…
Appcache and Service Worker
Web storage, IndexedDB. Or something like PouchDB or Hoodie.


{% include "analytics.html" %} {% include "dfpright.html" %}
专业，源于专注
咨询热线：0571-88888888
http://www.xincai888.com


Try out these new Valentines Day themed recipes! All super nutritious and healthy for not only your kids, but thier Gigapet as well. For a limited time, select food entries will results in special valentines day themed effects for your Gigapet! Feb. 1st-28th.
Learn More


public static interface PersistenceCapable.ObjectIdFieldSupplier
| Modifier and Type | Method and Description |
|---|---|
boolean |
fetchBooleanField(int fieldNumber)
Fetch one field from the field manager.
|
byte |
fetchByteField(int fieldNumber)
Fetch one field from the field manager.
|
char |
fetchCharField(int fieldNumber)
Fetch one field from the field manager.
|
double |
fetchDoubleField(int fieldNumber)
Fetch one field from the field manager.
|
float |
fetchFloatField(int fieldNumber)
Fetch one field from the field manager.
|
int |
fetchIntField(int fieldNumber)
Fetch one field from the field manager.
|
long |
fetchLongField(int fieldNumber)
Fetch one field from the field manager.
|
Object |
fetchObjectField(int fieldNumber)
Fetch one field from the field manager.
|
short |
fetchShortField(int fieldNumber)
Fetch one field from the field manager.
|
String |
fetchStringField(int fieldNumber)
Fetch one field from the field manager.
|
boolean fetchBooleanField(int fieldNumber)
fieldNumber
- the field number of the key field.char fetchCharField(int fieldNumber)
fieldNumber
- the field number of the key field.byte fetchByteField(int fieldNumber)
fieldNumber
- the field number of the key field.short fetchShortField(int fieldNumber)
fieldNumber
- the field number of the key field.int fetchIntField(int fieldNumber)
fieldNumber
- the field number of the key field.long fetchLongField(int fieldNumber)
fieldNumber
- the field number of the key field.float fetchFloatField(int fieldNumber)
fieldNumber
- the field number of the key field.double fetchDoubleField(int fieldNumber)
fieldNumber
- the field number of the key field.String fetchStringField(int fieldNumber)
fieldNumber
- the field number of the key field.Object fetchObjectField(int fieldNumber)
fieldNumber
- the field number of the key field.Copyright © 2005–2015 Apache Software Foundation. All rights reserved.


... when you don't know who's ordering today
Join to our community and use our website to plan to meal ordering for you and your group!
Tell your friends to register here, create a group and have fun together with the planning!
System will choose someone, who will be ordering. But it's choice is not final, because you aren't working or sometimes you just don't want to order.
Choose time when you want or can eat and the system will take it into account.
Choose your favourite restaurants and when you'll have luck, the system will choose it or you will try something new :D
We are happy, that you decided to use our website and we hope, that you'll like it!
Welcome back!
Join to our community!


Flink Community Update - July'20
July 29, 2020 - Marta Paes (@morsapaes)As July draws to an end, we look back at a monthful of activity in the Flink community, including two releases (!) and some work around improving the first-time contribution experience in the project.
Also, events are starting to pick up again, so we’ve put together a list of some great ones you can (virtually) attend in August!
The Past Month in Flink #
Flink Releases #
Flink 1.11 #
A couple of weeks ago, Flink 1.11 was announced in what was (again) the biggest Flink release to date (see “A Look Into the Evolution of Flink Releases”)! The new release brought significant improvements to usability as well as new features to Flink users across the API stack. Some highlights of Flink 1.11 are:
-
Unaligned checkpoints to cope with high backpressure scenarios;
-
The new source API, that simplifies and unifies the implementation of (custom) sources;
-
Support for Change Data Capture (CDC) and other common use cases in the Table API/SQL;
-
Pandas UDFs and other performance optimizations in PyFlink, making it more powerful for data science and ML workloads.
For a more detailed look into the release, you can recap the announcement blogpost and join the upcoming meetup on “What’s new in Flink 1.11?”, where you’ll be able to ask anything release-related to Aljoscha Krettek (Flink PMC Member). The community has also been working on a series of blogposts that deep-dive into the most significant features and improvements in 1.11, so keep an eye on the Flink blog!
Flink 1.11.1 #
Shortly after releasing Flink 1.11, the community announced the first patch version to cover some outstanding issues in the major release. This version is particularly important for users of the Table API/SQL, as it addresses known limitations that affect the usability of new features like changelog sources and support for JDBC catalogs.
You can find a detailed list with all the improvements and bugfixes that went into Flink 1.11.1 in the announcement blogpost.
Gearing up for Flink 1.12 #
The Flink 1.12 release cycle has been kicked-off last week and a discussion about what features will go into the upcoming release is underway in this @dev Mailing List thread. While we wait for more of these ideas to turn into proposals and JIRA issues, here are some recent FLIPs that are already being discussed in the Flink community:
| FLIP | |
|---|---|
| FLIP-130 |
Python support in Flink has so far been bounded to the Table API/SQL. These APIs are high-level and convenient, but have some limitations for more complex stream processing use cases. To expand the usability of PyFlink to a broader set of use cases, FLIP-130 proposes to support it also in the DataStream API, starting with stateless operations. |
| FLIP-132 |
Flink SQL users can't currently create temporal tables using SQL DDL, which forces them to change context frequently for use cases that require them. FLIP-132 proposes to extend the DDL syntax to support temporal tables, which in turn will allow to also bring temporal joins with changelog sources to Flink SQL. |
New Committers and PMC Members #
The Apache Flink community has welcomed 2 new PMC Members since the last update. Congratulations!
New PMC Members #
The Bigger Picture #
A Look Into the Evolution of Flink Releases #
It’s been a while since we had a look at community numbers, so this time we’d like to shed some light on the evolution of contributors and, well, work across releases. Let’s have a look at some git data:
If we consider Flink 1.8 (Apr. 2019) as the baseline, the Flink community more than tripled the number of implemented and/or resolved issues in a single release with the support of an additional ~100 contributors in Flink 1.11. This is pretty impressive on its own, and even more so if you consider that Flink contributors are distributed around the globe, working across different locations and timezones!
First-time Contributor Guide #
Flink has an extensive guide for code and non-code contributions that helps new community members navigate the project and get familiar with existing contribution guidelines. In particular for code contributions, knowing where to start can be difficult, given the sheer size of the Flink codebase and the pace of development of the project.
To better guide new contributors, a brief section was added to the guide on how to look for what to contribute and the starter label has been revived in Jira to highlight issues that are suitable for first-time contributors.
Replacing “charged” words in the Flink repo #
The community is working on gradually replacing words that are outdated and carry a negative connotation in the Flink codebase, such as “master/slave” and “whitelist/blacklist”. The progress of this work can be tracked in FLINK-18209.
Upcoming Events (and More!) #
We’re happy to see the “high season” of virtual events approaching, with a lot of great conferences taking place in the coming month, as well as some meetups. Here, we highlight some of the Flink talks happening in those events, but we recommend checking out the complete event programs!
As usual, we also leave you with some resources to read and explore.
| Category | |
|---|---|
| Events |
Change Data Capture with Flink SQL and Debezium Sweet Streams are Made of These: Data Driven Development with Stream Processing
|
| Blogposts |
|
Flink Packages |
Flink Packages is a website where you can explore (and contribute to) the Flink |
If you’d like to keep a closer eye on what’s happening in the community, subscribe to the Flink @community mailing list to get fine-grained weekly updates, upcoming event announcements and more.


We believe that 3D printing is the future of technology. To offer people an understanding of how amazing this new technology is, we provide a quick and affordable way for anyone to print anything. Our service allows you to print anything you want to be printed. All you have to do is send in an .stl file to our contacts, and we will give you a price (based on how much time and plastic it takes), and we will hand wrap and send to your address as fast as we can!
If you have never worked with 3D printing or have had something 3D printed, you will underestimate the power and potenial of 3D printers. Just the concept of turning a spool of plastic into anything you can imagine is incredible. This technology is already being used in hospitals for emergency situations, and some are even printing car and airplane parts. To introduce curious customers to this technology, every first order that you make comes with a 10% discount, so your first print is even cheaper and easier to get.
The Venus box is one of our favorite prints. You can order one at the order page. They are licensed under the Creative Commons - Attribution.
From Svitlana Lozova


Model.update
Updates all documents matching conditions
using the update
clause. All update
values are casted to their appropriate types before being sent.
var conditions = { name: 'borne' }
, update = { $inc: { visits: 1 }}
, options = { multi: true };
Model.update(conditions, update, options, callback);
function callback (err, numAffected) {
// numAffected is the number of updated documents
})
Keep in mind that the safe
option specified in your schema is used by default when not specified here.
Note: for backwards compatibility, all top-level update
keys that are not $atomic operation names are treated as $set
operations. Example:
var query = { name: 'borne' };
Model.update(query, { name: 'jason borne' }, options, callback)
// is sent as
Model.update(query, { $set: { name: 'jason borne' }}, options, callback)
This helps prevent accidentally overwriting all of your document(s) with { name: 'jason borne' }
.
Also note: although values are casted to their appropriate types when using update
, the following are not applied:
- defaults
- setters
- validators
- middleware triggered on
save
If you want those features, please use the following convention rather than update
:
Model.findOne({ name: 'borne' }, function (err, doc){
doc.name = 'jason borne';
doc.visits.$inc();
doc.save();
});


Username is required.
First name is required.
Last name is required.
Gender is required.
Description is required.
Address line 1 is required.
Address line 2 is required.
Your postcode is required.
Your county is required.
Your city is required.
{{ skills }}
Your companies name who you used to work for is required.
The amount of time you worked there for is required.
Your job title is required.
Your job description is required


Symbols:
In this menu you choose the plot symbols:
Symbols for data points (program ‚plot data‚), plot poles (axes) (program ‚plot great circles‚), Line style (great circles, small circles, contour lines).


Across: 6. Sound loses nothing in this vehicle (4) 7. Perform first of parts without a dog collar perhaps (4) 8. Maybe first song she sung sounded callous? (5) 10. One among leaders of a roman catholic heirarchy, by someone having offered promotion (10) Bach pro - his arrangement ...... 11. see 22dn 12. Take a risk with hot song from 26 (4) 13. Calm one entered chaotic old city (8) 15,14dn. Musician's inner notes blared out (7 9) 16. Difficult to swallow varied trio in 14's alma mater (7) 19,7dn. Player which iron monk savaged at direction of 14 in 60s (3 4 12) 21,5dn. Extras standing around broken sets ahead of conservative show (4 4 5) Bowled wides, toys rest We good people get conservative after middle of month 23. Second name for beastly male (4) 24. Whimpers on allowing cutting cold (10) 25. Dug up material (5) 26. Children get twelve pennies in exchange for one - a sign of love? (4) 27. Execute 26 (4) Down: 1. Dish for groom (5) 2. When you secure a majority? (8) 3. Song concealed in strange wear (7) had wire 4. Worried at missing opening reprimand (6) 5. see 21ac 7. see 19ac 9. Part of Japan where you might treat rare condition (8 4) 14. see 15ac 17. Sixes contribute to score for lofty English player (8) 18. He doesn't accept claims, and pickets work (7) 20. Composer's initially wild crazy anger (6) 22,11ac. Single scored by 14 (5 4)


--- layout: post title: Finding bugs with FindBugs date: 2006-06-16 00:00:00 category: software-development ---
Finding bugs with FindBugs: "However, there's a class of development tool that can also be used to root out bugs before they happen, and that's a static code analysis tool. In contrast to dynamic analysis, which involves looking at code that's running, static analysis focuses on source or object code (byte code in the Java world).
One such tool is FindBugs, which analyses Java byte code to flag potential errors."


First name is required.
Last name is required.
Username is required.
Email address is required.
Email address is invalid.
3 digits only
4 digits only
Password is required.
{{passwordError}}


Last updated: 2019-12-18
Checks: 7 0
Knit directory: smash-paper/analysis/
This reproducible R Markdown analysis was created with workflowr (version <IP_ADDRESS>00). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.
Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.
Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.
The command set.seed(1)
was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.
Great job! Recording the operating system, R version, and package versions is critical for reproducibility.
Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.
Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.
Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility. The version displayed above was the version of the Git repository at the time these results were generated.
Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish
or wflow_git_commit
). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:
Ignored files:
Ignored: dsc/code/Wavelab850/MEXSource/CPAnalysis.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/DownDyadHi.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/DownDyadLo.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/FAIPT.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/FCPSynthesis.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/FMIPT.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/FWPSynthesis.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/FWT2_PO.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/FWT_PBS.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/FWT_PO.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/FWT_TI.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/IAIPT.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/IMIPT.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/IWT2_PO.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/IWT_PBS.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/IWT_PO.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/IWT_TI.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/LMIRefineSeq.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/MedRefineSeq.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/UpDyadHi.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/UpDyadLo.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/WPAnalysis.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/dct_ii.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/dct_iii.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/dct_iv.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/dst_ii.mexmac
Ignored: dsc/code/Wavelab850/MEXSource/dst_iii.mexmac
Untracked files:
Untracked: files.txt
Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.
These are the previous versions of the R Markdown and HTML files. If you’ve configured a remote Git repository (see ?wflow_git_remote
), click on the hyperlinks in the table below to view them.
| File | Version | Author | Date | Message |
|---|---|---|---|---|
| Rmd | 7f7b18d | Peter Carbonetto | 2019-12-18 | Made a few small revisions to the text in the chipseq analysis. |
| html | 2319196 | Peter Carbonetto | 2019-12-18 | Re-built the chipseq analysis after adding the HF method and making |
| Rmd | e576395 | Peter Carbonetto | 2019-12-18 | wflow_publish(“chipseq.Rmd”) |
| Rmd | f899adf | Peter Carbonetto | 2019-12-18 | Working on code to run HF method in chipseq example. |
| Rmd | 500381a | Zhengrong Xing | 2019-10-28 | move gausdemo; add HF for chipseq |
| html | 99d1f34 | Peter Carbonetto | 2018-12-07 | Re-built all the outdated workflowr webpages. |
| Rmd | a09d13e | Peter Carbonetto | 2018-11-09 | Adjusted setup steps in a few of the R Markdown files. |
| html | 0fa970b | Peter Carbonetto | 2018-11-07 | Some small adjustments to the chipseq example text. |
| Rmd | d9f6b81 | Peter Carbonetto | 2018-11-07 | wflow_publish(“chipseq.Rmd”) |
| html | 0b15924 | Peter Carbonetto | 2018-11-07 | Added setup instructions to chipseq analysis. |
| Rmd | f5dec9c | Peter Carbonetto | 2018-11-07 | wflow_publish(“chipseq.Rmd”) |
| Rmd | f9f193c | Peter Carbonetto | 2018-11-07 | Revised setup instructions for a couple .Rmd files. |
| html | 9cf40ea | Peter Carbonetto | 2018-11-07 | Build site. |
| Rmd | 63bc42d | Peter Carbonetto | 2018-11-07 | wflow_publish(“chipseq.Rmd”) |
| html | b66089f | Peter Carbonetto | 2018-10-19 | Added a bit of explanatory text to the end of the chipseq.Rmd analysis. |
| Rmd | 891e862 | Peter Carbonetto | 2018-10-19 | wflow_publish(“chipseq.Rmd”) |
| html | f49c927 | Peter Carbonetto | 2018-10-18 | Adjusted size of figure in chipseq example. |
| Rmd | 3683070 | Peter Carbonetto | 2018-10-18 | wflow_publish(“chipseq.Rmd”) |
| html | 17b5a47 | Peter Carbonetto | 2018-10-18 | Adjusted chipseq R Markdown source. |
| Rmd | 38211a8 | Peter Carbonetto | 2018-10-18 | wflow_publish(“chipseq.Rmd”) |
| html | b9c076d | Peter Carbonetto | 2018-10-18 | First wflow_publish(“chipseq.Rmd”). |
| Rmd | 90e3ac9 | Peter Carbonetto | 2018-10-18 | wflow_publish(“chipseq.Rmd”) |
| Rmd | 1ef7492 | Peter Carbonetto | 2018-10-18 | Working on chipseq R Markdown file. |
This is an illustration of “SMoothing by Adaptive SHrinkage” (SMASH) applied to chromatin immunoprecipitation sequencing (“ChIP-seq”) data. This implements the SMASH analysis presented in Sec. 5.2 of the manuscript.
To run this example on your own computer, please follow these setup instructions. These instructions assume you already have R (optionally, RStudio) installed on your computer.
Download or clone the git repository on your computer.
Launch R, and change the working directory to be the “analysis” folder inside your local copy of the git repository.
Install the devtools, ggplot2 and cowplot packages used here and in the code below:
install.packages(c("devtools","ggplot2","cowplot"))
Finally, install the smashr package from GitHub:
devtools::install_github("stephenslab/smashr")
See the “Session Info” at the bottom for the versions of the software and R packages that were used to generate the results shown below.
Loading the smashr, ggplot2 and cowplot packages, as well as some additional functions used to implement the analysis below.
source("../code/chipseq.functions.R")
library(smashr)
library(ggplot2)
library(cowplot)
library(haarfisz)
The ChIP-seq data are sequencing read counts for transcription factor YY1 in cell line GM12878, restricted to 880,001–1,011,072 bp on chromosome 1. These data were collected as part of the ENCODE (“Encyclopedia Of DNA Elements”) project. The data are included with the git repository.
load("../data/reg_880000_1011072.RData")
bppos <- 880001:1011072
counts <- M[1,] + M[,2]
Note that there are two replicates of the GM12878 cell line, so we analyze the combined read counts from both replicates, stored in the counts
vectors.
The Haar-Fisz method transforms the Poisson counts, then applies Gaussian wavelet methods to the transformed data. Note that this call can take several minutes to run on a modern desktop computer.
res.hf <- denoise.poisson(counts,meth.1 = hf.la10.ti4,cs.1 = 50,hybrid = FALSE)
Next, we apply SMASH to the read counts to estimate the mean and variance of the underlying signal. It could also take several minutes to complete this step.
res <- smash.poiss(counts,post.var = TRUE)
To provide a “baseline” to compare against the SMASH estimates, we retrieve the peaks identified in the same ChIP-seq data using the MACS software. Again, these data should have been included with the git repository you downloaded by following the instructions above.
macs.file <- "../data/Gm1287peaks_chr1_sorted.txt"
peaks <- read.macs.peaks(macs.file,min(bppos),max(bppos))
This next plot shows the intensity functions estimated by SMASH (orange line) and the Haar-Fisz method (dark blue line). The read count data are depicted as light blue circles, in which the area of each circle is scaled by the number of data points that fall within each 1.6-kb “bin”. (We show counts summarized within bins because there are too many data points to plot them individually.) The peaks identified by the MACS software are shown as red triangles. (Specifically, these are the mean positions of the identified peak intervals; the peak intervals are short enough that it is not useful to show both the start and end positions of these intervals.)
create.chipseq.plot(bppos/1e6,counts,res$est,res.hf,
(peaks$start + peaks$end)/2e6,nbreaks = 80) +
scale_x_continuous(limits = c(0.88,1.02),breaks = seq(0.88,1.02,0.02)) +
scale_y_continuous(limits = c(-1,9),breaks = seq(0,8,2))
Based on this plot, it is clear that the strongest Haar-Fisz and SMASH intensity estimates align very closely with the peaks found by MACS, although the Haar-Fisz method failed to replicate at least two of the MACS peaks. Intriguingly, the SMASH estimates also suggest the presence of several additional weaker peaks that were not identified by MACS.
sessionInfo()
# R version 3.4.3 (2017-11-30)
# Platform: x86_64-apple-darwin15.6.0 (64-bit)
# Running under: macOS High Sierra 10.13.6
#
# Matrix products: default
# BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
# LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
#
# locale:
# [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
#
# attached base packages:
# [1] stats graphics grDevices utils datasets methods base
#
# other attached packages:
# [1] haarfisz_4.5 wavethresh_4.6.8 MASS_7.3-48 cowplot_0.9.4
# [5] ggplot2_3.2.0 smashr_1.2-5
#
# loaded via a namespace (and not attached):
# [1] tidyselect_0.2.5 xfun_0.7 ashr_2.2-39
# [4] purrr_0.2.5 lattice_0.20-35 colorspace_1.4-0
# [7] htmltools_0.3.6 yaml_2.2.0 rlang_0.4.2
# [10] mixsqp_0.3-6 later_0.8.0 pillar_1.3.1
# [13] glue_1.3.1 withr_<IP_ADDRESS>00 foreach_1.4.4
# [16] plyr_1.8.4 stringr_1.4.0 munsell_0.4.3
# [19] gtable_0.2.0 workflowr_<IP_ADDRESS>00 caTools_<IP_ADDRESS>
# [22] codetools_0.2-15 evaluate_0.13 labeling_0.3
# [25] knitr_1.23 pscl_1.5.2 doParallel_1.0.14
# [28] httpuv_1.5.0 parallel_3.4.3 Rcpp_1.0.1
# [31] promises_1.0.1 backports_1.1.2 scales_0.5.0
# [34] truncnorm_1.0-8 fs_1.2.7 digest_0.6.18
# [37] stringi_1.4.3 dplyr_<IP_ADDRESS> grid_3.4.3
# [40] rprojroot_1.3-2 tools_3.4.3 bitops_1.0-6
# [43] magrittr_1.5 lazyeval_0.2.1 tibble_2.1.1
# [46] crayon_1.3.4 whisker_0.3-2 pkgconfig_2.0.2
# [49] Matrix_1.2-12 SQUAREM_2017.10-1 data.table_1.12.0
# [52] assertthat_0.2.1 rmarkdown_1.17 iterators_1.0.10
# [55] R6_2.4.0 git2r_0.26.1 compiler_3.4.3


SRCCON 2019 Documentation
It’s important to us to keep SRCCON small enough to feel friendly and conversational, but we also care about getting the ideas and conversations that take place at SRCCON into the wider world. The most important way this happens is when attendees return to their newsrooms and put new skills and approaches to work, but we also document SRCCON as extensively as possible. This page collects resources you can refer back to as you bring SRCCON home with you:
Session Transcripts
Our live-captioning team transcribed 16 sessions at SRCCON. Sessions that have stenographers are marked on our full schedule, or you can use the lists below. If you were in a session and you notice something that needs to be fixed, we’d love your pull requests or emails.
Thursday transcribed sessions
Friday transcribed sessions
Session Notes & Resources
All sessions at SRCCON have a collaborative etherpad that facilitators and attendees can use to share links and capture notes on discussions as they take place. Each entry on our schedule has a link to that session’s etherpad. We also collect slide decks, worksheets, and other documentation right here—if you’re a facilitator and you have session resources to share, let us know!
- ““Abandon normal instruments”: Sideways strategies for defeating creative block” session notes
- ““Abandon normal instruments”: Sideways strategies for defeating creative block” slides
- “A playbook for reporters interested in reaching people at risk of being undercounted” session notes
- “Beat as a product: Lessons from product innovation for the newsroom” session notes
- “Being in the room: the hard work of interview-based hiring” session notes
- “Building capacity, impact, and trust by tapping into expertise outside the newsroom” session notes
- “CMS Demos: Approaches to Helping Our Newsrooms Do Their Best Work” session notes
- “Calling All Media Diversity Avengers: Now’s the time to act.” session notes
- “Changing journalism’s awards culture” session notes
- “Creative ways to teach complex issues” session notes
- “Creative ways to teach complex issues” slides
- “Designing the next phase for newsroom technologists” slides
- “Document this conference! An introduction to Library.” session notes
- “Engineering Beyond Blame” session notes
- “Engineering Beyond Blame” slides
- “Fade In: What Data Journalism Can Learn from Screenwriting” session notes
- “Fade In: What Data Journalism Can Learn from Screenwriting” slides
- “Fix your feedback loop: Letting people, not polls, drive your election coverage” session notes
- “Fix your feedback loop: Letting people, not polls, drive your election coverage” slides
- “Game of Newsletters: A song of inboxes and subject lines” session notes
- “Game of Newsletters: A song of inboxes and subject lines” slides
- “Game of Newsletters: A song of inboxes and subject lines” cards & worksheets
- “Ghosts in the Machine: How technology is shaping our lives and how we can build a better way” session notes
- “How are we in community together?” session notes
- “How can newsrooms be more active catalysts for change?” session notes
- “How can newsrooms be more active catalysts for change?” slides
- “How to edit data as seriously as we edit words” session notes
- “How to re-org your newsroom around product without breaking it” session notes
- “How to re-org your newsroom around product without breaking it” slides
- “If I knew then what I know now” session notes
- “Let’s JAMstack! How to Make Data-driven Static Sites” session notes
- “Let’s JAMstack! How to Make Data-driven Static Sites” slides
- “Let’s build some ethical advertising” session notes
- “Making The Case For Remote Work” session notes
- “Making The Case For Remote Work” slides
- “Meeting management challenges in local newsrooms” session notes
- “Meeting management challenges in local newsrooms” documentation
- “Membership Has its Privileges (and They Are Not Just for the Privileged)” session notes
- “Murder Mystery: Collaborative Journalism Edition” session notes
- “Noise & Signal: Knowing when to adopt new tech, and when to ignore it” session notes
- “Noise & Signal: Knowing when to adopt new tech, and when to ignore it” slides
- “Proud to be a Platypus: Finding Your Own Innovative Role in News” session notes
- “Proud to be a Platypus: Finding Your Own Innovative Role in News” slides
- “Proud to be a Platypus: Finding Your Own Innovative Role in News” worksheet
- “Spreadsheets IRL: The How and Why of Making Data With Your Community” session notes
- “Spreadsheets IRL: The How and Why of Making Data With Your Community” slides
- “State of Newsroom Diversity Reports” session notes
- “Staying with the trouble: Doing good work in terrible times” session notes
- “Steps to getting a local news startup off the ground” session notes
- “Steps to getting a local news startup off the ground” worksheet
- “Steps to getting a local news startup off the ground” playbook
- “Structured communication: Tools you can use to change culture and help your team feel heard” session notes
- “Structured communication: Tools you can use to change culture and help your team feel heard” slides
- “The Geeks Won: Now What?” session notes
- “The Geeks Won: Now What?” slides
- “Training: Finding new data sources with search and exploration tools” session notes
- “We should rethink the way we think about percentages” slides
- “What happens to journalism, when AI eats the world?” session notes
- “What happens to journalism, when AI eats the world?” slides
- “Why it matters — Designing for impact” slides
Session Write-Ups
On Source, we’re gathering up session summaries and takeaways as well. If there’s a session topic you’d like to learn more about, let us know and we’ll see if we can find additional documentation or publish a followup piece. And of course as you’re taking ideas back to your newsroom, the After Party Toolkit is here to help you make a great plan.


5 Minute Forum is a modern forum. Before using, you must set it up.
Please provide these information to install. If you want to set it up manually, please read the comments of setup.php.


Selena Gomez
-
We Don't Talk Anymore
We don't talk anymore, we don't talk anymore We don't talk anymore, like we used to do We don't love anymore What was al... -
Wolves
作曲 : Selena Gomez/Marshmello/Andrew Wotman/Alexandra Tamposi/Brian D. Lee/Louis Bell/Carl Rosen 作词 : Selena Gomez/Mars...  -
I Want You to Know
作曲：Zedd/Ryan Tedder/Kevin "KDrew" Drew 作词：Zedd/Ryan Tedder/Kevin "KDrew" Drew I want you to know that it's our time You ... -
I Want You To Know (Hella x Pegato Remix)
[by:小陀螺Tony] I want you to know (you and I,you and I…） I want you to know that it's our time You and me bleed the same... -
ZEDD - I Want You To Know (DDYcolour Edit)
作曲 : ZEDD／DDYcolour 作词 : ZEDD I want you to know that it's our time 你可知道今夜只属于我们两人 You and me bleed the same light 我们的血... -
Taki Taki
[by:Trap_Girl] Wo-oh, oh-oh Bailame como si fuera la última vez Y enséñame ese pasito que no sé Un besito bien suavecit... -
TAKI TAKI（Tripped Remix Feet.KrateX)
作曲 : Tripped/Kratex/DJ Snake 作词 : Selena Gomez/Ozuna/Cardi B Bailame como si fuera la última vez为我舞蹈，就当作是最后一次 Y enséña... -
It Ain't Me
[by:hondoes] I had a dream We were sipping whisky neat Highest floor, the bowery And I was high enough Somewhere along... -
It AIn't Me (CODEKO Remix)
[by:Novachy] I had a dream We were sipping whisky neat Highest floor, the bowery And I was high enough Somewhere along t...  -
Kill Em With Kindness
[by:紫ha123] [ar:Selena Gomez] [ti:Kill Em With Kindness] The world can be a nasty place You know it, I know it, yeah We ... -
Same Old Love
Take away all your things and go You can't take back what you said, I know I've heard it all before, at least a million ... -
Love You Like a Love Song
Its been said and done Every beautiful thoughts been already sung And I guess right now heres another one So your me... -
Back to You
[by:Trap_Girl] Took you like a shot Thought that I could chase you with the cold evening Let a couple years water down H... -
Kill Em with Kindness (Felix Cartal Remix)
[by:符卡] The world can be a nasty place You know it, I know it, yeah We don't have to fall from grace Put down the weapon... -
Who Says
Wouldn't wanna be anybody else, hey. You made my insecure. To me I wasn't good enough. But who are you to judge. When yo... -
The Heart Wants What It Wants
You got me sipping on something I can't compare to nothing I bet for known I'm hoping That after this fever I'll survive...  -
Love Will Remember
Hey babe it's me, I just wanted to call to tell you that I love you so so so so much, Just wanted to let you know that y... -
Back To You
Took you like a shot Thought that I could chase you with the cold evening Let a couple years water down How I'm feeling ... -
Trust Nobody
[by:工作婊] Mmmm, hahaha I'ma tell you how I want it Baby tell me how you need it Hope you're good at keeping secrets See/... -
Nobody
[by:紫ha123] [ar:Selena Gomez] [ti:Nobody] No heart, no hands, no skin, no touch Can get me there, nowhere enough To love... -
Perfect
[by:紫ha123] [ar:Selena Gomez] [ti:Perfect] Different inflection when you say my name Kiss me, but your kiss don't taste ... -
Only You
[by:Trap_Girl] Looking from a window above It's like a story of love Can you hear me? Came back only yesterday I'm movin...  -
Camouflage
Dead-end streets and boulevards You threw in the towel I broke your heart But there's a first time for everything Who ... -
Do It
Sitting on my bed with just a t-shirt on Turning up the volume to my favorite song Boy I can't lie What we did last nigh... -
Outta My Hands (Loco)
[by:紫ha123] [ar:Selena Gomez ] [ti:Outta My Hands] I know you're loco But it feels too good, yeah I know you're loco The... -
Tell Me Something I Don't Know
Everybody tells me That it's so hard to make it It's so hard to break it There's no way to fake it Everybody tells me... -
Wolves (Tiger Feng Remix)
[by:雨滴如梦] In your eyes, there's a heavy blue， One to love, and one to lose， Sweet divine, a heavy truth， Water or wine, ... -
Hands to Myself (Fareoh Remix)
[by:小陀螺Tony] [ti:Hands to Myself (Fareoh Remix)] [ar:Selena Gomez Betablock3r 405485820] [al:] [by:九九Lrc歌词网～www.99Lrc.ne... -
Selena Gomez & Marshmello - Wolves（TANG Remix）
[by:墨尔本bounce] In your eyes, there's a heavy blue One to love, and one to lose Sweet divide, a heavy truth Water or ... -
Slow Down
Now that I have captured your attention I want to steal you for a rhythm intervention Mr. T say I’m ready for inspection... -
We Dont Talk Anymore
[by:Reospeedwagon] I just heard you found the one you've been lookin' You've been lookin' for I wish I would have known ...  -
Same Old Love (Grey Remix)
Take away all your things and go You can't take back What you said I know I've heard it all before At least a million ti... -
Bad Liar
[ti:] [ar:] [al:] [by:] [offset:0] I was walking down the street the other day Tryna distract myself But then I see your... -
My Dilemma 2.0
[by:耳朵还在] [ti:] [ar:] [al:] [by:九九Lrc歌词网～www.99Lrc.net] You make me so upset sometimes I feel like I could lose my mind ... -
Hands To Myself
Can't keep my hands to myself No matter how hard I'm trying to I want you all to myself You're metaphorical gin and juic... -
Same Old Love Remix
[by:莎士比亚书店] I am so sick, I’m hoping you notice, yeah baby So sick of the same old love Like a dose of the same old drug...  -
Cause You're My Zing
I thought I found a love but she was just a fling. And then I'm a girl, and felt a different thing. It's like your hit i... -
Sober
[by:CarbonateH] We fall for each other at the wrong time Only for a moment, but I don't mind Guess I don't know where to... -
Me & The Rhythm
Ooh the rhythm takes you over Takes you to a different place A different space Ooh the smoke is getting closer I can... -
Fly To Your Heart
Watch all the flowers Dance with the wind Listen to snowflakes Whisper your name Feel all the wonder Lifting your dreams... -
Anxiety
作曲：Julia Michaels/Selena Gomez/Ian Kirkpatrick/Scott Harris 作词：Julia Michaels/Selena Gomez/Ian Kirkpatrick/Scott Harris ... -
Me & My Girls
[by:紫ha123] [ar:Selena Gomez] [ti:Me & My Girls] Drop down on a desert ride Just outside the 95 Never felt more, more al... -
Revival
I dive into the future But I'm blinded by the sun I'm reborn in every moment So who knows what I'll become I feel l... -
Lose You To Love Me
作曲 : Julia Michaels/Justin Tranter/Selena Gomez/Mattias Larsson/Robin Fredriksson 作词 : Julia Michaels/Justin Tranter/S...


| Authors: | David Wang
Alex Mah Soren Lassen |
|---|---|
| Version: | 1.1 - July 2010 |
This whitepaper is part of a series. All of the whitepapers can be found on Google Wave Federation Protocol site.
Waves are hosted, structured documents that allow seamless and low latency concurrent modifications. To provide this live experience, Google Wave uses the Operational Transformation (OT) framework of concurrency control.
Collaborative document editing means multiple editors are able to edit a shared document at the same time. It is live and concurrent when a user can see the changes another person is making, keystroke by keystroke. Google Wave offers live concurrent editing of rich text documents.
The result is that Google Wave allows for a very engaging conversation where you can see what the other person is typing, character by character, much like how you would converse in a cafe. This is very much like instant messaging except you can see what the other person is typing, live. Google Wave also allows for a more productive collaborative document editing experience, where people don't have to worry about stepping on each others toes and still use common word processor functionalities such as bold, italics, bullet points, and headings.
Waves are more than just rich text documents. In fact, Google Wave's core technology allows live concurrent modifications of structured documents which can be used to represent any structured content including system data that is shared between clients and backend systems.
To achieve these goals, Google Wave uses a concurrency control system based on Operational Transformation.
Operational transformation (OT) is a theoretical framework of concurrency control that has been continuously researched in the context of group editing for more than 10 years. This document does not describe the basic theory of OT and assumes the reader understands OT. The reader is encouraged to read the documents in the reference section for background.
In short, Wave OT replicates the shared document at all sites and allows any user to edit any part of the document at any time. Local editing operations are executed without being delayed or blocked. Remote operations are transformed before execution. The lock-free, non-blocking property of OT makes the local response time insensitive to networking latencies. These properties of OT play a big part in providing the Optimistic User Interface (UI) of Wave. Optimistic UI means user actions are executed and displayed locally to the user immediately without waiting for the server to respond.
The starting point for Wave OT was the paper "High-latency, low-bandwidth windowing in the Jupiter collaboration system". Like the Jupiter system described by the paper, Google Wave also implements a client and server based OT system. The reader is again encouraged to read this paper for background.
This document describes the extensions Google Wave made to the basic theory of OT.
A wave is a collection of wavelets. A wavelet contains a collection of documents. A document consists of a structured, XML-like document and some annotations. A wavelet is where concurrent modification takes place. A wavelet is the object on which OT is applied.
To recap, under the basic theory of OT, a client can send operations sequentially to the server as quickly as it can. The server can do the same. This means the client and server can traverse through the state space via different OT paths to the same convergent state, depending on when they receive the other parties' operations. See diagram below.
When you have multiple clients connected to the server, every client and server pair have their own state space. One shortcoming of this is the server needs to carry a state space for every connected client, which can be memory-intensive. In addition, this complicates the server algorithm by requiring it to convert clients' operations between state spaces.
Having a simple and efficient server is important in making waves reliable and scalable. With this goal, Wave OT modifies the basic theory of OT by requiring the client to wait for acknowledgement from the server before sending more operations. When a server acknowledges a client's operation, it means the server has transformed the client's operation, applied it to the server's copy of the wavelet and broadcast the transformed operation to all other connected clients. Whilst the client is waiting for the acknowledgement, it caches operations produced locally and sends them in bulk later.
With the addition of acknowledgements, a client can infer the server's OT path. We call this the inferred server path. By having this, the client can send operations to the server that are always on the server's OT path.
This has the important benefit that the server only needs to have a single state space, which is the history of operations it has applied. When it receives a client's operation, it only needs to transform the operation against the operation history, apply the transformed operation, and then broadcast it.
One trade-off of this simplification is that a client will see chunks of operations from another client in intervals of approximately one round trip time to the other client. We believe the server-side benefits make this a worthwhile trade-off.
Wavelet operations consist of document operations, for modifying documents, and non-document operations, for tasks such as adding or removing a wavelet participant. We'll focus on document operations here.
A document operation has a streaming interface, similar to an XMLStreamWriter or a SAX handler. The document operation consists of a sequence of ordered document mutations. The mutations are applied in sequence as you traverse the document linearly.
Designing document operations in this manner makes it easier to write the transformation function and composition function described later.
A wave document can be regarded as a single document operation that can be applied to the empty document.
In Google Wave, every character, start tag or end tag in a document is called an item. Gaps between items are called positions. Position 0 is before the first item. A document operation can contain mutations that reference positions. For example, a "Retain" mutation specifies how many positions to skip ahead in the document before applying the next mutation.
Wave document operations also support annotations. An annotation is some meta-data associated with an item range, i.e., a start position and an end position. This is particularly useful for describing text formatting and spelling suggestions, as it does not unecessarily complicate the underlying structured document format.
Wave document operations consist of the following mutation components:
The following is a more complex example document operation.:
retain 3 insert element start with tag "p" and no attributes insert characters "Hi there!" insert element end retain 5 delete characters 4 retain 2
From this, one can see how an entire document can be represented as a single document operation.
Representing document operations using a stream interface has the benefit that it makes processing operations in a linear fashion easy.
The operation transformer works by taking two streaming operations as input, simultaneously processing the two operations in a linear fashion, and outputting two streaming operations. This stream-style processing ensures that transforming a pair of very large operations is efficient.
The document operations have been engineered so that they can be composed together and the composition of any two document operations that can be composed together is itself a single document operation.
Furthermore, the composition algorithm processes operations as linear streams, so the composition algorithm is efficient.
The composition B∙A has the property that (B∙A)(d) = B(A(d)) for all documents d on which A can be applied.
While a Wave client awaits server acknowledgement, it composes all its pending operations. This reduces the number of operations to transform and send.
"Operational transformation". In Wikipedia, the free encyclopedia, May 28, 2009. http://en.wikipedia.org/wiki/Operational_transformation
David A. Nichols, Pavel Curtis, Michael Dixon, and John Lamping: High-latency, low-bandwidth windowing in the Jupiter collaboration system, UIST '95: Proceedings of the 8th annual ACM symposium on User interface and software technology, pp.111-120. ACM, 1995.


1 Chronicles 5:13
And their brethren of the house of their fathers were, Michael, and Meshullam, and Sheba, and Jorai, and Jachan, and Zia, and Heber, seven.


podselect - print selected sections of pod documentation on standard output
podselect [-help] [-man]
[-section section-spec] [file ...]
- -help
- Print a brief help message and exit.
- -man
- Print the manual page and exit.
- -section section-spec
- Specify a section to include in the output. See "SECTION
SPECIFICATIONS" in Pod::Parser for the format to use for
section-spec. This option may be given multiple times on the
command line.
- file
- The pathname of a file from which to select sections of pod documentation
(defaults to standard input).
podselect will read the given input files looking for pod documentation
and will print out (in raw pod format) all sections that match one ore more of
the given section specifications. If no section specifications are given than
all pod sections encountered are output.
podselect invokes the podselect()
function exported by Pod::Select Please see
"podselect()" in Pod::Select for more details.
Pod::Parser and Pod::Select
Please report bugs using <http://rt.cpan.org>.
Brad Appleton<EMAIL_ADDRESS>Based on code for Pod::Text::pod2text(1)
written by Tom Christiansen <tchrist@mox.perl.com>


Aaron's nasty kitchen
During Construction!

Javier's nasty kitchen
During Construction!


The following sections describe three ways to produce a flight recording.
Use Java Mission Control (JMC) to easily manage flight recordings. To begin with, find your server in the JVM Browser in the left most frame as shown in Figure 2-1.
Figure 2-1 Java Mission Control - Find Server
By default, any local running JVMs will be listed. Remote JVMs (running as the same effective user as the user running JMC) must be set up to use a remote JMX agent, see Monitoring and Management Using JMX Technology. Then, click the New JVM Connection button, and enter the network details.
Prior to JDK 8u40 release, the JVM must also have been started with the flag: -XX:+UnlockCommercialFeatures -XX:FlightRecorder
.
Since the JDK 8u40 release, the Java Flight Recorder can be enabled during runtime.
The following are three ways to use Java Mission Control to produce a flight recording.
Inspect running recordings: Expand the node in the JVM browser to see running recordings. Figure 2-2 shows both a running continuous recording (with the infinity sign) and a timed profiling recording.
Figure 2-2 Java Mission Control - Running Recordings
Right-click any of the recordings to dump, edit, or stop the recording. Stopping a profiling recording will still produce a recording file and closing a profiling recording will discard the recording.
Dump continuous recordings: Right-click a continuous recording in the JVM Browser and then select to dump it to a file. In the dialog box that comes up, select to dump all available data or only the last part of the recording, as shown in Figure 2-3.
Figure 2-3 Java Mission Control - Dump Continuous Recordings
Start a new recording: To start a new recording, right click the JVM you want to record on and select Start Flight Recording. Then, a window displays, as shown in Figure 2-4.
Figure 2-4 Java Mission Control - Start Flight Recordings
Select either Time fixed recording (profiling recording), or Continuous recording as shown in Figure 2-4. For continuous recordings, you also specify the maximum size or age of events you want to save.
You can also select Event settings. There is an option to create your own templates, but for 99 percent of all use cases you want to select either the Continuous template (for very low overhead recordings) or the Profiling template (for more data and slightly more overhead). Note: The typical overhead for a profiling recording is about 2 percent.
When done, click Next. The next screen, as shown in Figure 2-5, gives you a chance to modify the template for different use cases.
Figure 2-5 Java Mission Control - Event Options for Profiling
The default settings give a good balance between data and performance. In some cases, you may want to add extra events. For example, if you are investigating a memory leak or want to see the objects that take up the most Java heap, enable Heap Statistics. This will trigger two Old Collections at the start and end of the recording, so this will give some extra latency. You can also select to show all exceptions being thrown, even the ones that are caught. For some applications, this will generate a lot of events.
The Threshold value is the length of event recording. For example, by default, synchronization events above 10 ms are gathered. This means, if a thread waits for a lock for more than 10 ms, an event is saved. You can lower this value to get more detailed data for short contentions.
The Thread Dump setting gives you an option to do periodic thread dumps. These will be normal textual thread dumps, like the ones you would get using the diagnostic command Thread.print
, or by using the jstack
tool. The thread dumps complement the events.
For a complete description of JFR flags, see Advanced Runtime Options.
The following are three ways to startup flags at the command line to produce a flight recording.
Start a profiling recording: You can configure a time fixed recording at the start of the application using the -XX:StartFlightRecording
option. Because the JFR is a commercial feature, you must specify the -XX:+UnlockCommercialFeatures
option. The following example illustrates how to run the MyApp
application and start a 60-second recording 20 seconds after starting the JVM, which will be saved to a file named myrecording.jfr
:
java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=delay=20s,duration=60s,name=myrecording,filename=C:\TEMP\myrecording.jfr,settings=profile MyApp
The settings parameter takes either the path to or the name of a template. Default templates are located in the jre/lib/jfr
folder. The two standard profiles are: default - a low overhead setting made primarily for continuous recordings and profile - gathers more data and is primarily for profiling recordings.
Start a continuous recording: You can also start a continuous recording from the command line using -XX:FlightRecorderOptions
. These flags will start a continuous recording that can later be dumped if needed. The following example illustrates a continuous recording. The temporary data will be saved to disk, to the /tmp
folder, and 6 hours of data will be stored.
java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,disk=true,repository=/tmp,maxage=6h,settings=default MyApp
Note: When you actually dump the recording, you specify a new location for the dumped file, so the files in the repository are only temporary.
For more details about configuring and managing Java Flight Recordings, see chapter 2 from Java Flight Recorder Runtime Guide.
Use diagnostic commands:
You can also control recordings by using Java command-line diagnostic commands. The simplest way to execute a diagnostic command is to use the jcmd
tool located in the Java installation directory. For more details see, The jcmd Utility.
You can set up Java Mission Control to automatically start or dump a flight recording if a condition is met. This is done from the JMX console. To start the JMX console, find your application in the JVM Browser, right-click it, and select Start JMX Browser.
Select the Triggers tab at the bottom of the screen, as shown in Figure 2-6.
Figure 2-6 Java Mission Control - Automatic Recordings
You can choose to create a trigger on any MBean
in the application. There are several default triggers set up for common conditions such as high CPU usage, deadlocked threads, or too large of a live set. Select Add to choose any MBean
in the application, including your own application-specific ones. When you select your trigger, you can also select the conditions that must be met. For more information, click the question mark in the top right corner to see the built-in help.
Click the boxes next to the triggers to have several triggers running.
Once you have selected your condition, click the Action tab. Then, select what to do when the condition is met. Finally, choose to either dump a continuous recording or to start a time-limited flight recording as shown in Figure 2-7.
Figure 2-7 Java Mission Control - Use Triggers


Kelsey Pedersen
Portfolio
Blog
Github
About Me
Week 1: Git, Github and Version Control
Week 2: Relative, absolute, and fixed positioning
Week 3: Arrays vs. Hashes
Week 4: Enumerable Methods
Week 5: Ruby Classes
Week 6: Variable Scope
Week 7: Javascript Objects vs. Ruby Classes
Week 8: Sorting (merge sort, quick sort, bubble sort)
Week 1 (Cultural): Kitchen vs. Table
Week 3 (Cultural): Your Thinking Style and Learning
Week 4 (Cultural): Tech Issues: We Need More Women
Week 5 (Cultural): Feedback
Week 6 (Cultural): Stereotype Threat
Week 7 (Cultural): Values
Week 8 (Cultural): Conflict
Final Prep with Pair: Cheatsheet


Account Search
Enter an account number or search for an account owner containing given specified text:
Account Number
Enter a valid 9 digit number
Incorrect data
Account Owner Search
Case-insensitive letters, supports part name matching
Find


freeCodeCamp Survey Form
Thank you for taking the time to help us improve the platform
Name
Email
Age (optional )
Which option best describes your current role?
Select Curren role
Student
Full Time Job
Full Time Learner
Would you recommend freeCodeCamp to a friend?
Definitely
Yes I would definitely
Maybe
To some extent yeah
Not sure
No
What would you like to see improved?
(Check all that apply)
Front-end Projects
Back-end Projects
Data Visualization
Challenges
Open Source Community
Gitter help rooms
Videos
City Meetups
Wiki
Forum
Additonal Courses
Any comments or suggestions?
Submit


I'm in prol of technological progress to benefit the human kind in various ways, know more about ourselves, finding new solutions to world problems and I'll want to do it in HTML, CSS and JS
I enjoy writing front-end code with:
You can contact me via LinkedIn


| Top Users | |
|---|---|
| {{rowContent._id}} | {{rowContent.count}} |
@itsmepanda1
Bio: #America, forced medicine is #tyranny! If you value #freedom, stand against any attempts to remove vaccine exemptions. Vaccination is a medical prodedure!
Joined: January 2011
| Top Links | |
|---|---|
| CDC Scientist: ‘We scheduled meeting to destroy... | 389 |
| Posey CSPAN 7/29/15 | 364 |
| Mr Posey | Video | 329 |
| REVEALED: Cancer industry profits 'locked in'... | 209 |
| Mr Posey | Video | 198 |
| CONGRESSMAN POESY DELIVERS BOMBSHE... | 185 |
| Mr Posey | Video | 176 |
| CDC Scientist: ‘We scheduled meeting to destroy... | 160 |
| Posey CSPAN 7/29/15 | 121 |
| Mr Posey | Video | 103 |


Analog Clock Example
Screenshot of the Analog Clock example
This example also demonstrates how the transformation and scaling features of QPainter can be used to make drawing custom widgets easier.
AnalogClock Class Definition
The AnalogClock
class provides a clock widget with hour and minute hands that is automatically updated every few seconds. We subclass QWidget and reimplement the standard paintEvent() function to draw the clock face:
class AnalogClock : public QWidget { Q_OBJECT public: AnalogClock(QWidget *parent = 0); protected: void paintEvent(QPaintEvent *event) override; };
AnalogClock Class Implementation
AnalogClock::AnalogClock(QWidget *parent) : QWidget(parent) { QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(update())); timer->start(1000); setWindowTitle(tr("Analog Clock")); resize(200, 200); }
When the widget is constructed, we set up a one-second timer to keep track of the current time, and we connect it to the standard update() slot so that the clock face is updated when the timer emits the timeout() signal.
Finally, we resize the widget so that it is displayed at a reasonable size.
void AnalogClock::paintEvent(QPaintEvent *) { static const QPoint hourHand[3] = { QPoint(7, 8), QPoint(-7, 8), QPoint(0, -40) }; static const QPoint minuteHand[3] = { QPoint(7, 8), QPoint(-7, 8), QPoint(0, -70) }; QColor hourColor(127, 0, 127); QColor minuteColor(0, 127, 127, 191); int side = qMin(width(), height()); QTime time = QTime::currentTime();
The paintEvent()
function is called whenever the widget's contents need to be updated. This happens when the widget is first shown, and when it is covered then exposed, but it is also executed when the widget's update() slot is called. Since we connected the timer's timeout() signal to this slot, it will be called at least once every five seconds.
Before we set up the painter and draw the clock, we first define two lists of QPoints and two QColors that will be used for the hour and minute hands. The minute hand's color has an alpha component of 191, meaning that it's 75% opaque.
We also determine the length of the widget's shortest side so that we can fit the clock face inside the widget. It is also useful to determine the current time before we start drawing.
QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.translate(width() / 2, height() / 2); painter.scale(side / 200.0, side / 200.0);
The contents of custom widgets are drawn with a QPainter. Painters can be used to draw on any QPaintDevice, but they are usually used with widgets, so we pass the widget instance to the painter's constructor.
We call QPainter::setRenderHint() with QPainter::Antialiasing to turn on antialiasing. This makes drawing of diagonal lines much smoother.
The translation moves the origin to the center of the widget, and the scale operation ensures that the following drawing operations are scaled to fit within the widget. We use a scale factor that let's us use x and y coordinates between -100 and 100, and that ensures that these lie within the length of the widget's shortest side.
To make our code simpler, we will draw a fixed size clock face that will be positioned and scaled so that it lies in the center of the widget.
The painter takes care of all the transformations made during the paint event, and ensures that everything is drawn correctly. Letting the painter handle transformations is often easier than performing manual calculations just to draw the contents of a custom widget.
We draw the hour hand first, using a formula that rotates the coordinate system counterclockwise by a number of degrees determined by the current hour and minute. This means that the hand will be shown rotated clockwise by the required amount.
painter.setPen(Qt::NoPen); painter.setBrush(hourColor);
We set the pen to be Qt::NoPen because we don't want any outline, and we use a solid brush with the color appropriate for displaying hours. Brushes are used when filling in polygons and other geometric shapes.
painter.save(); painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0))); painter.drawConvexPolygon(hourHand, 3); painter.restore();
We save and restore the transformation matrix before and after the rotation because we want to place the minute hand without having to take into account any previous rotations.
painter.setPen(hourColor); for (int i = 0; i < 12; ++i) { painter.drawLine(88, 0, 96, 0); painter.rotate(30.0); }
We draw markers around the edge of the clock for each hour. We draw each marker then rotate the coordinate system so that the painter is ready for the next one.
painter.setPen(Qt::NoPen); painter.setBrush(minuteColor); painter.save(); painter.rotate(6.0 * (time.minute() + time.second() / 60.0)); painter.drawConvexPolygon(minuteHand, 3); painter.restore();
The minute hand is rotated in a similar way to the hour hand.
painter.setPen(minuteColor); for (int j = 0; j < 60; ++j) { if ((j % 5) != 0) painter.drawLine(92, 0, 96, 0); painter.rotate(6.0); } }
Again, we draw markers around the edge of the clock, but this time to indicate minutes. We skip multiples of 5 to avoid drawing minute markers on top of hour markers.
Files:


--- title: This Is a Photoshop and It Blew My Mind layout: post ---
This is crazy awesome... is this the end of stock photography as we know it?


On cam: Thieves yank ATM from store Crooks took only minutes to steal money 03 Nov 2019, 03:54 VACAVILLE, Calif. - - Caught on video: Thieves use van to break open ATM, steal money.


{% include 'submissions/components/submission_navigation.html' with active='details' enabled=submission.reached_overview %}
Details
{% if not submission.can_edit_details %}Submission details can not be changed any longer. Please, contact organizing committee if you need to update it.
{% endif %}


THE ARRIVAL A film review by Ben Hoffman Copyright 1997 Ben Hoffman
Over the years there have been very few science-fiction films that have turned me on, for the simple reason that they are usually hokey, completely unbelievable It was therefore a pleasure to watch a film of that genre that deals with the subject matter that is based on current scientific knowledge. Further, the music, composed by Arthur Kempel, fits perfectly with the story yet is unobtrusive; the sets are realistic, and the special effects by Charles L. Finance were exactly right for the film. In short, not only is the story a good one, it includes a warning for those of us for whom Planet Earth is our only home. Pretty nearly everything in the film is superb.
Zane Zaminski (Charlie Sheen) is a scientist whose hobby is listening to the skies for a sound, an indication, that life on some other solar system is trying to communicate with us. He spends night after night, for many years, just listening with huge antennas. This leads to neglect of his wife, Char (Teri Polo) as he cannot tear himself away from his "hobby." Working and listening with him is another scientist, Calvin (Richard Schiff).
It is generally conceded by most people who are knowledgeable about such things that mathematically, it is almost a certainty that given the incredible number of solar systems, with each star in the heaven being a sun, that Earth is the only place where a life form exists. It therefore is reasonable to assume that one day we will hear from them.
To the great delight and awe that their dream and efforts have come true, Zane and Calvin hear and see on their computer's monitor what can almost surely be a signal from some far away solar system. They record the sound and the picture on the screen and rush to their superior at the JPL laboratory to show what they have found.
To their astonishment, their boss, Gordian (Ron Silver) belittles the whole thing and tells them to forget it as it is only nonsense. They beg him to take a look at the tape and give him a copy. When they leave, he breaks the tape and throws it in the trash. Ron Silver, by the way, straightfaced throughout the film, gives a great performance as one of the key figures in the film.
Shortly after the discussion with Gordian, Zane is fired because of downsizing??? The next day his friend, Calvin, is killed. He is one among others who mysteriously die. Is someone trying to keep a secret? Is the government afraid that news of communication with another solar system will panic the people on Earth?
At this point, the film begins to pick up even more speed and excitement. There is the pre-teen black kid neighbor, Kiki (Tony T Johnson) who is curious and Zane lets him in to his lab and shows him the computer.and other instruments. Kiki will play an important part in the film as it develops. Scientist Ilana Green (Lindsay Crouse) is worried about the increasingly warm weather the Earth is having each year, as we all should be. If this continues the ice at the poles will begin to melt and our seas will rise and the beaches and nearby cities will be under water. It is something about which the governments of the world (as well as the people) should be concerned.
Here, then, is a fine film you will not want to miss. It is unlike any science-fiction film you have ever seen. Charlie Sheen is great as the serious scientist who wants to get to the bottom of what he sees as a conspiracy. Find out about the Aliens for yourself!
Screenplay by and directed by David Twohy
Rating: 3.5 Bytes
4 Bytes = Superb 3 Bytes = Too good to miss 2 Bytes = Average 1 Byte = Save your money
Ben Hoffman
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


Core Components¶
The following tables describe variables for use with the Ansible installer that can be used to configure the Core components:
| Variable | Type | Description |
|---|---|---|
| tenant_id | string | A unique id for this tenant.
Note: This will be replaced by the ``agave_tenant_id``
*field in the near future. Both are currently *
required.
|
| agave_tenant_id | string | A unique id for this tenant.
Note: This will be replace the ``tenant_id``
*field in the near future. Both are currently *
required.
|
| tenant_public_domain_or_ip | string | The public domain name or ip address of the
auth server. This is the address you will use
to connect to your installation.
required.
|
| host | string | The public domain that the platform should listen
to API requests on. For example, if this value is
api.example.org , then the core apps servicewill be available at
https://api.example.org/apps/v2 .*Note: This will be replace by the *
``tenant_public_domain_or_ip`` field in the near future.
required.
|
| mysql_core_host | string | Host or ip of the core services MySQL database.
|
| mysql_core_port | string | Port of the core services MySQL database.
|
| agave_core_messaging_provider | string | The type of message queue to use.
Default: beanstalk
|
| agave_core_messaging_host | string | Host for message queue server.
Default: messaging_host
|
| agave_core_messaging_port | string | Port for message queue server.
Default: messaging_port
|
| agave_core_smtps_provider | string | Type of SMTP server to use (for sending
notification emails, etc.). Use “sendgrid”
to enable emails sent via the SendGrid API,
requires account info).
Default: sendgrid
|
| agave_core_smtps_host | string | Host for the SMTP server. (Use
“smtp.sendgrid.net” if sendgrid provider is
configured.)
Default: smtp.sendgrid.net
|
| agave_core_smtps_port | string | Port for the SMTP server.
Default: 587
|
| agave_core_smtps_auth | bool | Whether auth is required.
Default: true
|
| agave_core_smtps_from_name | string | From name used in email communications.
Default: Agave Notifications
|
| agave_core_smtps_from_address | string | From address used in email communications.
Default<EMAIL_ADDRESS>|
| deploy_core_apis | bool | Whether to deploy the front-end core APIs. Set
to False when running playbooks that impact
multiple servers and you do not want to modify
the core APIs.
Default: true
|
| kill_core_containers | bool | Whether to kill and restart the core containers
when deploying. Setting to false allows for
configuration updates and rolling deployments
rather than a full teardown and rebuild.
Default: false
|
| core_docker_private_registry | string | (Optional) Address of private registry from which
to pull the Docker images.
Default:
|
| core_docker_registry_account | string | (Optional) Username to use to access the private
registry.
Default:
|
| agave_core_api_only | bool | Whether to only deploy the core apis. Using this
feature you can deploy only the frontend API
to gain horizontal scaling while reducing your
memory consumption on the host.
Default: false
|
| agave_core_workers_only | bool | Whether to only deploy the core workers. Using
this feature you can deploy worker only hosts
to add capacity and scale throughput.
Default: false
|
| agave_core_version | string | Version of the core services to deploy
Default: 2.2.6
|
| agave_core_hostname | string | Externally resolvable public hostname where the
core science API reverse proxy lives.
Default: api.sandbox.agaveplatform.org
|
| agave_proxy_core_ip | string | Hostname for the core services.
Default: core api host ip address
|
| agave_core_iplant_proxy_service | string | Resolvable address of the core proxy. For single
core server deploys, should point to the core
server.
Default: “http://<core api host ip address>”
|
| agave_core_log_service | string | Internally resolvable address to the logging API
Default: “http://<core api host ip address>/logging”
|
| core_deploy_ssl_certs | bool | Whether or not to use custom SSL certs for core
services. If False, deployer will use stock (self-
signed) certs for core services. In general, this
is not an issue since the core services are not
directly exposed to external users (SNI for
external requests happens in the auth layer).
However, if you have the need to export core
services and/or terminate SSL in the core layer,
set this to True and provide ssl certs using the
agave_core_ssl_cert, agave_core_ssl_key
and agave_core_ca_cert.
Default: false
|
| agave_core_ssl_cert | string | Path in the container to core ssl cert. This file
should be placed in the
roles/agave_core/files/core-apis-ssl directory.
Default: api.sandbox.agaveplatform.org.crt
|
| agave_core_ssl_key | string | Path in the container to core ssl cert key. This
file should be placed in the
roles/agave_core/files/core-apis-ssl directory.
Default: api.sandbox.agaveplatform.org.key
|
| agave_core_ca_cert | string | Path in the container to core ssl CA cert. This
file should be placed in the
roles/agave_core/files/core-apis-ssl directory.
Default:
|
| core_deploy_httpd_balancer | bool | Whether or not to use an apache loadbalancer
on the core host in leu of a reverse proxy.
This enables an A/B HA deployment similar to
that done by the APIM deployment, but generally
suffers when services have slow response times
caused by remote system requests with
noticeable latency.
Default: false
|
| deploy_core_default_templates | string | Whether to use the default core compose
templates. Set to False to use a git repository
of compose files or True to use the default
templates.
Note:This variable must be set in the
core_configs.yml AS WELL AS in the inventoryfile for each core host. See the
staging_hosts file for an example.
|
| core_compose_repo_uri | string | URI of the git repository containing the core
compose files (e.g.,
git@gitlab.com:devops/core-compose.git)
|
| core_compose_repo_key_file | string | File name for the SSH key to use to access the
git repository.
*Note: It is assumed that this file is in
roles/agave_core_compose_repo/files so it should be mounted there.
|
| core_compose_repo_name | string | The name of the git repository containing the
core compose files (e.g. “core-compose”).
|
| core_compose_repo_path | string | Relative path inside the git repo to use for the
compose files. Note: Set this variable for each
core host in the inventory file.
|
| agave_core_java_mem_limit | string | The default memory limit set for each of the
Java core service containers. This is over-
ridden by each individual service.
Default: 2048m
|
| agave_core_php_mem_limit | string | The default memory limit set for each of the
PHP core service containers. This is over-
ridden by each individual service.
Default: 1024m
|
| agave_core_allow_relay_transfer | bool | If true, smaller files will be proxied with
a GET and PUT in all data transfers. Otherwise,
they will be proxied in memory via streaming
buffer copies. The former can be much faster
for bulk file operations and cross-protocol
transfers where dynamic window sizing and
parallel/striped transfers
Default: false
|
| agave_core_max_relay_transfer_size | int | Max file size in GB that can be relayed. Any
file larger than this will be copied in memory
through streaming buffers. If this is enabled,
then the host must have sufficient disk for every
worker process that moves data to simultaneously
be copying data.
Default: 1
|
| agave_core_max_page_size | int | Maximum number of results to return in a single
request.
Default: 250
|
| agave_core_default_page_size | int | Default number of results to return in a single
request when the limit query parameter has
not been passed in the HTTP request.
Default: 100
|
| agave_core_drain_all_queues | bool | If true, no workers will be started on the
target host. This effectively turns a container
into an API only container. If set to true,
there must be a worker container with this
value set to true or no async tasks such as
job submission, monitoring, notifications, etc
will be processed.
Default: false
|
| agave_core_dedicated_tenant_id | string | When running multiple denants within a single
deployment, setting this value to a tenant
code will force all core components with this
setting to only accept tasks for the named
tenant. Negation is also supported by
prepending the tenant code with an exclamation
mark.
Note: Setting this value will not preclude
other tenants from accepting work for this
tenant.
Default:
|
| agave_core_dedicated_system_ids | string | Set to a comma-separated list of Agave
systems to restirct all components with this
setting to restrict work to the named list.
Negation is supported by prepending the tenant
code with an exclamation mark. Exclusions
will take priority over inclusions.
Note: Setting this value will not preclude
other tenants from accepting work for this
tenant.
Default:
|
| agave_core_dedicated_user_ids | string | Set to a comma-separated list of Agave
usernames to restirct all components with this
setting to restrict work to the named users.
Negation is supported by prepending the tenant
code with an exclamation mark. Exclusions
will take priority over inclusions.
Note: Setting this value will not preclude
other tenants from accepting work for this
tenant.
Default:
|
| agave_core_jobs_mem_limit | string | Max memory for the jobs container. This
should be at least 8GB for a worker.
API only deployment can be significantly
less. This value Will bound xmx in the
JVM was well. General rule of thumb is
0.5 core and 1GB memory per data-centric
task per container. High job rates can
grow JVM system utilization upwards of
1CPU and 2GB memory per transfer task,
so plan accordingly.
If your resources allow, set
agave_core_jobs_mem_limit to False to
uncap the memory on this container.
Default: 8192m
|
| core_deploy_jobs | bool | Should the Jobs container be deployed.
Default: true
|
| agave_core_job_max_staging_tasks | int | The maximum number of job statging
tasks to run concurrently.
Default: 5
|
| agave_core_job_max_archiving_tasks | int | The maximum number of job archiving
tasks to run concurrently.
Default: 5
|
| agave_core_job_max_monitoring_tasks | int | The maximum number of job monitoring
tasks to run concurrently.
Default: 2
|
| agave_core_job_max_submission_tasks | int | The maximum number of job submission
tasks to run concurrently.
Default: 1
|
| agave_core_files_mem_limit | string | Max memory for the files container. This
should be at least 8GB for a worker. API
only deployment can be significantly
less. This value Will bound xmx on the
JVM was well. General rule of thumb is
0.5 core and 1GB memory per data-centric
task per container. High job rates can
grow JVM system utilization upwards of
1CPU and 2GB memory per transfer task,
so plan accordingly.
If your resources allow, set
agave_core_files_mem_limit to False
to uncap the memory on this container.
Default: 8192m
|
| core_deploy_files | bool | Should the Files container be deployed.
Default: true
|
| agave_core_files_max_staging_tasks | int | The maximum number of file transfer
tasks to run concurrently.
Default: 5
|
| agave_core_files_max_transform_tasks | int | The maximum number of file transform
tasks to run concurrently.
Default: 5
|
| agave_core_systems_mem_limit | string | Max memory for systems container. 2GB
should be enough under normal usage.
Default: 2048m
|
| core_deploy_systems | bool | Should the Systems container be deployed.
Default: true
|
| agave_core_apps_mem_limit | string | Max memory for apps container. 2GB
should be enough under normal usage. For
single host deployments and worker
containers, this can be bumped up to 4GB
based on the number of publishing and
cloning tasks.
Default: 4096m
|
| core_deploy_apps | bool | Should the Apps container be deployed.
Default: true
|
| agave_core_apps_max_publishing_tasks | int | The maximum number of app publishing
tasks to run concurrently.
Default: 1
|
| agave_core_apps_max_cloning_tasks | int | The maximum number of apps cloning tasks
to run concurrently.
Default: 1
|
| agave_core_monitors_mem_limit | string | Max memory for monitors container. 2GB
should be enough under normal usage. For
single host deployments and worker
containers, this can be bumped up to 8GB
based on the number of monitoring tasks
and frequency with which they run.
Default: 4096m
|
| core_deploy_monitors | bool | Should the Monitors container be deployed.
Default: true
|
| agave_core_monitor_min_check_interval | int | The minimum time between checks that users
can configure.
Default: 0
|
| agave_core_monitors_max_tasks | int | The maximum number of monitoring tasks to
run concurrently.
Default: 1
|
| agave_core_monitors_max_retries | int | The maximum number of retires attempts
the service will make when performing a
synchronous monitoring check initiated
by the user.
Default: 3
|
| agave_core_profiles_mem_limit | string | Max memory for custom profiles container.
2GB should be enough under normal usage. Add
containers if you run out of memory.
Default: 1024m
|
| core_deploy_custom_profiles | bool | Should the Profiles container be deployed.
Default: false
|
| agave_core_tags_mem_limit | string | Max memory for tags API container.
2GB should be enough under normal usage. Add
containers if you run out of memory.
Default: 2048m
|
| core_deploy_tags | bool | Should the Tags container be deployed.
Default: false
|
| agave_core_uuids_mem_limit | string | Max memory for uuids API container.
2GB should be enough under normal usage. Add
containers if you run out of memory.
Default: 2048m
|
| core_deploy_uuids | bool | Should the uuids container be deployed.
Default: false
|
| agave_core_postits_mem_limit | string | Max memory for posttis API container.
2GB should be enough under normal usage. Add
containers if you run out of memory.
Default: 2048m
|
| core_deploy_posttis | bool | Should the posttis container be deployed.
Default: false
|
| agave_core_usage_mem_limit | string | Max memory for usage API container.
2GB should be enough under normal usage. Add
containers if you run out of memory.
Default: 1024m
|
| core_deploy_usage | bool | Should the usage container be deployed.
Default: false
|
| agave_core_tenants_mem_limit | string | Max memory for tenants API container.
2GB should be enough under normal usage. Add
containers if you run out of memory.
Default: 1024m
|
| core_deploy_tenants | bool | Should the tenants container be deployed.
Default: false
|
| agave_core_logging_mem_limit | string | Max memory for the logging container. PHP
services rarely need more than 2GB.
Default: 1024m
|
| core_deploy_logging | bool | Should the logging API be deployed.
Default: true
|
| agave_core_docs_mem_limit | string | Max memory for the documentation container.
This should almost never need more than 512m
Default: 512m
|
| core_deploy_docs | bool | Should the API documentation be deployed.
Default: false
|
| agave_core_metadata_mem_limit | string | Max memory for metadata container. 4GB
should be enough under normal usage. If
request size is particularly large, bump
the memory by a couple gig. Anything over
4GB, and you should scale out the
containers rather than bumping this one
in size.
Default: 4096m
|
| core_deploy_metadata | bool | Should the metadata API be deployed.
Default: true
|
| agave_core_metadata_db_host | string | Mongo host for core services.
Default: same as mongodb_host
|
| agave_core_metadata_db_port | string | Mongo port for core services.
Default: same as mongodb_port
|
| agave_core_metadata_db_user | string | Mongo user for core services.
Default: same as mongodb_user
|
| agave_core_notifications_mem_limit | string | Max memory for notifications container. 2GB
should be enough under normal usage. Split
out a worker container and bump threads
before bumping memory above 4GB. The load
here comes from event processing, not the
API.
Default: 2048m
|
| core_deploy_notifications | bool | Should the Notifications container be deployed.
Default: true
|
| agave_core_notifications_max_notification_tasks | int | The number of notification processing
workers to start up.
Default: 2
|
| agave_core_notification_queue | string | Beanstalk queue for core services. (e.g.
“staging.notifications.queue”)
|
| agave_core_notification_topic | string | Beanstalk topic for core services. (e.g.
“staging.notifications.topic”)
|
| agave_core_notification_failed_db_host | string | Hostname of the mongodb to store failed
notification messages in.
Default: same as mongodb_host
|
| agave_core_notification_failed_db_port | string | Port of the mongodb to store failed
notification messages in.
Default: same as mongodb_port
|
| agave_core_notification_failed_db_user | string | Username of the mongodb to store failed
notification messages in.
Default: same as mongodb_user
|
| agave_core_notification_failed_db_password | string | Password of the mongodb to store failed
notification messages in.
Default: same as mongodb_password
|
| agave_core_notification_failed_db_scheme | string | Database scheme of the mongodb to store
failed notification messages in.
Default: notifications
|
| agave_core_realtime_mem_limit | string | Max memory for realtime container. 2GB
should be enough under normal usage.
Default: 2048m
|
| core_deploy_realtime | bool | Should the Realtime container be deployed.
Default: false
|
| agave_core_realtime_provider | string | Type of backend service to use for realtime API.
Currently value “fanout”, “pushpin”, and “none”
are supported.
Default: none
|
| agave_core_realtime_service | string | Addressable location of the backend streaming
server for realtime API.
Default:
|
| agave_core_realtime_service_realm_id | string | Realm id when using the fanout backend.
Default:
|
| agave_core_realtime_service_realm_key | string | Realm key when using the fanout backend.
Default:
|
| core_deploy_stats | bool | Whether to deploy the stats container.
Note: This container is currently optimized
for Agave’s production environment and
requires a Pingdom account, among other
configurations.
|


Medical Cut-off Calculator
* Bio Mathematics Students *
Your Name:
Physics:
Chemistry:
Biology:
Don't forgot to save your work :)
Download


--- title: Your Ideas layout: default bodyClass: page-your-ideas ---
I would love to hear your ideas to make Clearwater a wonderful place to live.


Visualize and compare the impact of news events on industry share prices
Select a few news headline(s)
Select a few companies to see the impact
Food
Health
Retail
Auto
Tech
Real estate
Misc


--- title: The Spring Petclinic Community layout: home ---
The Spring PetClinic is a sample application designed to show how the Spring stack can be used to build simple, but powerful database-oriented applications.
The official version of PetClinic demonstrates the use of Spring Boot with Spring MVC and Spring Data JPA.
There are quite a lot of forks in a special GitHub organization named spring-petclinic with different:
All PetClinic versions are Open Source software released under the Apache 2.0 license. PetClinic has an active developer community passionate about Spring technologies.
The Spring PetClinic was created in 2003 by Kren Krebs and Juergen Hoeller who are developing the first version of the Spring Framework (released in march 2004). This sample application was a kind of tutorial, a demonstration of what it was possible to conceive. It was distributed with the Spring Framework until the 2.5 version (2007).
At this time, the Spring ecosystem was growing: Spring Batch, Spring Web Services, Spring Security… The PetClinic development was in stand-by.
The Spring community likes demo application. It was missing. So in 2013, Keith Donald, Michael Isvy and Costin Leau has decided to migrate the source code of PetClinic to GitHub and Spring Framework 3. PetClinic relives.
In 2016, PetClinic switched to Spring Boot. Dave Syer and Stéphane Nicoll took the leadership. In parallel, Antoine Rey centralized all forks of Spring PetClinic into a GitHub Organization. Nowadays, 9 forks are maintained by the Spring PetClinic community. If you have a special interest in a different technology stack that could be used to implement the PetClinic or if you want to contribute to an existing PetClinic version, then please join the community there.
Architecture of the distributed version of Spring Petclinic
Owners list page screenshot of the Kotlin version of Spring PetClinic.


Leo scripts execute in an environment containing three predefined objects: c, g and p.
g is Leo’s leoGlobals module. This module contains several dozen utility functions and classes.
c is the commander of the outline containing the script. Commanders defined all of Leo’s commands, as well as other data.
p is the position of the presently selected node. Positions represent positions in the traversal of Leo outlines.
This slide give a few examples of how to use c, g and p in Leo scripts. For full details about scripting in Leo, see the Scripting Chapter in Leo’s Users Guide.


{% load i18n %} {% load l10n %}
{% blocktrans trimmed %} {{ order.total | localize }} {{ event.currency }} will be added to your college bill at the end of term. {% endblocktrans %}
{{ details|linebreaksbr }}