Up and running with pcaExplorer
vignettes/upandrunning.Rmd
upandrunning.Rmd
knitr::opts_chunk$set(crop = NULL)
First things first: install pcaExplorer and load it into your R session. You should receive a message notification if this is completed without errors.
This document describes a use case for pcaExplorer, based on the dataset in the airway package. If this package is not available on your machine, please install it by executing:
BiocManager::install("airway")
This dataset consists of the gene-level expression measurements (as raw read counts) for an experiment where four different human airway smooth muscle cell lines are either treated with dexamethasone or left untreated.
To start the exploration, you just need the following lines:
library("pcaExplorer") pcaExplorer()
The easiest way to explore the airway dataset is by clicking on the dedicated button in the Data Upload panel. This action will:
dds
object, normalize the expression values (using the robust method proposed by Anders and Huber in the original DESeq manuscript), and compute the variance stabilizing transformed expression values (stored in the dst
object)If you want to load your expression data, please refer to the User Guide, which contains detailed information on the formats your data have to respect.
Once the preprocessing of the input is done, you should get a notification in the lower right corner that you’re all set. The whole preprocessing should take around 5-6 seconds (tested on a MacBook Pro, with i7 and 16 Gb RAM). You can check how each component looks like by clicking on its respective button, once they appeared in the lower half of the panel.
You can proceed to explore the expression values of your dataset in the Counts Table tab. You can change the data type you are displaying between raw counts, normalized, or transformed, and plot their values in a scatterplot matrix to explore their sample-to-sample correlations. To try this, select for example “Normalized counts”, change the correlation coefficient to “spearman”, and click on the Run
action button. The correlation values will also be displayed as a heatmap.
Additional features, both for samples and for features, are displayed in the Data overview panel. A closer look at the metadata of the airway
set highlights how each combination of cell type (cell
) and dexamethasone treatment (dex
) is represented by a single sequencing experiment. The 8 samples in the demo dataset are themselves a subsample of the full GEO record, namely the ones non treated with albuterol (alb
column).
The relationship among samples can be seen in the sample-to-sample heatmap. For example, by selecting the Manhattan distance metric, it is evident how the samples cluster by dex treatment, yet they show a dendrogram structure that recalls the 4 different cell types used. The total sum of counts per sample is displayed as a bar plot.
Patterns can become clearer after selecting, in the App settings on the left, an experimental factor to group and color by: try selecting dex
, for example. If more than one covariate is selected, the interaction between these will be taken as a grouping factor. To remove one, simply click on it to highlight and press the del or backspace key to delete it. Try doing so by also clicking on cell
, and then removing dex
afterwards.
Basic summary information is also displayed for the genes. In the count matrix provided, one can check how many genes were detected, by selecting a “Threshold on the row sums of the counts” or on the row means of the normalized counts (more stringent). For example, selecting 5 in both cases, only 24345 genes have a total number of counts, summed by row, and 17745 genes have more than 5 counts (normalized) on average.
The Samples View and the Genes View are the tabs where most results coming from Principal Component Analysis, either performed on the samples or on the genes, can be explored in depth. Assuming you selected cell
in the “Group/color by” option on the left, the Samples PCA plot should clearly display how the cell type explain a considerable portion of the variability in the dataset (corresponding to the second PC). To check that dex
treatment is the main source of variability, select that instead of cell
.
The scree plot on the right shows how many components should be retained for a satisfactory reduced dimension view of the original set, with their eigenvalues from largest to smallest. To explore the PCs other than the first and the second one, you can just select them in the x-axis PC and y-axis PC widgets in the left sidebar.
If you brush (left-click and hold) on the PCA plot, you can display a zoomed version of it in the frame below. If you suspect some samples might be outliers (this is not the case in the airway
set, still), you can select them in the dedicated plot, and give a first check on how the remainder of the samples would look like. On the right side, you can quickly check which genes show the top and bottom loadings, split by principal component. First, change the value in the input widget to 20; then, select one of each list and try to check them in the Gene Finder tab; try for example with DUSP1, PER1, and DDX3Y.
While DUSP1 and PER1 clearly show a change in expression upon dexamethasone treatment (and indeed where reported among the well known glucocorticoid-responsive genes in the original publication of Himes et al., 2014), DDX3Y displays variability at the cell type level (select cell
in the Group/color by widget): this gene is almost undetected in N061011 cells, and this high variance is what determines its high loading on the second principal component.
You can see the single expression values in a table as well, and this information can be downloaded with a simple click.
Back to the Samples View, you can experiment with the number of top variable genes to see how the results of PCA are in this case robust to a wide range of this value - this might not be the case with other datasets, and the simplicity of interacting with these parameters makes it easy to iterate in the exploration steps.
Proceeding to the Genes View, you can see the dual of the Samples PCA: now the samples are displayed as arrows in the genes biplot, which can show which genes display a similar behaviour. You can capture this with a simple brushing action on the plot, and notice how their profiles throughout all samples are shown in the Profile explorer below; moreover, a static and an interactive heatmap, together with a table containing the underlying data, are generated in the rows below.
Since we compute the gene annotation table as well, it’s nice to read the gene symbols in the zoomed window (instead of the ENSEMBL ids). By clicking close enough to any of these genes, the expression values are plotted, in a similar fashion as in the Gene Finder.
The tab PCA2GO helps you understanding which are the biological common themes (default: the Gene Ontology Biological Process terms) in the genes showing up in the top and in the bottom loadings for each principal component. Since we launched the pcaExplorer
app without additional parameters, this information is not available, but can be computed live (this might take a while).
Still, a previous call to pca2go
is recommended, as it relies on the algorithm of the topGO package: it will require some additional computing time, but it is likely to deliver more precise terms (i.e. in turn more relevant from the point of view of their biological relevance). To do so, you should exit the live session, compute this object, and provide it in the call to pcaExplorer
(see more how to do so in the main user guide).
A typical session with pcaExplorer
includes one or more iterations on each of these tabs. Once you are finished, you might want to store the results of your analysis in different formats.
With pcaExplorer
you can do all of the following:
.RData
file, as if it was a workspace (clicking on the cog icon in the right side of the task menu)pcaExplorer
and save” saves the state but in a specific environment of your R session, which you can later access by its name, which normally could look like pcaExplorerState_YYYYMMDD_HHMMSS
(also accessible from the cog)pcaExplorer
comes with a template analysis, that picks the latest status of the app during your session, and combines these reactive values together in a R Markdown document, which you can first preview live in the app, and then download as standalone HTML file - to store or share. This document stiches together narrative text, code, and output objects, and constitutes a compendium where all actions are recorded. If you are familiar with R, you can edit that live, with support for autocompletion, in the “Edit report” tab.The functionality to display the report preview is based on knit2html
, and some elements such as DataTable
objects might not render correctly. To render them correctly, please install the PhantomJS executable before launching the app. This can be done by using the webshot package and calling webshot::install_phantomjs()
- HTML widgets will be rendered automatically as screenshots. Keep in mind that the fully rendered report (the one you can obtain with the “Generate & Save” button) is not affected by this, since it uses rmarkdown::render()
.
## R version 4.0.0 (2020-04-24)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Mojave 10.14.6
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRblas.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.0/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] BiocStyle_2.17.0
##
## loaded via a namespace (and not attached):
## [1] Rcpp_<IP_ADDRESS> rstudioapi_0.11 knitr_1.28
## [4] magrittr_1.5 MASS_7.3-51.6 R6_2.4.1
## [7] rlang_0.4.6 highr_0.8 stringr_1.4.0
## [10] tools_4.0.0 xfun_0.14 png_0.1-7
## [13] htmltools_0.4.0 yaml_2.2.1 assertthat_0.2.1
## [16] digest_0.6.25 rprojroot_1.3-2 pkgdown_1.5.1
## [19] crayon_1.3.4 bookdown_0.19 BiocManager_1.30.10
## [22] fs_1.4.1 memoise_1.1.0 evaluate_0.14
## [25] rmarkdown_2.1 stringi_1.4.6 compiler_4.0.0
## [28] desc_1.2.0 backports_1.1.7


{{ page.title }} {{ page.titleGreen }}
This is the frequently asked questions section. If you have a question that is not answered in this section, please pose it in the comment section of this page and we will get back to you.
{% for faq in site.posts %} {% if faq.category == "FAQ" %}{{faq.question}}
{{faq.content}}
{% endif %}
{% endfor %}


English
Nederlands
Are you sure you want to delete?
Delete
Cancel
Small list
Action
Name
EMail
Source
Address
Postal code
City
Province
Country Code
List with lots of items requiring pagination, also enabled search on name item
Action
Name
EMail
Source
Address
Postal code
City
Province
Country Code
Very simple list with only one column and no edit possibility
Action
Name
simple list with single selection option
Action
Name
simple list with multi selection option
Action
Name
simple list with custom save and cancel handling
Action
Name


Pass your time in a canopy of trees
See Hocking Hills in a different way: 20 feet off the ground. Hocking Hills offers plenty of cozy treehouses near the trails for your next getaway. The houses give a bird’s eye view of the State Park, just minutes away from all of the activities of Hocking Hills State Park. Many of the treehouses around Hocking Hills have hot tubs and fire pits to relax during your stay in Southeast Ohio.
Stay in a suite fit for a royal
Surround yourself with Medieval themed decor and games at Ravenwood Castle. Located in New Plymouth, Ohio, which is 12 minutes away from Hocking Hills, there are plenty of things to do during your stay. The castle hosts scavenger hunts, murder mysteries, beer tastings, lifesized chess and many more activites to spend your time. The castle has seven suites inside and nine cottages on the grounds. The remote location is a perfect place to unplug from technology!
Vacation with wild animals
Experience The Wilds in a whole new way in a private yurt. The Wilds are owned by The Columbus Zoo and are located in Zanesville, Ohio. There are yurts to reserve and plenty of excursions on the conservatory. All excursions come with an extra cost, but The Wilds offer tours, ziplines and plenty of safaris across the grounds.
 Made from old shipping containers, these places allow for luxury camping to meet the great outdoors of Hocking Hills. There are three types of houses: the OG Box Hop that’s simple and modern, the BoHo Box Hop that’s compact and intimate and the Hygge Box Hop that’s cozy and comfortable.
Stay the night in a geodome
Experience a new way of getaway by sleeping in a geodome. Located at the Inn & Spa at Cedar Falls, the geodomes mix contemporary living with rustic aesthetics. The dome comes with its own kitchen and appliances, living space, indoor plumbing and electricity. It’s the perfect spot for a solo or couple trip.
Enjoy a unique yurt trip
Also located at the Inn and & Spa at Cedar Falls, try an alternative to the geodomes and spend a night in a yurt instead. Used by Central Asian nomads, these yurts bring a modern Pacific-style flair to the lodging experience. Immerse yourself in nature and take in all that Southeast Ohio has to offer.


ruby_parser
| home : | github.com/seattlerb/ruby_parser |
| rdoc : | docs.seattlerb.org/ruby_parser |
DESCRIPTION:
ruby_parser (RP) is a ruby parser written in pure ruby (utilizing racc—which does by default use a C extension). RP’s output is the same as ParseTree’s output: s-expressions using ruby’s arrays and base types.
As an example:
def conditional1(arg1) if arg1 == 0 then return 1 end return 0 end
becomes:
s(:defn, :conditional1, s(:args, :arg1), s(:scope, s(:block, s(:if, s(:call, s(:lvar, :arg1), :==, s(:arglist, s(:lit, 0))), s(:return, s(:lit, 1)), nil), s(:return, s(:lit, 0)))))
FEATURES/PROBLEMS:
- Pure ruby, no compiles.
- Includes preceding comment data for defn/defs/class/module nodes!
- Incredibly simple interface.
- Output is 100% equivalent to ParseTree.
- Can utilize PT’s SexpProcessor and UnifiedRuby for language processing.
- Known Issue: Speed is now pretty good, but can always improve:
- RP parses a corpus of 3702 files in 125s (avg 108 Kb/s)
- MRI+PT parsed the same in 67.38s (avg 200.89 Kb/s)
- Known Issue: Code is much better, but still has a long way to go.
- Known Issue: Totally awesome.
- Known Issue: line number values can be slightly off.
SYNOPSIS:
RubyParser.new.parse "1+1" # => s(:call, s(:lit, 1), :+, s(:array, s(:lit, 1)))
REQUIREMENTS:
- ruby. woot.
- sexp_processor for Sexp and SexpProcessor classes.
- ParseTree for testing.
- racc full package for parser development (compiling .y to .rb).
INSTALL:
- sudo gem install ruby_parser
LICENSE:
(The MIT License)
Copyright © 2007-2008 Ryan Davis
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ‘Software’), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


This experience needs floating point textures.
You're probably running it on an iOS device, probably an iPhone.
Sorry about that. You should complain to Apple.


Prizes!
3 in a row on any line to win!
= 2 x BET
= 4 x BET
= 6 x BET
= 8 x BET
= 10 x BET
TAKE A CHANCE ON ME!
NUDGES
BET
CREDIT
0
2
100
Prizes!
3 in a row on any line to win!
= 2 x BET
= 4 x BET
= 6 x BET
= 8 x BET
= 10 x BET
3 in a row on any line to win!
= 2 x BET
= 4 x BET
= 6 x BET
= 8 x BET
= 10 x BET
NUDGES
BET
CREDIT
0
2
100
3 in a row on any line to win!
= 2 x BET
= 4 x BET
= 6 x BET
= 8 x BET
= 10 x BET


Long long ago people didn’t
know anything. They didn’t
know how to plant crops, or
how to weave cloth, or how to
make iron tools.
The god Nyame up in the sky
had all the wisdom of the world.
He kept it safe in a clay pot.
One day, Nyame decided that
he would give the pot of
wisdom to Anansi.
Every time Anansi looked in the
clay pot, he learned something
new. It was so exciting!
Greedy Anansi thought, “I’ll
keep the pot safe at the top of a
tall tree. Then I can have it all
to myself!”
He spun a long thread, wound it
round the clay pot, and tied it to
his stomach.
He began to climb the tree. But
it was hard climbing the tree
with the pot bumping him in the
knees all the time.
All the time Anansi’s young son
had been standing at the
bottom of the tree watching. He
said, “Wouldn’t it be easier to
climb if you tied the pot to your
back instead?”
Anansi tried tying the clay pot
full of wisdom to his back, and it
really was a lot easier.
In no time he reached the top of
the tree.
But then he stopped and
thought, “I’m supposed to be
the one with all the wisdom,
and here my son was cleverer
than me!”
Anansi was so angry about this
that he threw the clay pot down
out of the tree.
It smashed into pieces on the
ground. The wisdom was free
for everyone to share.
And that is how people learned
to farm, to weave cloth, to
make iron tools, and all the
other things that people know
how to do.


Dynatrace Menu Editor
Refresh page to update menu.
Favorites Preferences
Expanded Preferences
AWS
Azure
Cloud Foundry
Custom applications
Create custom chart
Dashboards
Databases
Deploy Dynatrace
Deployment status
Distributed traces
Docker
Explore data
Extensions
Frontend
Hosts
Hub
Kubernetes
Kubernetes workloads
Logs
Metrics
Mobile
Multidimensional analysis
Network
Problems
Profiling and optimization
Query user sessions
Releases
Reports
Service level objectives
Services
Session Replay
Session segmentation
Settings
Smartscape topology
Synthetic
Technologies and processes
VMware
Vulnerabilities
Web
Devops
Debug UI
Self-monitoring
Angular docs
UI Feature Flags
Favorites
Observe and explore
Infrastructure
Cloud Automation
Applications & Mircroservices
Application Security
Digital Experience
Manage
Devops
Not officially supported by Dynatrace.
Github


Introduction
2 players, turn based game
Creates a rough surface to make the ball move harder
Creates a slippery surface to make the ball move faster
Burns up balls around when moving above a certain speed
Simulation of a complex physic process
Hmm... I can't find the collision formula scratch we created, but you can read the code here


We are still trying to get things set up for the actual Westrocketry website
Tell us your suggestions or contribute your knowledge to the Rocket Club Wiki!


|
Ubiquity
2.3.0
php rapid development framework
|
Manage the token api for the Rest part. More...
Public Member Functions | |
| __construct ($length=10, $duration=3600, $tokens=[]) | |
| getTokens () | |
| getDuration () | |
| getToken ($key) | |
| isExpired ($key) | |
| addToken () | |
| clearAll () | |
| removeExpireds () | |
| remove ($key) | |
| storeToCache ($key="_apiTokens") | |
| getFromCache ($folder, $key="_apiTokens") | |
Protected Member Functions | |
| generateToken () | |
| tokenGenerator () | |
Protected Attributes | |
| $tokens | |
| $length | |
| $duration | |
Static Protected Attributes | |
| static | $cache |
Manage the token api for the Rest part.
Ubiquity$ApiTokens This class is part of Ubiquity
Definition at line 17 of file ApiTokens.php.
| __construct | ( | $length = 10 , |
|
$duration = 3600 , |
|||
$tokens = [] |
|||
| ) |
Definition at line 23 of file ApiTokens.php.
| addToken | ( | ) |
Definition at line 61 of file ApiTokens.php.
| clearAll | ( | ) |
Definition at line 67 of file ApiTokens.php.
|
protected |
Definition at line 29 of file ApiTokens.php.
| getDuration | ( | ) |
Definition at line 44 of file ApiTokens.php.
| getFromCache | ( | $folder, | |
$key = "_apiTokens" |
|||
| ) |
| getToken | ( | $key | ) |
Definition at line 48 of file ApiTokens.php.
| getTokens | ( | ) |
Definition at line 40 of file ApiTokens.php.
| isExpired | ( | $key | ) |
Definition at line 54 of file ApiTokens.php.
| remove | ( | $key | ) |
Definition at line 80 of file ApiTokens.php.
| removeExpireds | ( | ) |
Definition at line 71 of file ApiTokens.php.
| storeToCache | ( | $key = "_apiTokens" | ) |
Definition at line 88 of file ApiTokens.php.
|
protected |
Definition at line 36 of file ApiTokens.php.
|
staticprotected |
Definition at line 21 of file ApiTokens.php.
|
protected |
Definition at line 20 of file ApiTokens.php.
|
protected |
Definition at line 19 of file ApiTokens.php.
|
protected |
Definition at line 18 of file ApiTokens.php.


CALCULUS PROJECT
AP BC Final Project by Nikola Bura, Period 3
This is a set of partially-interactive
lessons intended to teach basic Calculus concepts.
List of Available Lessons:
Thanks to...
- The math.js library (which allows for use
of helpful math functions)
- The MathJax library (which helps properly
display math equations/expressions)
- The FunctionPlot library (which draws
graphs and plots functions, obviously)


In this sample, we will demonstrate common scenarios for Azure Table Storage that includes creating, listing and deleting tables and entities.
Azure Storage table is a service that stores structured NoSQL data in the cloud. Table storage is a key/attribute store with a schemaless design. Because Table storage is schemaless, it's easy to adapt your data as the needs of your application evolve. Access to data is fast and cost-effective for all kinds of applications. Table storage is typically significantly lower in cost than traditional SQL for similar volumes of data.
Cross-origin resource sharing, or CORS, must be configured on the Azure Storage account to be accessed directly from JavaScript in the browser. You are able to set the CORS rules for specific Azure Storage account on the Azure Portal. The "Allowed origins" could be set to "*" to allow all the origins in this sample. For more information about CORS, see Cross-Origin Resource Sharing (CORS).
Importing azure-storage.table.js
in your HTML file for table operations.
<script src="azure-storage.table.js"></script>
The TableService
object lets you work with table and entities.
Following code creates a TableService
object with storage account and SAS Token.
var tableUri = 'https://' + 'STORAGE_ACCOUNT' + '.table.core.windows.net'; var tableService = AzureStorage.Table.createTableServiceWithSas(tableUri, 'SAS_TOKEN');
You can load Azure Storage JavaScript Client Library in a CommonJS or AMD environment by JavaScript module loaders. If no module system is found, global variable AzureStorage.Table
will be set, which is the start point where we can create service objects for table and access to the storage utilities.
AzureStorage.Table
is just like the object require('azure-storage')
returns in Node.js, but limits to Table related interfaces.
Go to TableService to view possible methods provided by TableService
class.
TableService
based on Storage Account Key for authentication besides SAS Token.
However, for security concerns, we recommend use of a limited time SAS Token, generated by a backend web server using a Stored Access Policy.
Table: A table is a collection of entities. Tables don't enforce a schema on entities, which means a single table can contain entities that have different sets of properties. The number of tables that a storage account can contain is limited only by the storage account capacity limit.
TableService
provides listTablesSegmented
and listTablesSegmentedWithPrefix
for retrieving the table list under your storage account.
tableService.listTablesSegmented(null, {maxResults : 200}, function (error, results) { if (error) { // List tables error } else { for (var i = 0, table; table = results.entries[i]; i++) { // Deal with table object } } });
TableService
provides createTable
and createTableIfNotExists
for creating a table under a storage account.
tableService.createTableIfNotExists('mytable', function(error, result) { if (error) { // Create table error } else { // Create table successfully } });
TableService
provides deleteTable
and deleteTableIfExists
for deleting a table under a storage account.
tableService.deleteTableIfExists('mytable', function(error, result) { if (error) { // Delete table error } else { // Delete table successfully } });
The sample will try to create an Azure Storage table service object based on SAS Token authorization. Enter your Azure Storage account name and SAS Token here. Make sure you have set the CORS rules for the Azure Storage table service, and the SAS Token is in valid period.
Azure Storage table service provides plenty of interfaces for table operations. In following example, you can try to list all the tables under your storage account, and try to create or delete one table from your account.
Click button to view the table list under your Azure Storage account
Click button to create a table under your Azure Storage account
Click "Delete" button to delete the table under your Azure Storage account
Click "Select" button to operate with the table entities in next step
Entity: An entity is a set of properties, similar to a database row. An entity can be up to 1MB in size.
Properties: A property is a name-value pair. Each entity can include up to 252 properties to store data. Each entity also has 3 system properties that specify a partition key, a row key, and a timestamp. Entities with the same partition key can be queried more quickly, and inserted/updated in atomic operations. An entity's row key is its unique identifier within a partition.
TableService
provides queryEntities
for querying a table under a storage account.
var tableQuery = new AzureStorage.Table.TableQuery().top(200); tableService.queryEntities('mytable', tableQuery, null, function(error, result) { if (error) { // Query entities error } else { for (var i = 0, entity; entity = results.entries[i]; i++) { // Deal with entity object } } });
TableService
provides insertEntity
, insertOrReplaceEntity
and insertOrMergeEntity
for adding a table entity under a storage account.
var insertEntity = { PartitionKey: {'_': 'partitionKey'}, RowKey: {'_': 'rowKey'} }; tableService.insertOrReplaceEntity('mytable', insertEntity, function(error, result, response) { if(error) { // Insert table entity error } else { // Insert table entity successfully } });
TableService
provides deleteEntity
for deleting a table entity under a storage account.
var deleteEntity = { PartitionKey: {'_': 'partitionKey'}, RowKey: {'_': 'rowKey'} }; tableService.deleteEntity('mytable', deleteEntity, function(error, result, response) { if(error) { // Delete table entity error } else { // Delete table entity successfully } });
After clicked the "Select" button on the table list, you are able to operate with the table entities under the selected table.
Click button to refresh the entity list in your selected table
Click button to create an entity in your selected table. If existing entity with the sampe PartitionKey and RowKey, old entity will be merged.
Click "Delete" button to delete the selected table entity in your selected table
You can view the source code of this sample for detailed reference.


# -*- coding: utf-8 -*-
"""
This module contains methods related to boundary element solvers for contact
mechanics calculations. Please see the :code:`/demo` directory for minimum
examples of how to combine the below methods to perform contact mechanics
calculations.
"""
import copy
from math import pi
import numexpr as ne
import numpy as np
import scipy.sparse.linalg as spla
def __secant(x_list, fx_list):
"""
Applies secant method to find root *x* of function *f(x)*.
If not enough (*x*, *f(x)*) value pairs are available to apply
secant method, a new *x* value is guessed by slightly changing the
initial *x* value
Parameters
----------
x_list: ndarray, list
A list of known function inputs (x-values).
fx_list: ndarray, list
A list of known function outputs corresponding to the function inputs
in ``x_list``.
Returns
-------
x: scalar
An estimate of the root of function f(x).
"""
if fx_list[-1] != 0:
if len(x_list) > 1 and \
fx_list[-1] != 0 and \
abs(fx_list[-1]) != abs(fx_list[-2]):
x_0 = x_list[-2]
x_1 = x_list[-1]
fx_0 = fx_list[-2]
fx_1 = fx_list[-1]
slope = (fx_1 - fx_0) / (x_1 - x_0)
return x_1 + (-fx_1 / slope)
else:
return x_list[0] * 0.9 + 0.0001
else:
return x_list[-1]
def __beinflumatgrid(axis):
"""
Private helper method for influence matrix generation. Generates a grid
that is required for the generation of an influence matrix.
Parameters
----------
axis: ndarray
An axis of the elastic half space.
Returns
-------
infl_mat_grid: ndarray
A grid for influence matrix generation.
"""
len_axis = len(axis)
vec = np.zeros((1, len_axis))
vec[0, :] = axis
vertical_ax = np.zeros((len_axis, 1))
vertical_ax[:, 0] = axis
grid = np.repeat(vec, len_axis, axis=0)
infl_mat_grid = np.absolute(np.subtract(grid, vertical_ax))
return infl_mat_grid
[docs]def beinflumatred(influ_mat):
"""
Calculate a reduced influence coefficient matrix from a complete influence
coefficient matrix.
Parameters
----------
influ_mat: ndarray
The complete influence coefficient matrix.
Returns
-------
reduced_influ_mat: ndarray
The reduced influence coefficient matrix. The matrix is square and of
order ``n = np.shape(influ_mat)[0]`` :math:`\\times`
``np.shape(influ_mat)[1]``.
"""
shape_mat = np.shape(influ_mat)
len_mat = shape_mat[0] * shape_mat[1]
reduced_influ_mat = np.zeros((len_mat, len_mat))
counter = 0
for i in range(0, shape_mat[0]):
for j in range(0, shape_mat[1]):
reduced_influ_mat[counter, :] = \
np.reshape(influ_mat[i, j, :, :], len_mat)
counter += 1
return reduced_influ_mat
[docs]def beinflumat(x_axis, y_axis, e_eff):
"""
Generate a complete influence coefficient matrix as required for boundary
element contact mechanics calculations.
Parameters
----------
x_axis: ndarray
The x-axis values of the coordinate grid.
y_axis: ndarray
The y-axis values of the coordinate grid.
e_eff: scalar
The effective modulus of the contact bodies.
Returns
-------
infl_mat: ndarray
The complete four-dimensional influence coefficient matrix of size
``len(x_axis)`` :math:`\\times` ``len(y_axis)`` :math:`\\times`
``len(x_axis)`` :math:`\\times` ``len(y_axis)``.
"""
len_x = len(x_axis)
len_y = len(y_axis)
influence_matrix_complete = np.zeros((len_x, len_y, len_x, len_y))
# generate coordinate grids
a_factor = (x_axis[-1] - x_axis[0]) / (len_x - 1) / 2
b_factor = (y_axis[-1] - y_axis[0]) / (len_y - 1) / 2
x_grid = __beinflumatgrid(x_axis)
y_grid = __beinflumatgrid(y_axis)
# use numexpr to evaluate expressions
xpa = ne.evaluate('x_grid + a_factor')
xma = ne.evaluate('x_grid - a_factor')
ypb = ne.evaluate('y_grid + b_factor')
ymb = ne.evaluate('y_grid - b_factor')
# calculate complete influence matrix
for j in range(0, len_y):
for j_prime in range(0, len_y):
influence_matrix_complete[:, j, :, j_prime] = \
(np.multiply(xpa, np.log(
np.divide(
((ypb[j, j_prime]) +
np.sqrt(np.multiply((ypb[j, j_prime]),
(ypb[j, j_prime])) +
np.multiply(xpa, xpa))),
((ymb[j, j_prime]) +
np.sqrt(np.multiply((ymb[j, j_prime]),
(ymb[j, j_prime])) +
np.multiply(xpa, xpa)))))) +
(ypb[j, j_prime]) * np.log(
np.divide(
(xpa +
np.sqrt(np.multiply((ypb[j, j_prime]),
(ypb[j, j_prime])) +
np.multiply(xpa, xpa))),
(xma +
np.sqrt(np.multiply((ypb[j, j_prime]),
(ypb[j, j_prime])) +
np.multiply(xma, xma))))) +
np.multiply(xma, np.log(
np.divide(
((ymb[j, j_prime]) +
np.sqrt(np.multiply((ymb[j, j_prime]),
(ymb[j, j_prime])) +
np.multiply(xma, xma))),
((ypb[j, j_prime]) +
np.sqrt(np.multiply((ypb[j, j_prime]),
(ypb[j, j_prime])) +
np.multiply(xma, xma)))))) +
(ymb[j, j_prime]) * np.log(
np.divide(
(xma +
np.sqrt(np.multiply((ymb[j, j_prime]),
(ymb[j, j_prime])) +
np.multiply(xma, xma))),
(xpa +
np.sqrt(np.multiply((ymb[j, j_prime]),
(ymb[j, j_prime])) +
np.multiply(xpa, xpa))))))
infl_mat = influence_matrix_complete * 1 / e_eff * 2 / pi
return infl_mat
def __begetd(profile, norm_disp):
"""
Parameters
----------
profile: ndarray
The combined profiles of two contact bodies.
norm_disp: scalar
The normal elastic displacement (interference) of the two contact
bodies.
Returns
-------
disp: ndarray
A displacement field containing the combined local elastic displacements
of both contact bodies.
"""
displ_field = np.subtract(np.ones(profile.shape) * norm_disp, profile)
disp = np.reshape(displ_field, (profile.shape[0] * profile.shape[1]))
return disp
def __solvepress(red_influ_mat, disp):
"""
Solve for pressure distribution by removing negative pressure elements from
the pressure matrix.
Parameters
----------
red_influ_mat: ndarray
The recued influence matrix of the contact problem.
disp: ndarray
The (combined) displacement field of the contact problem.
Returns
-------
pressure: ndarray
The pressure field of the contact problem.
"""
# find negative pressure arguments
pressure = spla.gmres(red_influ_mat, disp)[0]
p_index = np.zeros(len(pressure))
negative_p = np.where(pressure < 0)[0]
p_neg = copy.deepcopy(negative_p)
while len(negative_p) > 0:
pressure[p_neg] = 0
p_index[p_neg] = 1
u_new_reduced = np.delete(disp, [p_neg], axis=0)
g_new_reduced = np.delete(red_influ_mat, [p_neg], axis=0)
g_new_reduced = np.delete(g_new_reduced, [p_neg], axis=1)
if pressure[np.where(p_index == 0)].size > 0:
pressure[np.where(p_index == 0)] = \
spla.gmres(g_new_reduced, u_new_reduced)[0]
negative_p = np.where(pressure < 0)[0]
p_neg = np.append(p_neg, negative_p)
return pressure
[docs]def besolve(profile_1, profile_2, outer_force,
red_influ_mat, delta_x, delta_y,
norm_disp=0.1, max_offset=0.005):
"""
Solve a system of linear equations to find the pressure and displacement
distribution in a boundary element contact problem:
:math:`[\\text{pressure}] = [\\text{reduced influence matrix}]^{-1}
\\cdot [\\text{displacement}]`
The start value for the relative normal displacement is defined by the
``norm_disp`` parameter. The default value corresponds to 0.1 units of
length. If the start value of the normal displacement is close to the
equilibrium displacement, the calculation time may be reduced significantly.
The solver stops once inner and outer forces are in equilibrium. The maximum
allowed discrepancy between inner and outer forces is defined by the
``max_offset`` parameter. The default value corresponds to 0.5 %.
Parameters
----------
profile_1: ndarray
A matrix containing the profile heights of body 1.
profile_2: ndarray
A matrix containing the profile heights of body 2. The matrix must have
the same size and grid spacing (in unit length) as ``profile_1``.
outer_force: scalar
The (outer) normal force acting on the contact.
red_influ_mat: ndarray
The reduced influence matrix calculated using the ``beinflumatred``
method.
delta_x: scalar
The grid spacing of the profile matrices in unit length in x-direction.
delta_y: scalar
The grid spacing of the profile matrices in unit length in y-direction.
norm_disp: scalar
The initial normal elastic deformation in unit length used to start the
solver.
max_offset: scalar
The maximum allowed percentage difference of inner and outer force (used
to determine when solver has completed).
Returns
-------
pressure: ndarray
The contact pressure field in the contact.
disp: ndarray
The combined normal displacement field for contact body 1 and 2.
inner_force: scalar
The sum over all inner forces.
norm_disp: scalar
The normal elastic equilibrium displacement.
"""
# initialise variables
x_value = [0]
fx_value = [outer_force]
pressure = 0
inner_force = 0
profile = profile_1 + profile_2
# while difference between inner forces and outer forces is significant
while abs(inner_force - outer_force) > max_offset * outer_force:
# update local displacements
disp = __begetd(profile, norm_disp)
pressure = __solvepress(red_influ_mat, disp)
# calculate resulting force and adjust displacement for next loop
pressure = np.reshape(pressure, (profile.shape[0], profile.shape[1]))
inner_force = sum(sum(np.multiply(delta_x * delta_y, pressure)))
x_value = np.append(x_value, [norm_disp])
fx_value = np.append(fx_value, [inner_force - outer_force])
norm_disp = __secant(x_value, fx_value)
disp = __begetd(profile, norm_disp)
return pressure, disp, inner_force, norm_disp


Expert access only
sdLockRect obtains a direct pointer to the target-surface bits. Fills-in pLR with the actual locked rectangle (could be different than requested, after the internal clipping)
bool sdLockRect(SDLOCKEDRECT* pLR,long x,long y,long wid,long hei);
typedef struct{
long x,y,wid,hei;
long* lpBits;
long pitch; // in DWORDs !
long deltaX,deltaY;
long deltaW,deltaH;
}SDLOCKEDRECT;
0 - failed, since the not even 1 pixel can be drawn in this rectangle (it's completely clipped off)
1 - success, the complete rectangle is drawable. deltaX=deltaY=deltaW=deltaH=0.
2 - success, but the rectangle was clipped a bit - your code must be aware of it (especially if you're doing a custom Blt !)
This code fills-in the locked rectangle with green:
LOCKEDRECT lr; if(sdLockRect(&lr, 0,0, 100,100)){ while(lr.hei--){ // for each scanline long i;// currentPixelIndex for(i=0;i<lr.wid;i++){ // for each pixel on this rectangle on this scanline lr.lpBits[i] = 0x00FF00; } lr.lpBits -= lr.pitch; // NOTE! we actually subtract, instead of add. } }
Internally, sSprites's bitmap is in the GDI DIB format: bottom-up. sSprites are always 32bpp, each pixel is 0xAARRGGBB (alpha,red,green,blue). The destination alpha is always ignored in sDraw's drawing operations (sBlt***,sDrawRect***,sSet/GetPixel).


The University College of Engineering, Kakatiya University public engineering institute located in kothagudem, India. Formerly known as the Kothagudem School of Mines(KSM). It is the First mining college in Telangana and the second in India.
Dr. B.R Ambedkar Government Model Residential Polytechnic for Women (SC), Karimnagar is an AICTE approved college for Polytechnic and Government institution affiliated to State Board of Technical Education and Training, Hyderabad situated at NTR Marg, Near Ujwala Park, Karimnagar, Telangana
MANIDEEP ENGLISH UNION HS,KOTHIRAMPUR was established in 2002 and it is managed by the Pvt. Unaided. It is located in Urban area. It is located in KARIMNAGAR block of KARIMNAGAR district of Telangana.


{% extends 'base.html' %} {% block title %}Home{% endblock %} {% block content %}
Telescope is a machine learning assisted toolkit for image and video compositors with applications in visual effects, matte painting and diverse use cases across the video post production pipeline. Tools from existing compositing packages can interact with our novel ML core to assist or completely automate the rotoscoping process. The core of our rotoscoping program is the deep learning model that takes the image to be cropped and an associated trimap, and outputs the cropped portion. The image to be cropped can be of anything the user wishes. This is a new and essential feature, as previous ML solutions use algorithms that must be told what they are isolating (e.g. a person, car, building, etc.). All Telescope needs is a rough visual of what it should cut out, and our model takes it from there.
Rotoscoping is the process of frame by frame selecting and isolating a given feature in a video, such that you can produce a video clip of exclusively that feature on a transparent background. This allows the isolated subject to be composited into another video clip with a different background; an example of this effect in action is in the movie Forrest Gump where he is inserted into historical footage as a recipient of a Medal of Honor, given to him by President LBJ. A feature length film will often consist of hundreds of rotoscoped shots with multiple tracked mattes per image, and this is the primary job of thousands of roto artists accross the world.
Typical roto tasks include: selecting and tracking objects like on-set wires and rigs to remove them from the movie, and isolating objects for compositing - which is how effects artists create 3D interactions; by layering many flat, 2D clips of the same subject. The Dinosaurs in Jurassic Park are all clips rendered out by other graphics software and inserted into the film footage. Talented artists painstakingly used rotoscoping on the actors and many objects in the scene, so the Dinosaurs could appear to pass behind and around them in the massively multi-layered clips. Rotoscoping can be an incredibly challenging and time-consuming process, as the artist must adjust their selection, or mask for every frame to match the new position and movement of the subject.
A trimap is a single channel image with three regions: white, which indicates the definite foreground of the feature to be extracted; black, which indicates the background to be excluded from the extraction; and gray, which indicates the uncertain regions that need to be processed, such as the edges of the subject, or complex regions like hair.
Telescope works by taking two inputs: the RGB source image and the single channel trimap and processes them through a nueral network to output a single channel alpha matte, which is used in compositing software to extract the feature from the RGB source image.
Click on the 'DEMO' button below to draw your own trimap over a sample image and generate an alphamatte.


BTS has six studio album, which includes japanese and korean albums as well.
| Album Name | Date Released |
|---|---|
| Dark&Wild | August 19th 2014 |
| Wings | October 10th 2016 |
| Love Yourself: Tear | October 10th 2016 |
| Wake Up | December 24th 2014 |
| Youth | September 7th 2016 |
| Face Yourself | April 4th 2018 |
Popular songs by BTS include the following:


Conceptual Model
user:
- userId(pk)
- userAtHandle
- userPhoneNumber
photoPost:
- photoPostId(pk)
- photoPostUserId(fk)
- photoPostContent
- photoPostDate
- photoPostLocation
like:
- likeUserId(fk)
- likePostId(fk)
Relations:
- one user can post many photos
- many photos can be liked by many users


Esteghlal reaches IPL points landmark
by Mir Farhad Ali KhanTasnim – TEHRAN, Esteghlal became the first football team to reach 1001 points in the Iran Professional League (IPL).
The Blues defeated Tractor 4-2 in Tabriz’s Yadegar-e Emam Stadium on Friday in IPL Matchday 9.
The Persian Gulf Pro League started in 2001 and Esteghlal has won the title three times out of 17 editions.
Persepolis is second with 943 points and Sepahan is third with 929 points.
Persepolis and Sepahan are the most-decorated teams in IPL with five titles each.


4 Ways To Turn A Crushing Breakup Into The Greatest Opportunity Of Your Life
No one likes going through a breakup, even if it’s for the best.
by Kelly RudolphIt hurts. It can cause self-doubt even if you know you did the best you could and are worthy of a great relationship. Anger can easily arise because you’d put your heart on the line and focused time and attention on someone you cared about.
Disappointment sneaks in not-so-quietly as yet another relationship fails. And the fear of ending up alone forever is very real.
Related:
Fortunately, there is an empowering way to look at a breakup. Your life has been shaken, tousled around, and perhaps turned upside down.
Surprisingly, now is the perfect time to gain strength, confidence, and self-respect… if you play your cards right.
 It’s a time for reinvention if you want to create a different kind of life and love for yourself in the future. Doing it while single gives you the freedom to take your time and dig in deep without concern about what your partner thinks or feels about it.
Improving your mindset, beliefs, spiritual connection, health, or body raises your energetic vibration to a higher frequency. Like a radio station, you can only find people or opportunities on your same frequency. By raising it, you will attract a higher frequency (more personally evolved) man next time.

Here’s why it’s smart to do this reinventing or transforming while single. When you re-work yourself during a relationship, you can outgrow him unless he’s growing in the same direction at the same pace.
But here are four ways you can make sure that your relationship gets the best chance possible to thrive:
1. You’re focused on fixing your own issues.
When you are evolving personally by working on yourself and attract a man who has worked on himself, you are on the same page and can stay together. Because you both have personal development as a common denominator and use it as a tool to grow your relationship stronger instead of growing it in opposite directions.
2. Your deep beliefs may not make sense … logically.
If you know (logically) there are good marriages, but your underlying belief is that men don’t stick around, that belief will recreate that scenario for you again and again. If you consciously know you’re a great catch, but that childhood trauma or past boyfriend convinced you that you’re “not good enough,” (your underlying belief) your subconscious mind will prove you right by delivering more self-doubt situations.
3. You can learn how to use your powerful subconscious mind to your advantage.
When you authentically, deep-down feel strong, confident and happy with yourself, you will be able to attract a man with the same qualities. He is on your same “wavelength” or frequency.
Delete disempowering self-talk and victim stories that attract men who want to rescue a damsel in distress, and you’ll get a man who respects and admires you for who you are inside. Not one who has to rescue someone to feel worthy of love himself. See how someone who is tragic and someone who needs approval are on the same frequency?
4. Your emotions create your life from the inside out.
Another life-changing benefit comes from paying attention to your emotions. How you feel about you, your friends, work, the websites you visit, the TV shows you watch… everything? Emotion is your most powerful creative energy.
Feeling down, dismal, disappointed, frustrated, angry, hurt, sad, and damaged? Those negative emotions can draw in people and situations on that same low energetic level. Oh, they may look good to start with but just wait and you’ll see they are more negative than positive.
Feeling happy, grateful, joyous, confident, free, lightweight, sunshiny, passionate, enthusiastic, you will attract completely different, much more positive and empowering people and opportunities into your life!
And that’s what you want.
Related:
You have what it takes.
This article was originally published on YourTango.com
— Published on November 20, 2019


Choose a city to find out the weather:
London
New York
Paris
Madrid
Prague
Budapest
Sofia
Istanbul
Los Angeles
Piatra Neamţ
Maringa
Current temperature
° C
Reset
Power saving mode
on
PSM on
PSM off


[define title]Apache Account Utility[end][define body]
[end][define messagebox]If you have lost access to your registered email address, you will need to file an additional ICLA with Secretary. Follow the directions for submitting an ICLA.
Include your current Apache id on the ICLA and mention in your cover email that you are requesting a change to your email address.
[end][# ][include "layout.html"]


Hold Entertainment Network India; target of Rs 270: ICICI Direct
ICICI Direct recommended hold rating on Entertainment Network India with a target price of Rs 270 in its research report dated November 14, 2019.
by Broker ResearchICICI Direct's research report on Entertainment Network India
ENIL’s revenues came in at Rs 115.6 crore, down 5.7% YoY, impacted by core radio revenues that de-grew ~17% YoY while solutions business grew ~34% YoY. Reported EBITDA came in at Rs 28 crore while margins came in at 24.2%. Adjusted for Ind-AS, EBITDA was at Rs 17.9 crore, down 34.5% YoY while adjusted margins came in at 15.5%, down 680 bps YoY on account of negative operating leverage. Reported PAT came in lower at Rs 0.2 crore, impacted by a weak operating performance, lower other income and Ind-AS impact. Without Ind-AS 116, PAT would have been Rs 2.9 crore.
Outlook
Hence, we maintain our HOLD rating with a revised DCF based target price of Rs 270, (implying ~6x FY21E EV/EBITDA). The target price cut is on account of weakness in revenues and earnings.
For all recommendations report, click here
Disclaimer: The views and investment tips expressed by investment experts/broking houses/rating agencies on moneycontrol.com are their own, and not that of the website or its management. Moneycontrol.com advises users to check with certified experts before taking any investment decisions.
Get access to India's fastest growing financial subscriptions service Moneycontrol Pro for as little as Rs 599 for first year. Use the code "GETPRO". Moneycontrol Pro offers you all the information you need for wealth creation including actionable investment ideas, independent research and insights & analysis For more information, check out the Moneycontrol website or mobile app.


In order to use this demonstrator please sign up at https://data.n3rgy.com and login to the Customer self service portal to receive your free sandbox API key.
All code used in this demonstrator is available at https://github.com/n3rgy/data
API Key
Please set and check your API key and the service you wish to interact with, your API key and service (live/sandbox) preferences will be stored within a cookie and persist across all interactions until cleared or expired (1 day)
Browse data
Consent
Note: Trusted Consent demonstration is not available in live
Query SM Inventory (SMETS2 only)
Note: Smart Meter inventory reports the devices, models and version deployed within a home. Only available from the SMETS2 ecosystem and not available to sandbox users


About Me
Embarking on a new chaper with this coding thang. I don't know exactly how I expect this to impact my career or my life, but that is part of the excitement, isn't it?
I'd like to continue to make a positive impact in soceity, and I'm hoping that this will give me some leverage to do it my way. Even if that just means increasing my earning potential so I am free to volunteer with orgs I am passionate about.


| 1 | package fr.sii.ogham.sms.sender.impl.cloudhopper.session; | |
| 2 | ||
| 3 | import static java.util.concurrent.TimeUnit.MILLISECONDS; | |
| 4 | ||
| 5 | import java.util.concurrent.ExecutorService; | |
| 6 | import java.util.concurrent.Executors; | |
| 7 | import java.util.concurrent.ScheduledExecutorService; | |
| 8 | import java.util.concurrent.ScheduledFuture; | |
| 9 | import java.util.function.Supplier; | |
| 10 | ||
| 11 | import org.slf4j.Logger; | |
| 12 | import org.slf4j.LoggerFactory; | |
| 13 | ||
| 14 | import com.cloudhopper.smpp.SmppSession; | |
| 15 | import com.cloudhopper.smpp.pdu.EnquireLink; | |
| 16 | ||
| 17 | import fr.sii.ogham.core.exception.MessageException; | |
| 18 | import fr.sii.ogham.core.retry.RetryExecutor; | |
| 19 | import fr.sii.ogham.core.service.MessagingService; | |
| 20 | import fr.sii.ogham.sms.builder.cloudhopper.SmppClientSupplier; | |
| 21 | import fr.sii.ogham.sms.builder.cloudhopper.SmppSessionHandlerSupplier; | |
| 22 | import fr.sii.ogham.sms.message.Sms; | |
| 23 | import fr.sii.ogham.sms.sender.impl.cloudhopper.ExtendedSmppSessionConfiguration; | |
| 24 | import fr.sii.ogham.sms.sender.impl.cloudhopper.exception.SmppException; | |
| 25 | ||
| 26 | /** | |
| 27 | * Strategy that regularly sends {@link EnquireLink} requests to keep session | |
| 28 | * alive. | |
| 29 | * | |
| 30 | * <p> | |
| 31 | * A session is initiated either at startup or when the first message is about | |
| 32 | * to be sent. Once the session is initialized, several messages can be sent | |
| 33 | * using the same session. Then it may take some time before a message is sent | |
| 34 | * again. In order to avoid initializing a new SMPP session again, the | |
| 35 | * connection with the server is maintained. To do so, a task is started in the | |
| 36 | * background in order to regularly send {@link EnquireLink} requests to the | |
| 37 | * server. This way the connection is maintained actively. | |
| 38 | * | |
| 39 | * <p> | |
| 40 | * The opened session is automatically closed when the {@link MessagingService} | |
| 41 | * is released or when a cleanup is explicitly requested. | |
| 42 | * | |
| 43 | * <p> | |
| 44 | * If the {@link EnquireLinkTask} fails, the error is analyzed using an | |
| 45 | * {@link ErrorAnalyzer}. This analyzer indicates if the triggered error is | |
| 46 | * raised because the connection with the server seems to be lost. In this case, | |
| 47 | * the current connection must be closed and a new session is created. | |
| 48 | * | |
| 49 | * <p> | |
| 50 | * If a message can't be sent, the raised error is also analyzed to check | |
| 51 | * whether a new session has to be created. The failed SMS is not re-sent. | |
| 52 | * Instead the original error is thrown. This way, the global retry handling can | |
| 53 | * be used. A new session is requested in background. | |
| 54 | * | |
| 55 | * <p> | |
| 56 | * If the reconnection fails (for example, if the server is down). The | |
| 57 | * reconnection process will be attempted only once (however there may have | |
| 58 | * several bind requests using the {@link RetryExecutor}). When a new message | |
| 59 | * has to be sent, the reconnection will be attempted at this moment. | |
| 60 | * | |
| 61 | * @author Aurélien Baudet | |
| 62 | * | |
| 63 | */ | |
| 64 | public class KeepSessionAliveStrategy extends BaseSessionHandlingStrategy implements ErrorHandler { | |
| 65 | private static final Logger LOG = LoggerFactory.getLogger(KeepSessionAliveStrategy.class); | |
| 66 | ||
| 67 | private final Supplier<ScheduledExecutorService> timerSupplier; | |
| 68 | private final ErrorAnalyzer errorAnalyzer; | |
| 69 | private final ErrorHandler reconnectionErrorHandler; | |
| 70 | private ScheduledExecutorService currentTimer; | |
| 71 | private ScheduledFuture<?> enquireLinkTask; | |
| 72 | private volatile boolean reconnecting; | |
| 73 | ||
| 74 | public KeepSessionAliveStrategy(ExtendedSmppSessionConfiguration configuration, SmppClientSupplier clientSupplier, SmppSessionHandlerSupplier smppSessionHandlerSupplier, RetryExecutor retry, | |
| 75 | Supplier<ScheduledExecutorService> timerSupplier, ErrorAnalyzer errorAnalyzer, ErrorHandler reconnectionErrorHandler) { | |
| 76 | super(LOG, configuration, clientSupplier, smppSessionHandlerSupplier, retry); | |
| 77 | this.timerSupplier = timerSupplier; | |
| 78 | this.errorAnalyzer = errorAnalyzer; | |
| 79 | this.reconnectionErrorHandler = reconnectionErrorHandler; | |
| 80 |
1
1. <init> : negated conditional → NO_COVERAGE |
if (configuration.getKeepAlive().isConnectAtStartup(false)) { |
| 81 |
1
1. <init> : removed call to fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::tryConnect → NO_COVERAGE |
tryConnect(); |
| 82 | } | |
| 83 | } | |
| 84 | ||
| 85 | @Override | |
| 86 | public SmppSession getSession() throws SmppException { | |
| 87 |
1
1. getSession : removed call to fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::initSessionIfNeeded → NO_COVERAGE |
initSessionIfNeeded(); |
| 88 |
1
1. getSession : replaced return value with null for fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::getSession → NO_COVERAGE |
return currentSession; |
| 89 | } | |
| 90 | ||
| 91 | @Override | |
| 92 | public void messageSent(Sms sms) { | |
| 93 | // nothing to do | |
| 94 | } | |
| 95 | ||
| 96 | @Override | |
| 97 | public void messageNotSent(Sms sms, SmppException e) throws MessageException { | |
| 98 |
1
1. messageNotSent : negated conditional → NO_COVERAGE |
if (errorAnalyzer.requiresNewConnection(e)) { |
| 99 |
1
1. messageNotSent : removed call to fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::reconnectInBackground → NO_COVERAGE |
reconnectInBackground(e); |
| 100 | // Throw the original exception so that message may be handled | |
| 101 | // (maybe send will be retried) | |
| 102 | // Adds some contextual information if possible | |
| 103 | throw new MessageException("Failed to send SMS because it seems that the current session is broken. A new SMPP session is requested in background", sms, e); | |
| 104 | } | |
| 105 | throw new MessageException("Failed to send SMS", sms, e); | |
| 106 | } | |
| 107 | ||
| 108 | @Override | |
| 109 | public void handleFailure(Throwable e) { | |
| 110 |
1
1. handleFailure : negated conditional → NO_COVERAGE |
if (errorAnalyzer.requiresNewConnection(e)) { |
| 111 |
1
1. handleFailure : removed call to fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::reconnectInBackground → NO_COVERAGE |
reconnectInBackground(e); |
| 112 | } | |
| 113 | } | |
| 114 | ||
| 115 | @Override | |
| 116 | public void messageProcessed(Sms sms) { | |
| 117 | // nothing to do | |
| 118 | } | |
| 119 | ||
| 120 | @Override | |
| 121 | public void clean() { | |
| 122 |
1
1. clean : removed call to fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::stopEnquiredLinkTask → NO_COVERAGE |
stopEnquiredLinkTask(); |
| 123 |
1
1. clean : removed call to fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::destroySession → NO_COVERAGE |
destroySession(); |
| 124 |
1
1. clean : removed call to fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::destroyClient → NO_COVERAGE |
destroyClient(); |
| 125 | } | |
| 126 | ||
| 127 | private void tryConnect() { | |
| 128 | try { | |
| 129 |
1
1. tryConnect : removed call to fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::initSessionIfNeeded → NO_COVERAGE |
initSessionIfNeeded(); |
| 130 | } catch (SmppException e) { | |
| 131 | LOG.warn("Connection at startup was requested but couldn't be achived. Connection will be re-attempted when first message is sent", e); | |
| 132 | } | |
| 133 | } | |
| 134 | ||
| 135 | private void initSessionIfNeeded() throws SmppException { | |
| 136 |
1
1. initSessionIfNeeded : removed call to fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::initClient → NO_COVERAGE |
initClient(); |
| 137 |
1
1. initSessionIfNeeded : removed call to fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::initSession → NO_COVERAGE |
initSession(); |
| 138 |
1
1. initSessionIfNeeded : removed call to fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::startEnquiredLinkTask → NO_COVERAGE |
startEnquiredLinkTask(); |
| 139 | } | |
| 140 | ||
| 141 | private synchronized void startEnquiredLinkTask() { | |
| 142 |
2
1. startEnquiredLinkTask : negated conditional → NO_COVERAGE 2. startEnquiredLinkTask : negated conditional → NO_COVERAGE |
if (currentSession == null || isEnquireLinkTaskRunning()) { |
| 143 | return; | |
| 144 | } | |
| 145 | // TODO: only run when no activity ? take the date of the last sent | |
| 146 | // message ? | |
| 147 | long enquireLinkRequestTimeout = configuration.getKeepAlive().getEnquireLinkTimeout(); | |
| 148 | long enquireLinkInterval = configuration.getKeepAlive().getEnquireLinkInterval(); | |
| 149 | LOG.debug("Start sending EnquireLink requests every {}ms", enquireLinkInterval); | |
| 150 | currentTimer = timerSupplier.get(); | |
| 151 | enquireLinkTask = currentTimer.scheduleWithFixedDelay(new EnquireLinkTask(currentSession, this, enquireLinkRequestTimeout), enquireLinkInterval, enquireLinkInterval, MILLISECONDS); | |
| 152 | } | |
| 153 | ||
| 154 | private boolean isEnquireLinkTaskRunning() { | |
| 155 |
4
1. isEnquireLinkTaskRunning : negated conditional → NO_COVERAGE 2. isEnquireLinkTaskRunning : negated conditional → NO_COVERAGE 3. isEnquireLinkTaskRunning : replaced boolean return with true for fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::isEnquireLinkTaskRunning → NO_COVERAGE 4. isEnquireLinkTaskRunning : negated conditional → NO_COVERAGE |
return enquireLinkTask != null && !enquireLinkTask.isCancelled() && !enquireLinkTask.isDone(); |
| 156 | } | |
| 157 | ||
| 158 | private void stopEnquiredLinkTask() { | |
| 159 |
1
1. stopEnquiredLinkTask : negated conditional → NO_COVERAGE |
if (currentTimer != null) { |
| 160 | currentTimer.shutdownNow(); | |
| 161 | currentTimer = null; | |
| 162 | } | |
| 163 |
1
1. stopEnquiredLinkTask : negated conditional → NO_COVERAGE |
if (enquireLinkTask != null) { |
| 164 | LOG.debug("Stop sending EnquireLink requests"); | |
| 165 | enquireLinkTask.cancel(true); | |
| 166 | enquireLinkTask = null; | |
| 167 | } | |
| 168 | } | |
| 169 | ||
| 170 | private boolean tryReconnect(Throwable failureRequiringReconnection) { | |
| 171 | try { | |
| 172 | LOG.debug("Reconnecting due to error that requires a new session", failureRequiringReconnection); | |
| 173 |
1
1. tryReconnect : removed call to fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::reconnect → NO_COVERAGE |
reconnect(); |
| 174 | LOG.debug("Reconnected"); | |
| 175 |
1
1. tryReconnect : replaced boolean return with false for fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::tryReconnect → NO_COVERAGE |
return true; |
| 176 | } catch (SmppException se) { | |
| 177 | LOG.debug("Failed to reconnect. Stopping active keep alive... Reconnection and active keep alive will be attempted later (either using another strategy or when sending next message)", | |
| 178 | failureRequiringReconnection); | |
| 179 |
1
1. tryReconnect : removed call to fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::clean → NO_COVERAGE |
clean(); |
| 180 |
1
1. tryReconnect : removed call to fr/sii/ogham/sms/sender/impl/cloudhopper/session/ErrorHandler::handleFailure → NO_COVERAGE |
reconnectionErrorHandler.handleFailure(se); |
| 181 | LOG.debug("Active keep alive stopped...", se); | |
| 182 | } | |
| 183 |
1
1. tryReconnect : replaced boolean return with true for fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::tryReconnect → NO_COVERAGE |
return false; |
| 184 | } | |
| 185 | ||
| 186 | private void reconnect() throws SmppException { | |
| 187 |
1
1. reconnect : removed call to fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::clean → NO_COVERAGE |
clean(); |
| 188 |
1
1. reconnect : removed call to fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::initSessionIfNeeded → NO_COVERAGE |
initSessionIfNeeded(); |
| 189 | } | |
| 190 | ||
| 191 | private boolean alreadyReconnecting() { | |
| 192 |
2
1. alreadyReconnecting : replaced boolean return with false for fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::alreadyReconnecting → NO_COVERAGE 2. alreadyReconnecting : replaced boolean return with true for fr/sii/ogham/sms/sender/impl/cloudhopper/session/KeepSessionAliveStrategy::alreadyReconnecting → NO_COVERAGE |
return reconnecting; |
| 193 | } | |
| 194 | ||
| 195 | private void reconnectInBackground(Throwable failureRequiringReconnection) { | |
| 196 |
1
1. reconnectInBackground : negated conditional → NO_COVERAGE |
if (alreadyReconnecting()) { |
| 197 | return; | |
| 198 | } | |
| 199 | ExecutorService executor = Executors.newSingleThreadExecutor(); | |
| 200 |
1
1. reconnectInBackground : removed call to java/util/concurrent/ExecutorService::execute → NO_COVERAGE |
executor.execute(new ReconnectionTask(failureRequiringReconnection)); |
| 201 |
1
1. reconnectInBackground : removed call to java/util/concurrent/ExecutorService::shutdown → NO_COVERAGE |
executor.shutdown(); |
| 202 | } | |
| 203 | ||
| 204 | private class ReconnectionTask implements Runnable { | |
| 205 | private final Throwable failureRequiringReconnection; | |
| 206 | ||
| 207 | public ReconnectionTask(Throwable failureRequiringReconnection) { | |
| 208 | super(); | |
| 209 | this.failureRequiringReconnection = failureRequiringReconnection; | |
| 210 | } | |
| 211 | ||
| 212 | @Override | |
| 213 | public void run() { | |
| 214 | reconnecting = true; | |
| 215 | tryReconnect(failureRequiringReconnection); | |
| 216 | reconnecting = false; | |
| 217 | } | |
| 218 | ||
| 219 | } | |
| 220 | } | |
Mutations | ||
| 80 |
1.1 |
|
| 81 |
1.1 |
|
| 87 |
1.1 |
|
| 88 |
1.1 |
|
| 98 |
1.1 |
|
| 99 |
1.1 |
|
| 110 |
1.1 |
|
| 111 |
1.1 |
|
| 122 |
1.1 |
|
| 123 |
1.1 |
|
| 124 |
1.1 |
|
| 129 |
1.1 |
|
| 136 |
1.1 |
|
| 137 |
1.1 |
|
| 138 |
1.1 |
|
| 142 |
1.1 2.2 |
|
| 155 |
1.1 2.2 3.3 4.4 |
|
| 159 |
1.1 |
|
| 163 |
1.1 |
|
| 173 |
1.1 |
|
| 175 |
1.1 |
|
| 179 |
1.1 |
|
| 180 |
1.1 |
|
| 183 |
1.1 |
|
| 187 |
1.1 |
|
| 188 |
1.1 |
|
| 192 |
1.1 2.2 |
|
| 196 |
1.1 |
|
| 200 |
1.1 |
|
| 201 |
1.1 |


Defines the Academy Color Encoding System (ACES) related encodings:
See also
References
| [1] | The Academy of Motion Picture Arts and Sciences, Science and Technology Council, & Academy Color Encoding System (ACES) Project Subcommittee. (n.d.). Academy Color Encoding System. Retrieved February 24, 2014, from http://www.oscars.org/science-technology/council/projects/aces.html |
| [2] | The Academy of Motion Picture Arts and Sciences, Science and Technology Council, & Academy Color Encoding System (ACES) Project Subcommittee. (2014). Technical Bulletin TB-2014-004 - Informative Notes on SMPTE ST 2065-1 – Academy Color Encoding Specification (ACES). Retrieved from https://github.com/ampas/aces-dev/tree/master/documents |
| [3] | The Academy of Motion Picture Arts and Sciences, Science and Technology Council, & Academy Color Encoding System (ACES) Project Subcommittee. (2014). Specification S-2014-003 - ACEScc , A Logarithmic Encoding of ACES Data for use within Color Grading Systems. Retrieved from https://github.com/ampas/aces-dev/tree/master/documents |
| [4] | The Academy of Motion Picture Arts and Sciences, Science and Technology Council, & Academy Color Encoding System (ACES) Project Subcommittee. (2014). Specification S-2013-001 - ACESproxy , an Integer Log Encoding of ACES Image Data. Retrieved from https://github.com/ampas/aces-dev/tree/master/documents |
| [5] | The Academy of Motion Picture Arts and Sciences, Science and Technology Council, & Academy Color Encoding System (ACES) Project Subcommittee. (2014). Technical Bulletin TB-2014-012 - Academy Color Encoding System Version 1.0 Component Names. Retrieved from https://github.com/ampas/aces-dev/tree/master/documents |
ACES Primaries 0 or AP0 primaries.
AP0 : ndarray, (3, 2)
ACES Primaries 1 or AP1 primaries (known as Rec. 2020+ primaries prior to ACES 1.0 release).
AP1 : ndarray, (3, 2)
ACES2065-1 colourspace whitepoint name as illuminant.
ACES_ILLUMINANT : unicode
ACES2065-1 colourspace whitepoint.
ACES_WHITEPOINT : tuple
ACES Primaries 0 to CIE XYZ tristimulus values matrix.
AP0_TO_XYZ_MATRIX : array_like, (3, 3)
CIE XYZ tristimulus values to ACES Primaries 0 matrix.
XYZ_TO_AP0_MATRIX : array_like, (3, 3)
ACES Primaries 1 to CIE XYZ tristimulus values matrix.
AP1_TO_XYZ_MATRIX : array_like, (3, 3)
CIE XYZ tristimulus values to ACES Primaries 1 matrix.
XYZ_TO_AP1_MATRIX : array_like, (3, 3)
Transfer function from linear to ACES2065-1 colourspace.
ACES_2065_1_TRANSFER_FUNCTION : object
Inverse transfer function from ACES2065-1 colourspace to linear.
ACES_2065_1_INVERSE_TRANSFER_FUNCTION : object
ACES2065-1 colourspace, base encoding, used for exchange of full fidelity images and archiving.
ACES_2065_1_COLOURSPACE : RGB_Colourspace
Transfer function from linear to ACEScc colourspace.
ACES_CC_TRANSFER_FUNCTION : object
Inverse transfer function from ACEScc colourspace to linear.
ACES_CC_INVERSE_TRANSFER_FUNCTION : object
ACEScc colourspace, a working space for color correctors, target for ASC-CDL values created on-set.
ACES_CC_COLOURSPACE : RGB_Colourspace
ACESproxy 10 bit colourspace constants.
ACES_PROXY_10_CONSTANTS : Structure
ACESproxy 12 bit colourspace constants.
ACES_PROXY_12_CONSTANTS : Structure
Aggregated ACESproxy colourspace constants.
Transfer function from linear to ACESproxy colourspace.
ACES_PROXY_TRANSFER_FUNCTION : object
Inverse transfer function from ACESproxy colourspace to linear.
ACES_PROXY_INVERSE_TRANSFER_FUNCTION : object
ACESproxy colourspace, a lightweight encoding for transmission over HD-SDI (or other production transmission schemes), onset look management. Not intended to be stored or used in production imagery or for final color grading/mastering.
ACES_PROXY_COLOURSPACE : RGB_Colourspace
ACEScg colourspace, a working space for paint/compositor applications that don’t support ACES2065-1 or ACEScc.
ACES_CG_COLOURSPACE : RGB_Colourspace


You have stayed focused for {{displayTime(calcTime())}}!
If you stay focused, you collect points that you can exchange for special rewards!


Charges laid after female international student assaulted, photographed, threatened
by Chris Herhalt, CP24.comA 28-year-old Brampton man is facing charges after an international student was allegedly lured to a Toronto hotel room and sexually assaulted on the promise of help setting up a bank account.
Toronto police say that on Nov. 15, a female foreign student “travelled into Toronto from another province to meet” a male suspect who allegedly told her he could help her set up a bank account in the city.
She went to a hotel room in the city where she was allegedly sexually assaulted, photographed without her consent and threatened with death.
A short time later, police arrested and charged a suspect they identified as Gurpinder Singh.

Investigators say they believe there are other victims who have not yet come forward.
Anyone with information is asked to call police at<PHONE_NUMBER>.


| Slack |
All |
Enterprise |
Standard |
Plus |
Plus |
All |
- |
Enterprise |
Tiers |
Cloud |
| Salesforce Sales Cloud |
All |
Enterprise |
Pro |
All |
Unlimited |
All |
Unlimited |
Enterprise |
Enterprise |
Cloud |
| Github |
Orgs |
Enterprise |
Orgs |
Orgs |
- |
- |
Enterprise |
Enterprise |
All |
Private/Cloud |
| Zendesk |
All |
Pro |
Enterprise |
Enterprise |
Pro |
All |
Enterprise |
Enterprise |
Team |
Cloud |
| G Suite |
Standard |
Standard |
Standard |
Unlimited |
Standard |
Unlimited |
- |
Unlimited |
All |
Cloud |
| Asana |
All |
Premium |
Premium |
- |
Premium |
All |
- |
Premium |
All |
Cloud |
| Heroku |
Enterprise |
Enterprise |
Enterprise |
- |
Enterprise |
All |
- |
Enterprise |
All |
Cloud |
| Jira |
All |
Server |
All |
All |
- |
All |
Server |
All |
Varies |
Private/Cloud |
| New Relic |
All |
Pro |
Pro |
- |
Pro |
Pro |
- |
All |
Pro |
Cloud |
| Mixpanel |
All |
Enterprise |
Enterprise |
- |
Enterprise |
Enterprise |
- |
Startup |
Business |
Cloud |
| Intercom |
All |
- |
Standard |
- |
- |
All |
All |
Standard |
Standard |
Cloud |
| Hubspot |
All |
- |
Pro |
- |
- |
All |
- |
Enterprise |
Pro |
Cloud |
| Box |
Starter |
Business |
Starter |
Business |
Enterprise |
Starter |
- |
Business |
Enterprise |
Cloud |
| Dropbox |
Business |
Business |
Business |
Business |
- |
Pro |
- |
- |
Pro |
Cloud |
| Huddle |
All |
Enterprise |
All |
All |
Enterprise |
All |
- |
Enterprise |
Enterprise |
Private/Cloud |
| Quip |
All |
Business |
Business |
Enterprise |
Enterprise |
Enterprise |
- |
- |
All |
Cloud |
| Twilio |
Standard |
Enterprise |
Standard |
Enterprise |
Standard |
Standard |
Enterprise |
Enterprise |
Standard |
Cloud |
| Evernote |
Business |
Business |
- |
- |
Business |
- |
- |
All |
Cloud |
|
| HipChat |
All |
Server |
- |
- |
- |
Server |
Server |
- |
All |
Private/Cloud |
| Swiftype |
Basic |
- |
- |
Business |
Premium |
Premium |
- |
Business |
Standard |
Cloud |
| Trello |
Business Class |
Enterprise |
Free |
- |
Enterprise |
Enterprise |
- |
Yes |
Free |
Cloud |
| Pagerduty |
Standard |
Standard |
- |
- |
Enterprise |
- |
- |
Standard |
Standard |
Cloud |
| npm |
Orgs |
Enterprise |
Orgs |
Enterprise |
- |
Enterprise |
Enterprise |
Org |
Enterprise |
Private/Cloud |
| Cloudflare |
All |
- |
Enterprise |
- |
Enterprise |
Business |
- |
- |
Enterprise |
Cloud |
| Sumologic |
Free |
Enterprise |
- |
Free |
Enterprise |
Enterprise |
- |
|
Professional |
Cloud |
| Docusign |
Standard |
Enterprise |
Enterprise |
Personal |
Business Premium |
Free |
Personal |
Personal |
Personal |
Cloud |
| RecruiterBox |
All |
Enterprise |
- |
Enterprise |
Pro |
- |
- |
Pro |
Pro |
Cloud |
| ReadMe |
All |
Enterprise |
- |
Enterprise |
Enterprise |
- |
Enterprise |
- |
- |
Private/Cloud |
| StatusPage |
Hobby |
Startup |
Startup |
Hobby |
- |
Business |
- |
|
Yes |
Cloud |
| Hootsuite |
Team |
Team |
Team |
- |
Business |
Free |
- |
Professional |
Free |
Cloud |
| Optimizely |
Standard |
Premium |
Professional |
Premium |
Standard |
Premium |
- |
|
Standard |
Cloud |
| Segment |
Team |
- |
Business |
- |
Business |
- |
- |
- |
Developer |
Cloud |
| Frontapp |
Team |
Enterprise |
- |
- |
- |
- |
- |
Premium |
Team |
Cloud |
| Unbounce |
All |
All |
All |
Enterprise |
Enterprise |
All |
All |
- |
All |
Cloud |
| Domo |
All |
Enterprise |
Enterprise |
- |
Pro |
Enterprise |
- |
Tiers |
Tiers |
Cloud |
| Scalr |
All |
Enterprise |
- |
Enterprise |
- |
- |
Enterprise |
- |
All |
Private/Cloud |
| Hellosign |
Business |
Free |
Business |
Free |
- |
Business |
- |
Business |
All |
Cloud |
| Expensify |
Team |
Corporate |
Team |
- |
Enterprise |
All |
- |
Corp |
Tiered |
Cloud |
| Insightly |
All |
- |
Professional |
- |
Professional |
All |
- |
All |
All |
Cloud |
| Invision App |
Team |
Enterprise |
Enterprise |
- |
- |
Tiers |
- |
- |
Enterprise |
Cloud |
| Teamwork |
All |
Enterprise |
- |
- |
Enterprise |
Enterprise |
- |
Enterprise |
All |
Cloud |
| [Pipedrive] (https://www.pipedrive.com/en/plans) |
All |
- |
Platinum |
- |
Platinum |
- |
- |
All |
All |
Cloud |
| [Contenful] (https://www.contentful.com/pricing/) |
All |
- |
All |
- |
Large |
- |
- |
- |
All |
Cloud |
| [Loggly] (https://www.loggly.com/plans-and-pricing/) |
Standard |
Enterprise |
Enterprise |
Enterprise |
Pro |
- |
- |
All |
Enterprise |
Cloud |
| [Wordpress VIP] (https://vip.wordpress.com/our-services/#hosting) |
All |
- |
All |
- |
Premium |
All |
All |
- |
- |
Cloud |
| [Mailchimp] (https://mailchimp.com/pricing/) |
All |
- |
- |
- |
Pro Marketer |
- |
- |
Pro Marketer |
All |
Cloud |
| Wrike |
All |
Enterprise |
Enterprise |
Enterprise |
- |
Enterprise |
Marketer |
Business |
Tiers |
Cloud |
| SmartSheet |
Team |
Enterprise |
Enterprise |
- |
Team |
- |
- |
Team |
Business |
Cloud |
| Showpad |
All |
Enterprise |
Enterprise |
- |
Premium |
- |
- |
Premium |
Enterprise |
Cloud |
| InsightSquared |
All |
- |
Enterprise |
- |
Pro |
- |
- |
Enterprise |
- |
Cloud |
| FB Workplace |
All |
All |
All |
- |
- |
- |
- |
All |
All |
Cloud |


| Extension | Description |
| `200@nksip' |
Send the call in parallel to all registered endpoints but me, including
a Record-Route, so all dialog requests will go through this proxy. |
| `201@nksip' |
Send the call in parallel to each two random registered endpoints.
Include a custom header but no Record-Route, so next dialog requests
will go directly to the endpoint. |
| `202@nksip' |
Send the request to the fastest registered endpoint. |
| `203@nksip' |
Send the request to the slowest registered endpoint. |
| `(any)@nksip' |
If this contact is registered, send the call to it. |
| `nksip' |
Process the request in the proxy. Since we have not implemented `invite/4',
`options/4', etc. callback functions, all responses will be default responses
as defined in `nksip_sipapp'). REGISTER requests will be processed
as configured when starting the SipApp. |
Feel free to use the functions {@link nksip_pbx:trace/1} to start or stop the trace of
SIP messages to console or {@link nksip_pbx:loglevel/1} ro change the console log level.
Use the function {@link nksip_pbx_sipapp:check_speed/1} to stop the automatic generation of


Reference Tokens¶
Access tokens can come in two flavours - self-contained or reference.
A JWT token would be a self-contained access token - it’s a protected data structure with claims and an expiration. Once an API has learned about the key material, it can validate self-contained tokens without needing to communicate with the issuer. This makes JWTs hard to revoke.
When using reference tokens - IdentityServer will store the contents of the token in a data store and will only issue a unique identifier for this token back to the client. The API receiving this reference must then open a back-channel communication to IdentityServer to validate the token.
You can switch the token type of a client using the following setting:
client.AccessTokenType = AccessTokenType.Reference;
IdentityServer provides an implementation of the OAuth 2.0 introspection specification which allows APIs to dereference the tokens. You can either use our dedicated introspection middleware or use the identity server authentication middleware which can validate both JWTs and reference tokens.
The introspection endpoint requires authentication - since the client of an introspection endpoint is an API, you configure the secret on the ApiResource
:
var api = new ApiResource("api1")
{
ApiSecrets = { new Secret("secret".Sha256()) }
}
See here for more information on how to configure the IdentityServer authentication middleware for APIs.


{{template "turbine-collaboration.html"}}
Saved Views
Save
Pwr
(Mw)
0
/
0
WS
(m/s)
0
TS
0
0
0
0
Notes :
Turbine Up
Turbine Down
Data N/A
Curtailment of Power
Waiting for Wind
Down ≥ 3 times


| 1 | /* =========================================================== | |
| 2 | * JFreeChart : a free chart library for the Java(tm) platform | |
| 3 | * =========================================================== | |
| 4 | * | |
| 5 | * (C) Copyright 2000-2008, by Object Refinery Limited and Contributors. | |
| 6 | * | |
| 7 | * Project Info: http://www.jfree.org/jfreechart/index.html | |
| 8 | * | |
| 9 | * This library is free software; you can redistribute it and/or modify it | |
| 10 | * under the terms of the GNU Lesser General Public License as published by | |
| 11 | * the Free Software Foundation; either version 2.1 of the License, or | |
| 12 | * (at your option) any later version. | |
| 13 | * | |
| 14 | * This library is distributed in the hope that it will be useful, but | |
| 15 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
| 16 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public | |
| 17 | * License for more details. | |
| 18 | * | |
| 19 | * You should have received a copy of the GNU Lesser General Public | |
| 20 | * License along with this library; if not, write to the Free Software | |
| 21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
| 22 | * USA. | |
| 23 | * | |
| 24 | * [Java is a trademark or registered trademark of Sun Microsystems, Inc. | |
| 25 | * in the United States and other countries.] | |
| 26 | * | |
| 27 | * ------------------ | |
| 28 | * MeterInterval.java | |
| 29 | * ------------------ | |
| 30 | * (C) Copyright 2005-2008, by Object Refinery Limited and Contributors. | |
| 31 | * | |
| 32 | * Original Author: David Gilbert (for Object Refinery Limited); | |
| 33 | * Contributor(s): -; | |
| 34 | * | |
| 35 | * Changes | |
| 36 | * ------- | |
| 37 | * 22-Mar-2005 : Version 1 (DG); | |
| 38 | * 29-Mar-2005 : Fixed serialization (DG); | |
| 39 | * 21-Jun-2007 : Removed JCommon dependencies (DG); | |
| 40 | * | |
| 41 | */ | |
| 42 | ||
| 43 | package org.jfree.chart.plot; | |
| 44 | ||
| 45 | import java.awt.BasicStroke; | |
| 46 | import java.awt.Color; | |
| 47 | import java.awt.Paint; | |
| 48 | import java.awt.Stroke; | |
| 49 | import java.io.IOException; | |
| 50 | import java.io.ObjectInputStream; | |
| 51 | import java.io.ObjectOutputStream; | |
| 52 | import java.io.Serializable; | |
| 53 | ||
| 54 | import org.jfree.chart.util.ObjectUtilities; | |
| 55 | import org.jfree.chart.util.PaintUtilities; | |
| 56 | import org.jfree.chart.util.SerialUtilities; | |
| 57 | import org.jfree.data.Range; | |
| 58 | ||
| 59 | /** | |
| 60 | * An interval to be highlighted on a {@link MeterPlot}. Instances of this | |
| 61 | * class are immutable. | |
| 62 | */ | |
| 63 | public class MeterInterval implements Serializable { | |
| 64 | ||
| 65 | /** For serialization. */ | |
| 66 | private static final long serialVersionUID =<PHONE_NUMBER>622488257L; | |
| 67 | ||
| 68 | /** The interval label. */ | |
| 69 | private String label; | |
| 70 | ||
| 71 | /** The interval range. */ | |
| 72 | private Range range; | |
| 73 | ||
| 74 | /** The outline paint (used for the arc marking the interval). */ | |
| 75 | private transient Paint outlinePaint; | |
| 76 | ||
| 77 | /** The outline stroke (used for the arc marking the interval). */ | |
| 78 | private transient Stroke outlineStroke; | |
| 79 | ||
| 80 | /** The background paint for the interval. */ | |
| 81 | private transient Paint backgroundPaint; | |
| 82 | ||
| 83 | /** | |
| 84 | * Creates a new interval. | |
| 85 | * | |
| 86 | * @param label the label (null not permitted). | |
| 87 | * @param range the range (null not permitted). | |
| 88 | */ | |
| 89 | public MeterInterval(String label, Range range) { | |
| 90 | this(label, range, Color.yellow, new BasicStroke(2.0f), null); | |
| 91 | } | |
| 92 | ||
| 93 | /** | |
| 94 | * Creates a new interval. | |
| 95 | * | |
| 96 | * @param label the label (null not permitted). | |
| 97 | * @param range the range (null not permitted). | |
| 98 | * @param outlinePaint the outline paint (null permitted). | |
| 99 | * @param outlineStroke the outline stroke (null permitted). | |
| 100 | * @param backgroundPaint the background paint (null | |
| 101 | * permitted). | |
| 102 | */ | |
| 103 | public MeterInterval(String label, Range range, Paint outlinePaint, | |
| 104 | Stroke outlineStroke, Paint backgroundPaint) { | |
| 105 |
1
1. |
if (label == null) { |
| 106 | throw new IllegalArgumentException("Null 'label' argument."); | |
| 107 | } | |
| 108 |
1
1. |
if (range == null) { |
| 109 | throw new IllegalArgumentException("Null 'range' argument."); | |
| 110 | } | |
| 111 | this.label = label; | |
| 112 | this.range = range; | |
| 113 | this.outlinePaint = outlinePaint; | |
| 114 | this.outlineStroke = outlineStroke; | |
| 115 | this.backgroundPaint = backgroundPaint; | |
| 116 | } | |
| 117 | ||
| 118 | /** | |
| 119 | * Returns the label. | |
| 120 | * | |
| 121 | * @return The label (never null). | |
| 122 | */ | |
| 123 | public String getLabel() { | |
| 124 |
1
1. getLabel : mutated return of Object value for org/jfree/chart/plot/MeterInterval::getLabel to ( if (x != null) null else throw new RuntimeException ) → KILLED |
return this.label; |
| 125 | } | |
| 126 | ||
| 127 | /** | |
| 128 | * Returns the range. | |
| 129 | * | |
| 130 | * @return The range (never null). | |
| 131 | */ | |
| 132 | public Range getRange() { | |
| 133 |
1
1. getRange : mutated return of Object value for org/jfree/chart/plot/MeterInterval::getRange to ( if (x != null) null else throw new RuntimeException ) → KILLED |
return this.range; |
| 134 | } | |
| 135 | ||
| 136 | /** | |
| 137 | * Returns the background paint. If null, the background | |
| 138 | * should remain unfilled. | |
| 139 | * | |
| 140 | * @return The background paint (possibly null). | |
| 141 | */ | |
| 142 | public Paint getBackgroundPaint() { | |
| 143 |
1
1. getBackgroundPaint : mutated return of Object value for org/jfree/chart/plot/MeterInterval::getBackgroundPaint to ( if (x != null) null else throw new RuntimeException ) → KILLED |
return this.backgroundPaint; |
| 144 | } | |
| 145 | ||
| 146 | /** | |
| 147 | * Returns the outline paint. | |
| 148 | * | |
| 149 | * @return The outline paint (possibly null). | |
| 150 | */ | |
| 151 | public Paint getOutlinePaint() { | |
| 152 |
1
1. getOutlinePaint : mutated return of Object value for org/jfree/chart/plot/MeterInterval::getOutlinePaint to ( if (x != null) null else throw new RuntimeException ) → KILLED |
return this.outlinePaint; |
| 153 | } | |
| 154 | ||
| 155 | /** | |
| 156 | * Returns the outline stroke. | |
| 157 | * | |
| 158 | * @return The outline stroke (possibly null). | |
| 159 | */ | |
| 160 | public Stroke getOutlineStroke() { | |
| 161 |
1
1. getOutlineStroke : mutated return of Object value for org/jfree/chart/plot/MeterInterval::getOutlineStroke to ( if (x != null) null else throw new RuntimeException ) → SURVIVED |
return this.outlineStroke; |
| 162 | } | |
| 163 | ||
| 164 | /** | |
| 165 | * Checks this instance for equality with an arbitrary object. | |
| 166 | * | |
| 167 | * @param obj the object (null permitted). | |
| 168 | * | |
| 169 | * @return A boolean. | |
| 170 | */ | |
| 171 | public boolean equals(Object obj) { | |
| 172 |
1
1. equals : negated conditional → KILLED |
if (obj == this) { |
| 173 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return true; |
| 174 | } | |
| 175 |
1
1. equals : negated conditional → KILLED |
if (!(obj instanceof MeterInterval)) { |
| 176 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 177 | } | |
| 178 | MeterInterval that = (MeterInterval) obj; | |
| 179 |
1
1. equals : negated conditional → KILLED |
if (!this.label.equals(that.label)) { |
| 180 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 181 | } | |
| 182 |
1
1. equals : negated conditional → KILLED |
if (!this.range.equals(that.range)) { |
| 183 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 184 | } | |
| 185 |
1
1. equals : negated conditional → KILLED |
if (!PaintUtilities.equal(this.outlinePaint, that.outlinePaint)) { |
| 186 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 187 | } | |
| 188 |
1
1. equals : negated conditional → KILLED |
if (!ObjectUtilities.equal(this.outlineStroke, that.outlineStroke)) { |
| 189 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 190 | } | |
| 191 |
1
1. equals : negated conditional → KILLED |
if (!PaintUtilities.equal(this.backgroundPaint, that.backgroundPaint)) { |
| 192 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 193 | } | |
| 194 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return true; |
| 195 | } | |
| 196 | ||
| 197 | /** | |
| 198 | * Provides serialization support. | |
| 199 | * | |
| 200 | * @param stream the output stream. | |
| 201 | * | |
| 202 | * @throws IOException if there is an I/O error. | |
| 203 | */ | |
| 204 | private void writeObject(ObjectOutputStream stream) throws IOException { | |
| 205 |
1
1. writeObject : removed call to java/io/ObjectOutputStream::defaultWriteObject → KILLED |
stream.defaultWriteObject(); |
| 206 |
1
1. writeObject : removed call to org/jfree/chart/util/SerialUtilities::writePaint → KILLED |
SerialUtilities.writePaint(this.outlinePaint, stream); |
| 207 |
1
1. writeObject : removed call to org/jfree/chart/util/SerialUtilities::writeStroke → KILLED |
SerialUtilities.writeStroke(this.outlineStroke, stream); |
| 208 |
1
1. writeObject : removed call to org/jfree/chart/util/SerialUtilities::writePaint → KILLED |
SerialUtilities.writePaint(this.backgroundPaint, stream); |
| 209 | } | |
| 210 | ||
| 211 | /** | |
| 212 | * Provides serialization support. | |
| 213 | * | |
| 214 | * @param stream the input stream. | |
| 215 | * | |
| 216 | * @throws IOException if there is an I/O error. | |
| 217 | * @throws ClassNotFoundException if there is a classpath problem. | |
| 218 | */ | |
| 219 | private void readObject(ObjectInputStream stream) | |
| 220 | throws IOException, ClassNotFoundException { | |
| 221 |
1
1. readObject : removed call to java/io/ObjectInputStream::defaultReadObject → KILLED |
stream.defaultReadObject(); |
| 222 | this.outlinePaint = SerialUtilities.readPaint(stream); | |
| 223 | this.outlineStroke = SerialUtilities.readStroke(stream); | |
| 224 | this.backgroundPaint = SerialUtilities.readPaint(stream); | |
| 225 | } | |
| 226 | ||
| 227 | } | |
Mutations | ||
| 105 |
1.1 |
|
| 108 |
1.1 |
|
| 124 |
1.1 |
|
| 133 |
1.1 |
|
| 143 |
1.1 |
|
| 152 |
1.1 |
|
| 161 |
1.1 |
|
| 172 |
1.1 |
|
| 173 |
1.1 |
|
| 175 |
1.1 |
|
| 176 |
1.1 |
|
| 179 |
1.1 |
|
| 180 |
1.1 |
|
| 182 |
1.1 |
|
| 183 |
1.1 |
|
| 185 |
1.1 |
|
| 186 |
1.1 |
|
| 188 |
1.1 |
|
| 189 |
1.1 |
|
| 191 |
1.1 |
|
| 192 |
1.1 |
|
| 194 |
1.1 |
|
| 205 |
1.1 |
|
| 206 |
1.1 |
|
| 207 |
1.1 |
|
| 208 |
1.1 |
|
| 221 |
1.1 |


Promo Boxes with Images
Try Premium Free for 30 Days and you'll never regret it!
Starts at just $9.99/month afterwards. No Ads, No Gimmicks and No SPAM. Just Real Content.
Start Trial Learn MoreTry Premium Free for 30 Days and you'll never regret it!
Starts at just $9.99/month afterwards. No Ads, No Gimmicks and No SPAM. Just Real Content.
Start Trial Learn MoreTry Premium Free for 30 Days and you'll never regret it!
Starts at just $9.99/month afterwards. No Ads, No Gimmicks and No SPAM. Just Real Content.
Start Trial Learn MoreTry Premium Free for 30 Days and you'll never regret it!
Starts at just $9.99/month afterwards. No Ads, No Gimmicks and No SPAM. Just Real Content.
Start Trial Learn More


Welcome to DaSCR - Machine
Your very own smart darts machine
You will need to provide some information for the machine to work. Please head over to admin section to configure your machine.
You will find further documentation at: https://docs.dascr.org.
Also be sure to leave a star at DaSCR-Machine and DaSCR-Board Github repos.


Based on four questions regarding business conditions we calculate a CFO index and analyse the result
{{ post.content | strip_html | truncate:110 }}


Improves the balance of optimal matching with near-fine balance by giving penalties on the unbalanced covariates with the unbalanced directions. Many directional penalties can also be viewed as Lagrange multipliers, pushing a matched sample in the direction of satisfying a linear constraint that would not be satisfied without penalization. Rosenbaum, P.R. (1989). <doi:10.1080/01621459.1989.10478868>. Yang, D., Small, D. S., Silber, J. H., and Rosenbaum, P. R. (2012). <doi:10.1111/j.1541-0420.2011.01691.x>.
| Version: | 0.2.0 |
| Imports: | rcbalance, stats, liqueueR, plyr, mvnfast, methods |
| Suggests: | optmatch |
| Published: | 2018-12-09 |
| Author: | Ruoqi Yu |
| Maintainer: | Ruoqi Yu <ruoqiyu at wharton.upenn.edu> |
| License: | file LICENSE |
| NeedsCompilation: | no |
| CRAN checks: | DiPs results |
| Reference manual: | DiPs.pdf |
| Package source: | DiPs_0.2.0.tar.gz |
| Windows binaries: | r-devel: DiPs_0.2.0.zip, r-release: DiPs_0.2.0.zip, r-oldrel: DiPs_0.2.0.zip |
| OS X binaries: | r-release: DiPs_0.2.0.tgz, r-oldrel: DiPs_0.2.0.tgz |
| Old sources: | DiPs archive |
Please use the canonical form https://CRAN.R-project.org/package=DiPs to link to this page.


The following review is property of MOVIE CRITICISM FOR THE RETARDED and cannot be quoted or referenced without proper credit. For more information, go to the homepage at http://www.homestead.com/mc4tr
GHOSTS OF MISSISSIPPI by Chad Shonk
The truth is boring.
A couple of months ago, I remember some customer telling me that they liked FARGO because it was based on a true story. And I was like, yeah, that's kind of cool that that's a true story. When people ask me about DONNIE BRASCO, People say "another gangster movie?" and I'll be like "Yeah, but this one is based on a true story." I thought that it being a true story somehow made it a better movie.

For every GOODFELLAS or FARGO, there are FIVE HUNDRED THOUSAND made-for-TV shitfests that are based on every single goddamn true story that ever happened.  That's why we need movies. But every once in a while something hapens in real life that is worthy of a movie. Quite simply, a movie is a movie, whether its source is reality or or the mind of Yahoo Serious or a best-selling pulp novel.
This all brings me to Rob Reiner's GHOSTS OF MISSISSIPPI. This movie was virtually ignored at the box office and by critics (except for James Woods' performance, and rightfully so) but it really isn't all that bad. Alec Baldwin was a little stiff and Whoopi Goldberg has been better. The supporting cast was good and Reiner's directing is solid. But I was watching this movie and thinking, "This is boring." Why was it boring? Because I had seen it all before. It was familiar ground. There wasn't anything original about it.
What bothered me about these observations is that it was a true story.
GHOSTS OF MISSISSIPPI tells the story of a civil rights leader named Medgar Evars who was shot in his driveway by an assassin in the early sixties. Thirty years after the crime, the killer is finally brought to justice by the Mississippi DA. Alec Baldwin plays the Great White Hope lawyer who loses his wife and his respectability and gets his life threatened because of his dedication to the case.  At the end, they get the conviction and everybody's happy.
Before seeing this movie, I did not know anything about Medgar Evars. I still do not. A daring movie to make would have been a biography of Medgar Evars, but they didn't do that. Instead, they reduced the film in to the generic courtroom drama that we've seen a million times in Grisham adaptations and the like. The white DA gets the case, and dedicates himself to it against the advice of his wife and other people involved. He goes around gathering evidence with the help of a few loyal friends (one of which plays comic relief) and then goes to court and gets death threats and learns something about himself and then makes a heart-stirring closing argument and justice is served and everything is okay in the end. A TIME TO KILL and A FEW GOOD MEN (also by Reiner) are the same exact thing. That's just off the top of my head. I'm sure there are more.
The Great White Hope thing didn't bother me as much as others because of the way it happened and and also because, well, I'm white, and we've been taught to feel that we are the world's only saviors. It was the fact that this TRUE story was presented in such an unoriginal way. But how else could they have presented it?
The dream racial courtroom drama would take the cast of A TIME TO KILL and and have them play the parts in GHOSTS OF MISSISSIPPI because it's a true story. I dunno. Everything's been done I guess. Even stories that have never been done before have been done before.
 -Danforth Quayle
HEY! Check out MOVIE CRITICISM FOR THE RETARDED: http://www.homestead.com/mc4tr
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