Loops, Functions and Conditional Statements
This is a simple app to calculate a future value of a investiment. It use four Javascript Functions and one FOR loop conditional. Functions passing parameters and values. And a IF-ELSE statements to check if values entered are acceptable. When click the button, the loop interaction is showed aside.
Enter values:
Balance : (100 - 10,000)
Annual Rate : (2 - 20)
Months : (6 - 24)
For Loop Interactions(months):
Arrays and Associative Arrays
This is a example how create and interact values of a simple. In this case, I use a FOR - IN loop to populate a HTML Dropdown list. The SUBMIT button have no efect, only set the value. Click list down arrow to see array text content.
Associative arrays are dynamic objects that use keywords to associate the value. Look a example:
var myCar = { make:"Ford", model:"Mustang", year:1969 };
The array values can be accessed using associate keywords:
console.log(myCar.model);


BLUSH (HONG FEN)(director: Li Shaohong; cast: Wang Ji (Qiuyi), Wang Zhiwen (Lao Pu), He Saifel Xiao), Cao Lei (narrator), Wang Rouli (Mrs. Pu), 1994-China)
There is no doubt about the oppressiveness of the Chinese Communist regime, and this film, more than any other that I have seen, recently, presents the devastating emotional conflicts the Communist revolution has done to its people, even though, it is not overtly critical of them. It is beautifully filmed in the style of a formal Chinese landscape painting, using the commonplace to be viewed as something that goes beyond its present linear form, to give it an eternal flavor from what it might first appear like. The story is from a work by Su Tong, whose other novel was the basis for RAISE THE RED LANTERN. The story is related to us by a woman narrator (Cao), who we never see on screen.
In 1949 The People's Liberation Army closes down all the country's brothels, and in the outskirts of Shanghai, they close down the Red Happiness Inn, where all the girls are taking aboard a barge and turned over for re-education to an internment camp. Qiuyi (Ji) and Xiao (He) are very close, like sisters, with Xiao being weak-natured (she was born to be a whore, born in the Red Happiness Inn) and is very dependent on the independent minded Qiuyi.
 He puts her up in their luxurious house, and takes pleasure in their relationship, until his mother openly disapproves of the girl and asks her to leave. He looks for a compromise to the situation, and tells Qiuyi he will get her an apartment where they can share a love nest. She is insulted by this, and storms out of the house, choosing to follow wherever fate takes her. It takes her to a Buddhist monastery, where she is forced to shave her head and live a pure life without any worldly desires, if she wishes to stay there. With much reluctance, she does this, and lives unhappily there until the nuns discover that she is pregnant and ask her to leave. Meanwhile, Lao is rebuffed when he visits her in the monastery, she is ashamed for him to see her without her hair. He leaves, and we witness how the People's Liberation Army confiscates his land and wealth, and forces him to become an accountant in a factory, paying him an unlivable wage. He starts a relationship with Xiao, after visiting her in the factory she now works at after being rehabilitated. After a night of sleeping together, she conjoles him into marrying her, telling him he will never see Qiuyi again.
At their marriage, Qiuyi comes by to give her a bracelet as a present. Xiao follows her outside, begging her to listen to why she got married, telling her that Lao talked her into it. Qiuyi says there is nothing to say, that she is not stupid, she knows when someone is lying to her, and then she gives Xiao, impulsively, another present, her umbrella, telling her she doesn't need it now that it stopped raining. The narrator tells us that in Chinese, umbrella sounds very similar to separation.
 The third party in this unhappy triangle returns home to her impoverished childhood, after the monastery kicked her out and she miscarriaged at the shut door of the monastery, in the driving rain, and would have died except for the belated pity of one of the nuns who saved her life. As things seem hopeless, and she seems to have lost all her confidence; just to survive, she marries an old man who has a tea shop. He is so insignificant to the story, that we never even see him.
After much misery, seeing no way out of his problems, Lao decides to embezzle money from his factory. He mails most of the money he stole to Qiuyi, and he gives enough for Xiao to have a week's worth of pleasure. He is caught and executed. The narrator relates to us the events of the firing squad, and we learn how insignicant his death was. All we see, is the camera following the bland landscape, and all we hear of his death, are the shots being fired and the narrator telling us how he was expressionless at the time of his death.
Qiuyi learns she can't have children anymore, so she pays a visit to Xiao, who finds the child to be a burden on her. Qiuyi offers to take the child from her and raise him as her own. This is consummated when Xiao meets someone from the north, and decides to run away with him. Qiuyi renames the baby "New China". That is about as optimistic as it gets for this bitter tale of politics and romance, told from a woman's point of view.
This is a very serious, stylized film, artistically filmed with many long angle camera shots, that give the film a depth that goes beyond the mere telling of the story, though it seemed to be dragging it heels at times, as the story just hit dry spots in it. Its use of color cinematography was startling, as yellow was most effectively used to both evoke a sense of renunciation and hope. It was the color of Qiuyi's umbrella and supposedly her favorite color.
This is a most interesting but not particularly penetrating film to come out of modern China, one that is most blunt and cruel in picking up the human travails and emotional discontentments that the people faced in the hands of their liberators, but not able to say too much about why these hardships are taking place. It always seems that the one's who want to help you the most, end up doing you the most harm, and that seems no different with the self-righteous Communists trying to change the lives of prostitutes, than it does with any other group blindly follow their ideologies and forcing their will unto others.
REVIEWED ON 12/26/98 GRADE: B-
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
© ALL RIGHTS RESERVED DENNIS SCHWARTZ
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


Start
Stop
Prob. threshold:
Duration x1
Duration x2
Include audio waveform
Enter transfer words
Dataset IO >>
↓ Download dataset as file
↑ Upload dataset
Evaluate model on dataset
Epochs:
Fine-tuning (FT) epochs:
Augment by mixing noise:
Start transfer learning
Model IO >>
Load:
Delete
Save model


This is the first answer.
This is the second answer.
This is the third answer.
Note: "Start Animation" button multiple times to see how the relative works.


new AliTV(svg)
Creates an object of type AliTV for drawing whole genome alignment visualizations
Parameters:
| Name | Type | Description |
|---|---|---|
svg |
Object | jQuery object containing a svg DOM element. Visualizations will be drawn on this svg. Size may be changed by object methods. Previous content will be deleted. |
Example
// initializes an AliTV object (wga) on the svg element with id 'canvas'
var svg = $('#canvas');
var wga = new AliTV(svg);
Members
cache
property to cache calculated values
Properties:
| Name | Type | Description | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
cache |
Object | the data dependent displaying information
Properties
|
conf
property to store configuration options
Properties:
| Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
linear |
Object | The configuration options for the linear layout.
Properties
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
circular |
Object | The configuration options for the circular layout.
Properties
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
minLinkIdentity |
Number | The minimum of the link identity the user wants to color. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
maxLinkIdentity |
Number | The maximum of the link identity the user wants to color. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
midLinkIdentity |
Number | The middle of the link identity the user wants to color. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
minLinkIdentityColor |
String | The color of the minimum link. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
maxLinkIdentityColor |
String | The color of the maximum link. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
midLinkIdentityColor |
String | The color of the middle link. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
minLinkLength |
Number | The minimum length of a link: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
maxLinkLength |
Number | The maximum length of a link. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
graphicalParameters |
Object | The configuration options for all graphical parameters.
Properties
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
layout |
String | Contains the current layout, this means linear or circular. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
tree |
Object | Contains the configuration objects for drawing a tree.
Properties
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
features |
Object | Contains the configuration for feature groups.
Properties
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
labels |
Object | The configuration options for the text labels.
Properties
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
offset |
Object | Contains values for the offset
Properties
|
data
property to store the data
Properties:
| Name | Type | Description | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
karyo |
Object | the chromosome information
Properties
|
||||||||||||||||||||||||||||||||||||
features |
Object | the feature information, feature type as keys
Properties
|
||||||||||||||||||||||||||||||||||||
links |
Object | the link information, Properties
|
filters
property to store data specific drawing options (structure highly dependent on data structure)
Properties:
| Name | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
filters |
Object | the data dependent displaying information
Properties
|
inTransaction
boolean that indicates whether AliTV is inside transaction, see functions startTransaction and endTransaction
Properties:
| Name | Type | Description |
|---|---|---|
inTransaction |
boolean | is AliTV currently in transaction |
onChangeCallbacks
array of registered onChange callback functions
Properties:
| Name | Type | Description |
|---|---|---|
onChangeCallbacks |
Array | array of callback functions |
svg
property to contain the svg DOM element as jQuery Object
svgD3
property to contain the svg DOM element as d3 Object
Methods
changeChromosomeOrder(id:, value:)
This function is supposed to change the order of chromosomes according to their genome.
If a genome has only one chromosomes it is not possible to change the order.
Parameters:
| Name | Type | Description |
|---|---|---|
id: |
The name of the selected chromosome. | |
value: |
+1 (moves right) and -1 (moves left). |
changeChromosomeOrientation(chromosome:)
This function is supposed to change the orientation of an assigned chromosome from reverse equal false or reverse equal true.
Parameters:
| Name | Type | Description |
|---|---|---|
chromosome: |
String | the selected chromosome which orientation should be changed. |
changeChromosomeVisibility(chromosomeName:)
This function is supposed to change the visibility of a selected chromosome.
The function gets the name of a chromosome and set his visibility in filters.karyo.chromosomes equal false or true.
Parameters:
| Name | Type | Description |
|---|---|---|
chromosomeName: |
String | the name of the selected chromosome. |
changeGenomeOrder(name:, value:)
This function is supposed to swap a genome with its adjacent genomes according to the order of all genomes which is defined in ali.filters.karyo.genome_order.
Parameters:
| Name | Type | Description |
|---|---|---|
name: |
String | the name of the selected genome. |
value: |
Number | +1 or -1. The number defines if the genome is moved one genome up or down. |
clearAli()
This function is supposed to clear the complete drawing area by removing all children from the svg.
colorKaryoByGenomeId()
This function color karyos according to their genome_id and is called by drawLinearKaryo within the style attribute
It operates on the genome_id of the links and therefore the genome_id should be assigned to the function
The genome_id is assigned to a color which is used by the drawLinearKaryo function, so the returned value is the RGB farbcode
colorLinksByIdentity()
This function color links according to their identity and is called by drawLinearLinks within the style attribute
It operates on the identity value of the links and therefore the identity should be assigned to the function
The identity is assigned to a color which is used by the drawLinearLinks function, so the returned value is the RGB farbcode
drawCircular()
This function draws the data in the circular layout.
It operates on the data of the object and therefore needs no parameters.
It draws directly on the svg and therefore has no return value.
drawCircularKaryo(The)
This function draws the karyos in the circular layout, color them according to their genome_id and add some eventHandlers.
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Array | array containing the coordinates as returned by getCircularKaryoCoords() |
drawCircularLinks(The)
This function draws links in the circular layout
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Array | array circularLinkCoords containing the coordinates of all links as returned by getCircularLinkCoords() |
drawCircularTicks(The)
This function draws the ticks to the karyos in the circular layout
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Array | array containing the coordinates as returned by getCircularTickCoords() |
drawEqualLayout(The)
This function should draw the equal layout according to the current layout.
Parameters:
| Name | Type | Description |
|---|---|---|
The |
String | current layout, this means circular or linear. |
drawFeatureLegend()
This function is supposed to draw a legend for all the supportedFeatures.
drawLinear()
This function draws the data in the linear layout.
It operates on the data of the object and therefore needs no parameters.
It draws directly on the svg and therefore has no return value.
drawLinearFeatureLabels(linearFeatureLabelCoords:)
This method is supposed to draw labels to all features.
Parameters:
| Name | Type | Description |
|---|---|---|
linearFeatureLabelCoords: |
get the coords for the feature labels which are returned by getFeatureLabelCoords. |
drawLinearFeatures(The)
This function draws the features on the karyos in the linear layout, color them according to the configuration.
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Array | array containing the coordinates of the features as returned by getLinearFeatureCoords() |
drawLinearGenomeLabels(linearGenomeLabelCoords:)
This function is supposed to draw the text labels for genomes.
Parameters:
| Name | Type | Description |
|---|---|---|
linearGenomeLabelCoords: |
gets the coords of the genome labels whcih is returned by getGenomeLabelCoords. |
drawLinearKaryo(The)
This function draws the karyos in the linear layout, color them according to their genome_id and add some events to the chromosome.
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Array | array containing the coordinates as returned by getLinearKaryoCoords() |
drawLinearLinks(The)
This function draws adjacent links in the linear layout
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Array | array linearLinkCoords containing the coordinates of all links as returned by getLinearLinkCoords() |
drawLinearTickLabels(linearTickCoords)
This method is supposed to label the ticks with configurable tick labels.
Parameters:
| Name | Type | Description |
|---|---|---|
linearTickCoords |
drawLinearTicks(The)
This function draw the ticks in the linear layout.
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Array | array containing the coordinates as returned by getLinearTickCoords() |
drawLinkIdentityLegend()
This function is supposed to draw a legend for the color code of the link identity.
drawPhylogeneticTree()
This method is supposed to draw a phylogenetic tree next to the chromosomes.
In the default configuration the tree is not drawn, but the user can set drawTree equal true and this method wil be called.
endTransaction()
This function is supposed to end a transaction, call triggerChange once and allow for new changes to trigger directly.
fadeLinks(The)
This function is called by a mouse event.
If the mouse pointer enters the area of a chromosome all links should be faded out except the the links of the chromosome the mouse points to.
If the mouse pointer leaves the area of a chromosome all links should be faded in.
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Number | opacity value is a number between 0 and 1 and indicates the degree of the colored link opacity. |
filterChromosomeOrder(visibleChromosomes:)
This method is supposed to filter the order of chromosomes according to all visible chromosomes.
Parameters:
| Name | Type | Description |
|---|---|---|
visibleChromosomes: |
gets all visible chromosomes |
Returns:
chromosomeOrder: returns the order of the visible chromosomes
filterChromosomes()
This method should call other filter functions in order to filter the visible chromosomes.
Returns:
visibleChromosomes: returns only chromosomes which are visible
filterChromosomeWithoutVisibleLinks(visibleChromosomes:)
This method should filter all chromosome which have no visible links with the current configurations
Parameters:
| Name | Type | Description |
|---|---|---|
visibleChromosomes: |
the method gets all current visible chromosomes. |
Returns:
filteredChromosomes: the method returns only chromosomes which have visible links
filterLinks(visibleChromosomes:)
This method should call functions in order to filter the links.
The nested link data structure with genome_ids as keys is returned as a flat structure with link_ids as keys.
The filteredLinks are also saved as an object property.
Parameters:
| Name | Type | Description |
|---|---|---|
visibleChromosomes: |
gets the chromosomes which are visible in the current configurations. |
Returns:
visibleLinks: return all links which are visible
filterLinksByAdjacency()
This method should filter links according to their adjacency (if the according option is set and the layout is linear).
The nested link data structure with genome_ids as keys is returned as a flat structure with link_ids as keys.
Returns:
filteredLinks: returns only links which are between chromosomes of adjacent genomes (if needed) in a flat link object.
filterLinksByIdentity(visibleLinks:)
This method should filter links according to their identity.
Parameters:
| Name | Type | Description |
|---|---|---|
visibleLinks: |
gets all current visible links. |
Returns:
filteredLinks: return all links which are visible with the current configuration.
filterLinksByLength(visibleLinks:)
This method should filter links according to their length.
Parameters:
| Name | Type | Description |
|---|---|---|
visibleLinks: |
gets all current visible links. |
Returns:
filteredLinks: return all links which are visible with the current configuration.
filterVisibleChromosomes(visibleChromosomes:)
This method should filter all chromosome which are set visible in conf.filters.karyo.chromosomes[].visible
Parameters:
| Name | Type | Description |
|---|---|---|
visibleChromosomes: |
the method gets all current visible chromosomes. |
Returns:
filteredChromosomes: the method returns only chromosomes whose visibility is set true
filterVisibleLinks(visibleLinks:, visibleChromosomes:)
This method should filter the visible links according to visible chromosomes
Parameters:
| Name | Type | Description |
|---|---|---|
visibleLinks: |
contains all currently visible links. | |
visibleChromosomes: |
contains the chromosomes, which are visible in the current configurations in order to filter all links, which have no target or source chromosome. |
Returns:
visibleLinks: returns only links which source or target are in visible chromosomes
getAlignmentRegion() → {Object}
This function returns the internal alignmentRegion g element as d3 selection. It is created if it does not exist.
It also creates and adds the clipPath if it does not exist.
Returns:
internal alignmentRegion g as d3 selection.
- Type
- Object
getCanvasHeight() → {Number}
This function returns the height of the svg drawing area.
Returns:
The height of canvas.
- Type
- Number
getCanvasWidth() → {Number}
This function returns the width of the svg drawing area.
Returns:
The width of canvas.
- Type
- Number
getCircularKaryoCoords() → {Array}
Calculates coordinates for the chromosomes to draw in the circular layout.
This function operates on the data property of the object and therefore needs no parameters.
This function is primarily meant for internal usage, the user should not need to call this directly.
Returns:
Array containing one Object for each element in data.karyo of the form {karyo: 'karyo_name', startAngle:0, endAngle:1}
- Type
- Array
getCircularLinkCoords(The) → {Array}
Calculate coordinates for the links to draw in the cirular layout and uses link-data and karyo-coordinates
This function is primarily meant for internal usage, the user should not need to call this directly
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Array | array containing the coordinates as returned by getCircularKaryoCoords() |
Returns:
Returns an Array which is presented in the following example
- Type
- Array
Example
[
{"linkID": "l1", "source": {"startAngle":1, "endAngle":3}, "target": {"startAngle":4, "endAngle":6}}
]
getCircularTickCoords(The) → {Array}
This function calculates the coordinates (angles) for the ticks in the circular layout
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Array | array containing the coordinates as returned by getCircularKaryoCoords() |
Returns:
Returns an Array of angles
- Type
- Array
getFeatureLabelCoords(gets)
This method is supposed to calculate the coordinates for feature labels.
This method is called if the configuration of addFeatureLabels or showAllLabels is true.
Parameters:
| Name | Type | Description |
|---|---|---|
gets |
the coordinates of the drawn features. |
Returns:
featureLabelCoords: returns an array which contains the coords for the feature labels.
getFeatureProperty(groupId, property) → {String}
This function returns the specified property of the given supported feature.
Parameters:
| Name | Type | Description |
|---|---|---|
groupId |
String | The group ID of the desired supported feature. |
property |
String | The desired property of the feature (e.g. color, form, ...). |
Throws:
-
Will throw an error if the feature groupId is not supported.
-
Will throw an error if the property is undefined in the feature group.
Returns:
The value of the property of the given supported feature.
- Type
- String
getGenomeColor() → {Array}
This function returns an array which contains the color of the first and the last genome.
The colors are defined in the conf-object.
Returns:
The color of the first and the last genome.
- Type
- Array
getGenomeDistance() → {Number}
This function calculates the appropriate genomeDistance of the linear layout for the current svg height.
Returns:
genomeDistance - the distance between genomes in the linear layout.
- Type
- Number
getGenomeLabelColor()
This function returns the color of the genomeLabels.
The color is defined in the conf-object.
Returns:
The color of the genome labels.
getGenomeLabelCoords()
This method is supposed to calculate the coordinates for genome labels.
This is called if the configuration of addGenomeLables is true.
Returns:
genomeLabelCoords: returns an array which contains the coords for the genome labels.
getGenomeLabelSize()
This function returns the size of the genomeLabels.
The size is defined in the conf-object.
Returns:
The size of the genome labels.
getInvisibleChromosomes()
This functions gets the number of all chromosomes which are set invisible.
Returns:
invisibleChromosomeSize: the number of all chromosomes which are invisible.
getInvisibleFeatures()
This functions gets the number of all features which are in ali.filters.features.invisibleFeatures
Returns:
invisibleFeatureSize: the number of all features which are invisible.
getInvisibleLinks()
This functions gets the number of all links which are in ali.filters.links.invisibleLinks
Returns:
invisibleLinkSize: the number of all Links which are invisible.
getJSON() → {Object}
This function returns the content of the AliTV object as a single object containing data, filters and conf.
Returns:
The content of the AliTV object.
- Type
- Object
getKaryoHeight() → {Number}
This function returns the height of the chromosomes between two genomes which is set in the configuration.
Returns:
The actual height of chromosomes.
- Type
- Number
getKaryoSpacer() → {Number}
This function returns the information of the spacer between two chromosomes which is set in the configuration.
Returns:
The actual spacer.
- Type
- Number
getLayout() → {String}
This function returns the current layout.
Returns:
The current layout: linear or circular.
- Type
- String
getLegendRegion() → {Object}
This function returns the internal legendRegion g element as d3 selection. It is created if it does not exist.
Returns:
internal legendRegion g as d3 selection.
- Type
- Object
getLinearFeatureCoords(linearKaryoCoords:) → {Array}
Calculates coordinates for different shapes according to the different feature classes in order to draw in the linear layout.
This function operates on the linearKaryoCoords.
This function is primarily meant for internal usage, the user should not need to call this directly.
Parameters:
| Name | Type | Description |
|---|---|---|
linearKaryoCoords: |
Array | contains the coordinates for all chromosomes of the form: {karyo: 'karyo_name', x:0, y:0, width:10, height:10}. |
Returns:
linearFeatureCoords: contains the coordinates for feature classes of the form: {id: "featureId", x:0, y:0, width: 45, height: 10}
- Type
- Array
getLinearKaryoCoords() → {Array}
Calculates coordinates for the chromosomes to draw in the linear layout.
This function operates on the data property of the object and therefore needs no parameters.
This function is primarily meant for internal usage, the user should not need to call this directly.
The function also updates the value cache.linear.maxGenomeSize
Returns:
Array containing one Object for each element in data.karyo of the form {karyo: 'karyo_name', x:0, y:0, width:10, height:10}
- Type
- Array
getLinearLinkCoords(The) → {Array}
Calculate coordinates for the links to draw in the linear layout and uses link-data and karyo-coordinates
this function should also check if links are adjacent or not and save this information in the link property "adjacent"
This function is primarily meant for internal usage, the user should not need to call this directly
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Array | array containing the coordinates as returned by getLinearKaryoCoords() |
Returns:
Returns an Array which is presented in the following example
- Type
- Array
Example
[
{"linkID": "l1", "source0": {"x":0, "y":10}, "target0": {"x": 0, "y":20}, "source1": {"x":10, "y":10}, "target1": {"x":10, "y":20}, "adjacent": true}
]
getLinearTickCoords(The) → {Array}
This function calculates the tick coords and operates on the chromosomes and need the length in bp and the width in px of the karyo.
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Array | array containing the coordinates as returned by getLinearKaryoCoords() |
Returns:
The array containing the tick coordinates as shown in the following example.
Ticks for one chromosome have to be adjacent and in the order from start to end.
- Type
- Array
Example
linearTickCoords = [{id: 'c1', x1: 0, x2: 0, y1: 860, y2: 910}, {id: 'c2', x1: 0, x2: 0, y1: 660, y2:710}]
getLinkColor() → {Array}
This function returns an array which contains the color of the minLinkIdentity and the maxLinkIdentity.
The colors are defined in the conf-object.
Returns:
The color of the links with the minimal and maximal identity.
- Type
- Array
getLinkOpacity()
This method is supposed to return the default link opacity.
Returns:
linkOpacity: the default link opacity.
getMaxChromosomeLength()
This function is supposed to return the value of the longest chromosome.
Returns:
maxLinkLength: the value of the longest chromosome in bp.
getMaxLinkIdentity()
This method is supposed to return the current maximal identity of links.
Returns:
maximalLinkIdentity: the maximal identity of links.
getMaxLinkLength()
This method is supposed to return the current maximal length of links.
Returns:
maximalLinkLength: the maximal length of links.
getMinLinkIdentity()
This method is supposed to return the current minimal identity of links.
Returns:
minimalLinkIdentity: the minimal identity of links.
getMinLinkLength()
This method is supposed to return the current minimal length of links.
Returns:
minimalLinkLength: the minimal lenght of links.
getOffset() → {Number}
This function returns the offset for a specific chromosome.
Returns:
The offset in bp of a chromosome.
- Type
- Number
getOuterRadius() → {Number}
This function calculates the appropriate outerRadius of the circular layout for the current svg dimensions.
Returns:
outerRadius - the outer radius in px
- Type
- Number
getSupportedFeatures() → {Array}
This function is supposed to return an array of supported features
Returns:
supportedFeatures
- Type
- Array
getSvgAsText() → {String}
This function returns the content of the svg as a text string.
Returns:
The content of the svg.
- Type
- String
getSvgHeight() → {Number}
This function returns the height of the svg.
Returns:
The height of svg.
- Type
- Number
getSvgWidth() → {Number}
This function returns the width of the svg.
Returns:
The width of svg.
- Type
- Number
getTickDistance() → {Number}
This function returns the distance of the chromosome ticks in bp.
Returns:
The tick distance in bp.
- Type
- Number
getTickLabelColor()
This function returns the color of the tick Labels.
The color is defined in the conf-object.
Returns:
The color of the tick labels.
getTickLabelFrequency() → {Number}
This function returns the current frequency of tick labels.
Returns:
Returns the frequency of the tick labels.
- Type
- Number
getTickLabelSize()
This function returns the size of the tick Labels.
The size is defined in the conf-object.
Returns:
The size of the tick labels.
getTreeWidth() → {Number}
This function returns the current width of the phylogenetic tree.
Returns:
The current tree width.
- Type
- Number
hasTree() → {Boolean}
This method should check if the user provides tree data.
Returns:
Returns true when tree data exists and false when there is no tree data.
- Type
- Boolean
onDataChange(callback)
This function is supposed to register callback function which are called upon data change
Parameters:
| Name | Type | Description |
|---|---|---|
callback |
function | callback to be called upon data change |
removeLinksOutsideVisibleRegion(linkCoords, removeHalfVisible) → {Array}
This function returns linkCoords with those removed that have their ends outside the visible region.
Optionally also links with only one end in the visible region can be removed.
Parameters:
| Name | Type | Description |
|---|---|---|
linkCoords |
Array | linearLinkCoords as returned by getLinearLinkCoords |
removeHalfVisible |
boolean | if true also links with one end inside the visual region will be removed |
Returns:
- filtered linearLinkCoords
- Type
- Array
resetGenomeRegion(genome_id)
This function resets the genome_region filter to default for the specified genome
Parameters:
| Name | Type | Description |
|---|---|---|
genome_id |
String | genome_id |
rotateTreeToGenomeOrder() → {object}
This function is supposed to generate a tree from the supplied one that matches the current genome_order.
Returns:
tree - the tree in data rotated to match the current genome_order.
- Type
- object
setCanvasHeight(The)
This function replaces the old height of the drawing area for the alignment.
When the method gets a wrong value it throws an error message.
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Number | function gets the height of the svg drawing area which can be set by the user. |
Throws:
-
Will throw an error if the argument is empty.
-
Will throw an error if the argument is not a number.
-
Will throw an error if the argument is less than 0 or equal to 0.
setCanvasWidth(The)
This function replaces the old width of the drawing area for the alignment.
When the method gets a wrong value it throws an error message.
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Number | function gets the width of the svg drawing area which can be set by the user. |
Throws:
-
Will throw an error if the argument is empty.
-
Will throw an error if the argument is not a number.
-
Will throw an error if the argument is less than 0 or equal to 0.
setConf(conf)
Extends the existing conf of the AliTV object.
New features override the existing ones if conflicting. Non-conflicting configuration values are kept.
For the required format see the documentation of the conf property.
If you need to override the entire conf object write directly to the conf property of your AliTV object.
This is not recommended as AliTV will not function properly if some conf values are not set.
Parameters:
| Name | Type | Description |
|---|---|---|
conf |
Object | Object containing conf values |
setData(data)
Sets the data of the AliTV object.
For the required format see the documentation of the data property
Parameters:
| Name | Type | Description |
|---|---|---|
data |
Object | Object containing karyo, link and feature information |
Example
var svg = $('#canvas');
var wga = new AliTV(svg);
var karyo = {
'chromosomes': {
'c1': {'genome_id': 0, 'length': 2000, 'seq': null},
'c2': {'genome_id': 1, 'length': 1000, 'seq': null}
}
};
var features = {
'f1': {'karyo': 'c1', 'start': 300, 'end': 800},
'f2': {'karyo': 'c2', 'start': 100, 'end': 600}
};
var links = { "l1":
{'source': 'f1', 'target': 'f2', 'identity': 90}
};
wga.setData({'karyo': karyo, 'features': features, 'links': links};
setFeatureInvisible(featureID:, group:, karyo:)
This function gets a selected feature ID and pushes it to ali.filters.Features.invisibleFeatures.
The function marks all features, which are set invisible.
Parameters:
| Name | Type | Description |
|---|---|---|
featureID: |
gets the ID of the selected feature. | |
group: |
gets the group of the selected feature for example invertedRepeat. | |
karyo: |
gets the chromsome which belongs to the selected feature. |
Returns:
ali.filters.features.invisibleFeatures: returns the features which are invisible in the current settings.
setFeatureProperty(groupId, property, value:)
This function replaces the old color of the specified supported feature with the new color in the config-object.
Parameters:
| Name | Type | Description |
|---|---|---|
groupId |
String | the supported feature groupId for which the color should be set. |
property |
String | The desired property of the feature (e.g. color, form, ...). |
value: |
the new value for the property of the supported feature. |
Throws:
-
Will throw an error if the feature is not supported.
-
Will throw an error if the argument is empty.
setFilters(filters)
Sets the filters of the AliTV object.
For the required format see the documentation of the filters property
The filters are highly dependent on the data object and have to resemble its layout
Parameters:
| Name | Type | Description |
|---|---|---|
filters |
Object | Object containing data specific drawing information |
Example
var svg = $('#canvas');
var wga = new AliTV(svg);
var karyo = {
'chromosomes': {
'c1': {'genome_id': 0, 'length': 2000, 'seq': null},
'c2': {'genome_id': 1, 'length': 1000, 'seq': null}
}
};
var features = {
'f1': {'karyo': 'c1', 'start': 300, 'end': 800},
'f2': {'karyo': 'c2', 'start': 100, 'end': 600}
};
var links = {"l1":
{'source': 'f1', 'target': 'f2', 'identity': 90}
};
wga.setData({'karyo': karyo, 'features': features, 'links': links};
var filters = {
'karyo': {
'order': ['c1', 'c2'],
'genome_order': ['0', '1'],
'chromosomes': {
'c1': {'reverse': false, 'visible': true},
'c2': {'reverse': false, 'visible': true}
}
}
};
wga.setFilters(filters);
wga.drawLinear();
wga.drawCircular();
setGenomeColor(color:)
This function replaces the old colors of the start genome and the end genome with the new ones.
Parameters:
| Name | Type | Description |
|---|---|---|
color: |
the array contains the startLineColor and the endLineColor which is returned by getGenomeColor. |
Throws:
Will throw an error if the argument is empty.
setGenomeLabelColor(color:)
This function set a new color for the genome labels.
Parameters:
| Name | Type | Description |
|---|---|---|
color: |
the current color of genome labels which is returned by getGenomeLabelColor. |
Throws:
Will throw an error if the argument is empty.
setGenomeLabelSize(size:, The)
This function set a new size for the genome labels.
Parameters:
| Name | Type | Description |
|---|---|---|
size: |
the current size of genome labels which is returned by getGenomeLabelSize. | |
The |
Number | function gets the size of genome labels which can be set by the user. |
Throws:
-
Will throw an error if the argument is empty.
-
Will throw an error if the argument is not a number.
-
Will throw an error if the argument is less than 0 or equal to 0.
setJSON(json)
This is a convenience function to set data, filters and conf of the AliTV object with a single call.
Parameters:
| Name | Type | Description |
|---|---|---|
json |
Object | Object containing any of data, filters and conf. |
setKaryoHeight(The)
This function replaces the old height of the chromosomes with the new value in the config-object.
It is called by a blur()-event, when the decription field loses focus.
When the method gets a wrong value it throws an error message.
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Number | function gets the height of chromosomes which can be set by the user. |
Throws:
-
Will throw an error if the argument is empty.
-
Will throw an error if the argument is not a number.
-
Will throw an error if the argument is less than 0 or equal to 0.
setKaryoSpacer(The)
This function replaces the old spacer with the new spacer in the config-object.
It is called by a blur()-event, when the decription field loses focus.
When the method gets a wrong spacer it throws an error message.
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Number | function gets the spacer which can be set by the user. |
Throws:
-
Will throw an error if the argument is Sorry, you entered an empty value. Please try it again..
-
Will throw an error if the argument is not a number.
-
Will throw an error if the argument is less than 0 or equal to 0.
setLinkColor(color:)
This function replaces the old colors for the minimal and maximal link identity by the new ones.
Parameters:
| Name | Type | Description |
|---|---|---|
color: |
the array contains the minLinkIdentityColor and the maxLinkIdentityColor which is returned by getLinkColor. |
Throws:
Will throw an error if the argument is empty.
setLinkInvisible(selectedLinkID:)
This function gets the id of a selected link, hides it and pushes it to ali.filters.links.selectedLinks.
Parameters:
| Name | Type | Description |
|---|---|---|
selectedLinkID: |
gets the id of the selected link |
Returns:
ali.filters.links.invisibleLinks: returns the links which are invisible in the current settings of ali.filters.links.invisibleLinks.
setLinkOpacity(The)
This function sets a new default link opacity.
When the method gets a wrong value it throws an error message.
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Number | new opacity (value between 0 and 1) |
Throws:
-
Will throw an error if the argument is not a number.
-
Will throw an error if the argument is out of range [0,1].
setNewFeature(group:, form:, color:) → {ali.conf.features.supportedFeatures}
This function is supposed to get the parameters for adding a new feature group in conf.features.supportedFeatures.
Parameters:
| Name | Type | Description |
|---|---|---|
group: |
the name of the new feature group | |
form: |
the form for the group which is used by drawFeatures | |
color: |
the color for the new group |
Returns:
The current feature groups which are supported by AliTV
- Type
- ali.conf.features.supportedFeatures
setOffset(The, The)
This function sets a new offset for specific chromosome.
When the method gets a wrong value it throws an error message.
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Number | function gets the distance for shifting chromosomes which can be set by the user. |
The |
String | function gets the Id of the chromosome which should be shifted. |
Throws:
-
Will throw an error if the argument is empty.
-
Will throw an error if the argument is not a number.
setSvgHeight(height)
This function sets the height of the svg - it does not effect the size of the canvas, tree, etc.
When the method gets a wrong value it throws an error message.
Parameters:
| Name | Type | Description |
|---|---|---|
height |
Number | the desired height of the svg set by the user. |
Throws:
-
Will throw an error if the argument is empty.
-
Will throw an error if the argument is not a number.
-
Will throw an error if the argument is less than 0 or equal to 0.
setSvgWidth(width)
This function sets the width of the svg - it does not effect the size of the canvas, tree, etc.
When the method gets a wrong value it throws an error message.
Parameters:
| Name | Type | Description |
|---|---|---|
width |
Number | the desired width of the svg set by the user. |
Throws:
-
Will throw an error if the argument is empty.
-
Will throw an error if the argument is not a number.
-
Will throw an error if the argument is less than 0 or equal to 0.
setTickDistance(The)
This function replaces the old distance between ticks with the new distance in the config-object.
It is called by a blur()-event, when the decription field loses focus.
When the method gets a wrong value it throws an error message.
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Number | function gets the distance between ticks which can be set by the user. |
Throws:
-
Will throw an error if the argument is empty.
-
Will throw an error if the argument is not a number.
-
Will throw an error if the argument is less than 0 or equal to 0.
setTickLabelColor(color:)
This function set a new color for the tick labels.
Parameters:
| Name | Type | Description |
|---|---|---|
color: |
the current color of tick labels which is returned by getTickLabelColor. |
Throws:
Will throw an error if the argument is empty.
setTickLabelFrequency(tickLabelFrequency:)
This function replaces the old frequency of tick labels with the new tick label frequency in the config-object.
Parameters:
| Name | Type | Description |
|---|---|---|
tickLabelFrequency: |
the frequency of tick labels which is returned by getTickLabelFrequency. |
Throws:
-
Will throw an error if the argument is empty.
-
Will throw an error if the argument is not a number.
-
Will throw an error if the argument is less than 0 or equal to 0.
setTickLabelSize(size:, The)
This function set a new size for the tick labels.
Parameters:
| Name | Type | Description |
|---|---|---|
size: |
the current size of tick labels which is returned by getTickLabelSize. | |
The |
Number | function gets the size of tick labels which can be set by the user. |
Throws:
-
Will throw an error if the argument is empty.
-
Will throw an error if the argument is not a number.
-
Will throw an error if the argument is less than 0 or equal to 0.
setTreeWidth(The)
This function replaces the old tree width with the new tree width in the config-object.
When the method gets a wrong value it throws an error message.
Parameters:
| Name | Type | Description |
|---|---|---|
The |
Number | function gets the width of a phylogenetic tree which can be set by the user. |
Throws:
-
Will throw an error if the argument is empty.
-
Will throw an error if the argument is not a number.
-
Will throw an error if the argument is less than 0 or equal to 0.
showInvisibleFeature(selectedFeatureId:)
This function is supposed to get the ID of a selected feature, which is hidden and should be restored.
The function show the hidden feature and delete it from the invisibleFeatures-object in ali.filters.features.invisibleFeatures
Parameters:
| Name | Type | Description |
|---|---|---|
selectedFeatureId: |
the Id of the features which should be restored. |
Returns:
ali.filters.features.invisibleFeatures: the current features which are set invisible.
showInvisibleLink(selectedLinkID:)
This function is supposed to get the ID of a selected link, which is hidden and should be restored.
The function show the hidden link and delete it from the invisibleLinks-object in ali.filters.links.invisibleLinks
Parameters:
| Name | Type | Description |
|---|---|---|
selectedLinkID: |
the ID of the links which should be restored. |
Returns:
ali.filters.links.hiddenLinks: the current links which are set invisible.
startTransaction()
This function is supposed to start a transaction and prevent changes from being triggered during that time
triggerChange()
This function is supposed to call all registered callback functions
updateGenomeRegionBySvgRect(rect)
This function updates the genome_region filter according to the specified region on the svg
Parameters:
| Name | Type | Description |
|---|---|---|
rect |
Object | rect an object with properties x, y, width and height (relative to the svg) |


--- layout: page title: Donate! ---
Use this option to make a single contribution to GALT-Central Texas in any amount and for any purpose that is meaningful to you. Please leave a note in the memo option of the check out screen to what you would like this donation to be credited.
Make a tax-deductible donation to GALT-Central Texas through a monthly
PayPal subscription (EIN #75-2930618). Donation is charged to your PayPal account each month
unsubscribe
Support GALT-Central Texas while shopping at these sites!
On September 17, 2005, GALT-Central Texas lost a long-time devoted friend when Dr. Real Ransom, DVM and his wife were killed in a plane crash near Houston. Dr. Ransom had been associated with GALT-Central Texas since 1992 and was the founder of Great Oaks Animal Hospital. Over the years, he gave generously of his time and services to the foster dogs in our program and provided support to many of GALT-Central Texas's members. He is particularly remembered for his warmth and compassion.
To honor his commitment and service to greyhounds, GALT-Central Texas established the Real Ransom III DVM Emergency Medical Fund. All donations to this fund have been used exclusively for special needs greyhounds in foster care or in special cases after adoption.
If you have an extenuating circumstance, please contact<EMAIL_ADDRESS>to apply for this fund.


--- layout: default title: 下載區 image: hollow.jpg permalink: /download/ --- {% include top-section.html %} {% include download.html %}


Working with AngularJS applications
AngularJS applications have their own challenges when it comes to WebDriver test automation. The asycnhronous nature of Angular apps makes testing these applications particularly tricky when using traditional WebDriver-based technologies.
In the JavaScript world, Protractor provides an elegant solution to the problem of testing AngularJS apps. Protractor supports angular-specific locators and knows how to wait for Angular to finish processing pending tasks before proceeding to the next step of the test.
Serenity BDD integrates with ngWebDriver to leverage the power of Protractor from within your Serenity BDD test suites.
Waiting for Angular to finish asynchronous activities
Sometimes you need to wait until Angular has finished it’s application processing activities before interacting with an element or moving to the next step of a test. You can do this in a Serenity Page Object by calling the waitForAngularRequestsToFinish()
method, like this:
waitForAngularRequestsToFinish()
If you are using Screenplay, you can use the WaitUntil
class (from the net.serenitybdd.screenplay.waits
package), as shown here:
actor.attemptsTo(
Click.on(ADD_TO_CART),
WaitUntil.angularRequestsHaveFinished(),
Click.on(PURCHASE)
)
Working with AngularJS locators
Protractor provides a number of Angular-specific locators, such as by.model
, by.binding
and by.repeater
(note that the binding
and model
locators are not supported in Angular 2). The ngWebDriver library from Paul Hammant allows you to call Protractor locators from your Java test code.
ngWebDriver provides a special ByAngular
class that you can use in the place of the Selenium By
class, and that provides access to a number of Angular-specific locators.
In Serenity BDD, you can use the ngWebDriver locators anywhere you would use normal Webdriver locators. This includes the find()
and findAll()
methods of the Serenity PageObject
base class, but also in any Screenplay target locator.
Some examples are shown in the following sections.
Binding and Model
In Angular 1.x apps, you can use Protractor’s binding
and model
locators using the ByAngular.binding()
and ByAngular.model()
methods. In a Serenity Page Object, you could retrieve an element using the find()
method:
public class TodoListApp extends PageObject {
public void addTodo(String item) {
find(ByAngular.model("todo")).sendKeys(item, Keys.ENTER);
}
}
Or you could define a Screenplay `Target`like this:
Target TODO_INPUT_FIELD = Target.the("Todo input field")
.located(ByAngular.model("todo"));
Note that these won’t work with Angular 2.x or above.
Button text
Often it is useful to identify button by it’s text label. Traditionally this calls for XPath. But Protractor gives us a more elegant approach. Suppose you have the following HTML element on your page.
<button>Save</button>
You can locate this element using the buttonText()
method:
find(ByAngular.buttonText("Save")).click();
For more flexibility, you can also use the partialButtonText()
method.
CSS Containing Text
Another useful trick is to fine elements that match a given CSS selector, and which contain a specific string. This is not usually possible with CSS in WebDriver, so you need to resort to chained selectors or cumbersome XPath expressions.
Suppose you have an Angular app with the following code:

Red

Blue

You could locate the Red
entry in this list by using the following code:
find(ByAngular.cssContainingText("#product .colour", "Red"))
Using repeaters
You can use ByAngular.repeater()
to retrieve elements that have been implemented on the page using ng-repeat
. For example, in the TodoMVC App, a list of todo items is represented using the ng-repeat
attribute:

We could retrieve these items using the following method in a PageObject
class:
public class TodoListApp extends PageObject {
public List<String> visibleTodoItems() {
return findAll(ByAngular.repeater("todo in todos"))
.stream()
.map(WebElement::getText)
.collect(Collectors.toList());
}
}
Angular/JS and Serenity Screenplay
Serenity Screenplay provides seamless integration with Angular/JS locators.
For example, the Target
class accepts ByAngular
locators, so you can define element locators with no additional work. Let’s see how this Angular/JS support comes together to make working with Angular applications easier with Screenplay.
The first thing we need to do in our Todo application is to enter a new todo item by typing a value into the 'new todo' field. We could write a Target
object that uses the ByAngular
locator to find this input field as shown here:
private static Target NEW_TODO
= Target.the("New Todo")
.located(ByAngular.model("newTodo"));
In the context of a Screenplay test with an actor and a browser, we could use this target like this:
Actor tim = Actor.named("Tim")
.describedAs("A todo-list enthusiast");
tim.can(BrowseTheWeb.with(driver));
tim.attemptsTo(
Open.url("http://todomvc.com/examples/angularjs/#/"),
Enter.theValue("Walk the dog").into(NEW_TODO)
.thenHit(Keys.ENTER),
WaitUntil.angularRequestsHaveFinished()
);
You can also use Angular locators directly in your Interaction classes (though this is generally not recommended practice except for experimental work):
tim.attemptsTo(
Enter.theValue("Feed the cat")
.into(ByAngular.model("newTodo"))
.thenHit(Keys.ENTER),
WaitUntil.angularRequestsHaveFinished()
);
Next we will need to see what items have been recorded. As we have seen, Angular locators are not limited to individual elements, and you can easily use repeater
locators to retrieve lists of values. In the code below, we fetch the list of todo items using the Angular repeater. We also use the TheTarget.textValuesOf()
method to turn the list of web elements into a corresponding list of text values:
private static Target ITEMS
= Target.the("The visible todo items")
.located(ByAngular.repeater("todo in todos"));
...
tim.should(
seeThat(TheTarget.textValuesOf(ITEMS),
hasItems("Walk the dog","Feed the cat"))
);
A full sample test case using Screenplay and Angular/JS can be seen below:
@RunWith(SerenityRunner.class)
public class WhenManagingMyTodoList {
private static Target NEW_TODO
= Target.the("New Todo")
.located(ByAngular.model("newTodo"));
private static Target ITEMS
= Target.the("The visible todo items")
.located(ByAngular.repeater("todo in todos"));
@Managed(driver = "firefox")
private WebDriver driver;
@Test
public void iShouldBeAbleToAddNewTodoItems() {
Actor tim = Actor.named("Tim")
.describedAs("A todo-list enthusiast");
tim.can(BrowseTheWeb.with(driver));
tim.attemptsTo(
Open.url("http://todomvc.com/examples/angularjs/#/"),
Enter.theValue("Walk the dog")
.into(NEW_TODO)
.thenHit(Keys.ENTER),
WaitUntil.angularRequestsHaveFinished()
);
tim.attemptsTo(
Enter.theValue("Feed the cat")
.into(ByAngular.model("newTodo"))
.thenHit(Keys.ENTER),
WaitUntil.angularRequestsHaveFinished()
);
tim.should(seeThat(TheTarget.textValuesOf(ITEMS),
hasItems("Walk the dog","Feed the cat")));
}
}
You can learn more about the available locators on the ngWebDriver website.


Joel Thomas Zimmerman (born January 5, 1981), better known by his stage name deadmau5 (pronounced "dead mouse"), is a Canadian record producer and DJ from Toronto, Ontario. Zimmerman produces a variety of styles within the progressive house genre and sometimes other forms of electronic music. His tracks have been included in numerous compilation albums, such as the 2007 In Search of Sunrise 6: Ibiza CD. The February 2008 issue of Mixmag's music magazine included a free CD which was titled MixMag Presents: The Hottest New Name In Dance! DEADMAU5 Tech-Trance-Electro-Madness, mixed by Zimmerman. Tracks have also been included and presented on Armin van Buuren's A State of Trance radio show. His debut album, Get Scraped, was released in 2005, followed by others in the next few years.


Payment
public struct Payment: Unboxable
Note
Amounts in cents: NO (server problem)-
Internal figo Connect payment ID
Declaration
Swift
public let paymentID: String
-
Internal figo Connect account ID
Declaration
Swift
public let accountID: String
-
Payment type
Declaration
Swift
public let type: PaymentType
-
Name of creditor or debtor
Declaration
Swift
public var name: String
-
Account number of creditor or debtor
Declaration
Swift
public var accountNumber: String
-
Bank code of creditor or debtor
Declaration
Swift
public var bankCode: String
-
Bank name of creditor or debtor
Declaration
Swift
public let bankName: String
-
Icon of creditor or debtor bank
Declaration
Swift
public let bankIcon: String
-
Dictionary mapping from resolution to URL for additional resolutions of the banks icon. Currently supports the following sizes:
Declaration
Swift
public let bankAdditionalIcons: [String: String]
-
Order amount
Declaration
Swift
public var amount: Float
-
String representation of the amount
Declaration
Swift
public var amountFormatted: String
-
Three-character currency code
Declaration
Swift
public var currency: String
-
Purpose text. This field might be empty if the transaction has no purpose.
Declaration
Swift
public var purpose: String?
-
DTA text key
Declaration
Swift
public var textKey: Int
-
DTA text key extension
Declaration
Swift
public var textKeyExtension: Int
-
If this payment object is a container for multiple payments, then this field is set and contains a list of payment objects
Declaration
Swift
public let container: [Payment]?
-
Timestamp of submission to the bank server.
Declaration
Swift
public let submissionDate: FigoDate?
-
Internal creation timestamp on the figo Connect server
Declaration
Swift
public let creationDate: FigoDate
-
Internal modification timestamp on the figo Connect server
Declaration
Swift
public let modificationDate: FigoDate?
-
optional Recipient of the payment notification, should be an email address - Note: Only used when modifying an existing payment
Declaration
Swift
public var notificationRecipient: String?


|
Connected Home over IP
672cf7684
|
Represents a memory buffer that is auto-freed in the destructor. More...
#include <lib/support/ScopedBuffer.h>
Public Member Functions | |
| ScopedMemoryBufferBase () | |
| ScopedMemoryBufferBase (const ScopedMemoryBufferBase &)=delete | |
| ScopedMemoryBufferBase & | operator= (const ScopedMemoryBufferBase &other)=delete |
| ScopedMemoryBufferBase (ScopedMemoryBufferBase &&other) | |
| ScopedMemoryBufferBase & | operator= (ScopedMemoryBufferBase &&other) |
| ~ScopedMemoryBufferBase () | |
| operator bool () const | |
| Check if a buffer is valid. More... | |
| bool | operator! () const |
| void | Free () |
| Release memory used. More... | |
Protected Member Functions | |
| void * | Ptr () |
| const void * | Ptr () const |
| void * | Release () |
| Releases the undelying buffer. More... | |
| void | Alloc (size_t size) |
| void | Calloc (size_t elementCount, size_t elementSize) |
Represents a memory buffer that is auto-freed in the destructor.
This class uses void* underneath on purpose (rather than a unique_ptr like 'Type') and uses templated type on Ptr(). This is to avoid template explosion when the buffers are used for different types - only one implementation of the class will be stored in flash.
|
inline |
|
delete |
|
inline |
|
inline |
|
inlineprotected |
|
inlineprotected |
|
inline |
Release memory used.
|
inlineexplicit |
Check if a buffer is valid.
|
inline |
|
delete |
|
inline |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
Releases the undelying buffer.
Buffer stops being managed and will not be auto-freed.


Use this page to create, manage, and edit live templates.
The Live Template groups displays all currently available template abbreviations with
their descriptions. The abbreviations are grouped below nodes and sorted alphabetically within each group. To
activate a template or an entire group, select the checkbox near the template or the group.
You can do extra control in the context menu of an item.
(Use live templates to insert common constructs into your code, such as loops, conditions, various declarations,
or print statements.)


http://www.susangranger.com/
Susan Granger's review of "ALMOST FAMOUS" (DreamWorks)
Cameron Crowe's first film since "Jerry Maguire" is so engaging, entertaining and authentic that it's destined to become a rock-era classic. Set in 1973, this slightly fictionalized, semi-autobiographical, coming-of-age story revolves around a baby-faced 15 year-old (Patrick Fugit) prodigy whose intelligence and enthusiasm land him an assignment from "Rolling Stone" magazine to interview Stillwater, an up-and-coming band. With the help of Penny Lane (Kate Hudson), a bewitching "Band-Aid," he meets the charismatic lead guitarist (Billy Crudup) who invites him to join the tour, much to the dismay of his mother (Frances McDormand) who relentlessly repeats, "Don't do drugs!" Soon he's part of the inner circle of the band he idolizes, disregarding the caution of his rock critic mentor (Philip Seymour Hoffman): "Friendship is the booze they feed you to make you feel cool." Eventually, of course, the rookie reporter becomes disillusioned, honest and unmerciful. What's so compelling is Crowe's infallible casting which doesn't have a single discordant note. Patrick Fugit embodies innocent bewilderment, revealing one layer of surprise after another. Billy Crudup is dynamite, a superstar waiting to happen. Kate Hudson (Goldie Hawn's real-life daughter) gives a captivating, flamboyant yet hauntingly poignant performance. Frances McDormand is bracingly funny, playing with perfect pitch. Philip Seymour Hoffman is mesmerizing, exploding like a land mine. Finally, Crowe, cinematographer John Toll, art directors Clay A. Griffith & Clayton Hartley, and costume designer Betsy Heimann cleverly capture the sense of time and place. On the Granger Movie Gauge of 1 to 10, "Almost Famous" is a soaring, spirited 10. I loved it! I haven't had such a good time at the movies in ages.
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


Welcome to the game show more popular than Jeopardy!, What Did Gauss Do This Time? Today on What Did Gauss Do This Time? , you'll be exploring the joys of the least squares method and linear regression through an exercise. Below, you can play with creating a data set and finding the regression line for that data set. Because this is a math-y (and physics-y, and astronomy-y, etc.) show, here are some links to learn more about the math behind this simulation: This source from MIT that requires linear algebra to understand, and this basic, short and sweet source from Maths is Fun.


Rebound Solar System
First install with pip: add !pip install rebound
in your jupyter notebook. Then you should be able to do import rebound
in your notebook to import this package. See this website for more info about installing and testing rebound.
To make your own solar system model, you can check out the NASA Horizon interface and the Starman example. This pings the NASA Horizon telescope to get the current positions of all the planets.
EXTENTIONS: Can you plot Kepler data using this package? (Hint: check this out.)
Materials
- Lesson 5 - Kepler’s Planets, Orbits in 3D & Other Python Solvers: Choose your own adventure: (view,
source)
- Lecture 5, Part 1 - Kepler's Orbits: (view,
source, present)
- Lecture 5, Part 2 - Multibody Motion in 3D: (view,
source, present)
- Optional - Galaxy Multibody Motion in 3D: (view,
source, present)
- Rebound Galaxies: (view,
source)
- Notebook Optional_animations_lesson05:
(view,
download)
- Notebook Optional_galaxySimulations_3d_lesson05:
(view,
download)
- Notebook Part1_programming_readWriteData_keplersData_lesson05:
(view,
download)
- Notebook Part2_planetsIn3D_lesson05:
(view,
download)
- Notebook Untitled:
(view,
download)
- Notebook inClass_lesson05:
(view,
download)


The login session is bound to the current ProcessEngine. Changing the backend route will log you out.
An internal ProcessEngine is currently running. Click
here
to use the internal ProcessEngine, this will change the Base Route to ${internalProcessEngineBaseRoute}.
OpenID Connect
The authority has been changed. Click
here
to use the default authority, this will change the authority to ${defaultAuthority}.


The following snippet demonstrates how to request data from the Coinbase Crypto Price dataset:
from QuantConnect.DataSource import * from QuantConnect.Data.UniverseSelection import * # Coinbase only accepts Cash account type self.SetBrokerageModel(BrokerageName.GDAX, AccountType.Cash) self.symbol = self.AddCrypto("BTCUSD", Resolution.Minute, Market.GDAX).Symbol self.AddUniverse(CryptoCoarseFundamentalUniverse(Market.GDAX, self.UniverseSettings, self.UniverseSelectionFilter))
using QuantConnect.DataSource; using QuantConnect.Data.UniverseSelection; // Coinbase only accepts Cash account type SetBrokerageModel(BrokerageName.GDAX, AccountType.Cash); _symbol = AddCrypto("BTCUSD", Resolution.Minute, Market.GDAX).Symbol; AddUniverse(new CryptoCoarseFundamentalUniverse(Market.GDAX, UniverseSettings, UniverseSelectionFilter));


J.P. Morgan Chase will be the first major U.S. bank to create its own cryptocurrency. In trials set to start in a few months, a tiny fraction of the $6 trillion the bank lends to corporations will happen over something called 'JPM Coin.' The digital token created by engineers...


| -certload | Loads the Root CA certificate from the specified file. | |
| -certpubdump | Dumps the Root CA certificate into the specified file, this is suitable for importing into browsers. | |
| -certfulldump | Dumps the Root CA certificate and the private key into the specified file, this is suitable for importing into ZAP. |
| Network | the introduction to Network add-on |


Content for Dashboard tab. Here is a link that can be accessed via clicking or through keyboard via tabbing.
Content for Management tab.
Content for Cloud tab.


Here’s Lizzo Twerking In A G-String At An NBA Game After Professing Her Love For A Player
by By Lavender BajThe LA Lakers hosted the Minnesota Timberwolves in an NBA game on Sunday night, but the only reason I know that is because Lizzo absolutely stole the show.
The ‘Truth Hurts’ singer gave a stellar court side interview, in which she professed her love for Timberwolves player Karl-Anthony Towns.
“Let me tell you something, both teams are great,” she said in the interview. “I’m personally cheering for 32.”
The interviewer later clarified if she meant Karl-Anthony Towns, to which she replied a sassy “mmhmm!”
“That’s my baby!”
The 8-time Grammy nominee eventually admitted that she hasn’t actually met the NBA player. But she’s Lizzo, I’m sure somebody could facilitate a meeting.
But her wee little crush on Karl-Anthony Towns isn’t the only thing Lizzo made headlines for during Sunday’s game.
No.
In true Lizzo (real name Melissa Viviane Jefferson) fashion, she couldn’t help but bust a move when the Lakers cheerleaders danced to her hit song ‘Juice.’
The 31-year-old ‘Good as Hell’ singer twerked along to her own song before turning around to reveal her g-string.
Yes, a g-string. At a Lakers game.
Her dance moves and her underwear were blasted onto the arena’s jumbotron, giving the entire crowd a view of her behind.
Reactions to her twerking were mixed on social media. Some fans were in full support, wishing they had the confidence to twerk to their own song butt-naked at a Lakers game.

Others even went so far as to call for her to be banned from attending future LA Lakers games.
Maybe she’s a confident queen? Or maybe she just took it too far this time? Either way, Lizzo sure knows how to keep her name on the tip of everyone’s tongue.
Image: Getty Images / Allen Berezovsky


--- layout: page title: Lean Prover Zulip Chat Archive permalink: archive/113488general/49383algebraicgeometry.html ---
I recently noticed the file presheafed_space
in algebraic_geometry
; what is the planned development of this folder?
The plan is to get schemes into mathlib.
With or without the category theory approach to sheaves?
At least with the category theory approach to presheaves
{% endraw %}


why netdata?
These charts visualize the same data...
I can trace an issue like this
Can you trace an issue like these?
I can trace an issue like this
Can you trace an issue like these?
Hover on the chart below, to see the selected value on the charts above!


Spend all your time waiting
for that second chance
for a break that would make it okay
there's always some reason
to feel not good enough
and it's hard at the end of the day
I need some distraction
oh beautiful release
memories seep from my veins
let me be empty
and weightless and maybe
I'll find some peace tonight
in the arms of the angel
fly away from here
from this dark cold hotel room
and the endlessness that you fear
you are pulled from the wreckage
of your silent reverie
you're in the arms of the angel
may you find some comfort here
so tired of the straight line
and everywhere you turn
there's vultures and thieves at your back
and the storm keeps on twisting
you keep on building the lies
that you make up for all that you lack
it don't make no difference
escaping one last time
it's easier to believe in this sweet madness oh
this glorious sadness that brings me to my knees
in the arms of the angel
fly away from here
from this dark cold hotel room
and the endlessness that you fear
you are pulled from the wreckage
of your silent reverie
you're in the arms of the angel
may you find some comfort here
you're in the arms of the angel
may you find some comfort here


Logger
that disables all logging.
Return a function that will, at most, run the given function once at a time. Calls that occur during prior calls will no-op.
a function that accepts a thunk. The thunk will be debounced.
Remove all elements from the given array that return false from the given
predicate filter
.
Send a signal to the given process id.
the process id. Required.
Only call and return the result of f
if obj
is defined (not null nor
undefined)
process id. Required.
true if the given process id is in the local process table. The PID may be paused or a zombie, though.
all the Process IDs in the process table.
Return a thunk that will call the underlying thunk at most every minDelayMs
milliseconds. The thunk will accept a boolean, that, when set, will force the
underlying thunk to be called (mostly useful for tests)
Treat an array as a round-robin list, starting from startIndex
.
Return a function that will only invoke the given thunk after all prior given promises have resolved or rejected.
When we wrap errors, an Error always prefixes the toString() and stack with "Error: ", so we can remove that prefix.
Run the given thunk until the promise is resolved to true, or the timeout passes.
Generated using TypeDoc
Default
Logger
implementation.debug
andinfo
go to util.debuglog("batch-cluster").
warnand
errorgo to
console.warnand
console.error`.


The Future of Cars Is Already Here
in the last hangar off the runway in Prineville, Oregon, Sam Bousfield locked down one of the wings
to his flying car. His engineer was busy burnishing the parabolic slope of the carbon-fiber finish.
Bousfield handed me half a tail wing. It floated in my hand, light as balsa wood. “Eight pounds,” he
said, which, for a structural component of an airplane, is almost nothing. Off in the far side of
the hangar sat his original wooden mock-up of the chassis, a three-wheeled aerodynamic lozenge right
out of a manga enthusiast’s idea of a speed racer. He encouraged me to climb in and get a feel for
the feng shui of the driver’s seat, the view out the windshield, the sense of balance. But what he
really wanted me to see was that this thing was real—that the flying car is no longer in that
jetpack realm of promising technology that never quite arrives. “I expect to take this car into the
air in June,” he said.
When Cars Fly
the automobile has long been a symbol of everything great and everything terrible about America. On
the one hand: freedom, individualism, power, speed. The taming of millions of miles of varied
wildernesses through roads, then highways, then interstates. The capacity of American
industry—Pittsburgh’s steel, Akron’s rubber, Detroit’s factories.
But on the other hand: gas-guzzling SUVs. Traffic and sprawl. The abandonment of mass transit. The
suburb and then the exurb, with their undeniable ties to white flight and segregation. The decline
of the Rust Belt, the near-collapse of the Big Three automakers during the Great Recession of 2008,
and the slow death of American manufacturing and blue-collar work.
Where Are the Flying Cars?
flying cars have been part of our science-fiction dreams ever since Henry Ford pitched an early
personal airplane back in 1926—Ford’s aircraft division actually tried to build a "Model T of the
air." Ninety years later, discarded prototypes litter junkyards and collectors’ garages, but no
viable mass-market product has ever emerged.
That might still change. The latest candidates include Skycar, a flying-car prototype, and the Ehang
184, an autonomous electric quadcopter introduced at the 2016 Consumer Electronics Show, in Las
Vegas. In 2013, a company called Terrafugia announced plans for a self-flying car; it expects to
have a prototype ready for testing by 2018. A commercial model will take at least another five
years.


Experience of Development Notepad
I keep coming up with notes and ideas for posts on the experience of development faster than I can write the posts themselves.
This page is where I’m keeping everything. The vast majority take and expand upon my conjecture and associated proposals about why it might feel as it does to work with code. They make a bunch of stuff explicit, so it might be worth taking a look at them if you’ve not already.
Ideas for Posts
- Mental castle-building. The toil, or ease, by which this happens. The “happy path”, and straying from that path. The wholly-mental aspects of this. Link this back to “models all the way down” an perhaps “fine wines”. Also, mutability? (see chat in SW Dev)
- The expression of the mental model “castles” into code, into syntax. Just thinking about the writing of the code for now, and joining it into the compilation-surprise loop. We can bring in different languages and their syntaxes / sharp edges here. We can also bring in the Virginia Woolf quotes. Thinking in the syntax. (Harvey Richardson? Chris Phelps?) The fit of language to thinking-style and problem space.
- The joy of using tools which fit well in your loop. “I once worked with Harvey. He seemed to be able to think in c-shell, sed and awk. He also had a highly controlled environment. Other people take as much joy in their tools and the expression of their castles into ascii code as Harvey did, with less excuse…”. TDD. Other emotions.
- The “happy path” (and straying from it)
- Writing vs reading code
- Usage of feedback loops (inc. history) - how this is a
- Flow
- Hell is other developers - The minds of others (there is already a need to understand the mind of the machine). Writing vs reading. (Previously we were thinking about the minds of the machine). Pair programming. System Metaphors and DDD
- Learning and XP of Dev
- Developer workspaces (and “why?”)
- TDD
- Pair programming
- Flow. Context-swapping
- Debugging
- Personal styles and preferences
- Interviews
- How to think about this yourself
Reading / Listening
- Happy Path Programming
- A Writers Diary by Virginia Woolf
- Man with a Blue Scarf: On Sitting for a portrait for Lucian Freud
- Test Driven Development: By Example by Kent Beck
- Domain Driven Design by Eric Evans
- The Programmers Brain
Notes & Puzzles
- How might I visualise this?


This page allows you to change some global display options that affect all document windows.
Document Display Options >>
This buttons jumps to the page for display options of the active file. This button is disabled if there is no file open.
Large (block) cursor
A more easily visible cursor (or “caret”) is used to show the current edit position in the active window. When off, the cursor is a thin flashing line to the left of the current edit position. When on the cursor changes to be a much wider block covering the character at the edit position. This is useful for people using a small monitor at high resolution or for people with poor eyesight.
Show selection length
When on a tip window pops up when selecting bytes using the mouse or the keyboard. This window shows the length of the selection in hex or decimal depending on how addresses are currently displayed.
You can also see this window by holding down the SHIFT key.
Divisibility by largest power of 2
When on this shows extra information next to the aforementioned selection length (ie in the tip window). This is the largest power of 2 (1,2,4,8,16, ...) that exactly divides the length of the selection. This option is very useful for some operations - for example, some many block encryption algorithms require that the length of the selection is a multiple of 8 bytes.
Nice Addresses
Displays addresses in a nicer format. For hex addresses the means digits are grouped into fours. For decimal addresses numbers are formatted to local specification (e.g. with thousands separators) as specified in the Window Control Panel.
Display "shadow" cursor in Hex/char Area
When you are editing you current edit position is marked with a flashing cursor. You can edit in the hex or character area but it is handy sometimes to see what the corresponding value in the other (character or hex) area is. When this option is on the current value in the other area is indicated also.
Ruler
Display a ruler at the top of each window. This display hex and/or decimal offsets depending on whether decimal and/or hex addresses are show (see Document Display Option page).
Large ticks every
How often are large tick marks displayed in the ruler instead of small tick marks.
Numbers every
How often are numbers shown in the ruler. Normally the numbers are displayed as a single digit between columns but for the special value of 1 the 2 digits are displayed at the top of each column (but ticks are still displayed between the columns).
Indicate cursor position
The current location of the cursor is highlighted in the ruler and the address area. That is the current column is shown in the ruler and the current row in the address area.
Indicate mouse location
As you move the mouse over the active file window the current mouse position is shown in the ruler and the address area. Turn this option off if you find the continuous movement annoying.
Positions are not shown in the ruler unless numbers are shown above every column (i.e. the Numbers every option above is set to 1).
When displaying multi-byte characters sets (see Code Page command) some byte positions in the character area do not have a valid characters. These options determine what is displayed as a place-holder. For example, for a 3 byte character, the first character position displays the actual character represented by the three bytes, followed by two continuation characters in the following two character positions.
Continuation Character
For a multi-byte character the first byte position displays the actual character, and subsequent (continuation bytes) are displayed using this symbol.
Invalid Character
Some byte sequences are invalid in most multi-byte character sets. This option determines the symbol shown for invalid characters.


Why protected AddAction?
As promised, I am going to explain why AddAction was set to be a virtual protected function. Note, what is below does not relate to the current implementation and should not be replicated, it is purely to explain the evolution of the Action System. In previous iterations, AddAction was the main interface to adding Actions to groups and sequences. There were two really big problems with this:
1) Supporting both ways to add to groups and sequences.
Users used to be able to create the group, followed by either adding all of the Actions to it, then adding it to the sequence like so:
void Start() {
ActionSequence seq = new ActionSequence(this.gameObject);
ActionGroup grp = new ActionGroup();
// Add the Actions
grp.AddAction(new Action());
...
grp.AddAction(new Action());
// Then add the group to the sequence
seq.AddAction(grp);
}
Or by adding it the sequence first, then adding all of the Actions like in the example below:
void Start() {
ActionSequence seq = new ActionSequence(this.gameObject);
ActionGroup grp = new ActionGroup();
// Add the group to the sequence
seq.AddAction(grp);
// Then add the Actions
grp.AddAction(new Action());
...
grp.AddAction(new Action());
}
Since we have no way to enforce one or the other (unless by throwing errors), I thought it best to be able to support both ways. This is why the old implementation needed to overload SetParent(), because if we added all of our Actions to the group before adding the group to the sequence, then all of the targets for the group’s children will be wrong.
public class ActionGroup : Action {
...
// Overriding since we may not of set our parent to the sequence we add ourselves
// to yet, so we will want to garauntee all of children get to set to it here
public override void SetParent (Action parent)
{
// Call the base implementation to set our parent and target
base.SetParent(parent);
// We only need to update our children if we have any
if(list.Count > 0)
{
// Loop through all the Actions in our list and set their parents,
// effectively updating their target correctly
foreach(Action action in list)
{
// Otherwise set it
action.SetParent(this);
}
}
}
}
2) Keeping sequences from firing off, even though their parents didn’t trigger them.
void Start() {
// Create the parent sequence
ActionSequence seq = new ActionSequence(this.gameObject);
// Give some action to do first, before starting the second sequence
seq.AddAction(new Action());
// Create the second sequence
ActionSequence seq2 = new ActionSequence(this.gameObject);
// Add the Actions
seq2.AddAction(new Action());
...
seq2.AddAction(new Action());
// Then add the second sequence to the first sequence
seq.AddAction(seq2);
}
Recall whenever an ActionSequence gains an Action and it is the parent, then it can start triggering the sequence. As you can see in the example above, when we create that second sequence and start adding Actions to it, that sequence will trigger. The second sequence is it’s own parent right up to the AddAction call to add the second sequence to the first. This fundamentally destroys the point of Actions, which is control the order and flow of Actions. If we have a sequence start before it should, it will cause game breaking features. This is why AddAction is now a protected virtual function. Within the base class of Action we implemented AddAction like so:
protected virtual void AddAction(Action action) { parent_.AddAction(action); }
This is effectively asking our parent to add ourselves to them. Now we have to override this function in our ActionManager’s, so when the child asks to be added they know how to add them. Hence where the virtual keyword came into play. Finally, it is marked protected so that the only way to call AddAction is within the class itself. This way users outside the implementation cannot AddActions without following our desired interface, because if we let them call AddAction they could repeat the 2nd problem we listed above.
Notice that we have only covered adding and updating Actions within groups and sequences? What about pausing and cancelling? These two things also rely on our “managers” of Actions and are covered in the next part of the article.
Continue to part 3. (Pausing And Cancelling)


I received a PhD in Neuroscience from Brown University, where I focused on brain-computer interface research. Even though doctoral programs tend to lead students down a path of hyper-specialization, the multidisciplinary nature of neural interfaces, combined with my previous experiences as a pharmaceutical representative and technology journalist, have resulted in an undeniably unique and diverse skillset.
I’m currently seeking employment in a public or private organization fueled by massive, complex ideas at the intersection of perception, interaction, and technology.
PDF, TXT, and DOCX versions of my resume and CV can be downloaded here.
PhD in Neuroscience
Brown University, 2017
BSc in Computer Science
Emory University, 2001
BSc in Neuroscience
Emory University, 2001
Kennedy PR, Kirby MT, Moore MM, King B, Mallory A. “Computer Control Using Human Cortical Local Field Potentials.” IEEE Transactions on Neural Systems and Rehabilitation Engineering 12.3 (2004).
Kennedy PR, Andreasen D, Ehirim P, King B, Kirby MT, Mao H, Moore MM. “Using Human Extra Cortical Field Potentials to Control a Switch.” Journal of Neural Engineering 1 (2004): 72-77.
Kennedy PR, Andreasen DS, King B, Kirby MT, Mao H, Moore MM, Ehirim P. “Correlations between human motor cortical local field potentials, action potentials, contralateral arm EMG activity and digit movements.” Submitted to Journal of Neural Engineering (2005).
Vargas-Irwin CE*, Feldman JM*, King B*, Simeral JD, Sorice BL, Oakley EM, Cash SS, Eskandar EN, Friehs GM, Hochberg LR, Donoghue JP. “Watch, Imagine, Attempt: Motor Cortex Single-Unit Activity Reveals Context-Dependent Movement Encoding in Humans With Tetraplegia.” Frontiers in Human Neuroscience 12 (2018): 1-13.
*Equal contribution
Kennedy PR, King B. “Dynamic Interplay of Neural Signals during the Emergence of Cursor Related Cortex in a Human Implanted with the Neurotrophic Electrode.” Neural Prostheses for Restoration of Sensory and Motor Function. Ed. John Chapin. Danvers, MA: CRC Press, 2001. 221-233.
Kennedy PR, Moore MM, King B. Directionality coding in human cortical area 4: role of phase relationships of individual action potentials. Program No. 590.10. 2000 Neuroscience Meeting Planner. New Orleans, LA: Society for Neuroscience, 2000. Online.
Kennedy PR, King B, Kirby MT, Moore MM, Blankowski M. Motor cortical control of a Cyber digit by a patient implanted with the Neurotrophic Electrode. Program No. 63.5. 2001 Neuroscience Meeting Planner. San Diego, CA: Society for Neuroscience, 2001. Online.
Kennedy PR, Kirby MT, Adams K, Mallory A, King B. (2001). The role of tactile feedback in the control of cortical neural signals two years after implantation in patient TT with mitochondrial myopathy. In Thirty Second Annual Neural Prosthesis Workshop (October 17, 2001). Bethesda, MD: NINDS, NIH.
Kennedy PR, King B, Kirby MT, Adams K. Directionality may be inherent in Local Field Potentials (LFPs) recorded via the Neurotrophic Electrode in human cortex. Program No. 357.15. 2002 Neuroscience Meeting Planner. Orlando, FL: Society for Neuroscience, 2002. Online.
King B, Truccolo W, Friehs GM, Stein J, Donoghue JP, Hochberg LR. Motor cortex local field potentials and multi-unit activity during intended movements in humans with tetraplegia. Program No. 517.15/VV1. 2007 Neuroscience Meeting Planner. San Diego, CA: Society for Neuroscience, 2007. Online.
King B, Feldman JM, Hochberg LR, Donoghue JP. Verbal instructions to watch, imagine, or attempt movement differentially engage neurons in the motor cortex of humans with tetraplegia. Program No. 899.4/HHH45. 2010 Neuroscience Meeting Planner. San Diego, CA: Society for Neuroscience, 2010. Online.
Feldman JM, King B, Truccolo W, Hochberg LR, Donoghue JP. Decoding neural representations of action from motor cortex ensembles during action observation in humans with tetraplegia. 2011 Neuroscience Meeting Planner (p. 142.14). Washington, DC: Society for Neuroscience, 2011. Online.
Hochberg LR, Bacher D, Barefoot L, Berhanu E, Black MJ, Cash SS, King B, …, Donoghue JP. Use of the BrainGate Neural Interface System for more than five years by a woman with tetraplegia. 2011 Neuroscience Meeting Planner. Washington, DC: Society for Neuroscience. 2011. Online.
Presentations and invited speaker events


ROCK STAR (2001) 2 1/2 stars out of 4. Starring Mark Wahlberg, Jennifer Aniston, Jason Flemying, Timothy Olyphant, Timothy Spall, Dominic West, Jeff Pilson and Jason Bonham. Written by John Stockwell. Directed by Stephen Herek. Rated R. Rock Star is a heavy metal fairy tale that despite striking some discordant notes is overall enjoyable and likable.
Inspired by the true story of a singer in a tribute band who gets his chance to join and front a famous rock group, Rock Star features Mark Wahlberg as Chris Cole, lead singer for Blood Pollution, a Steel Dragon tribute band. Chris idolizes Steel Dragon's lead singer, Bobby Beers, and knows everything about the band, its history and members. For Chris, fronting Steel Dragon would be a dream come true.
After being thrown out of Blood Pollution, Chris receives a phone call that will fulfill his fantasy. Next thing he knows he and his girlfriend, Emily (Jennifer Aniston), have been jetted to L.A. After a brief audition, Chris is rechristened Izzy and is soon becoming the idol of millions.
Set in the mid-1980s, this rags-to-riches story has much to offer. Even if you don't like heavy metal music, you will find Rock Star an entertaining outing because while the music does play a major role in the proceedings, the story is more about Chris's/Izzy's introduction into the perks and pitfalls of stardom.
Chris begins his new life filled with wide-eyed innocence and enthusiasm. After all, he is now the embodiment, the cipher of those millions of anonymous youths who pay to see him perform and imagine themselves in his tight-leather pants.
As time passes, though, Chris learns the responsibilities of stardom are more than just wailing to an enthusiastic audience. The grueling pace of the road, the groupies, drugs, publicity shoots and all that the role encumbers soon begins to wear on the young man.
Despite growing jaded, Chris/Izzy never loses his passion for the music. It is only when Kirk (Dominic West), Steel Dragon's lead guitarist and spokesman, rejects Chris's song ideas that the young singer understands his limited role within the organization. Kirk explains to him that the band holds a specific niche in the music world and any deviation would destroy that toehold.
John Stockwell's script is surprisingly low on cynicism, which is refreshing considering all the fodder this particular territory could have afforded. And while the script does cast a jaundiced eye at the practices and machinations of the music industry, it is neither preachy nor judgmental.
Wahlberg offers a sincere, hard-working performance as Chris/Izzy. His transformation from obsessive fan to naive innocent to disillusionment is gradual and painful. Wahlberg does his own vocals, which were electronically enhanced, but that should not detract from his first-rate effort.
Aniston's role is a bit underwritten as the loyal girlfriend watching the corruption of her man, but unable to stem the tide.
A small, but memorable bit of acting is offered by Timothy Spall as Mats, Steel Dragon's longtime road manager, who counsels Chris on the wild lifestyle of rock stardom.
One of the film's best moments revolves around the confrontation between Bobby Beers (Jason Flemyng) and his former bandmates, which echo an earlier scene between Chris and his former group members.
Flemyng's short scene is touching and painful as he tells Chris of the realities and responsibilities of being a member of a top rock group.
One of the funnier moments is a parking lot confrontation between two Steel Dragon tribute bands, which leads to a war of words, costume critique and near fisticuffs.
Helping the enterprise is the casting of members of various heavy metal bands in pivotal roles. They include Zakk Wylde, lead guitarist for Black Label Society and Dokken guitarist Jeff Pilson.
If Rock Star, ably directed by Stephen Herek (Mr. Holland's Opus, 101 Dalmatians) has a drawback, it is it's anti-climatic ending.
Rock Star is a fast and loud fable, filled with colorful characters and ear-shattering music. It's a somewhat cautionary tale about wishes coming true and about how those desires may not measure up to expectations.
Bob Bloom is the film critic at the Journal and Courier in Lafayette, IN. He can be reached by e-mail at<EMAIL_ADDRESS>or at<EMAIL_ADDRESS>Other reviews by Bloom can be found by going to www.jconline.com and clicking on golafayette. Bloom's reviews also can be found on the Web at the Internet Movie Database: http://www.imdb.com/M/reviews_by?Bob+Bloom
========== X-RAMR-ID: 29401 X-Language: en X-RT-ReviewID: 248218 X-RT-TitleID: 1109935 X-RT-SourceID: 872 X-RT-AuthorID: 1363 X-RT-RatingText: 2.5/4
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


Bypass Technique Proof of Concept
The weaponization workflow is as follows:
1. Drop a XOML file to disk. The XOML will contain attacker-supplied C# or VB.Net code to be compiled, loaded, and ultimately invoked. The malicious logic must be contained within a class constructor that derives from the System.Workflow.ComponentModel.Activity class.
2. Drop an XML file to disk that contains a serialized CompilerInput object. This XML document is where the path to the XOML file is stored. (Can be generated with the PowerShell script in child page)
3. Execute Microsoft.Workflow.Compiler.exe supplying the XML path.
Here is an example invocation of Microsoft.Workflow.Compiler.exe:
C:\Windows\Microsoft.Net\Framework64\v4.0.30319\Microsoft.Workflow.Compiler.exe test.xml results.xml
Upon calling Microsoft.Workflow.Compiler.exe, it will compile the inline C#, load the compiled DLL and invoke the “Foo” constructor in a fashion that is not subject to code integrity enforcement.


{% extends "base.html" %} {% load static %} {% block body %}
Forgot password?
Sign up and discover great amount of new opportunities!
If you already have an account, just sign in. We've missed you!


Based on your answers, we believe that is the best class for you. Please read below for more information.
All students are required to complete our Introduction to Programming course prior to beginning their selected track. This course covers basic HTML, CSS, JavaScript, and jQuery.
C sharp is the recommended track for you. Click here to find out more.
C# is most popular among bigger established businesses, often for building internal software. Because it's been around for a long time and has the backing of Microsoft, it is one of the most in-demand languages in the job market. C# has also been going through a bit of a rebirth lately, with Microsoft open sourcing the language and surrounding platform, porting it to run on Mac and Linux, and incorporating many of the best features of other languages. If you like the idea of working for a larger company on business software, C# is a great choice.
Java is the recommended track for you. Click here to find out more.
Java is also a favorite of enterprise companies, but its appeal is broader as well: it's one of the most popular of all programming languages, and it's used in everything from for high-performance processing to building Android user interfaces. Because Java has been very popular for a very long time and is used in so many applications, it is also a very high-demand language. If you're interested in working for an enterprise-level company, as an Android developer, or in high-performance applications, Java could be a good language to learn.
PHP is the recommended track for you. Click here to find out more.
PHP is by far the most popular backend language today, with 80 percent of websites utilizing it 'server-side'. It is perhaps best known for it's use in content management systems like Wordpress, Drupal, and Joomla. But the versatility of the language and the frameworks it powers make employment options numerous and diverse. If you're keen to work for a fast paced agency that builds websites for lots of clients, or maintain the security and stability of a huge complex of government websites, or if you like the idea of building out small sites for brands, businesses, and organizations - In any of these cases, PHP would be a great way to go.
Ruby is the recommended track for you. Click here to find out more.
Ruby is a favorite language of developers building interactive web applications. If an app involves users creating accounts, entering information, and interacting with dynamic content, there's a good chance it is built with Ruby. Ruby became popular because the Rails framework, which is written with Ruby, simplified many of the common tasks associated with building web applications. It's most popular with startups and smaller companies who are looking to build their product quickly.