If you have any problems, pleasecontact us.
Success! The download link has been sent to your mailbox.


Principal Investigator
Tanya P. GarciaCurrent Lab Members
Biotatistics PhD Student at UNC-CH
(2020-Present)
Biotatistics PhD Student at UNC-CH
(2021-Present)
Biotatistics MS Student at UNC-CH
(2022-Present)
Biotatistics PhD Student at UNC-CH
(2022-Present)
Biotatistics PhD Student at UNC-CH
(2023-Present)
Lab Alumni
Biotatistics PhD Student at UNC-CH
(2020-2023)
Next position: Biostatistician III and Graduate Instructor at BERD, Duke University
T32 Postdoctoral Associate at UNC-CH
(2021-2022)
Next position: Assistant Professor at Wake Forest University
Statistics PhD Student at TAMU
Co-advised with M. Pourahmadi
(2018-2022)
Next position: Assistant Professor at Baylor University
T32 Postdoctoral Associate at TAMU
(2017-2020)
Next position: Researcher at Food and Drug Administration (FDA)
Visiting Undergraduate Research Scholar (2019-2020)
Next position: Statistics PhD Student at Yale
Support Lab Members
PI's son, born Dec 2020
January 2021
Lab Adventures: We're Fun ... We Swear!
July 2023: Celebrating Marissa's PhD defense. Congratulations Dr. Ashner!!
April 2023: Celebrating our team paper with mini golf at ParTEE Shack!
January 2023: Totally nailed it: we escaped the escape room with a few minutes to spare!
September 2021: Working with a coach to learn professional development skills.


Welcome to Priori City, where tasks and events that you complete help build our city and attract residents! I am Virgil, your advisor. I am eager to get started, but first I need some information. Let's begin! |
Here you can customize your settings... | |
When do you start your day? | |
When do you end your day? | |
How long do you want to work on one project at a time? | hours |
Here's what will happen... |
I will schedule tasks for you between the hours of 8:00 AM and 6:00 PM. |
Your tasks will be broken up into work periods of 2 hours at a time. |
You can always view and change these preferences by going to Settings. |


| UNIT ID | Type | Owner | Built Date | Machinery | LOC Code | Depot Code | Area | Country | Location | Condition | Cost Price/实际成本 | Selling price | Purchaser/采购 | Invoice date | 备注 | 操作 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| UNIT ID | Type | Owner | Built Date | Machinery | LOC Code | Depot Code | Area | Country | Location | Condition | Cost Price | Selling price | Purchaser | Invoice date | 备注 | 编辑 详细 删除 |


As HTML in itself doesn't include any functionality for drawing the only kind of chart that can easily be made is the bar chart. Stretching an image, or a block container (such as a div), to a certain width will accomplish that. Creating line, area and pie charts though is a bit trickier.
With the release of Internet Explorer 5 Microsoft introduced an API for drawing vector graphics, called VML. Erik wrote the VML Clock article shortly after it's release to showcase it, however it's seen little coverage and hardly any deployment. (Bindows™, the company where Erik used to work, actually does use VML in a few of their components, such as charts and gauges).
One of the reasons VML has hardly seen any use is because it's IE only and most people have been waiting for SVG. Which has been under way for several years now but only recently where added to the default Mozilla builds and Opera. To make matters worse it seems IE will not be getting native SVG support anytime soon.
Early last year Apple introduced Canvas, yet another technology for drawing, in their Safari web browser. Unlike SVG and VML it's based on pixels rather than vectors. While this might seems inferior it's actually very suitable for drawing fixed size 2D graphics, such as charts and graphs.
Since being introduced by Apple support for it has been added both to Mozilla and Opera, making it available in all major web browser but IE.
My original plan was to create the Chart component to use different painters depending on the browser, that way VML could be used in IE and Canvas or SVG in all other browsers. That's also how I built it, but at the time the API and the Canvas painter implementation where complete the IECanvas emulation project I've been working on had come far enough to allow the Canvas implementation to be used in IE as well.
Introduction
Implementation
Usage
API
Demo
SVG Demo (mozilla/opera only)
JsGraphics Demo
Download


Retrieve details of a payment object by calling the static get
method on the Payment class by passing a valid Payment ID (PayU reference)
(See bootstrap.php for more on ApiContext
)
NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
Get Payment Details
This sample code demonstrate how you can get details of a Payment resource you've created.


nips nips2007 nips2007-40 nips2007-40-reference knowledge-graph by maker-knowledge-mining
Source: pdf
Author: Quoc V. Le, Alex J. Smola, S.v.n. Vishwanathan
Abstract: We present a globally convergent method for regularized risk minimization problems. Our method applies to Support Vector estimation, regression, Gaussian Processes, and any other regularized risk minimization setting which leads to a convex optimization problem. SVMPerf can be shown to be a special case of our approach. In addition to the uniﬁed framework we present tight convergence bounds, which show that our algorithm converges in O(1/ ) steps to precision for general convex problems and in O(log(1/ )) steps for continuously differentiable problems. We demonstrate in experiments the performance of our approach. 1
[1] Y. Altun, A. J. Smola, and T. Hofmann. Exponential families for conditional random ﬁelds. In UAI, pages 2–9, 2004.
[2] S. Boyd and L. Vandenberghe. Convex Optimization. Cambridge University Press, 2004.
[3] J. Hiriart-Urruty and C. Lemar´ chal. Convex Analysis and Minimization Algorithms. 1993. e
[4] T. Joachims. A support vector method for multivariate performance measures. In ICML, pages 377–384, 2005.
[5] T. Joachims. Training linear SVMs in linear time. In KDD, 2006.
[6] S.-I. Lee, V. Ganapathi, and D. Koller. Efﬁcient structure learning of Markov networks using L1regularization. In NIPS, pages 817–824, 2007.
[7] A. Nedich and D. P. Bertsekas. Convergence rate of incremental subgradient algorithms. In Stochastic Optimization: Algorithms and Applications, pages 263–304. 2000.
[8] J. Nocedal and S. J. Wright. Numerical Optimization. Springer, 1999.
[9] N. Ratliff, J. Bagnell, and M. Zinkevich. (online) subgradient methods for structured prediction. In Proc. of AIStats, 2007.
[10] R. T. Rockafellar. Convex Analysis. Princeton University Press, 1970.
[11] S. Shalev-Shwartz and Y. Singer. Online learning meets optimization in the dual. In COLT, 2006.
[12] S. Shalev-Shwartz, Y. Singer, and N. Srebro. Pegasos: Primal estimated sub-gradient solver for SVM. In ICML, 2007.
[13] A. J. Smola, S. V. N. Vishwanathan, and Q. V. Le. Bundle methods for machine learning. JMLR, 2008. in preparation.
[14] B. Taskar, C. Guestrin, and D. Koller. Max-margin Markov networks. In NIPS, pages 25–32, 2004.
[15] C. H. Teo, Q. Le, A. Smola, and S. V. N. Vishwanathan. A scalable modular convex solver for regularized risk minimization. In KDD, 2007.
[16] I. Tsochantaridis, T. Joachims, T. Hofmann, and Y. Altun. Large margin methods for structured and interdependent output variables. JMLR, 6:1453–1484, 2005.
[17] V. Vapnik. The Nature of Statistical Learning Theory. Springer, 1995.
[18] T. Zhang. Sequential greedy approximation for certain convex optimization problems. IEEE Trans. Information Theory, 49(3):682–691, 2003. 8


Nonpareil curves¶
The estimation of the Redundancy is at the core of Nonpareil, but it's when those values are transformed into average coverage that they become comporable across samples, and become useful for project design and sample evaluation.
To build Nonpareil curves, you need two things. First, the Nonpareil.R file
(you can find it in the utils
folder of Nonpareil). Second, the .npo
file (or -o
value, if you used this option) generated in the estimation of
Redundancy.
For the impatient¶
First, load the package. If you don't have it installed yet, you can open R and execute:
install.packages('Nonpareil');
library(Nonpareil);
If you did make install (Install Nonpareil), you can simply open R and execute:
library(Nonpareil);
And you can get help messages using any of:
?Nonpareil.curve
?Nonpareil.set
?Nonpareil.legend
?Nonpareil.predict
Now, you can simply execute:
Nonpareil.curve('output.npo'); # Change output.npo to the actual redundancy file.
Nonpareil.curve()¶
This function can generate a Nonpareil curve from a .npo
file. See the
documentation of this function inside R after loading the Nonpareil package:
?Nonpareil.curve
Nonpareil.set()¶
This function can generate a plot with several Nonpareil curves from .npo
files. See the documentation of this function in R after loading the Nonpareil
package:
?Nonpareil.set
Example: I find it very convenient to first prepare a table with the samples, something like:
# samples.txt
File Name Col
SRS063417.1.L50.npo Posterior fornix "#FFC8C8"
SRS063287.1.L50.npo Buccal mucosa "#FF7878"
SRS062540.1.L50.npo Tongue dorsum "#FF0303"
SRS016335.1.L50.npo Stool "#C8874C"
SRS015574.1.L50.npo Supragingival plaque "#E66478"
SRS019087.1.L50.npo Anterior nares "#DCDC82"
Note that this table is tab-delimited, because I find it easier to read, but you can use anything you like (and is supported by R). Next, you can simply type something like this in the R console:
library(Nonpareil);
samples <- read.table('samples.txt', sep='\t', header=TRUE, as.is=TRUE);
attach(samples);
nps <- Nonpareil.set(File, col=Col, labels=Name, plot.opts=list(plot.observed=FALSE));
detach(samples);
summary(nps);
To execute examples with real data included in the package, you can execute:
example(Nonpareil.curve);
example(Nonpareil.set);


User Setup
User ID
Action
Add
Update
Manager
Get
User Name
I.D. No.
Sales Code
Sex
Birthday
×
Modal Default


404 Not Found
This is not the web page you are looking for.
You'll be redirected to the homepage in 5 seconds.


Chapter 4 Interacting with R
The basis of programming is that we write down instructions for the computer to follow, and then we tell the computer to follow those instructions. We write, or code, instructions in R because it is a common language that both the computer and we can understand. We call the instructions commands and we tell the computer to follow the instructions by executing (also called running) those commands.
There are two main ways of interacting with R: by using the console or by using script files (plain text files that contain your code). The console pane (in RStudio, the bottom left panel) is the place where commands written in the R language can be typed and executed immediately by the computer. It is also where the results will be shown for commands that have been executed. You can type commands directly into the console and press Enter to execute those commands, but they will be forgotten when you close the session.
Because we want our code and workflow to be reproducible, it is better to type the commands we want in the script editor, and save the script. This way, there is a complete record of what we did, and anyone (including our future selves!) can easily replicate the results on their computer.
RStudio allows you to execute commands directly from the script editor by using the Ctrl + Enter
shortcut (on Macs, Cmd + Return
will work, too). The command on the current line in the script (indicated by the cursor) or all of the commands in the currently selected text will be sent to the console and executed when you press Ctrl + Enter. You can find other keyboard shortcuts in this RStudio cheatsheet about the RStudio IDE.
At some point in your analysis you may want to check the content of a variable or the structure of an object, without necessarily keeping a record of it in your script. You can type these commands and execute them directly in the console. RStudio provides the Ctrl + 1 and Ctrl + 2 shortcuts allow you to jump between the script and the console panes.
If R is ready to accept commands, the R console shows a > prompt. If it receives a command (by typing, copy-pasting or sent from the script editor using Ctrl + Enter), R will try to execute it, and when ready, will show the results and come back with a new > prompt to wait for new commands.
If R is still waiting for you to enter more data because it isn’t complete yet, the console will show a + prompt. It means that you haven’t finished entering a complete command. This is because you have not ‘closed’ a parenthesis or quotation, i.e. you don’t have the same number of left-parentheses as right-parentheses, or the same number of opening and closing quotation marks. When this happens, and you thought you finished typing your command, click inside the console window and press Esc; this will cancel the incomplete command and return you to the > prompt.
4.1 Seeking help
Use the built-in RStudio help interface to search for more information on R functions RStudio help interface. This panel by default can be found at the lower right hand panel of RStudio. As seen in the screenshot, by typing the word “Mean”, RStudio tries to also give a number of suggestions that you might be interested in. The description is then shown in the display window.
If you need help with a specific function, let’s say barplot()
, you can type: ?barplot
If you just need to remind yourself of the names of the arguments, you can use:
args(lm)
If you are looking for a function to do a particular task, you can use the help.search() function, which is called by the double question mark ??
. However, this only looks through the installed packages for help pages with a match to your search request
If you can’t find what you are looking for, you can use the rdocumentation.org website that searches through the help files across all packages available.
Finally, a generic Google or internet search R <task>
will often either send you to the appropriate package documentation or a helpful forum where someone else has already asked your question.


Search:
Name:
E-mail:
URL:
Phone:
Date:
Datetime:
Datetime-local:
Month:
Week:
Time:
Color:
Range:
Number:
Colours:


HIGH SOCIETY
A Film Review by James Berardinelli
RATING: ***1/2 OUT OF ****
United States, 1956 Running Length: 1:47 MPAA Classification: Not Rated (Nothing offensive) Theatrical Aspect Ratio: 2:1
Cast: Bing Crosby, Grace Kelly, Frank Sinatra, Celeste Holm, John Lund, Louis Calhern, Sidney Blackmer, Louis Armstrong Director: Charles Walters Producer: Sol C. Siegel Screenplay: John Patrick, based on the play "The Philadelphia Story" by Philip Barry Cinematography: Paul C. Vogel Music: Cole Porter U.S. Distributor: MGM
With all of the hoopla surrounding the re-release of GREASE, I decided this was a good opportunity to review one of my all-time favorite musicals. After debating between HIGH SOCIETY and SINGING IN THE RAIN, I chose the former -- not necessarily because it's better, but because it isn't as well-known (that should not in any way be confused with "obscure," which this movie certainly isn't).
HIGH SOCIETY is a remake of the popular 1940 romantic comedy THE PHILADELPHIA STORY, which starred Cary Grant as C.K. Dexter-Haven, Katharine Hepburn as Tracy Lord (a name later subtly changed and adopted by an infamous porn star), and James Stewart as Mike Connor. The plot details and character names are the same for both versions, as are some of the lines of dialogue, but there is one critical difference: HIGH SOCIETY supplants THE PHILADELPHIA STORY's excessive talkiness with nine top-notch musical numbers from Cole Porter. I'm probably one of the few critics who prefers the remake to the original, but HIGH SOCIETY is better-paced, more energetic, and generally more enjoyable. While it's true that some of the character interaction in this film isn't as pointed or witty, the musical component more than makes up for this deficiency.
HIGH SOCIETY shifts the setting from Philadephia's Main Line to Newport, Rhode Island. There, amidst the mansions of the filthy rich, we meet Tracy Lord (Grace Kelly), the quintessential ice goddess. Beautiful, haughty, and condescending, she ruthlessly discards men who don't live up to her expectations, including her philandering father (Sidney Blackmer) and her composer ex-husband, C.K. Dexter-Haven (Bing Crosby).  This time, her intended is the irreproachable and dull George Kittredge (John Lund).  But the pre-wedding preparations do not go smoothly. Dexter still loves Tracy, and is determined to stop the ceremony. To that end, he enlists the help of his friend, jazz great Louis Armstrong. And things get further muddled when Mike and Tracy have a brief romantic fling.
There's a lot to like about HIGH SOCIETY. The romantic elements, while heartfelt, aren't overplayed. The film's dialogue, although lacking the full punch of that in THE PHILADELPHIA STORY, is still delightful. (The best exchange is without a doubt the one between Tracy and Mike as they zip around Newport in her car, bantering about wealth, idleness, and class differences.) However, the two chief pleasures of HIGH SOCIETY are the performances, which bring life and vitality to the characters, and the music, which makes this the kind of movie that never loses its appeal.
Crosby, Sinatra, Kelly, and Armstrong are all given opportunities to sing, and they make the most out of them. Sinatra and Crosby have a fine, lively duet called "Well, Did You Evah?" while Crosby and Kelly share the spotlight for the lightly romantic "True Love." Armstrong gets the film off to a fine start with "High Society," a calypso song whose lyrics lay out the background of the story that is about to unfold. The musical highlight is without a doubt the Armstrong/Crosby duet "Now You Has Jazz," a lively tune guaranteed to get the feet tapping. Unlike many musicals of the '50s, HIGH SOCIETY does not rely on grand production numbers or carefully-choreographed song-and-dance numbers. Director Charles Walters keeps everything intentionally low- key. But, because the tunes are so well-written and the singers are so adept, there's no sense that anything is lacking.
While Bing Crosby isn't as good a Dexter as Cary Grant, the actor/singer still manages to develop a likable and sympathetic character who the audience instinctively roots for. We want him to tame the shrew, to knock the goddess off her pedestal. As Mike, Frank Sinatra brings a little more ruggedness to the role than Jimmy Stewart, who took home a Best Supporting Actor statuette for his efforts. Not surprisingly, the real scene-stealer is the luminous Grace Kelly, in her last film role (the engagement ring Tracy wears in HIGH SOCIETY is actually the engagement ring given to the actress by Prince Ranier). Kelly, whose Hollywood career was short-but-spectacular, shows here why she so dazzled and captivated the world. Kelly's interpretation of Tracy doesn't eclipse Hepburn's (for whom the role was originally written), but she nonetheless stakes her claim on the part.
HIGH SOCIETY is truly one of the great MGM musicals, and, watching it again reminded me how gimmicky and one-dimensional something like GREASE is. Sure, the Travolta/Newton-John tribute to the '50s has pizzazz and enjoyable music, but the characters and situations are much less interesting that those found in SINGING IN THE RAIN or HIGH SOCIETY. The 1950s musicals are full entertainment packages, not shallow attempts to sell soundtracks. HIGH SOCIETY doesn't just have a voice -- it has a heart and a soul as well.
Copyright 1998 James Berardinelli
- James Berardinelli e-mail<EMAIL_ADDRESS>Now with more than 1400 reviews... The ReelViews web site: http://movie-reviews.colossus.net/
"My belief is that no movie, nothing in life, leaves people neutral.
-- David Puttnam
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


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object de.iabg.mode.plaf.OrthogonalityCheckUI
public class OrthogonalityCheckUI
This implementation of ModeCorrelationUI
creates a pluggable Look and
Feel user interface according to the ModeCorrelationUI
class
description. The specifics of this implementation are tailored for the
Orthogonality Check, therefore importing mass matrices is included.
Refer to the class API for more details.
Much of the implementation of this class should be straight-forward because
its design is modeled after Swing. Swing follows a Model-View-Controller
(MVC) design pattern and uses a UI delegate, usually with inner classes, to
couple the view and controller. This ModeCorrelationUI
separates the
view and controller and adheres to a slightly stricter MVC model by making
controllers their own outer classes. This causes the view to declare its
functionality in methods, however, it allows for some reuse of listener
classes and helps maintain the scalability of the view.
| Field Summary | |
|---|---|
protected javax.swing.JLabel |
bottomFillerLabel_
A filler label for the bottom of the layout |
protected javax.swing.JFileChooser |
correlationFileChooser_
The file chooser of this interface |
protected javax.swing.JLabel |
correlationLabel_
A label for the header of this interface |
protected javax.swing.Action |
correlationMakeAction_
A listener to correlate the modes |
protected javax.swing.JButton |
correlationMakeButton_
A button to correlate the modes |
protected javax.swing.JLabel |
correlationOutputLabel_
A label for the correlation output file |
protected javax.swing.JTextField |
correlationOutputTextField_
A text field for the correlation output file |
protected JModeCorrelationPanel |
correlationPanel_
The JModeCorrelationPanel that this interface is designed for |
protected javax.swing.Action |
correlationSaveAction_
A listener to save the correlation |
protected javax.swing.Action |
correlationSaveAsAction_
A listener to save the correlation |
protected javax.swing.JButton |
correlationSaveButton_
A button to save the correlation |
protected javax.swing.JSeparator |
correlationSeparator_
A separator for the header of this interface |
protected javax.swing.Action |
correlationShow2DAction_
A listener to render the 2D correlation |
protected javax.swing.JButton |
correlationShow2DButton_
A button to render the 2D correlation |
protected javax.swing.Action |
correlationShow3DAction_
A listener to render the 3D correlation |
protected javax.swing.JButton |
correlationShow3DButton_
A button to render the 3D correlation |
protected javax.swing.JLabel |
lowerToleranceLabel_
A label for the lower color tolerance |
protected javax.swing.event.ChangeListener |
lowerToleranceListener_
A listener for the lower color tolerance |
protected javax.swing.JSpinner |
lowerToleranceSpinner_
A spinner for the lower color tolerance |
protected javax.swing.JLabel |
massInputLabel_
A label for the mass input file |
protected javax.swing.JTextField |
massInputTextField_
A text field for the mass input file |
protected javax.swing.JComboBox |
massKeyComboBox_
A combo box for the mass matrices |
protected java.awt.event.ItemListener |
massKeyItemListener_
A listener to handle mass matrix changes |
protected javax.swing.JLabel |
massKeyLabel_
A label for the selected mass matrix |
protected javax.swing.Action |
massOpenAction_
A listener to open the mass matrices |
protected javax.swing.JButton |
massOpenButton_
A button to open the mass matrices |
protected javax.swing.Action |
massReadAction_
A listener to open the mass matrices |
protected javax.swing.Action |
updateKeyDefaultAction_
A listener to set the default connections |
protected javax.swing.JButton |
updateKeyDefaultButton_
A button to set the default connections |
protected javax.swing.Action |
updateKeyDeselectAllAction_
A listener to deselect all connections |
protected javax.swing.JButton |
updateKeyDeselectAllButton_
A button to deselect all connections |
protected javax.swing.JScrollPane |
updateKeyScrollPane_
A scroll pane for the connections |
protected javax.swing.Action |
updateKeySelectAllAction_
A listener to select all connections |
protected javax.swing.JButton |
updateKeySelectAllButton_
A button to select all connections |
protected javax.swing.JLabel |
updateLabel_
A label for the connections |
protected javax.swing.JLabel |
updateOutputLabel_
A label for the connection output file |
protected javax.swing.JTextField |
updateOutputTextField_
A text field for the connection output file |
protected javax.swing.Action |
updateSaveAction_
A listener to save the connection |
protected javax.swing.Action |
updateSaveAsAction_
A listener to save the connection |
protected javax.swing.JButton |
updateSaveButton_
A button to save the connection |
protected javax.swing.JSeparator |
updateSeparator_
A separator for the connection |
protected javax.swing.JLabel |
upperToleranceLabel_
A label for the upper color tolerance |
protected javax.swing.event.ChangeListener |
upperToleranceListener_
A listener for the upper color tolerance |
protected javax.swing.JSpinner |
upperToleranceSpinner_
A spinner for the upper color tolerance |
| Fields inherited from interface de.iabg.mode.ModeCorrelationUI |
|---|
ERROR_MESSAGE, WARNING_MESSAGE |
| Constructor Summary | |
|---|---|
OrthogonalityCheckUI()
Constructs a OrthogonalityCheckUI . |
| Method Summary | |
|---|---|
java.lang.String |
getConnectionOutput()
Returns the mode connection output file name. |
java.lang.String |
getCorrelationOutput()
Returns the mode correlation output file name. |
double |
getLowerTolerance()
Returns the current mode correlation lower tolerance. |
java.lang.String |
getMassInput()
Returns the mass matrix input file name. |
double |
getUpperTolerance()
Returns the current mode correlation upper tolerance. |
protected void |
initialize()
Initializes all fields or default settings after all components have been added. |
protected void |
installComponents()
Installs and lays out all components on the container. |
protected void |
installDefaults()
Installs all global default settings of the container. |
protected void |
installKeyboardActions()
Installs all keyboard actions and mnemonics. |
protected void |
installLayout()
Installs the layout manager of this container. |
protected void |
installListeners()
Installs all listeners for all components in this container. |
void |
installUI(JModeCorrelationPanel correlationPanel)
Installs layout, components, listeners, keyboard actions, defaults, and initializes any values or fields. |
void |
setConnectionOutput(java.lang.String fileName)
Replaces the mode connection output file with the given one. |
void |
setCorrelationOutput(java.lang.String fileName)
Replaces the mode correlation output file with the given one. |
void |
setLowerTolerance(double lowerTolerance)
Replaces the mode correlation lower tolerance with the given one. |
void |
setMassInput(java.lang.String fileName)
Replaces the mass matrix input file with the given one. |
void |
setUpperTolerance(double upperTolerance)
Replaces the mode correlation upper tolerance with the given one. |
java.lang.String |
showConnectionSaveDialog()
Shows a file chooser dialog for the supported mode connection output file types and returns the selected file. |
java.lang.String |
showCorrelationSaveDialog()
Shows a file chooser dialog for the supported mode correlation output file types and returns the selected file. |
java.lang.String |
showMassOpenDialog()
Shows a file chooser dialog for the supported mass matrix input file types and returns the selected file. |
void |
showMessageDialog(java.lang.Object message,
java.lang.String title,
int messageType)
Shows a message dialog for error or warning messages. |
protected void |
uninstallComponents()
Uninstalls all components on the container. |
protected void |
uninstallDefaults()
Uninstalls all global default settings of the container. |
protected void |
uninstallKeyboardActions()
Uninstalls all keyboard actions and mnemonics. |
protected void |
uninstallLayout()
Uninstalls the layout manager of this container. |
protected void |
uninstallListeners()
Uninstalls all listeners for all components in this container. |
void |
uninstallUI(JModeCorrelationPanel correlationPanel)
Uninstalls layout, components, listeners, keyboard actions, and defaults. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected javax.swing.JLabel bottomFillerLabel_
protected javax.swing.JFileChooser correlationFileChooser_
protected javax.swing.JLabel correlationLabel_
protected javax.swing.Action correlationMakeAction_
protected javax.swing.JButton correlationMakeButton_
protected javax.swing.JLabel correlationOutputLabel_
protected javax.swing.JTextField correlationOutputTextField_
protected JModeCorrelationPanel correlationPanel_
JModeCorrelationPanel
that this interface is designed for
protected javax.swing.Action correlationSaveAction_
protected javax.swing.Action correlationSaveAsAction_
protected javax.swing.JButton correlationSaveButton_
protected javax.swing.JSeparator correlationSeparator_
protected javax.swing.Action correlationShow2DAction_
protected javax.swing.JButton correlationShow2DButton_
protected javax.swing.Action correlationShow3DAction_
protected javax.swing.JButton correlationShow3DButton_
protected javax.swing.JLabel lowerToleranceLabel_
protected javax.swing.event.ChangeListener lowerToleranceListener_
protected javax.swing.JSpinner lowerToleranceSpinner_
protected javax.swing.JLabel massInputLabel_
protected javax.swing.JTextField massInputTextField_
protected javax.swing.JComboBox massKeyComboBox_
protected java.awt.event.ItemListener massKeyItemListener_
protected javax.swing.JLabel massKeyLabel_
protected javax.swing.Action massOpenAction_
protected javax.swing.JButton massOpenButton_
protected javax.swing.Action massReadAction_
protected javax.swing.Action updateKeyDefaultAction_
protected javax.swing.JButton updateKeyDefaultButton_
protected javax.swing.Action updateKeyDeselectAllAction_
protected javax.swing.JButton updateKeyDeselectAllButton_
protected javax.swing.JScrollPane updateKeyScrollPane_
protected javax.swing.Action updateKeySelectAllAction_
protected javax.swing.JButton updateKeySelectAllButton_
protected javax.swing.JLabel updateLabel_
protected javax.swing.JLabel updateOutputLabel_
protected javax.swing.JTextField updateOutputTextField_
protected javax.swing.Action updateSaveAction_
protected javax.swing.Action updateSaveAsAction_
protected javax.swing.JButton updateSaveButton_
protected javax.swing.JSeparator updateSeparator_
protected javax.swing.JLabel upperToleranceLabel_
protected javax.swing.event.ChangeListener upperToleranceListener_
protected javax.swing.JSpinner upperToleranceSpinner_
| Constructor Detail |
|---|
public OrthogonalityCheckUI()
OrthogonalityCheckUI
.
| Method Detail |
|---|
public java.lang.String getConnectionOutput()
ModeCorrelationUI
getConnectionOutput
in interface ModeCorrelationUI
public java.lang.String getCorrelationOutput()
ModeCorrelationUI
getCorrelationOutput
in interface ModeCorrelationUI
public double getLowerTolerance()
ModeCorrelationUI
getLowerTolerance
in interface ModeCorrelationUI
public java.lang.String getMassInput()
ModeCorrelationUI
getMassInput
in interface ModeCorrelationUI
public double getUpperTolerance()
ModeCorrelationUI
getUpperTolerance
in interface ModeCorrelationUI
protected void initialize()
protected void installComponents()
protected void installDefaults()
protected void installKeyboardActions()
protected void installLayout()
protected void installListeners()
public void installUI(JModeCorrelationPanel correlationPanel)
ModeCorrelationUI
installUI
in interface ModeCorrelationUI
correlationPanel
- the JModeCorrelationPanel
where the
user interface will be installedpublic void setConnectionOutput(java.lang.String fileName)
ModeCorrelationUI
setConnectionOutput
in interface ModeCorrelationUI
fileName
- the new mode connection output file namepublic void setCorrelationOutput(java.lang.String fileName)
ModeCorrelationUI
setCorrelationOutput
in interface ModeCorrelationUI
fileName
- the new mode correlation output file namepublic void setLowerTolerance(double lowerTolerance)
ModeCorrelationUI
setLowerTolerance
in interface ModeCorrelationUI
lowerTolerance
- the new mode correlation lower tolerancepublic void setMassInput(java.lang.String fileName)
ModeCorrelationUI
setMassInput
in interface ModeCorrelationUI
fileName
- the new mass matrix input file namepublic void setUpperTolerance(double upperTolerance)
ModeCorrelationUI
setUpperTolerance
in interface ModeCorrelationUI
upperTolerance
- the new mode correlation upper tolerancepublic java.lang.String showConnectionSaveDialog()
ModeCorrelationUI
showConnectionSaveDialog
in interface ModeCorrelationUI
public java.lang.String showCorrelationSaveDialog()
ModeCorrelationUI
showCorrelationSaveDialog
in interface ModeCorrelationUI
public java.lang.String showMassOpenDialog()
ModeCorrelationUI
showMassOpenDialog
in interface ModeCorrelationUI
public void showMessageDialog(java.lang.Object message, java.lang.String title, int messageType)
ModeCorrelationUI
showMessageDialog
in interface ModeCorrelationUI
message
- the message of the error or warningtitle
- the title of the error or warningmessageType
- an ERROR_MESSAGE
or WARNING_MESSAGE
protected void uninstallComponents()
protected void uninstallDefaults()
protected void uninstallKeyboardActions()
protected void uninstallLayout()
protected void uninstallListeners()
public void uninstallUI(JModeCorrelationPanel correlationPanel)
ModeCorrelationUI
uninstallUI
in interface ModeCorrelationUI
correlationPanel
- the JModeCorrelationPanel
where the
user interface will be uninstalled
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Argentina earn 2-2 draw after Lionel Messi nets late penalty
Argentina's Lionel Messi scored an added-time penalty to salvage a 2-2 draw with Uruguay, as they twice came from behind in an entertaining friendly match in Israel yesterday morning (Singapore time).
Argentina, now unbeaten in six games since a disappointing Copa America where they finished third, had the better of the early play, but fell behind in the 34th minute when Edinson Cavani stabbed home from close range after a nice build-up play by Luis Suarez and Lucas Torreira.
The crowd in Tel Aviv cheered Messi throughout and it was the forward who helped Argentina draw level in the 63rd minute.
Messi's free-kick from the left was nodded home by Sergio Aguero but, just five minutes later, Suarez restored Uruguay's lead when he scored from a free-kick.
But the last word went to Messi who, three days after he missed from 12 metres against Brazil, made no mistake by coolly side-footing home from the spot to secure a deserved draw.
The fixture was the last international for both teams before they begin their 2022 World Cup qualifying campaign in March. - REUTERS


Charles gets up close with llamas and seabirds
The nature-loving Prince of Wales encountered wildlife on the last day of his tour of New Zealand with the Duchess of Cornwall.
The Prince of Wales got up close and personal with a pair of llamas during his last day in New Zealand – and was also taken by some displays of horse power.
Charles and Camilla began the day in Christchurch, visiting the Lincoln Farmers and Craft Market before the prince took a helicopter north to Kaikoura.
The town of around 2,000 people was struck by a 7.8-magnitude earthquake in 2016, and Charles met people who were among the first responders on the evening the tremor struck.
“I’m joining the line again,” one of the coastguard team said as she went for a second handshake, to which Charles joked: “You must be a glutton for punishment.”
Outside Kaikoura Memorial Hall, Charles was introduced to Legend and Max, a pair of llamas who work giving rides in the town.
He laughed as the llamas were ushered into place for a picture, with Kevin Cole of Kaikoura Llama Trekking saying he chose the best-behaved pair for the royal visit.
“When I knew he was visiting, I had to make sure I chose the best llamas from a characteristic and placidity point of view,” he said.
“I was very impressed by how much he knew about them too.”
Hundreds of people went to see Charles as he completed a walkabout in the town centre, shaking hands and greeting locals as well as visitors who said they were from Bath, Manchester and Italy.
The prince also met the White Ribbon Riders, who are taking part in a motorcycle tour in support of programmes against domestic violence.
Charles joked with rider Tiki O’Brien that it looked like a Hells Angels chapter as the riders showed off their Harley Davidsons, Hondas and Triumphs.
Eru Whare told the prince: “I can see you riding one of these,” which raised a smile from the royal.
Charles went on to visit Hutton’s Shearwater Colony, one of two breeding colonies for the endangered seabird in the area.
Ted Howard, chairman of the Hutton’s Shearwater Charitable Trust, opened an artificially created underground burrow to show Charles one of the birds, the only seabird in the world to breed in an alpine environment.
“I’ve lost quite a lot of blood to these,” he joked as he held the bird while Charles stroked it.
Predatory mammals have cut the population significantly and the earthquake destroyed breeding sites further hampering conservation efforts.
Charles’s last engagement on the New Zealand leg of his tour was a picturesque coastal walk in Kaikoura.
He stopped and took in the views of the Kaikoura ranges and looked out to the Pacific Ocean.
The prince, led by Phil Bradfield and Rawiri Manawatu, spent around 30 minutes walking along the coast, with seals and blue penguins visible from the path.
He will now travel to the Solomon Islands for the last leg of the tour.


Normative references for this implementation
Examples
Trigger MathJax loading $!$.
siunitx Reference
Unit macros known to siunitx
SI base units
SI coherent derived units
Non-SI units acceptable for use within SI system
Non-SI units whose value must be determined from experiment
Other non-SI units
Test-cases


Input
An input holds a value that is used for the execution of the Action.
The value carried by the input gets checked through a wide range of validations that make sure the value meets the necessary requirements for the execution of the Action.
The validations are performed asynchronously which enables an implementation
that can go far beyond checking the data type or matching the value through
a regex. In most cases these validations are driven by properties
. Properties are
usually defined at construction time. Also, non-generic validations can be
implemented through extendedValidation
, making possible to define validations
that are tied with an action itself.
Inputs are created through Input.create using a syntactic sugar that describes their name and type (aka TypeScript), for instance:
Input.create('myInput: bool')
Any input can be defined as a vector by using the short array syntax []
:
Input.create('myInput: bool[]')
In case you want to hide specific inputs from readers (Reader), you can
use the prefix _
in the input name. By doing that the input is automatically
assigned as hidden (same effect as setting the property hidden=true
at the
construction of the input):
Input.create('_myInput: bool[]')
Additionally, you can specify if an input is optional (not required) by adding
?
beside of the input name:
Input.create('myInput?: bool[]')
You can also create inputs through a verbose (boilerplate) interface where each of the options described above can be defined at construction time via properties:
Input.create('myInput', {type: 'bool', vector: true, required: false, hidden: false})
Since inputs are used by actions they can be created directly inside of an Action via Action.createInput that internally triggers Input.create factory method:
class HelloWorld extends Mebo.Action{
constructor(){
super();
// ♥ compact version
this.createInput('myInputA?: bool[]');
// same as effect as above, but not so friendly to read
this.addInput(Input.create('myInputB?: bool[]'));
}
}
To register a new input type, take a look at Input.register
Property Summary
| Property Name | Description | Defined by Default | Default Value |
|---|---|---|---|
| required | boolean telling if the value is required (defined at the construction time) | ||
| immutable | boolean telling if the data of the value cannot be altered overtime, however the value of the input can still be replaced by the input value setter, in order to prevent it you can set an input as readOnly | ||
| defaultValue | default value of the input | ||
| elementType | tells how the input should be presented via Cli: 'option' or 'argument' (http://docopt.org) |
'option' |
|
| vector | boolean telling if the input holds a vector value (defined at the construction time) | ||
| hidden | boolean telling if the input is hidden from the Reader, therefore it should only be used internally | ||
| autofill | key name about a value that may be under the Session.autofill. This value is used to initialize the input. It occurs when a session is assigned to an action (Action.setSession) | ||
| description | description about the input. This information is displayed when showing the help about the action | ||
| shortOption | short version of the input name used to speficy when running through the Cli |
The assignment of a property value can be done at construction time or through
the setter Input.assignProperty. A property value can be queried by the
getter Input.property. To add new properties to an input type, please take
a look at Input.registerProperty.
Static Method Summary
| Static Public Methods | ||
| public static |
Creates an input instance. |
|
| public static |
Registers a new input type to the available inputs |
|
| public static |
registerProperty(inputClassOrRegisteredName: string | Input, name: string, initialValue: *) Registers a property for the input type (also available as |
|
| public static |
registeredInput(name: string): Input Returns the input type based on the registration name |
|
| public static |
Returns a list containing the names of the registered input types |
|
| public static |
registeredPropertyNames(inputClassOrRegisteredName: string | Input): Array<string> Returns a list about all registered property names including the inherited ones for the input type |
| Static Protected Methods | ||
| protected static |
_decodeScalar(value: string): * Decodes the input value from the string representation (Input._encodeScalar) to the data type of the input. |
|
| protected static |
_decodeVector(value: string): * Decodes a vector value from the string representation ({Input._encodeScalar & Input._encodeVector) to the data type of the input. |
|
| protected static |
_encodeScalar(value: *): string Encodes the input value to a string representation that can be later decoded through Input._decode. |
|
| protected static |
_encodeVector(values: Array<string>): string Encodes a vector value to a string representation that can be later decoded through Input._decodeVector. |
Constructor Summary
| Public Constructor | ||
| public |
constructor(name: string, properties: Object, extendedValidation: function) Creates an input |
Method Summary
| Public Methods | ||
| public |
assignProperty(name: string, value: *, loose: boolean) Sets a property to the input. |
|
| public |
Returns the cache used by the input |
|
| public |
Forces to flush the internal input cache |
|
| public |
hasProperty(name: string): boolean Returns a boolean telling if the input property name is assigned to the input |
|
| public |
Returns if the value of the input is empty. |
|
| public |
isPropertyLocked(name: string): boolean Returns a boolean telling if the property is locked (Input.lockProperty) |
|
| public |
Returns if the value of the input is required. |
|
| public |
Returns if the input is serializable |
|
| public |
Returns if the value of the input is a vector. |
|
| public |
lockProperty(name: string, lock: boolean) Prevents a property value to be modified by Input.assignProperty |
|
| public |
Returns the name of the input which is defined at construction time (inputs cannot be renamed) |
|
| public |
parseValue(value: string, assignValue: boolean): * Decodes a value represented as string to the type that is compatible with the input. |
|
| public |
Returns the property value for the input property name |
|
| public |
propertyNames(): Array<string> Returns a list containing the property names assigned to the input |
|
| public |
Returns a boolean telling if the input is in read-only mode. |
|
| public |
async serializeValue(): Promise<string> This method should return a string representation about the current value in a way that can be recovered later through parseValue. |
|
| public |
setReadOnly(enable: boolean) Changes the read-only state of the input. |
|
| public |
setValue(value: *) Sets the value of the input |
|
| public |
Sets the input value by avoiding the overhead that may occur when the same value is used across actions that have the input type, therefore this method avoids the re-computation by copying the caches and value associated with the source input to the current input. |
|
| public |
Executes the input validations (_validation), in case of a failed validation then an exception of type ValidationFail is raised |
|
| public |
value(): * Returns the value of the input |
|
| public |
This method enforces the context of the value being queried. |
| Protected Methods | ||
| protected |
_getFromCache(name: string, at: null | number): * Auxiliary method used internally by the input implementations to get a value from the cache |
|
| protected |
Auxiliary method used internally by input implementations to check if the key is under the cache |
|
| protected |
_setToCache(name: string, value: *, at: null | number) Auxiliary method used internally by input implementations to set a value to the cache |
|
| protected |
async _validation(at: null | number): Promise<*> Use this method to implement generic validations for your input implementation. |
Static Public Methods
public static create(inputInterface: string, properties: Object, extendedValidation: function): Input source
Creates an input instance.
Params:
| Name | Type | Attribute | Description |
| inputInterface | string | string followed by either the pattern |
|
| properties | Object |
|
plain object containing the properties which will be assigned to the Input |
| extendedValidation | function |
|
callback that can be defined to supply custom validations to the Input |
Example:
// minimal
Input.create('inputName: numeric');
// full
Input.create('inputName: numeric', {min: 1, max: 5}, function(at){
return new Promise((resolve, reject) => {
if (this.valueAt(at) === 3)
reject(new ValidationFail('Failed for some reason'));
else
resolve(this.value());
});
})
public static register(inputClass: Input, name: string) source
Registers a new input type to the available inputs
public static registerProperty(inputClassOrRegisteredName: string | Input, name: string, initialValue: *) source
Registers a property for the input type (also available as Mebo.Input.registerProperty
)
// example of registering a new property
Mebo.Input.registerProperty('text', 'myCustomProperty', 'A initial value if necessary')
Params:
| Name | Type | Attribute | Description |
| inputClassOrRegisteredName | string | Input | registered input name or input class in which the property should be registered |
|
| name | string | name of the property (in case the property name already exists than it going to be overridden for the input type) |
|
| initialValue | * |
|
optional initial value for the property (undefined by default) |
public static registeredInput(name: string): Input source
Returns the input type based on the registration name
Params:
| Name | Type | Attribute | Description |
| name | string | name of the registered input type |
public static registeredInputNames(): Array<string> source
Returns a list containing the names of the registered input types
public static registeredPropertyNames(inputClassOrRegisteredName: string | Input): Array<string> source
Returns a list about all registered property names including the inherited ones for the input type
// returning all properties for an input type (using 'numeric' as example)
Mebo.Input.registeredPropertyNames('numeric');
Static Protected Methods
protected static _decodeScalar(value: string): * source
Decodes the input value from the string representation (Input._encodeScalar) to the data type of the input. This method is called internally during Input.parseValue
Params:
| Name | Type | Attribute | Description |
| value | string | encoded value |
Return:
| * |
protected static _decodeVector(value: string): * source
Decodes a vector value from the string representation ({Input._encodeScalar & Input._encodeVector) to the data type of the input. This method is called internally during Input.parseValue
Params:
| Name | Type | Attribute | Description |
| value | string | encoded value |
Return:
| * |
protected static _encodeScalar(value: *): string source
Encodes the input value to a string representation that can be later decoded through Input._decode. This method is called internally during the serializeValue
Params:
| Name | Type | Attribute | Description |
| value | * | value that should be encoded to a string |
protected static _encodeVector(values: Array<string>): string source
Encodes a vector value to a string representation that can be later decoded through Input._decodeVector. This method is called internally during the serializeValue
Public Constructors
Public Methods
public assignProperty(name: string, value: *, loose: boolean) source
Sets a property to the input. In case the property already exists then the value
is going to be overridden. By default the only properties that can be modified are
the ones found under Input.registeredInputNames. However you can
assign a non-registered property by enabling loose
parameter.
Property values can be locked, therefore preventing modifications (Input.lockProperty).
Params:
| Name | Type | Attribute | Description |
| name | string | name of the property |
|
| value | * | value for the property |
|
| loose | boolean |
|
when true lets to assign a property that is not registered to the input (Input.registeredInputNames) |
public cache(): ImmutableMap source
Returns the cache used by the input
This method is called by (setupFrom) to setup the input based on an already existing input
public hasProperty(name: string): boolean source
Returns a boolean telling if the input property name is assigned to the input
Params:
| Name | Type | Attribute | Description |
| name | string | name of the property |
public isEmpty(): boolean source
Returns if the value of the input is empty. This is used mainly by
the property required=false
to know if the input does not have a value
assigned to it.
public isPropertyLocked(name: string): boolean source
Returns a boolean telling if the property is locked (Input.lockProperty)
Params:
| Name | Type | Attribute | Description |
| name | string | name of the property |
public isRequired(): boolean source
Returns if the value of the input is required. This information is defined
by the property required=true
public isSerializable(): boolean source
Returns if the input is serializable
This method should be re-implemented by derived classes to tell if the input can be serialized (default true).
In case of a serializable input, the methods Input._encodeScalar and Input._decode are expected to be implemented.
public isVector(): boolean source
Returns if the value of the input is a vector. This information is defined
by the property vector=true
public lockProperty(name: string, lock: boolean) source
Prevents a property value to be modified by Input.assignProperty
public name(): string source
Returns the name of the input which is defined at construction time (inputs cannot be renamed)
public parseValue(value: string, assignValue: boolean): * source
Decodes a value represented as string to the type that is compatible with the input.
This method is called by the Handler or when an action is loaded/created using
Action.fromJSON/Action.createFromJSON. In case the input
is defined as vector then the value can be defined using an array encoded in JSON.
The parsed value gets returned and assigned to the input as well (you can control this
by the assignValue
argument).
The implementation of the decoding is done by the methods Input._decode & Input._decodeVector. To know if an input supports decoding checkout the Input.isSerializable.
To know how the serialization is done for the inputs bundled with Mebo take a look at Reader documentation.
Return:
| * |
public property(name: string): Promise<*> source
Returns the property value for the input property name
Params:
| Name | Type | Attribute | Description |
| name | string | name of the property |
Return:
| Promise<*> | The value of the property otherwise raises an exception in case the property is not assigned |
public propertyNames(): Array<string> source
Returns a list containing the property names assigned to the input
public readOnly(): boolean source
Returns a boolean telling if the input is in read-only mode. A read-only input cannot have its value and properties modified
public async serializeValue(): Promise<string> source
This method should return a string representation about the current value in a way that can be recovered later through parseValue.
The encode implementation is done by the methods Input._encodeScalar & Input._encodeVector. To know if an input supports serialization checkout the Input.isSerializable.
Also, in case you want to know the serialization form for the inputs bundled with Mebo checkout Reader.
public setReadOnly(enable: boolean) source
Changes the read-only state of the input. A read-only input cannot have its value and properties modified. It's mainly used during the execution of the Action where all inputs are assigned as read-only, therefore when the execution is completed the inputs are restored with the original read-only value assigned before the execution of the action
Params:
| Name | Type | Attribute | Description |
| enable | boolean | tells if a input is read-only |
public setValue(value: *) source
Sets the value of the input
Params:
| Name | Type | Attribute | Description |
| value | * | value that should be set to the input |
public setupFrom(sourceInput: Input, at: null | number, cache: boolean) source
Sets the input value by avoiding the overhead that may occur when the
same value is used across actions that have the input type, therefore
this method avoids the re-computation by copying the caches and value
associated with the source input to the current input. The cache will be
only copied if both source and target inputs have the immutable
property
enabled (default true).
public async validate(): Promise<*> source
Executes the input validations (_validation), in case of a failed validation then an exception of type ValidationFail is raised
public valueAt(index: number): * source
This method enforces the context of the value being queried. Since the input can behave as vector it makes sure that when that's the case the index must be supplied otherwise it raises an exception. Use this method when you need to query the value through validations where the index (at) is always passed to them, whether if the input is vector or scalar
Params:
| Name | Type | Attribute | Description |
| index | number |
|
used when the input is set to a vector to tell the index of the value |
Return:
| * |
Protected Methods
protected _getFromCache(name: string, at: null | number): * source
Auxiliary method used internally by the input implementations to get a value from the cache
Return:
| * |
protected _isCached(name: string, at: null | number): boolean source
Auxiliary method used internally by input implementations to check if the key is under the cache
protected _setToCache(name: string, value: *, at: null | number) source
Auxiliary method used internally by input implementations to set a value to the cache
protected async _validation(at: null | number): Promise<*> source
Use this method to implement generic validations for your input implementation. In case any validation fails this method should return a ValidationFail (This method is called when the validations are perform through Input.validate)


--- layout: page title: "Events" description: "Take part." header-img: "img/events-bg3.jpg" ---
We are running a weekly seminar in Cambridge, hold regular team meetings, and give talks all around the globe.
Our next big event will be The Human Mind Conference, 27-29 June 2017 in Cambridge, co-organised with The Human Mind Project, School of Advanced Study, London.


{% extends "layout-v2.html" %} {% block pageScripts %} {% endblock %} {% block pageTitle %} NHS Cervical screening management system {% endblock %} {% block header %} {% include '../components/header.html' %} {% endblock %} {% block content %}
What current participant status would you like to include?
Select all options that are relevant to you
Do you want to include previous participant status?
What previous participant status would you like to include?
What current episode status would you like to include?
What previous episode status would you like to include?


| pgpool-II 4.0.3 Documentation | |||
|---|---|---|---|
| Prev | Up | Appendix A. Release Notes | Next |
Release Date: 2018-10-19
This version addes support for SCRAM and CERT authentication, improves load balancing control and import PostgreSQL 11 new SQL parser.
Major enhancements in Pgpool-II 4.0 include:
Add SCRAM and Certificate authentication support.
Detecting "false" primary server of PostgreSQL.
Improvement of load balancing:
More load balancing fine control after write queries.
Load balancing control for specific queries.
Allow to specify load balance weight ratio for load balance parameters.
Add last state change timestamp to SHOW POOL NODES.
Import PostgreSQL 11 SQL parser.
Logging client messages.
Version 4.0 contains a number of changes that may affect compatibility with previous releases. Observe the following incompatibilities:
Add 1st/2nd stage online recovery commands parameter to get the node number to be recovered. (Tatsuo Ishii)
Online recovery script now accepts 5 parameters, rather than 4 (the 5th parameter is node number to be recovered). Run ALTER EXTENSION pgpool_recovery UPDATE TO '1.2' to update pgpool_recovery version. Existing 4-parameter-style recovery scripts can be used if you don't care about information provided by the 5th parameter.
See recovery_1st_stage_command and recovery_2nd_stage_command for more details.
fail_over_on_backend_error parameter is renamed to failover_on_backend_error. (Muhammad Usama)
Now we throw a warning message when old config name fail_over_on_backend_error is used instead of failover_on_backend_error. Using the old config variable name will have no effect.
Allow to specify the AES encrypted password in the pgpool.conf. (Muhammad Usama)
Since 4.0, you can specify the AES encrypted password in the pgpool.conf file for health_check_password, sr_check_password, wd_lifecheck_password and recovery_password.
To specify the unencrypted clear text password, prefix the password string with TEXT. In the absence of a valid prefix, Pgpool-II will consider the string as a plain text password.
The empty password string specified in the pgpool.conf file for health_check_password, sr_check_password, wd_lifecheck_password and recovery_password will only be used when the pool_passwd does not contain the password for that specific user. If these parameters are left blank, Pgpool-II will first try to get the password for that specific user from pool_passwd file before using the empty password.
Add support for SCRAM and Certificate based authentication methods. (Muhammad Usama)
Add support for SCRAM authentication method.
SCRAM authentication is supported using the pool_passwd authentication file.
See Section 6.2.3 for more details.
Allow to use CERT authentication between Pgpool-II and frontend.
To use this authentication method, Pgpool-II will require that the client provide a valid certificate.
See Section 6.2.4 for more details.
Able to use different auth methods for frontend and backend.
Now it is possible to use different authentication methods between client to Pgpool-II and Pgpool-II to backend.
Now pool_passwd can store three format passwords. AES256 encrypted format, plain text format and md5 format.
Pgpool-II identifies the password format type by it's prefix, so each password entry in the pool_passwd must be prefixed as per the password format.
md5 hashed passwords will be prefixed with md5 and AES256 encrypted password types will be stored using AES prefix. To store the password in the plain text format TEXT prefix can be used.
In the absence of a valid prefix, Pgpool-II will be considered the string as a plain text password.
For example:
username1:AESIFwI86k+ZbVdf6C+t3qpGA== username2:md59c6583185ba6a85bdcd1f129ec8cabb4 username3:TEXTmypassword
Able to use MD5 and SCRAM authentication methods to connect to database without pool_passwd.
A new configuration parameter allow_clear_text_frontend_auth is added. This parameter enables this config allows the Pgpool-II to use clear-text-password authentication with frontend clients when pool_passwd file does not contain the password for the connecting user, and use that password (provided by client) to authenticate with the backend using MD5 and/or SCRAM authentication.
New pg_enc utility to create encrypted passwords.
A new utility pg_enc is added to create AES encrypted passwords.
See Chapter 6 for more details.
Add new parameter detach_false_primary. (Tatsuo Ishii)
If set detach_false_primary = on, detach false primary node. The default is off. This parameter is only valid in streaming replication mode and for PostgreSQL 9.6 or after since this feature uses pg_stat_wal_receiver. If PostgreSQL 9.5.x or older version is used, no error is raised, just the feature is ignored.
Add disable_load_balance_on_write parameter to specify load balance behavior after write queries appear. (Tatsuo Ishii)
This parameter allows to specify the behavior when a write query issued.
Allow to specify load balance weight ratio for load balance parameters. (Bo Peng)
Add a new feature to allow to specify load balance weight ratio for database_redirect_preference_list and app_name_redirect_preference_list parameters.
You can specify the list of "database-name:node id(ratio)" pairs to send SELECT queries to a particular backend node for a particular database connection at a specified load balance ratio.
Also you can specify list of "application-name:node id(ratio)" pairs to send SELECT queries to a particular backend node for a particular client application connection at a specified load balance ratio.
This load balance ratio specifies a value between 0 and 1, and the default is 1.0.
Add new parameter black_query_pattern_list to enable specifying SQL patterns lists that should not be load-balanced. (Bo Peng)
Specify a semicolon separated list of SQL patterns that should be sent to primary node only. Regular expression can be used in SQL patterns. Only Maste Slave mode is supported.
Add new parameter log_client_messages to allow logging client message. (Takuma Hoshiai, Tatsuo Ishii)
Set log_client_messages = on, any client messages will be logged without debugging messages.
Add last_status_change column to SHOW POOL NODES command. (Tatsuo Ishii)
The new column indicates the time when status or role has been changed.
See [pgpool-hackers: 2822] for the reasoning to add the column.
Import PostgreSQL 11's SQL parser. (Bo Peng)
Now Pgpool-II can fully understand the newly added SQL syntax in PostgreSQL 11, such as CREATE/ALTER/DROP PROCEDURE, { RANGE | ROWS | GROUPS } frame_start [ frame_exclusion ], etc.
Add "-r" option to pgpool_setup to allow use of pg_rewind. (Tatsuo Ishii)
With this option, pgpool_setup creates basebackup.sh which tries pg_rewind first. If it fails, falls back to rsync.
Also a new environment variable "USE_PG_REWIND" to pgpool_setup is added. This brings the same effect as "-r" option is specified.
Add "-s" option to pgpool_setup to support for replication slot. (Tatsuo Ishii)
This eliminates the problem when standby is promoted. When a standby is promoted, it changes the time line in PITR archive, which will stop other standby if any because of shared archive directory.
Also a new environment variable "USE_REPLICATION_SLOT" to pgpool_setup is added. This brings the same effect as "-s" option is specified.
If "USE_REPLICATION_SLOT=true", in streaming replication mode, use replication slot instead of archive.
By setting USE_REPLICATION_SLOT environment variable, now pgpool_setup in all tests uses replication slots. This reduces disk space under src/test/regression from 6.3GB to 5,1GB (1.2GB savings).
Introduce pgproto to Pgpool-II. (Takuma Hoshiai)
A new utility pgproto is added to test PostgreSQL or any other servers that understand the frontend/backend protocol.
Allow to display Pgpool-II child process id and PostgreSQL backend id in pcp_proc_info. (Tatsuo Ishii)
Add --all option to display all child processes and their available connection slots.
Add replication_delay and last_status_change to pcp_node_info. (Tatsuo Ishii)
Add role, replication_delay and last_status_change columns to pgpool_adm's pgpool_adm_pcp_node_info. (Tatsuo Ishii)
Downgrade most of DEBUG1 messages to DEBUG5. (Tatsuo Ishii)
This significantly reduces the size of pgpool log when pgpool starts with -d option (this is equivalent to setting client_min_messages to debug1).
Per discussion [pgpool-hackers: 2794].
Fix syntax error in native replication, when queries including time functions (now(), etc.) and IN (SELECT ...) in WHERE clause. (bug 433) (Bo Peng)
Fix compiler error if HAVE_ASPRINTF is not defined. (Tatsuo Ishii)
Fix configure.ac to remove generating src/sql/pgpool_adm/Makefile.in. (Tatsuo Ishii)
Fix pgpool main process segfault when PostgreSQL 9.5 is used. (Tatsuo Ishii)
pgpool_setup -n 3 (or greater) triggers the bug. While recovering node 2, pgpool main process tried to retrieve version info from backend #2 even if it's not running. This causes the sefault because connection was not established yet. The reason why PostgreSQL 9.6 or later was not suffered from the bug was, PostgreSQL exited the loop as soon as the server version is higher than 9.5. To fix this, call to VALID_BACKEND macro was added.
Add missing health_check_timeout in pgpool_setup. (Tatsuo Ishii)
Per node health_check_timeout was missing and this should had been there since the per node health check parameter support was added.
Test: Try to reduce the chance of regression 006.memcache failure. (Tatsuo Ishii)
It seems the occasional failure of the test is caused by replication lag. The script tries to read tables from standby but it returns a table not existing error. So insert pg_sleep() after creation of tables.
Test: Fix regression test 055.backend_all_down error. (Bo Peng)
Doc: Enhance online recovery document. (Tatsuo Ishii)
Clarify that 2nd stage command is only required in native replication mode.
Test: Add new regression test 017.node_0_is_down for node 0 not being primary. (Tatsuo Ishii)


Today I gave a presentation to 120 4th graders, as a participant in Career Day at Lowell Elementary School in Long Beach, California. I covered some general intarweb topics, places I had worked, and then talked about Mozilla, Firefox and open-source software.
You can download my slides here. Obviously, some topics were presented in a very simplified manner.
I did 3 presentations, to groups of 30-50 kids. I started the presentation by taking a survey ("Raise your hand if..."), then ran through my slides, and then took questions. Here are some observations from the day:
- All of the kids had used a computer (they have a computer lab at the school).
- Almost all of the kids said they had used the internet, and surfed the web.
- About half of the kids said they used email.
- About a quarter of the kids said that they used IM, and those kids were really excited about it.
- Though almost every kid said they surfed the web, when I asked if they knew what a "browser" was, only a couple kids knew. However, I know that they actually were surfing the web because of the questions that they asked. It seemed that the browser was a piece of infrastructure that blended into their general computer experience.
- They really didn't understand the difference between an internet connection and internet browser. When I said Firefox was free, some kids thought that meant they could get online for free.
- Anywhere from 5-10 kids in each group had heard of Firefox.
- 1-2 kids in each group had heard of "open-source".
- The kids knew of viruses and phishing. They didn't understand what they were, but knew that they were bad, and from the internet.
- The kids knew about MySpace, and were scared of predators. For real. In each group, someone brought up MySpace, and always in the context of a news story they saw on TV about how some creepy guy was trying to hook up with teenage girls. Local news must be pushing this story.
- Computing in public education means Mac OS8 and Netscape Communicator. And we live in an affluent area. It was crazy to be talking to a group of kids who all knew about Netscape and not Firefox.
- Games! The boys all played games via websites, and wanted to tell me all about them. The only game brought up by a girl was WOW.
- They thought the Firefox logo was cool. They thought the Mozilla logo was cooler :) Especially the boys. Several started grilling me on the anatomical incorrectness of the dinosaur: "If it's from the pleocistene family it'd have a bump on it's head and the nostrils would be in a different place." I had no response to that.
- The kids all knew what "non-profit" meant, and each group had at least one of these kids: "How does Mozilla make any money??!!". Long discussions about the economics of search referrals and advertising ensued.
- The kids liked "free", and they only grokked "freedom" when I asked a kid's name, and said he could take the source code and make his own "JakobBrowser" if he wanted. They loved that.
Overall, the kids seemed conversationally literate about the internet, more so than I was expecting. There was a general feeling that the internet was cool, but to be feared. They were definitely interested in Firefox, and asked where they could download it. They loved the Firefox stickers I gave out. Tons of thanks to Marcia, who got me more stickers on short notice (I originally thought I was only presenting to my daughter's class).


| Term | Definition |
|---|---|
| Suspension | A heterogeneous mixture containing solid particles that are big enough for sedimentation. Diameter ≥ 1.0 µm. The particles can be either solid or liquid. In theory, all suspensions settle. |
| Aerosol | A suspension of liquid droplets or fine solid particles in a gas. Particles can range from 1 to 10 µm in diameter. |
| Colloid | Unlike suspensions, colloids do not settle. Diameter < 1.0 µm. Kind of the gas version of a solution. |
| Vapor | The gas phase of something that was once a liquid. Colloquially refers to the aerosol produced by e-cigarettes and herbal vaporizers. |
| Steam | The gas phase of water. Steam itself is invisible. |
| Wet Steam | Steam itself is invisible, but wet steam is not. Wet steam is a mist (or aerosol) of water droplets. It's caused by water vapor condensing in mid-air. |
| Process | Definition |
|---|---|
| Sublimation | A phase change: solid → gas. The substance skips the liquid phase entirely. |
| Vaporization | A phase change: liquid → gas. Includes such processes as boiling and evaporation. |
| Condesation | A phase change: gas → liquid. This is best illustrated by a cold glass of water "sweating." |
When you boil a pot of water on the stove, you’ll see a plume of steam. However, water vapor is itself invisible!
What e-cigarettes produce: aerosol (suspension of small droplets of propylene glycol + nicotine solution + flavoring solution)
What herbal vaporization produces: aerosol (small droplets of trichomes)
What combustion produces: Solid and Liquid Aerosol
How are droplets suspended in the air?
Aerosols can be categorized by the measure of particle heterogeneity. For instance, an aerosol can be monodisperse (all particles the same size – this one is very rare in nature) or polydisperse (many different sizes).
In this post I’ll be covering polydisperse aerosols, as they are the most common. It’s useful to describe polydisperse aerosols in terms of their particle size makeup (i.e. divide the total size range into intervals and find the percent of particles that fall within each interval.) The two most common size intervals you’ll find in literature are PM-10 and PM-2.5.
Deposition is the process by which aerosol particles deposit themselves on solid surfaces.
The most common causes of deposition in human lungs are…
Other (not significant in respiratory system) deposition causes include…
The diameter of the particle dₚ determines the region in which it will deposit. Size-selective sampling is generally split into the following categories:
The most important mechanisms of deposition in the respiratory system are impaction, settling, and diffusion. Impaction is of primary concern in the large airways. Settling is most important in the smaller airways and alveolar region.
In practice, aerosolized particles may not be spherical. However, one can approximate a non-spherical particle’s depositional behavior by calculating an aerodynamic diameter. This is done by pretending that the irregular particle (with settling velocity s) is spherical, keeping the settling velocity constant. This idealized particle is assumed to have a standard particle density of 1000 kg/m3. The diameter of this new particle is defined as…
where $\rho_{0}$ is the standard particle density and $\chi$ is the dynamic shape factor (a ratio of the resistive force of an irregular particle to that of a spherical particle).


Movie Tickets
Fill out the following form to see ticket price:
Select Movie:
Die Hard
Ready Player One
Harry Potter Marathon
Select Time of Day:
Early Bird (before Noon)
Matinee (Noon-5pm)
Evening (5pm-Close)
Input Age:
Show Price
Movie Title:
Movie Time:
Ticket Price:


Gems for Every Occasion
Create Account
Sign-In
shopping_cart
view_module
More Options
Deals
Women's Jewelry
Men's Jewelry
Engagement Rings
Weddings Bands
Tennis Bracelets
Necklaces
Burning Hearts Collection
Mocha Collection
Financing
John Doe
<EMAIL_ADDRESS>Deals
Women's Jewelry
Men's Jewelry
Engagement Rings
Weddings Bands
Tennis Bracelets
Necklaces
Burning Hearts Collection
Mocha Collection
Financing
menu
Home
Deals
Clearence
search
close
attach_money
attach_money
attach_money
attach_money


TweetyPretz and Co started in January 2019 with the launch of a simple directory dedicated to wedding invitation designers. We now have eight specialized wedding vendor directories, our main directory, as well as our online wedding planning guide to walk couples through the process of planning their wedding.
We now work with over 3,500 wedding vendor and are pleased to offer the best online wedding planning solution focused on promoting stress-free, personal, and unique weddings.


Forgot
password ?
Enter the email address associated
with your account.
Forgot Password
Your e-mail
Try another way


Class Map The following class Map aids in storing the layout of the environment.
More...
#include <map.hpp>
|
| | Map () |
| | Default constructor for Map. More...
|
| |
| | ~Map () |
| | Destructor for Map. More...
|
| |
| void | setWorkspaceBoundary (const std::vector< std::pair< double, double >> &boundary) |
| | setter function to set workspace boundary More...
|
| |
| void | addObstacle (const std::vector< double > &obstacle) |
| | function to add obstacle to a Map More...
|
| |
| bool | onSegment (const std::pair< double, double > &firstPoint, const std::pair< double, double > &secondPoint, const std::pair< double, double > &thirdPoint) |
| | checks if the second point lies on the line segment connecting first point and third point. More...
|
| |
| int | getOrientation (const std::pair< double, double > &firstPoint, const std::pair< double, double > &secondPoint, const std::pair< double, double > &thirdPoint) |
| | determines the oreintation i.e clockwise, anti-clockwise or collinearity of three ordered points. More...
|
| |
| bool | isIntersect (const std::pair< double, double > &treeNode, const std::pair< double, double > &newNode, const std::pair< double, double > &firstVertex, const std::pair< double, double > &secondVertex) |
| | determines if the line segments of tree node and new node, and first vertex and second vertex intersect More...
|
| |
| bool | isOutofMap (const std::pair< double, double > &node) |
| | determines if the given node is out of map bounds More...
|
| |
| bool | isValidNode (const std::pair< double, double > &treeNode, const std::pair< double, double > &newNode) |
| | determines if the given node can be added to the existing tree in the workspace without any conflicts More...
|
| |
| void | resetMap () |
| | function to reset the map by clearing the member variables More...
|
| |
Class Map The following class Map aids in storing the layout of the environment.
Default constructor for Map.
- Parameters
-
- Returns
- void
Destructor for Map.
- Parameters
-
- Returns
- void
| void Map::addObstacle |
( |
const std::vector< double > & |
obstacle | ) |
|
function to add obstacle to a Map
- Parameters
-
| obstacle | is a vector of double points [x1,y1,x2,y2...xN,yN] defining the boundary vertices of an obstacle |
- Returns
- void
| int Map::getOrientation |
( |
const std::pair< double, double > & |
firstPoint, |
|
|
const std::pair< double, double > & |
secondPoint, |
|
|
const std::pair< double, double > & |
thirdPoint |
|
) |
| |
determines the oreintation i.e clockwise, anti-clockwise or collinearity of three ordered points.
- Parameters
-
| firstPoint,secondPoint | and thirdPoint are each pair of double [x,y] points in workspace |
- Returns
- 0 if collinear, 1 if clockwise, 2 if anti-clockwise orientation as integer
| bool Map::isIntersect |
( |
const std::pair< double, double > & |
treeNode, |
|
|
const std::pair< double, double > & |
newNode, |
|
|
const std::pair< double, double > & |
firstVertex, |
|
|
const std::pair< double, double > & |
secondVertex |
|
) |
| |
determines if the line segments of tree node and new node, and first vertex and second vertex intersect
- Parameters
-
| treeNode | is the node in the tree as pair of double points [x,y] newNode is the node in the workspace as pair of double points [x,y] firstVertex, secondVertex are the vertices of an edge of an obstacle as pair of double points [x,y] each |
- Returns
- true if the line segments intersect, false if they don't
| bool Map::isOutofMap |
( |
const std::pair< double, double > & |
node | ) |
|
determines if the given node is out of map bounds
- Parameters
-
| node | is the point [x,y] in workspace as pair of double |
- Returns
- true if node is out of boundary, false otherwise
| bool Map::isValidNode |
( |
const std::pair< double, double > & |
treeNode, |
|
|
const std::pair< double, double > & |
newNode |
|
) |
| |
determines if the given node can be added to the existing tree in the workspace without any conflicts
- Parameters
-
| treeNode | is the node in the tree as pair of double points [x,y] newNode is the node in the workspace as pair of double points [x,y] |
- Returns
- true if the treeNode can be added to the tree, false otherwise
| bool Map::onSegment |
( |
const std::pair< double, double > & |
firstPoint, |
|
|
const std::pair< double, double > & |
secondPoint, |
|
|
const std::pair< double, double > & |
thirdPoint |
|
) |
| |
checks if the second point lies on the line segment connecting first point and third point.
- Parameters
-
| firstPoint,secondPoint | and thirdPoint are each pair of double [x,y] points in workspace |
- Returns
- true if second point lies on the line segment, false if it doesn't
function to reset the map by clearing the member variables
- Parameters
-
- Returns
- void
| void Map::setWorkspaceBoundary |
( |
const std::vector< std::pair< double, double >> & |
boundary | ) |
|
setter function to set workspace boundary
- Parameters
-
| boundary | is a vector of paired points [x,y] defining the boundary vertices |
- Returns
- void
| std::vector<double> Map::boundaryXlimits |
Variable to hold min and max limits of the workspace boundary on x axis
| std::vector<double> Map::boundaryYlimits |
Variable to hold min and max limits of the workspace boundary on y axis
| std::vector<std::vector<double> > Map::obstacleList |
Variable to hold list of obstacles. Each obstacle is defined as a vector of points in the order [x1, y1, x2, y2 ... xN, yN]
| std::vector<std::pair<double, double> > Map::workspaceBoundary |
of paired points [x,y]
Variable to hold workspace boundary as a vector
The documentation for this class was generated from the following file:
- /home/srinidhi/GitHub/My Repos/ENPM808X-Midterm-InformedRRTStar/include/map.hpp


Backs up the current state of the specified Siddhi Application.
POST http://localhost:9090/siddhi-apps/TestSiddhiApp1/backup
HTTP/1.1 201 Created Content-Type: application/json {"revision":"1499179260517_TestSiddhiApp1"}
curl -k -X POST http://localhost:9090/siddhi-apps/TestSiddhiApp1/backup
| Type | Name | Description | Schema | Default |
|---|---|---|---|---|
| Path |
appName required |
The name of the Siddhi Application. |
String |
| HTTP Code | Description | Schema |
|---|---|---|
200 |
The state of the Siddhi Application is successfully persisted. |
SiddhiAppRevision |
404 |
The Siddhi Application specified is not found. |
ApiResponseMessageWithCode |
500 |
An unexpected error occured. |
ApiResponseMessageWithCode |
Restores the state of the specified Siddhi Application.
POST http://localhost:9090/siddhi-apps/TestSiddhiApp1/restore
HTTP/1.1 200 OK Content-Type: application/json {"type":"success","message":"State restored to last revision for Siddhi App :TestSiddhiApp1"}
curl -k -X POST http://localhost:9090/siddhi-apps/TestSiddhiApp1/restore
| Type | Name | Description | Schema | Default |
|---|---|---|---|---|
| Path |
appName required |
The name of the Siddhi Application. |
String | |
| Query |
revision optional |
The revision number of the backup. |
String |
| HTTP Code | Description | Schema |
|---|---|---|
201 |
The Siddhi Application is successfully restored. |
ApiResponseMessage |
409 |
The Siddhi Application specified is not found. |
ApiResponseMessageWithCode |
500 |
An unexpected error occured. |
ApiResponseMessageWithCode |


http://www.speakers-podium.com/susangranger.
Susan Granger's review of "ENSLAVEMENT" (Showtime TV)
Jane Seymour, known as "the Queen of the TV mini-series," won't disappoint her fans with her portrayal of Fanny Kemble, a celebrated British actress whose passionate opposition to slavery affected the course of American history. A superstar of the19th century, Fanny Kemble is touring America in the 1840s when she falls in love with and marries Pierce Butler (Keith Carradine), a brash admirer and wealthy lawyer. Retiring from the stage with no regrets, she settles into his home outside Philadelphia. They have two children before the publication of her journals creates more gossip and controversy than her stubborn, strait-laced husband can bear. So, seeking tranquility, they move to Pierce's Georgia plantation, where Fanny gets a close-up look at the conditions which the slaves endure. "I can't imagine a life without freedom," she says. Appalled, she tries to improve their lives, getting to know them as individuals, not property. She sees their souls, not their skins. Her only ally is a sympathetic doctor (James Keach) who warns that she's treading on dangerous ground. But Fanny's indignation leads her to teach her slaves to read and arrange for several to escape through the Underground Railroad. A rebel at heart, Fanny isn't intimidated by anyone - which costs her her marriage, custody of her children and nearly her life. Her memoir, "A Journal of a Residence on a Georgia Plantation," which details the horrors of slavery, was published in 1963 during the Civil War. It not only became a best-seller but helped persuade the British government to curtail financial aid to the Confederacy, effectively ensuring the South's defeat. On the Granger Made-for-TV Movie Gauge, "Enslavement: The True Story of Fanny Kemble" is a socially responsible 6, an homage to the resilient human spirit. See it on Showtime TV at 8 P.M. on Easter Sunday, April 23, or on Wednesday, April 26 at 10:15 P.M. Parental warning: slavery is depicted with grim, horrifying reality.
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


HACK FOR A CAUSE
2018 CHALLENGES
We believe that with the power of the internet anything is possible, which is why we are challenging
you (yes, you!) to help us change your community and maybe even the whole world. It starts
with an innovative idea to solve problems impacting local organizations; it ends with a hackathon
and the opportunity to present your finished product to local businesses and entrepreneurs
who can then, in turn, revolutionize with these new tools.
+ Transformation for the public good, powered by fiber and you.
2017 HACK RESULTS
We had an incredibly successful hackathon with a spectacular turnout and some truly brilliant ideas. Multiple projects were successfully adopted by local businesses and are being implemented now.


This page will analyze the S.O.L.I.D Object-Oriented Design and what parts of my code fit in.
To keep it brief, S.O.L.I.D Object-Oriented Design is a means for programmers and developers to develop simple, robust, and updatable code. S.O.L.I.D breaks down to the following principles.
Let's focus on the Single Responsibility Principle since it is the most relatable to the code. At one point in the calculator's development, both calculating the input and managing the history of all the calculations. This was making the Calculate Class do more than what it was supposed to do. That was when a new directory called history was created. The calculations.py file in that directory would contain a class meant for only the history of the calculations. That implied that original calc_test.py would lose its history testing methods and just focus only on doing the calculations. As a result, history_test.py would be the file that would test all the methods relating the history of calculations.
The images here show that each class is only doing one thing. Calculate only handles calculations and history/calculations.py handles the items in, added, or removed from the history of those calculations.


Use checklists to streamline your activities, tasks and processes for business, sports and hobbies. Move paper based checklists to more convenient electronic forms (Include supporting material, trainings and media). Include photos and videos with completed checklists. Do checks with better quality and more easily from your mobile device.
Publish checklists to your teams. Use the teams to improve, share and refine checklists. Strong controls included, over who has access to your checklists, and who defines your teams.
Real time sharing of checklists, multiple people can work on the same checklist at the same time
Perform analysis and reporting on checklists, either as individual checklists, or as groups of checklists. Analyze trends, score results, roll into metrics.


--- title: "The 10 types of Beatles song" author: "Joshua Feldman" date: 2019-06-16T17:00:00-00:00 categories: ["R"] tags: ["rstats", "beatles", "clustering"] images: - /static/img/beatles.jpg ---
With 13 studio albums and a career that spanned more than a decade, The Beatles are not only known for being the best-selling band in history but also for their stylistic range. Although the Fab Four started off as a straightforward - albeit wildly successful - rock and roll outfit, they later broadened their output to include pop ballads, psychedelia and Indian raga rock. Their self-titled LP, released in 1968 and popularly known as ‘The White Album’, represented the height of their eclecticism, as it spanned hard rock (‘Back in the USSR’), ska (‘Ob-La-Di, Ob-La-Da’), country (‘Rocky Racoon’) and experimental (‘Revolution 9’).
The Beatles in India (Source: Rolling Stone)
For newcomers to the band, such diversity can be overwhelming. It might even appear that The Beatles’ music is uncategorisable – a series of discrete ventures into different genres and subgenres. However, with the power of k-means clustering, we can segment Beatles tracks according to nine acoustic features that are used by Spotify and academic researchers to classify music, namely:
The first thing we need to do is to retrieve the data. To do this, you need the spotifyr
package and a client ID/secret for the Spotify API. To obtain access, follow the instructions on the Spotify for Developers website.
# Load necessary packages
library(spotifyr)
library(tidyverse)
# Load Spotify credentials
Sys.setenv(SPOTIFY_CLIENT_ID = read.csv("~/spotify/spotify_credentials.csv")[1,1])
Sys.setenv(SPOTIFY_CLIENT_SECRET = read.csv("~/spotify/spotify_credentials.csv")[1,2])
# Retrieve access token
access_token <- get_spotify_access_token()
Once we’re hooked into the API, we can use the get_artist_audio_features()
function to retrieve The Beatles’ discography. Peeking inside the returned data frame, we can see columns on our audio features of interest – energy, tempo, duration, etc – as well as basic categorical features like album name, album release date and track name.
# Retrieve audio features from Spotify
beatles <- get_artist_audio_features("The Beatles")
# Print the first few rows
head(beatles)
## # A tibble: 6 x 23
## album_uri album_name album_img album_release_d… album_release_y…
## <chr> <chr> <chr> <chr> <date>
## 1 3KzAvEXc… Please Pl… https://… 1963-03-22 1963-03-22
## 2 3KzAvEXc… Please Pl… https://… 1963-03-22 1963-03-22
## 3 3KzAvEXc… Please Pl… https://… 1963-03-22 1963-03-22
## 4 3KzAvEXc… Please Pl… https://… 1963-03-22 1963-03-22
## 5 3KzAvEXc… Please Pl… https://… 1963-03-22 1963-03-22
## 6 3KzAvEXc… Please Pl… https://… 1963-03-22 1963-03-22
## # … with 18 more variables: album_popularity <int>, track_name <chr>,
## # track_uri <chr>, danceability <dbl>, energy <dbl>, key <chr>,
## # loudness <dbl>, mode <chr>, speechiness <dbl>, acousticness <dbl>,
## # instrumentalness <dbl>, liveness <dbl>, valence <dbl>, tempo <dbl>,
## # duration_ms <dbl>, time_signature <dbl>, key_mode <chr>,
## # track_popularity <int>
The Beatles’ discography on Spotify includes a lot of live albums and compilation albums that would muddy our analysis. To filter them out, we simply filter for an album_release_date
prior to 1971. We can then select our columns of interest and save them in a separate data frame.
# Filter for albums released before 1971
beatles_core <- beatles %>%
filter(album_release_date < "1971-01-01")
# Filter out bonus tracks on Sgt Pepper's album
beatles_core <- beatles_core[-(111:117),]
# Select track name and acoustic features
beatles_core_metrics <- beatles_core %>%
select(track_name, danceability, energy, loudness, speechiness,
acousticness, instrumentalness, liveness, valence, tempo)
To help us decide how many clusters to choose, we can use the elbow plot technique. Unfortunately, the elbow plot exhibits a smooth curve that does not make it easy to decide how many clusters would be appropriate. Nevertheless, 10 seems an appropriate number, since it sits somewhere in the middle of the elbow region of the plot.
# Set seed for reproducibility
set.seed(1234)
# Scale the data
beatles_core_metrics[2:10] <- scale(beatles_core_metrics[2:10])
# Use map_dbl to run many models with varying value of k (centers)
tot_withinss <- map_dbl(1:30, function(k){
model <- kmeans(x = beatles_core_metrics[2:10], centers = k)
model$tot.withinss
})
# Generate a data frame containing both k and tot_withinss
elbow_df <- data.frame(
k = 1:30,
tot_withinss = tot_withinss
)
# Plot the elbow plot
ggplot(elbow_df, aes(x = k, y = tot_withinss)) +
geom_line() +
scale_x_continuous(breaks = 1:30) +
geom_vline(xintercept = 10, linetype = "dashed")
Now that we have decided on how many clusters to use, we can fit our k-means model by using the kmeans
function in the built-in stats
package.
# Set seed for reproducibility
set.seed(1234)
# Run the model
beatles_k <- kmeans(beatles_core_metrics[2:10], centers = 10, nstart = 100)
We can now assign clusters to each of the tracks and visualise how they differ in key attributes. However, since it is impossible to visualise all of the nine dimensions that we clustered them on, we can only compare two attributes at a time – for example energy and valence.
# Save the clusters
beatles_core_metrics$cluster <- beatles_k$cluster
# Plot energy against valence
beatles_core_metrics %>%
ggplot(aes(energy, valence, color = as.factor(cluster))) +
geom_point()
We can get a more detailed impression of the clusters by looking at the matrix of cluster centres. The sign and magnitude of these values give us all the information we need to describe our clusters qualitatively.
# Print cluster centres
round(beatles_k$centers, 2)
## danceability energy loudness speechiness acousticness instrumentalness
## 1 0.07 0.50 0.20 0.55 -0.29 0.00
## 2 1.00 -0.67 -0.33 -0.31 1.10 -0.34
## 3 0.28 0.40 0.31 -0.46 -0.90 3.20
## 4 -0.81 -1.68 -2.39 -0.30 1.22 3.33
## 5 -0.34 1.10 0.66 0.31 -0.20 -0.30
## 6 -0.89 -0.11 0.09 -0.12 -0.75 0.02
## 7 -0.22 0.30 0.45 -0.33 0.05 -0.34
## 8 -0.38 0.20 -0.45 4.75 0.12 0.35
## 9 0.71 0.28 0.39 -0.31 -0.78 -0.32
## 10 -0.80 -1.69 -1.39 -0.29 1.44 -0.30
## liveness valence tempo
## 1 2.84 -0.19 -0.58
## 2 -0.44 0.29 0.04
## 3 -0.09 1.03 -0.05
## 4 0.09 -1.81 -0.88
## 5 0.12 0.82 0.92
## 6 -0.35 -1.04 0.84
## 7 0.23 0.38 -1.06
## 8 0.30 -0.43 0.35
## 9 -0.46 0.54 -0.12
## 10 -0.59 -1.35 -0.22
The Beatles performing ‘Get Back’ on the rooftop of Apple Corps at 3 Savile Row (Source: Jeffrey Pepper Rodgers)
With high liveness, Cluster #1 tracks give the impression that they were recorded in front of a live audience. They are energetic and written with the stage in mind.
Songs in Cluster #2 – which I’ve loosely called ‘Ballads’ – come under the broad umbrella of folk rock, often telling wistful tales about colourful characters or romantic interests. The cluster also captures some of The Beatles’ experiments with baroque pop (‘Eleanor Rigby’, ‘For No One’) and music hall (‘When I’m Sixty Four’, ‘Your Mother Should Know’).
The three tracks in Cluster #3 are statistical anomalies, perhaps too short for their musical features to be reliably expressed. Nothing much to see here.
Cluster #4 comprises the instrumental portion of The Beatles’ portfolio. Most of the Yellow Submarine album – the soundtrack to the animated film of the same name – is sorted into this cluster.
Cluster #5 is classic rock and roll, with high energy, high tempo and an upbeat mood. It picks up many of the early Beatles classics (‘Twist And Shout’, ‘I Saw Her Standing There’, ‘Love Me Do’), as well as the band’s later experiments with hard rock (‘Back in the U.S.S.R.’). This is a coherent cluster that works well as a standalone playlist.
Several of the tracks in this cluster were penned by George Harrison and show an Eastern or psychedelic influence (‘Tomorrow Never Knows’, ‘Blue Jay Way’). They are often sad and meditative, whether contemplating love and devotion (‘Something’) or the loneliness of a spiritual hermit (‘Dear Prudence’). There is a skew towards The Beatles’ later work, with no tracks from the first four albums.
Cluster #7 is distinguished by its slow tempo, with languorous songs including ‘Dig A Pony’ (59 bpm), ‘Little Child’ (76 bpm) and ‘All My Loving’ (78 bpm). A fifth of the tracks are from the band’s second album, ‘With the Beatles’.
This small cluster picks up some of The Beatles’ more lyrically dense tracks, primarily characterised by their descriptiveness and emphasis on the spoken word.
Cluster #9 sits somewhere between the hard rock sound of Cluster #5 and the folk rock sound of Cluster #2. It has no distinguishing features, with fairly average loadings for all nine of the acoustic features. It is the most populous cluster, representing 21% of The Beatles’ discography.
Cluster #10 is a collection of sleepy gems from The Beatles’ catalogue and works well as a standalone playlist (aside from the intrusion of ‘Her Majesty’ towards the end). Primarily characterised by a low energy, it is a nice assortment of songs to drift away to.
K-means clustering has done a decent job of organising The Beatles’ diverse discography into a set of coherent segments. The nine audio features describe the tracks with some accuracy, allowing the algorithm to make sensible groupings.
That said, the method does occasionally cluster on features that – although descriptive in a technical sense – do not convey the true mood or timbre of the music. For example, Cluster #8 is distinguished by ‘speechiness’, but the songs it captures would likely be placed elsewhere if sorted by hand. This is a problem with the the data itself rather than the algorithm.
A more comprehensive clustering could take into account the lyrics of each song, which we can imagine would help to group together songs about, for example, love and relationships. Even so, the current method has proved an effective means of studying one of the most eclectic rock portfolios in music history.