Utility functions that allow checking the basic validity of a function argument or any other value, including generating an error and assigning a default in a single line of code. The main purpose of the package is to provide simple and easily readable argument checking to improve code robustness.
| Version: | 0.1.0 |
| Depends: | R (≥ 3.1.0) |
| Published: | 2017-05-19 |
| Author: | Ivo Van Walle Developer [aut, cre] |
| Maintainer: | Ivo Van Walle Developer <ivo.van.walle at gmail.com> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: | no |
| CRAN checks: | checkarg results |
| Reference manual: | checkarg.pdf |
| Package source: | checkarg_0.1.0.tar.gz |
| Windows binaries: | r-devel: checkarg_0.1.0.zip, r-release: checkarg_0.1.0.zip, r-oldrel: checkarg_0.1.0.zip |
| OS X binaries: | r-release: checkarg_0.1.0.tgz, r-oldrel: checkarg_0.1.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=checkarg to link to this page.


|
MOTS Finder
Find non-star-shaped MOTSs
|
Tweaked baseclass for unit tests. More...
Public Member Functions | |
| def | setUpClass (cls) |
| def | run (self, result=None) |
| def | setUp (self) |
| def | tearDown (self) |
| def | failureHook (self, result) |
| Custom function called just after a fail/error occurred. More... | |
| def | assertIsType (self, obj, cls) |
| Assert that an object is exactly of a certain type. More... | |
| def | assertListAlmostEqual (self, a, b, places=None, delta=None) |
| Assert that two iterables contain (almost) the same values. More... | |
Public Attributes | |
| setUp | |
| tearDown | |
| startTime | |
Private Member Functions | |
| def | __lastTestSkipped (self) |
| Return whether the previous test was skipped. | |
| def | __lastTestOK (self) |
| Return whether the previous test result was success. | |
| def | __shouldPrintTiming (self) |
| Return whether timing information should be printed. | |
Private Attributes | |
| __result | |
| __prevErrors | |
| __prevFailures | |
| __prevSkipped | |
| __tornDown | |
Tweaked baseclass for unit tests.
By deriving from this class, you:
verbosity=2
) if TestSettings.timing is true.| def assertIsType | ( | self, | |
| obj, | |||
| cls | |||
| ) |
Assert that an object is exactly of a certain type.
| def assertListAlmostEqual | ( | self, | |
| a, | |||
| b, | |||
places = None , |
|||
delta = None |
|||
| ) |
Assert that two iterables contain (almost) the same values.
| def failureHook | ( | self, | |
| result | |||
| ) |
Custom function called just after a fail/error occurred.
Subclasses may implement this function to e.g. collect result data before tearDown() gets called.


{% extends "master.html" %} {% block extra_css %} {% load static %} {% endblock extra_css %} {% block content %}
Welcome to the Search Results Page. Below you should find all the words in all the world. You asked for it, you got it!


- parse() - Method in class com.google.code.play.ConfigurationParser
-
- PidFileDeleter - Class in com.google.code.play
-
Shutdown hook responsible for deleting "server.pid" file.
- PlayCleanMojo - Class in com.google.code.play
-
Clean Play! temporary directories.
- PlayCleanMojo() - Constructor for class com.google.code.play.PlayCleanMojo
-
- PlayDependenciesMojo - Class in com.google.code.play
-
Extract project dependencies to "lib" and "modules" directories.
- PlayDependenciesMojo() - Constructor for class com.google.code.play.PlayDependenciesMojo
-
- PlayDistExplodedMojo - Class in com.google.code.play
-
Create exploded Play! framework and Play! application (standalone distribution).
- PlayDistExplodedMojo() - Constructor for class com.google.code.play.PlayDistExplodedMojo
-
- PlayDistMojo - Class in com.google.code.play
-
Package Play! framework and Play! application as one zip achive (standalone distribution).
- PlayDistMojo() - Constructor for class com.google.code.play.PlayDistMojo
-
- playFrameworkVersionFilePath - Static variable in class com.google.code.play.PlayInitializeMojo
-
- PlayGenerateSeleniumJunit4SourcesMojo - Class in com.google.code.play
-
Generate JUnit test wrapper source files for Selenium tests.
- PlayGenerateSeleniumJunit4SourcesMojo() - Constructor for class com.google.code.play.PlayGenerateSeleniumJunit4SourcesMojo
-
- PlayInitializeMojo - Class in com.google.code.play
-
Initialize Play! Maven project
- PlayInitializeMojo() - Constructor for class com.google.code.play.PlayInitializeMojo
-
- playModuleNotApplicationCheck() - Method in class com.google.code.play.AbstractPlayMojo
-
- PlayPrecompileMojo - Class in com.google.code.play
-
Invoke Play! precompilation.
- PlayPrecompileMojo() - Constructor for class com.google.code.play.PlayPrecompileMojo
-
- PlayRunMojo - Class in com.google.code.play
-
Run Play! server ("play run" equivalent).
- PlayRunMojo() - Constructor for class com.google.code.play.PlayRunMojo
-
- PlayStartMojo - Class in com.google.code.play
-
Start Play! server ("play start" equivalent).
- PlayStartMojo() - Constructor for class com.google.code.play.PlayStartMojo
-
- PlayStartServerMojo - Class in com.google.code.play
-
Start Play! server before integration testing.
- PlayStartServerMojo() - Constructor for class com.google.code.play.PlayStartServerMojo
-
- PlayStopMojo - Class in com.google.code.play
-
Stop Play! server ("play stop" equivalent).
- PlayStopMojo() - Constructor for class com.google.code.play.PlayStopMojo
-
- PlayStopServerMojo - Class in com.google.code.play
-
Stop Play! server after integration testing.
- PlayStopServerMojo() - Constructor for class com.google.code.play.PlayStopServerMojo
-
- PlayTestRunMojo - Class in com.google.code.play
-
Run Play! server in test mode ("play test" equivalent).
- PlayTestRunMojo() - Constructor for class com.google.code.play.PlayTestRunMojo
-
- PlayWarExplodedMojo - Class in com.google.code.play
-
Create an exploded Play! application webapp in specified directory.
- PlayWarExplodedMojo() - Constructor for class com.google.code.play.PlayWarExplodedMojo
-
- PlayWarInplaceMojo - Class in com.google.code.play
-
Create an exploded Play! application webapp in war source directory.
- PlayWarInplaceMojo() - Constructor for class com.google.code.play.PlayWarInplaceMojo
-
- PlayWarMojo - Class in com.google.code.play
-
Package Play! application as a war achive.
- PlayWarMojo() - Constructor for class com.google.code.play.PlayWarMojo
-
- PlayWarSupportMojo - Class in com.google.code.play
-
Prepare project for war packaging.
- PlayWarSupportMojo() - Constructor for class com.google.code.play.PlayWarSupportMojo
-
- PlayZipMojo - Class in com.google.code.play
-
Package Play! application as a zip achive.
- PlayZipMojo() - Constructor for class com.google.code.play.PlayZipMojo
-
- prepareAndGetPlayHome(String) - Method in class com.google.code.play.PlayInitializeMojo
-
- prepareAntJavaTask(ConfigurationParser, String, boolean) - Method in class com.google.code.play.AbstractPlayServerMojo
-
- prepareArchiver(ConfigurationParser) - Method in class com.google.code.play.AbstractPlayDistMojo
-
- prepareArchiver(ConfigurationParser, boolean) - Method in class com.google.code.play.AbstractPlayWarMojo
-
- processTestsInDirectory(File, File, String) - Method in class com.google.code.play.PlayGenerateSeleniumJunit4SourcesMojo
-
- project - Variable in class com.google.code.play.AbstractPlayMojo
-
Maven Internal: Project to interact with.
- put(Object, Object) - Method in class com.google.code.play.OrderSafeProperties
-
- putAll(Map<? extends Object, ? extends Object>) - Method in class com.google.code.play.OrderSafeProperties
-


Summer 2018
Make SCAP Security Guide easier to contribute to.
...and then can create a rule, a check, a bash fix, and an Ansible fix.
(We also can also add tests)
|
3 — Upstreams |
46 — Merged PRs |


Register now
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,
40 years of real estate development with more than 200 projects and 1,835 clients
Learn about the largest previous works without irregularities and registered a real estate month in the Fifth Settlement in various neighborhoods (Daffodils - Violet - Tamarnah - Carnations - Lotus - Andalusia)
The project consists of a basement on the entire surface, ground, three repeating floors, and two apartments per floor. The facade is distinguished by its modern paints that are resistant to changing weather factors, in addition to natural stone.
The project consists of a basement on the entire surface, ground, three repeating floors, and two apartments per floor. The facade is distinguished by its modern paints that are resistant to changing weather factors, in addition to natural stone.
The project consists of a basement on the entire surface, ground, three repeating floors, and two apartments per floor. The facade is distinguished by its modern paints that are resistant to changing weather factors, in addition to natural stone.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s
Follow with us the latest news on projects and the stages of their implementation, as well as learn about the latest offers from the company to our clients.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries


The Feathers user interface component lifecycle
To develop custom components for Feathers, one should understand the basics of the Feathers component lifecycle. A component goes through a number of distinct stages between when it is created and when it is destroyed.
Instantiation
The component instance is created with the new
keyword. It has not yet been added to the display list. Properties may be changed, and the new values will be saved, but the component will not automatically react to those changes until after it has been added to the display list. This ensures that the Feathers component doesn't run its drawing code too often.
Initialization
The component is added to the display list and its initialize()
function is called. FeathersEventType.INITIALIZE
will be dispatched after initialize()
returns.
Apply theme styles
If the component has a style provider from a theme, the theme's styles will be applied to the component immediately after FeathersEventType.INITIALIZE
is dispatched.
Validation
The component will validate for the first time, doing a complete redraw as if every single property has been invalidated (see Invalidation below). After the first validation FeathersEventType.CREATION_COMPLETE
will be dispatched.
When a component validates, its draw()
function is called. The component should handle any changes that have been made to its properties inside draw()
. Then, if the component's dimensions have not been specified manually, it should automatically calculate ideal width and height values (along with minimum values). These calculated values should be passed to saveMeasurements()
where the final dimensions used for layout are calculated. Finally, the component should position and resize its children, as needed.
Read Anatomy of a Feathers Component for more detailed information about the various "width" and "height" properties and variables that are available on a Feathers component.
Render
A Feathers component is a Starling display object, so it has a render()
function that is automatically called by Starling every frame. Feathers components typically don't override Starling's render()
function.
Component will always be validated before render()
is called.
Invalidation
Any time a property changes, the component should call invalidate()
while passing in a flag (or multiple flags) to specify the type of invalidation. Examples of invalidation types include size, layout, and selection. Each component may have its own internal categorization of properties as invalidation flags, but a number of useful generic flags are defined on FeathersControl
as protected
constants. How these flags are used is not enforced in any way. Feel free call invalidate()
without flags and use private Boolean
variables to track state, if you prefer.
After being invalidated, the component will wait to validate in case other properties need to be changed. Before Starling asks the component to render again, it will validate to ensure that all changes have been committed.
The process of 1) invalidation, 2) validation, 3) rendering will repeat indefinitely until the component is removed from the display list. It will start again if the component is removed and re-added.
Removal
The component is removed from the display list. Unless it is added to the display list again, it will no longer validate automatically. Property changes will be saved, but not committed. To force the component to validate after property changes while it is not on the stage, call validate()
manually.
Disposal
Like all Starling display objects, Feathers components have a dispose()
function that may be used to do things like remove external event listeners and dispose children or textures.
Once a Feathers component is disposed, it cannot be validated again. A disposed component should never be added to the display list. It may result in runtime errors or undefined behavior. Most disposed components will be completely unresponsive to user interaction.
Garbage Collection
After all references to the component have been removed, it becomes eligible for garbage collection to be handled by the runtime. The component's life has completed.


Samantha Sengsouvanh
Portfolio
(current)
About Me
Contact Me
Portfolio
Password Generator Repo Link
Password Generator Deployed Link
Brew Cruze Repo Link
Brew Cruze Deployed App
Detsy Repo Link
Detsy Deployed App
Weather Dashboard Repo Link
Weather Dashboard Deployed Link
Note Taker Repo Link
Note Taker Deployed App


Start Unit Testing Your Code Today
Albert Albala
Dcycle
@alberto56
This presentation is at
github.com/alberto56/presentation-unit-test
1. Let's look at some non-testable code
All examples are documented in
blog.dcycle.com/unit
Numbers are to tags in
github.com/dcycle/unit-test-tutorial
2. First step to unit testing:
DevOps and CI
3. Unit Tests do not have access to a full environment
4. Our first working test!
6. Procedural code and static methods are not really that testable
7. Split Monster Functions
11 and 12. Testing protected methods require Reflection
How about Javascript?
A quick look at unit testing Javascript with AVA
Start Unit Testing Your Code Today
Albert Albala
Dcycle
@alberto56
This presentation is at
github.com/alberto56/presentation-unit-test
Come see me with your issues!


Paul Thomas
About
Portfolio
Contact
Portfolio
Harry Potter Trivia Game
My Travels
My Twitter Feed
Producer
Link To Music


pixel to pixel
-
grayscale
-
sepia
-
thresholding-128
-
invert
-
saturation
-
red
-
green
-
blue
-
gamma
-
mirror
-
pixelate
edge/line detection
-
roberts
-
sharpen
-
sobel y
-
sobel x
-
highpass
-
lowpass(3x3)
-
lowpass(5x5)
-
laplacian
-
gaussian
-
bigGaussian
-
prewitt y
-
prewitt x
-
canny
control
Drag and drop filters here


In pictures: Hellish scenes from Australia bushfires 10 Nov 2019, 09:44 by AFP / Reuters A fire rages in Bobin, 350km north of Sydney on November 9, 2019, as firefighters try to contain dozens of out-of-control blazes that are raging in the state of New South Wales. PHOTO: AFP Trees are burned black after a bushfire in Old Bar, 350km north of Sydney on November 10, 2019. PHOTO: AFP A fire rages in Bobin, 350km north of Sydney on November 9, 2019, as firefighters try to contain dozens of out-of-control blazes that are raging in the state of New South Wales. PHOTO: AFP A fire rages in Bobin, 350km north of Sydney on November 9, 2019, as firefighters try to contain dozens of out-of-control blazes that are raging in the state of New South Wales. PHOTO: AFP A fire rages on in Rainbow Flat, New South Wales, Australia, November 8, 2019, in this still image taken from social media video. PHOTO: REUTERS Firefighters look as a fire rages on in Rainbow Flat, New South Wales, Australia, November 8, 2019, in this still image taken from social media video. PHOTO: REUTERS Firefighters tackle a bushfire to save a home in Taree, 350km north of Sydney on November 9, 2019 as they try to contain dozens of out-of-control blazes that are raging in the state of New South Wales. PHOTO: AFP Firefighters tackle a bushfire to save a home in Taree, 350km north of Sydney on November 9, 2019 as they try to contain dozens of out-of-control blazes that are raging in the state of New South Wales. PHOTO: AFP Smoke from a large bushfire is seen outside Wytaliba, near Glen Innes, Australia, November 10, 2019. PHOTO: REUTERS Photo taken on November 9, 2019 shows bushfires taken from a plane in over north eastern New South Wales. PHOTO: AFP Bushfires burn in the distance as children play on a beach in Forster, 300km north of Sydney on November 9, 2019, as firefighters try to contain dozens of out-of-control blazes that are raging in the state of New South Wales. PHOTO: AFP Smoke from a large bushfire is seen outside Wytaliba, near Glen Innes, Australia, November 10, 2019. PHOTO: REUTERS Roads are closed as a bushfire still smoulder in Old Bar, 350km north of Sydney on November 10, 2019. PHOTO: AFP Trees are burned black after a bushfire in Old Bar, 350km north of Sydney on November 10, 2019. PHOTO: AFP The remains of a property destroyed by fire is seen in Bobin, 350km north of Sydney on November 9, 2019, as firefighters try to contain dozens of out-of-control blazes that are raging in the state of New South Wales. PHOTO: AFP A vintage Jaguar car sits in ruins after a bushfire destroyed a property in Old Bar, 350km north of Sydney on November 10, 2019. PHOTO: AFP Recommended Stories


--- layout: default --- {% assign homepage = site.data.homepage.homepage.homepage %} {% include posthack-hero.html %} {{ homepage.sponsors.header }} {{ homepage.sponsors.sub-header }} {% for sp in homepage.sponsors.sponsor %} {% endfor %} We would like to present our winners this 2019! {% for winner in homepage.posthack.winners %} {{ winner.title }} Team: {{ winner.team }} {% endfor %} Plattshacks 2019 {% for image in homepage.posthack.hackathon_images %} {% endfor %} Special thanks to people who helped organize PlattsHacks 2019 {% for organizer in homepage.posthack.organizers %} {{ organizer.name | markdownify }} {% endfor %}
Team: {{ winner.team }}


PREFACE OF THE EUCHARISTIC PRAYER VARIOUS II
It is
truly right and just, our duty and our salvation,
always and
everywhere to give you thanks,
Lord, holy
Father,
creator of
the world and source of all life.
For you
never forsake the works of your wisdom,
but by
your providence are even now at work in our midst.

And so,
with the Angels and Saints,
we, too,
sing the hymn of your glory
as without end we acclaim:
Holy, holy, holy Lord...
Eucharistic
Prayer


Your graphics card in your computer is doing the same thing
- For every visible pixel on the screen
- Call the main() method to decide the pixel color
- Inside the main() method you decide the rule
🢂 Now the advantage of this is that your graphics card can do this for every pixel at the same time!!
Lets look at some first building blocks.
🢂 Here is a reference page as a handy summary of the syntax and conventions involved
- The most integral datatype is the vector structure.
- It is used to access and store groups of values e.g. positions (x, y, z) or colors (r, g, b, a)
🢂 Here is a reference page as a handy summary of the syntax and conventions involved
Lets split the canvas into a white and black half ◨
- X / Y on the grid ➡ gl_FragCoord.x / gl_FragCoord.y
- color of the pixel ➡ gl_FragColor.rgba
🢂 Hint: Get used to express numbers always with a decimal point (1.0, 0.0 ...)
🢂 Here is a handy list of all GLSL functions you can use!
The pixel coordinates are based on the canvas size which is inconvenient:
- We do not want to change the shader for every screen / canvas size
- Keeping all values normalized (between 0.0 and 1.0) allows us to relate values more easily with each other
- To normalize our coordinates we just have to divide them by our canvas size (= resolution)!
🢂 To get the resolution we access the uniform vec2 u_resolution variable
Lets rewrite the canvas splitting example with normalized coordinates:
🢂 Bonus: We can now express relationships in percentages (0.5 for 'half') without knowing the actual dimensions of the canvas


30 Rock
Liz Lemon is head writer and showrunner of the NBC sketch comedy series TGS with Tracy Jordan (originally called The Girlie Show), filmed in Studio 6H in 30 Rockefeller Plaza. She supervises cast and crew including star Jenna Maroney, her best friend, while working with network executive Jack Donaghy and page Kenneth Parcell. In the first episode, Donaghy forces Lemon to hire the unpredictable Tracy Jordan as costar.


Germany - Profile
Facts
- Germany occupies a central position in Europe with coasts on both the North and Baltic Seas. The most important navigable rivers in continental Europe, the Rhine and the Danube, also flow through German territory.
- Although one of the most active sailing nations in Europe, Germany is not generally regarded as a cruising destination and most German sailors prefer to do their cruising away from home.
- Cruising opportunities on the North Sea coast are rather limited and the restrictions imposed on cruising in some of the German Frisian Islands have reduced the destinations ever further, but the eastern part of Germany offers many more Baltic ports to the German cruising portfolio. There are several attractive historic towns to visit here, as well as the island of Rügen and the surrounding area.
- The only contact many visiting yachts have with Germany is the Kiel Canal, the convenient shortcut from the North Sea to the Baltic. Those with more time on hand may be tempted to sail up the narrow estuaries to the old Hanseatic ports of Hamburg, Bremen or Lübeck.
- The most extensive repair facilities are concentrated around the main sailing centres at Hamburg, Kiel and Bremen. Here also there is a comprehensive range of marine supplies. Marinas and small boatyards, however, are spread around the entire coastline and also in the rivers and estuaries.
- Cuxhaven Marina, at the mouth of the Elbe, is an excellent place to prepare for the transit of the Kiel Canal towards the Baltic. Kiel is the place to stop for boats transiting the canal in the opposite direction.
Weather
Germany has a temperate climate, with warm summers and cold winters. The coastal areas are generally milder than inland in the winter. In the North Sea the predominating winds are SW or W. The incidence of gales is low in summer but increases in spring and autumn. Gales usually veer from SW to NW producing cross seas. Winds on the Baltic coast are variable.
The VHF weather forcasts are outsourced to the DP07 which is a commercial company. Radio checks, travel reports and other communications require a paid subscription. Radio traffic is on standard VHF channels and it is possible to listen the weather forecasts. There are no pre-anouncements on channel 16, but working channels and times are found in pilot books.
Main Ports
Baltic Coast:
Barth
,
Flensburg *
,
Greifswald
,
Heiligenhafen
,
Kuhlungsborn
,
Neustadt in Holstein
,
Rostock(Warnemunde) *
,
Rugen Island
,
Stralsund *
,
Travemunde (Lubeck) *
,
Wismar *
Frisian Islands:
Borkum *
,
Helgoland *
,
Juist
,
Norderney *
,
Wangerooge
Kiel Canal:
Brunsbuttel *
,
Kiel (Kieler Hafen) *
,
Kiel Kanal
,
Kiel-Holtenau
North Sea Coast:
Bremerhaven *
,
Cuxhaven *
,
Dornumer-Accumersiel
,
Emden *
,
Hamburg *
,
Norddeich *
,
Wilhelmshaven *
* indicates port of entry


The gross domestic product per capita, or GDP per capita, is a measure of a country's economic output that accounts for its number of people. It divides the country's gross domestic product by its total population. This bar chart race shows the evolution of this measure from year 2005 to 2019 in the Eurozone and Luxembourg having a consistently high GDP per capita compared to any other EU countries over the past 15 years.


DRANDINITIALIZEBBS / SRANDINITIALIZEBBS
Alternative initialization routine for the Blum-Blum-Shub generator. Unlike the other base generators supplied with the ACML, the Blum-Blum-Shub generator requires two additional parameters, p and q as well as an initial state, s. As p, q and s can be of an arbitrary size. In order to avoid overflow these values are expressed as a polynomial in B, where B=2^(24). For example, p can be factored into a polynomial of order l_p, with p = p_1 + p_2B + p_3B^2 + ... + p_(l_p) * B^(l_p-1), similarly q = q_1 + q_2B + q_3B^2 + ... + q_(l_q) * B^(l_q-1) and s = s_1 + s_2B + s_3B^2 + \cdots + s_(l_s) * B^(l_s-1).
(Note that SRANDINITIALIZEBBS is the single precision version of DRANDINITIALIZEBBS. The argument lists of both routines are identical except that any double precision arguments of DRANDINITIALIZEBBS are replaced in SRANDINITIALIZEBBS by single precision arguments - type REAL in FORTRAN or type float in C).
— Input: INTEGER NBITS
On input: the number of bits, v, to use from each iteration of the Blum-Blum-Shub generator. If NBITS<1 then NBITS=1. If NBITS>15 then NBITS=15.
— Input: INTEGER LP
On input: the order of the polynomial used to express p (l_p).
Constraint: 1 <=LP <=25.— Input: INTEGER P(LP)
On input: the coefficients of the polynomial used to express p. P(i)=p_i, i=1 to l_p.
Constraint: 0 <=P (i) < 2^(24)— Input: INTEGER LQ
On input: the order of the polynomial used to express q (l_q).
Constraint: 1 <=LQ <=25.— Input: INTEGER Q(LQ)
On input: the coefficients of the polynomial used to express q. Q(i)=q_i, i=1 to l_q.
Constraint: 0 <=Q (i) < 2^(24)— Input: INTEGER LS
On input: the order of the polynomial used to express s (l_s).
Constraint: 1 <=LS <=25.— Input: INTEGER S(LS)
On input: the coefficients of the polynomial used to express s. S(i)=s_i, i=1 to l_s.
Constraint: 0 <=S (i) < 2^(24)— Output: INTEGER STATE(*)
On output: the initial state for the Blum-Blum-Shub generator with parameters P,Q,S and NBITS.
— Input/Output: INTEGER LSTATE
On input: either the length of the state vector, STATE, or a value <=0 .
On output: if LSTATE<=0 on input, then LSTATE is set to the minimum length of the state vector STATE for the parameters chosen, and the routine returns. Otherwise LSTATE is left unchanged.
Constraint: LSTATE<=0 or LSTATE >=l_p+l_q+l_s+6


7.5. Elasticsearch Connector
Overview
The Elasticsearch Connector allows access to Elasticsearch data from Presto. This document describes how to setup the Elasticsearch Connector to run SQL queries against Elasticsearch.
Note
It is highly recommended to use Elasticsearch 6.0.0 or later.
Configuration
To configure the Elasticsearch connector, create a catalog properties file
etc/catalog/elasticsearch.properties
with the following contents,
replacing the properties as appropriate:
connector.name=elasticsearch
elasticsearch.default-schema=default
elasticsearch.table-description-directory=etc/elasticsearch/
elasticsearch.scroll-size=1000
elasticsearch.scroll-timeout=2s
elasticsearch.request-timeout=2s
elasticsearch.max-request-retries=5
elasticsearch.max-request-retry-time=10s
Configuration Properties
The following configuration properties are available:
| Property Name | Description |
|---|---|
elasticsearch.default-schema |
Default schema name for tables. |
elasticsearch.table-description-directory |
Directory containing JSON table description files. |
elasticsearch.scroll-size |
Maximum number of hits to be returned with each Elasticsearch scroll request. |
elasticsearch.scroll-timeout |
Amount of time Elasticsearch will keep the search context alive for scroll requests. |
elasticsearch.max-hits |
Maximum number of hits a single Elasticsearch request can fetch. |
elasticsearch.request-timeout |
Timeout for Elasticsearch requests. |
elasticsearch.max-request-retries |
Maximum number of Elasticsearch request retries. |
elasticsearch.max-request-retry-time |
Use exponential backoff starting at 1s up to the value specified by this configuration when retrying failed requests. |
elasticsearch.default-schema
Defines the schema that will contain all tables defined without a qualifying schema name.
This property is optional; the default is default
.
elasticsearch.table-description-directory
Specifies a path under the Presto deployment directory that contains
one or more JSON files with table descriptions (must end with .json
).
This property is optional; the default is etc/elasticsearch
.
elasticsearch.scroll-size
This property defines the maximum number of hits that can be returned with each Elasticsearch scroll request.
This property is optional; the default is 1000
.
elasticsearch.scroll-timeout
This property defines the amount of time Elasticsearch will keep the search context alive for scroll requests
This property is optional; the default is 1s
.
elasticsearch.max-hits
This property defines the maximum number of hits an Elasticsearch request can fetch.
This property is optional; the default is 1000000
.
elasticsearch.request-timeout
This property defines the timeout value for all Elasticsearch requests.
This property is optional; the default is 10s
.
elasticsearch.max-request-retries
This property defines the maximum number of Elasticsearch request retries.
This property is optional; the default is 5
.
elasticsearch.max-request-retry-time
Use exponential backoff starting at 1s up to the value specified by this configuration when retrying failed requests.
This property is optional; the default is 10s
.
Search Guard Authentication
The Elasticsearch connector provides additional security options to support Elasticsearch clusters that have been configured to use Search Guard.
You can configure the certificate format by setting the searchguard.ssl.transport.certificate_format
config property in the Elasticsearch catalog properties file. The allowed values for this configuration are:
| Property Value | Description |
|---|---|
NONE (default) |
Do not use Search Guard Authentication. |
PEM |
Use X.509 PEM certificates and PKCS #8 keys. |
JKS |
Use Keystore and Truststore files. |
If you use X.509 PEM certificates and PKCS #8 keys, the following properties must be set:
| Property Name | Description |
|---|---|
searchguard.ssl.transport.pemcert_filepath |
Path to the X.509 node certificate chain. |
searchguard.ssl.transport.pemkey_filepath |
Path to the certificates key file. |
searchguard.ssl.transport.pemkey_password |
Key password. Omit this setting if the key has no password. |
searchguard.ssl.transport.pemtrustedcas_filepath |
Path to the root CA(s) (PEM format). |
If you use Keystore and Truststore files, the following properties must be set:
| Property Name | Description |
|---|---|
searchguard.ssl.transport.keystore_filepath |
Path to the keystore file. |
searchguard.ssl.transport.keystore_password |
Keystore password. |
searchguard.ssl.transport.truststore_filepath |
Path to the truststore file. |
searchguard.ssl.transport.truststore_password |
Truststore password. |
searchguard.ssl.transport.pemcert_filepath
The path to the X.509 node certificate chain. This file must be readable by the operating system user running Presto.
This property is optional; the default is etc/elasticsearch/esnode.pem
.
searchguard.ssl.transport.pemkey_filepath
The path to the certificates key file. This file must be readable by the operating system user running Presto.
This property is optional; the default is etc/elasticsearch/esnode-key.pem
.
searchguard.ssl.transport.pemkey_password
The key password for the key file specified by searchguard.ssl.transport.pemkey_filepath
.
This property is optional; the default is empty string.
searchguard.ssl.transport.pemtrustedcas_filepath
The path to the root CA(s) (PEM format). This file must be readable by the operating system user running Presto.
This property is optional; the default is etc/elasticsearch/root-ca.pem
.
searchguard.ssl.transport.keystore_filepath
The path to the keystore file. This file must be readable by the operating system user running Presto.
This property is optional; the default is etc/elasticsearch/keystore.jks
.
searchguard.ssl.transport.keystore_password
The keystore password for the keystore file specified by searchguard.ssl.transport.keystore_filepath
This property is optional; the default is empty string.
searchguard.ssl.transport.truststore_filepath
The path to the truststore file. This file must be readable by the operating system user running Presto.
This property is optional; the default is etc/elasticsearch/truststore.jks
.
searchguard.ssl.transport.truststore_password
The truststore password for the truststore file specified by searchguard.ssl.transport.truststore_password
This property is optional; the default is empty string.
Table Definition Files
Elasticsearch stores the data across multiple nodes and builds indices for fast retrieval. For Presto, this data must be mapped into columns to allow queries against the data.
A table definition file describes a table in JSON format.
{
"tableName": ...,
"schemaName": ...,
"host": ...,
"port": ...,
"clusterName": ...,
"index": ...,
"indexExactMatch": ...,
"type": ...
"columns": [
{
"name": ...,
"type": ...,
"jsonPath": ...,
"jsonType": ...,
"ordinalPosition": ...
}
]
}
| Field | Required | Type | Description |
|---|---|---|---|
tableName |
required | string | Name of the table. |
schemaName |
optional | string | Schema that contains the table. If omitted, the default schema name is used. |
host |
required | string | Elasticsearch search node host name. |
port |
required | integer | Elasticsearch search node port number. |
clusterName |
required | string | Elasticsearch cluster name. |
index |
required | string | Elasticsearch index that is backing this table. |
indexExactMatch |
optional | boolean | If set to true, the index specified with the index property is used. Otherwise, all indices starting with the prefix specified by the index property are used. |
type |
required | string | Elasticsearch mapping type, which determines how the document are indexed (like “_doc”). |
columns |
optional | list | List of column metadata information. |
Elasticsearch Column Metadata
Optionally, column metadata can be described in the same table description JSON file with these fields:
| Field | Required | Type | Description |
|---|---|---|---|
name |
required | string | Column name of Elasticsearch field. |
type |
required | string | Column type of Elasticsearch field (see second column of data type mapping). |
jsonPath |
required | string | Json path of Elasticsearch field (when in doubt set to the same as name ). |
jsonType |
required | string | Json type of Elasticsearch field (when in doubt set to the same as type ). |
ordinalPosition |
optional | integer | Ordinal position of the column. |
Data Types
The data type mappings are as follows:
| Elasticsearch | Presto |
|---|---|
binary |
VARBINARY |
boolean |
BOOLEAN |
double |
DOUBLE |
float |
DOUBLE |
integer |
INTEGER |
keyword |
VARCHAR |
long |
BIGINT |
string |
VARCHAR |
text |
VARCHAR |
| (others) | (unsupported) |


Class Scores
Game Jolt supports multiple online score tables, or scoreboards, per game. You are able to, for example, have a score table for each level in your game, or a table for different scoring metrics. Gamers will keep coming back to try to achieve the highest scores for your game. With multiple formatting and sorting options, the system is quite flexible. You are also able to include extra data with each score. If there is other data associated with the score such as time played, coins collected, etc., you should definitely include it. It will be helpful in cases where you believe a gamer has illegitimately achieved a high score.
Inherited Members
Namespace: GameJolt.Services
Assembly: GameJolt.dll
Syntax
public sealed class Scores : Service
Methods
| Improve this Doc View SourceAdd(Credentials, Int32, String, String, Int32, Action<Response>)
Adds a score for a user or guest.
Declaration
public void Add(Credentials credentials, int value, string text, string extra = "", int tableId = 0, Action<Response> callback = null)
Parameters
| Type | Name | Description |
|---|---|---|
| Credentials | credentials | The user's credentials. |
| System.Int32 | value | This is a numerical sorting value associated with the score. All sorting will be based on this number. |
| System.String | text | This is a string value associated with the score. This value will be shown to the user on GameJolt |
| System.String | extra | If there's any extra data you would like to store as a string, you can use this variable. |
| System.Int32 | tableId | The ID of the score table to submit to. If not set, the primary table is used. |
| System.Action<Response> | callback | Action that is called on completion or error. |
Add(String, Int32, String, String, Int32, Action<Response>)
Adds a score for a user or guest. GameJolt let's you define if guest scores are allowed or not.
Declaration
public void Add(string guestName, int value, string text, string extra = "", int tableId = 0, Action<Response> callback = null)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | guestName | The guest's name. |
| System.Int32 | value | This is a numerical sorting value associated with the score. All sorting will be based on this number. |
| System.String | text | This is a string value associated with the score. This value will be shown to the user on GameJolt |
| System.String | extra | If there's any extra data you would like to store as a string, you can use this variable. |
| System.Int32 | tableId | The ID of the score table to submit to. If not set, the primary table is used. |
| System.Action<Response> | callback | Action that is called on completion or error. |
AddAsync(Credentials, Int32, String, String, Int32)
Adds a score for a user or guest.
Declaration
public Task<Response> AddAsync(Credentials credentials, int value, string text, string extra = "", int tableId = 0)
Parameters
| Type | Name | Description |
|---|---|---|
| Credentials | credentials | The user's credentials. |
| System.Int32 | value | This is a numerical sorting value associated with the score. All sorting will be based on this number. |
| System.String | text | This is a string value associated with the score. This value will be shown to the user on GameJolt |
| System.String | extra | If there's any extra data you would like to store as a string, you can use this variable. |
| System.Int32 | tableId | The ID of the score table to submit to. If not set, the primary table is used. |
Returns
| Type | Description |
|---|---|
| System.Threading.Tasks.Task<Response> |
AddAsync(String, Int32, String, String, Int32)
Adds a score for a user or guest. GameJolt let's you define if guest scores are allowed or not.
Declaration
public Task<Response> AddAsync(string guestName, int value, string text, string extra = "", int tableId = 0)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | guestName | The guest's name. |
| System.Int32 | value | This is a numerical sorting value associated with the score. All sorting will be based on this number. |
| System.String | text | This is a string value associated with the score. This value will be shown to the user on GameJolt |
| System.String | extra | If there's any extra data you would like to store as a string, you can use this variable. |
| System.Int32 | tableId | The ID of the score table to submit to. If not set, the primary table is used. |
Returns
| Type | Description |
|---|---|
| System.Threading.Tasks.Task<Response> |
Fetch(Credentials, Int32, Int32, Nullable<Int32>, Nullable<Int32>, Action<Response<Score[]>>)
Returns a list of scores either for a user or globally for a game.
Declaration
public void Fetch(Credentials credentials = null, int tableId = 0, int limit = 10, int? betterThan = default(int? ), int? worseThan = default(int? ), Action<Response<Score[]>> callback = null)
Parameters
| Type | Name | Description |
|---|---|---|
| Credentials | credentials | If provided, only the scores of this user are returned. |
| System.Int32 | tableId | The id of the score table. If left empty, the primary table is used. |
| System.Int32 | limit | The number of scores you'd like to return. The maximum amount of scores you can retrieve is 100. |
| System.Nullable<System.Int32> | betterThan | If provided, only scores better than this value are returned. |
| System.Nullable<System.Int32> | worseThan | If provided, only scores worse than this value are returned. |
| System.Action<Response<Score[]>> | callback | Action that is called on completion or error. |
Fetch(String, Int32, Int32, Nullable<Int32>, Nullable<Int32>, Action<Response<Score[]>>)
Returns a list of scores either for a guest.
Declaration
public void Fetch(string guest, int tableId = 0, int limit = 10, int? betterThan = default(int? ), int? worseThan = default(int? ), Action<Response<Score[]>> callback = null)
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | guest | Only the scores of this guest are returned. |
| System.Int32 | tableId | The id of the score table. If left empty, the primary table is used. |
| System.Int32 | limit | The number of scores you'd like to return. The maximum amount of scores you can retrieve is 100. |
| System.Nullable<System.Int32> | betterThan | If provided, only scores better than this value are returned. |
| System.Nullable<System.Int32> | worseThan | If provided, only scores worse than this value are returned. |
| System.Action<Response<Score[]>> | callback | Action that is called on completion or error. |
FetchAsync(Credentials, Int32, Int32, Nullable<Int32>, Nullable<Int32>)
Returns a list of scores either for a user or globally for a game.
The betterThan
and worseThan
parameters are mutually exclusive.
Declaration
public Task<Response<Score[]>> FetchAsync(Credentials credentials = null, int tableId = 0, int limit = 10, int? betterThan = default(int? ), int? worseThan = default(int? ))
Parameters
| Type | Name | Description |
|---|---|---|
| Credentials | credentials | If provided, only the scores of this user are returned. |
| System.Int32 | tableId | The id of the score table. If left empty, the primary table is used. |
| System.Int32 | limit | The number of scores you'd like to return. The maximum amount of scores you can retrieve is 100. |
| System.Nullable<System.Int32> | betterThan | If provided, only scores better than this value are returned. |
| System.Nullable<System.Int32> | worseThan | If provided, only scores worse than this value are returned. |
Returns
| Type | Description |
|---|---|
| System.Threading.Tasks.Task<Response<Score[]>> |
FetchAsync(String, Int32, Int32, Nullable<Int32>, Nullable<Int32>)
Returns a list of scores either for a user or globally for a game.
The betterThan
and worseThan
parameters are mutually exclusive.
Declaration
public Task<Response<Score[]>> FetchAsync(string guestName, int tableId = 0, int limit = 10, int? betterThan = default(int? ), int? worseThan = default(int? ))
Parameters
| Type | Name | Description |
|---|---|---|
| System.String | guestName | Only the scores of this guest are returned. |
| System.Int32 | tableId | The id of the score table. If left empty, the primary table is used. |
| System.Int32 | limit | The number of scores you'd like to return. The maximum amount of scores you can retrieve is 100. |
| System.Nullable<System.Int32> | betterThan | If provided, only scores better than this value are returned. |
| System.Nullable<System.Int32> | worseThan | If provided, only scores worse than this value are returned. |
Returns
| Type | Description |
|---|---|
| System.Threading.Tasks.Task<Response<Score[]>> |
FetchTables(Action<Response<Table[]>>)
Returns a list of high score tables for a game.
Declaration
public void FetchTables(Action<Response<Table[]>> callback)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Action<Response<Table[]>> | callback | Action that is called on completion or error. |
FetchTablesAsync()
Returns a list of high score tables for a game.
Declaration
public Task<Response<Table[]>> FetchTablesAsync()
Returns
| Type | Description |
|---|---|
| System.Threading.Tasks.Task<Response<Table[]>> |
GetRank(Int32, Int32, Action<Response<Int32>>)
Returns the rank of a particular score on a score table.
Declaration
public void GetRank(int value, int tableId = 0, Action<Response<int>> callback = null)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | value | This is a numerical sorting value that is represented by a rank on the score table. |
| System.Int32 | tableId | The ID of the score table to submit to. If not set, the primary table is used. |
| System.Action<Response<System.Int32>> | callback | Action that is called on completion or error. |
GetRankAsync(Int32, Int32)
Returns the rank of a particular score on a score table.
Declaration
public Task<Response<int>> GetRankAsync(int value, int tableId = 0)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | value | This is a numerical sorting value that is represented by a rank on the score table. |
| System.Int32 | tableId | The ID of the score table to submit to. If not set, the primary table is used. |
Returns
| Type | Description |
|---|---|
| System.Threading.Tasks.Task<Response<System.Int32>> |


1234 River Street
Nairobi, Kenya
(+254)<PHONE_NUMBER>
(+254) 721202120
<EMAIL_ADDRESS>Mon - Fri: 8:00am - 5:00pm
24/7
I agree that my submitted data is being collected and stored.


Reading and Writing values¶
Some instruments allow to transfer to and from the computer larger datasets with a single query. A typical example is an oscilloscope, which you can query for the whole voltage trace. Or an arbitrary wave generator to which you have to transfer the function you want to generate.
Basically, data like this can be transferred in two ways: in ASCII form (slow, but human readable) and binary (fast, but more difficult to debug).
PyVISA Message Based Resources have different methods for this
called read_ascii_values()
, query_ascii_values()
and read_binary_values()
,
query_binary_values()
.
Reading ASCII values¶
If your oscilloscope (open in the variable inst
) has been configured to
transfer data in ASCII when the CURV?
command is issued, you can just
query the values like this:
>>> values = inst.query_ascii_values('CURV?')
values
will be list
containing the values from the device.
In many cases you do not want a list
but rather a different container type
such as a numpy.array
. You can of course cast the data afterwards like
this:
>>> values = np.array(inst.query_ascii_values('CURV?'))
but sometimes it is much more efficient to avoid the intermediate list, and in this case you can just specify the container type in the query:
>>> values = inst.query_ascii_values('CURV?', container=numpy.array)
In container
, you can have any callable/type that takes an iterable.
Note
When using numpy.array or numpy.ndarray, PyVISA will use numpy routines to optimize the conversion by avoiding the use of an intermediate representation.
Some devices transfer data in ASCII but not as decimal numbers but rather hex
or oct. Or you might want to receive an array of strings. In that case you can
specify a converter
. For example, if you expect to receive integers as hex:
>>> values = inst.query_ascii_values('CURV?', converter='x')
converter
can be one of the Python string formatting codes.
But you can also specify a callable that takes a single argument if needed.
The default converter is 'f'
.
Finally, some devices might return the values separated in an uncommon way. For
example if the returned values are separated by a '$'
you can do the
following call:
>>> values = inst.query_ascii_values('CURV?', separator='$')
You can provide a function to takes a string and returns an iterable.
Default value for the separator is ','
(comma)
Reading binary values¶
If your oscilloscope (open in the variable inst
) has been configured to
transfer data in BINARY when the CURV?
command is issued, you need to
know which type datatype (e.g. uint8, int8, single, double, etc) is being
used. PyVISA use the same naming convention as the
struct module.
You also need to know the endianness. PyVISA assumes little-endian as default. If you have doubles d in big endian the call will be:
>>> values = inst.query_binary_values('CURV?', datatype='d', is_big_endian=True)
You can also specify the output container type, just as it was shown before.
By default, PyVISA will assume that the data block is formatted according to
the IEEE convention. If your instrument uses HP data block you can pass
header_fmt='hp'
to read_binary_values
. If your instrument does not use
any header for the data simply header_fmt='empty'
.
By default PyVISA assumes, that the instrument will add the termination
character at the end of the data block and actually makes sure it reads it to
avoid issues. This behavior fits well a number of devices. However some devices
omit the termination character, in which cases the operation will timeout.
In this situation, first makes sure you can actually read from the instrument
by reading the answer using the read_raw
function (you may need to call it
multiple time), and check that the advertized length of the block match what
you get from your instrument (plus the header). If it is so, then you can
safely pass expect_termination=False
, and PyVISA will not look for a
termination character at the end of the message.
If you can read without any problem from your instrument, but cannot retrieve
the full message when using this method (VI_ERROR_CONN_LOST,
VI_ERROR_INV_SETUP, or Python simply crashes), try passing different values for
chunk_size``(the default is 20*1024). The underlying mechanism for this issue
is not clear but changing ``chunk_size
has been used to work around it. Note
that using larger chunk sizes for large transfer may result in a speed up of
the transfer.
In some cases, the instrument may use a protocol that does not indicate how
many bytes will be transferred. The Keithley 2000 for example always return the
full buffer whose size is reported by the ‘trace:points?’ command. Since a
binary block may contain the termination character, PyVISA need to know how
many bytes to expect. For those case, you can pass the expected number of
points using the data_points
keyword argument. The number of bytes will be
inferred from the datatype of the block.
Writing ASCII values¶
To upload a function shape to arbitrary wave generator, the command might be
WLISt:WAVeform:DATA <waveform name>,<function data>
where
<waveform name>
tells the device under which name to store the data.
>>> values = list(range(100))
>>> inst.write_ascii_values('WLISt:WAVeform:DATA somename,', values)
Again, you can specify the converter code.
>>> inst.write_ascii_values('WLISt:WAVeform:DATA somename,', values, converter='x')
converter
can be one of the Python string formatting codes.
But you can also specify a callable that takes a single argument if needed.
The default converter is 'f'
.
The separator can also be specified just like in query_ascii_values
.
>>> inst.write_ascii_values('WLISt:WAVeform:DATA somename,', values, converter='x', separator='$')
You can provide a function to takes a iterable and returns an string.
Default value for the separator is ','
(comma)
Writing binary values¶
To upload a function shape to arbitrary wave generator, the command might be
WLISt:WAVeform:DATA <waveform name>,<function data>
where
<waveform name>
tells the device under which name to store the data.
>>> values = list(range(100))
>>> inst.write_binary_values('WLISt:WAVeform:DATA somename,', values)
Again you can specify the datatype
and endianness
.
>>> inst.write_binary_values('WLISt:WAVeform:DATA somename,', values, datatype='d', is_big_endian=False)
When things are not what they should be¶
PyVISA provides an easy way to transfer data from and to the device. The methods described above work fine for 99% of the cases but there is always a particular device that do not follow any of the standard protocols and is so different that cannot be adapted with the arguments provided above.
In those cases, you need to get the data:
>>> inst.write('CURV?')
>>> data = inst.read_raw()
and then you need to implement the logic to parse it.
Alternatively if the read_raw call fails you can try to read just a few bytes using:
>>> inst.write('CURV?')
>>> data = inst.read_bytes(1)
If this call fails it may mean that your instrument did not answer, either because it needs more time or because your first instruction was not understood.


[the cutting edge ]
G'day Developers!
How do we make good Product Owners?
At my TechEd talks this month (Australia and New Zealand) I talked about Product Owners.
After my session there was lots of discussion around the
Product Owner Scrum role, and what makes a good one. I loved hearing the stories of
dysfunction about Product Owners who have not done their job well.
The client is generally the Product Owner (PO). They should read the Scrum Guide, watch
my new Product
Owner video and communicate an understanding of their role. It is so important
to the success of their project.
What does a good Product Owner need to do?
- Be available for Sprint
Reviews,
Retrospectives
and Sprint
Planning
meetings (approximately half a day for these 3 meetings, for each 2 week
sprint).
- Order the Product Backlog. The important things will be done first, in order to
maximize the ROI as the budget will run out one day.
- Be available, at least remotely, to unblock a developer if he has
questions/impediments. A good PO has a feeling of urgency.
- Ideally listen in on Daily
Scrums. This is optional but means that the PO will have daily insight into
the team’s progress.
- Understand Product Backlog Items (PBIs) and be able to explain what they want using
Acceptance
Criteria.
This is the main way that developers and POs sync their understanding of what needs
to be done.
- Agree on a Sprint Goal for each sprint.
- Not influence (or anchor) developer estimates with comments like "this one will be
easy" and allow the team to come up with converged estimates.
- Respect the Sprint
Goal. Understand that the team will only work on things in the Sprint
Backlog and don't expect other things to be done as well. Most things can wait for
the next sprint.
Who should be the Product Owner?
It's hard to give guidance on who in the company would make a good PO. The usual
candidate is often extremely busy. It should be:
- Someone with a personal stake in the success of the project.
- Someone who is available
- Someone with a clear vision of the product,
- Someone who has authority with budget
e.g. They could authorise adding a designer to a sprint for a couple of days
- Someone who has read the Scrum Guide and watched the Product Owner video and
understands the role.
It's possible to outsource the role of PO to someone in the development consulting
company, but this is not
recommended. Don't put the fox in charge of the chickens.
During my session I said:
"Most dysfunction I see in Scrum teams is caused by a bad Product Owner"
Adam Cogan during Teched session.
Professional Scrum Trainer, Scrum.org
This statement is based on my experience. I wonder if it rings true of what *you* are
seeing? Let me know in the comments...
-Adam Cogan, SSW
Got a comment for Adam?
Email Adam Cogan
Comment
Adam Cogan's blog
Tweet @adamcogan
|
NEW SSW TV VIDEOS!
Scrum Guide - What Is A Product Owner?
In this SSW TV Special, we converted the ‘Product Owner’ definition from the 2013 Scrum
Guide into cartoon form to illustrate the role of a Product Owner in a Scrum team.
(From the 2013 Scrum Guide)
The Product Owner
The Product Owner is responsible for maximizing the value of the product and the work of
the Development Team.
How this is done may vary widely across organizations, Scrum Teams, and individuals.
The Product Owner is the sole person responsible for managing the Product Backlog.
Product Backlog management includes:
- Clearly expressing Product Backlog items;
- Ordering the items in the Product Backlog to best achieve goals and missions;
- Ensuring the value of the work the Development Team performs;
- Ensuring that the Product Backlog is visible, transparent, and clear to all, and
shows what the Scrum Team will work on next; and,
- Ensuring the Development Team understands items in the Product Backlog to the level
needed.

Watch
more videos on SSW TV
|
ALM in a Day Training
Brings developers up-to-speed on the new features of VS and TFS 2013
|
|
Brisbane, Melbourne, Sydney, Perth, Canberra
Cost: $110 + GST half day or $190 + GST full day
|
This full day training course brings developers up-to-speed on the new features and
benefits of Visual Studio 2013 and Team Foundation Server
2013. With detailed insight into project management using Scrum and testing using the
Microsoft Test Manager. Attendees will leave with a strong
understanding of how to embrace TFS 2013 in their organization.
Course at a Glance:
Team Foundation Server 2013 (TFS) for Successful Project Management
Visual Studio Ultimate (formerly Visual Studio Team System (VSTS)) and Team Foundation
Server (TFS) are the cornerstones of development on the Microsoft
.NET platform. These are the best tools for a project manager to have successful
projects and for the developers to have a focused and smooth
software development process.
Visual Studio 2013 and TFS (formerly Team System) - An ALM Overview
Microsoft Visual Studio 2010 ALM (formerly Team System) Team System is an integrated
software development platform to build the mission-critical
applications that businesses depend on. It extends Visual Studio's integrated and
productive experience from the developer to the entire
development team, by delivering powerful new role-based tools for software architects,
developers, testers and project managers (or Scrum
Masters if you are agile). In this session you will see an overview of these tools and
how they can improve your software development cycle.
Find
out more and Register
|
There's Still Time to Sign Up for the 3 Day Scrum Training!
Intensive Professional Scrum Developer Course
|
|
Brisbane, Melbourne, Sydney, Perth, Canberra, Adelaide
Cost: $2,995 + GST
|
Professional Scrum Developer courses teach students how to work in a team - using modern
software engineering practices - to develop
an increment of potentially releasable functionality using a specific technology
platform.
Classes are exercise-driven, with students working in self-organizing teams to develop
"done" increments from Product Backlog items.
Course at a Glance:
This 3-day Professional Scrum Developer .NET course is a mix of lecture, demonstration,
group discussion, simulation, and hands-on
software development. The bulk of the course will be spent working as a team on a case
study application delivering increments of new
functionality in mini-sprints. Here is the course at a glance:
Note: Scrum fundamentals are not covered in this 3-day course. If you are not
experienced with Scrum fundamentals, the
5
day course is still available.
Adelaide
08 OCT 2013 |
|
Melbourne
22 OCT 2013 |
|
Sydney
14 OCT 2013 |
|
Perth
04 NOV 2013 |
|
Canberra
10 DEC 2013 |
|
Find
out more and Register
|
SSW live-streamed webinar
Lessons Learned Writing Mobile Sites - presented by Dino Esposito
|
|
Thursday 10th October 2013
11.00am - 12.00pm
Cost: No Charge
|
Too many web sites are neither optimized nor adapted to render well on mobile devices and
too many developers think it only needs some CSS.
Responsive Web Design (RWD) delivers multi-device views without extra costs, but what if
you have workflows to implement or different use-cases?
The session discusses a few real examples where RWD is not enough and server-side
detection is necessary.
About the presenter:
|
Sydney .NET User Group
The best place to learn .NET for free in Sydney
|
|
Sydney
.NET User Group
Wednesday 18th September 2013
6:00pm - 8:00pm
SSW Office
Gateway Court, Suite 13
81-91 Military Road, Neutral Bay NSW 2089
|
"What’s New for ALM in Visual Studio 2013 and Team Foundation Server 2013" - Adam
Cogan
The latest versions of Visual Studio and TFS bring some great new features for
developers, Product Owners, testers, and even the crusty old
stakeholders. More than ever, TFS integrates the whole ALM story to help you deliver
your project on time and on budget.
In this session, we’ll quickly recap the best features of TFS 2012 and then look at the
great new features in TFS 2013. Adam Cogan will show you
the new ALM features that make TFS perfect for Product Owners and company Stakeholders,
and how developers work with TFS more effectively than ever,
right from Visual Studio. The session will finish off with an awesome story for testers.
ABOUT THE PRESENTER:
Adam Cogan is the Chief Architect at SSW, a Microsoft Gold Partner specializing in custom
.NET, SharePoint and CRM solutions (with a
splash of Business Intelligence). At SSW, Adam has been developing custom solutions for
businesses across a range of industries such as Government,
engineering, banking, insurance and manufacturing since 1990 for clients such as
Microsoft, Worley Parsons and Aurecon.
At SSW, Adam enjoys working with the teams, improving their usage of Scrum and TFS,
reviewing the architecture of large .NET projects, while also
taking an active interest in the overall User Experience (UX).
To see more details and RSVP, please visit our Facebook .NET Group, our
LinkedIn
.NET Group
or our Meetup
Group.
|
SSW and Telerik NerdDinner
Where nerds meet and eat
SSW and Telerik invite you to join us for pizza at The Oaks. A fantastic opportunity for
networking with peers and sharing thoughts after the Sydney .NET User Group
presentation.
Sydney .Net User Group and NerdDinner proudly sponsored by:
|
Canberra .NET User Group
The best place to learn .NET for free in Canberra
|
|
Canberra
.NET User Group
Monday 16th September 2013
6:00pm - 8:00pm
Microsoft Canberra Branch
Walter Turnbull Building
Level 2, 44 Sydney Ave
Canberra, Australia
|
"What’s New for ALM in Visual Studio 2013 and Team Foundation Server 2013" - Adam
Cogan
The latest versions of Visual Studio and TFS bring some great new features for
developers, Product Owners, testers, and even the crusty old
stakeholders. More than ever, TFS integrates the whole ALM story to help you deliver
your project on time and on budget.
In this session, we’ll quickly recap the best features of TFS 2012 and then look at the
great new features in TFS 2013. Adam Cogan will show you
the new ALM features that make TFS perfect for Product Owners and company Stakeholders,
and how developers work with TFS more effectively than ever,
right from Visual Studio. The session will finish off with an awesome story for testers.
ABOUT THE PRESENTER:
Adam Cogan is the Chief Architect at SSW, a Microsoft Certified Gold Partner specializing
in custom .NET, SharePoint and CRM solutions (with a
splash of Business Intelligence). At SSW, Adam has been developing custom solutions for
businesses across a range of industries such as Government,
engineering, banking, insurance and manufacturing since 1990 for clients such as
Microsoft, Worley Parsons and Aurecon.
At SSW, Adam enjoys working with the teams, improving their usage of Scrum and TFS,
reviewing the architecture of large .NET projects, while also
taking an active interest in the overall User Experience (UX).
To see more details and RSVP, please visit
our Facebook .NET Group,
our LinkedIn
.NET Group or
our Meetup
Group.
Canberra .Net User Group proudly sponsored by:
>
|
Advertise with SSW
If you would like to advertise your product or service with SSW or would like to
find out more about various advertising opportunities, please email your enquiry
to<EMAIL_ADDRESS>or call: +61
2 9953 3000.
|
|
September 2013
|
Employment
SharePoint 2013 Developer
Are you looking to establish a career working with the latest software technology for a
large range of great organisations?
SSW has been the leading Microsoft technology company in Sydney for 21 years. We require
an enthusiastic SharePoint developer to start ASAP.
Read
more and APPLY NOW...
|
|


|
BitMagic-C++
|
Enumerations | |
| enum | bm::distance_metric { bm::COUNT_AND = set_COUNT_AND, bm::COUNT_XOR = set_COUNT_XOR, bm::COUNT_OR = set_COUNT_OR, bm::COUNT_SUB_AB = set_COUNT_SUB_AB, bm::COUNT_SUB_BA = set_COUNT_SUB_BA, bm::COUNT_A = set_COUNT_A, bm::COUNT_B = set_COUNT_B } |
| Distance metrics codes defined for vectors A and B. More... | |
Functions | |
| distance_metric | bm::operation2metric (set_operation op) |
| Convert set operation into compatible distance metric. More... | |
| template<class BV > | |
| void | bm::distance_operation (const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end) |
| Distance computing template function. More... | |
| template<class BV > | |
| unsigned | bm::distance_and_operation (const BV &bv1, const BV &bv2) |
| Distance AND computing template function. More... | |
| template<class BV > | |
| void | bm::distance_operation_any (const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end) |
| Distance screening template function. More... | |
| template<class BV > | |
| bm::id_t | bm::count_and (const BV &bv1, const BV &bv2) |
| Computes bitcount of AND operation of two bitsets. More... | |
| template<class BV > | |
| bm::id_t | bm::any_and (const BV &bv1, const BV &bv2) |
| Computes if there is any bit in AND operation of two bitsets. More... | |
| template<class BV > | |
| bm::id_t | bm::count_xor (const BV &bv1, const BV &bv2) |
| Computes bitcount of XOR operation of two bitsets. More... | |
| template<class BV > | |
| bm::id_t | bm::any_xor (const BV &bv1, const BV &bv2) |
| Computes if there is any bit in XOR operation of two bitsets. More... | |
| template<class BV > | |
| bm::id_t | bm::count_sub (const BV &bv1, const BV &bv2) |
| Computes bitcount of SUB operation of two bitsets. More... | |
| template<class BV > | |
| bm::id_t | bm::any_sub (const BV &bv1, const BV &bv2) |
| Computes if there is any bit in SUB operation of two bitsets. More... | |
| template<class BV > | |
| bm::id_t | bm::count_or (const BV &bv1, const BV &bv2) |
| Computes bitcount of OR operation of two bitsets. More... | |
| template<class BV > | |
| bm::id_t | bm::any_or (const BV &bv1, const BV &bv2) |
| Computes if there is any bit in OR operation of two bitsets. More... | |
Distance metrics and algorithms to compute binary distances
| enum bm::distance_metric |
Distance metrics codes defined for vectors A and B.
| Enumerator | |
|---|---|
| COUNT_AND | (A & B).count() |
| COUNT_XOR | (A ^ B).count() |
| COUNT_OR | (A | B).count() |
| COUNT_SUB_AB | (A - B).count() |
| COUNT_SUB_BA | (B - A).count() |
| COUNT_A | A.count() |
| COUNT_B | B.count() |
Definition at line 57 of file bmalgo_impl.h.
| bm::id_t bm::any_and | ( | const BV & | bv1, |
| const BV & | bv2 | ||
| ) |
Computes if there is any bit in AND operation of two bitsets.
| bv1 | - Argument bit-vector. |
| bv2 | - Argument bit-vector. |
Definition at line 988 of file bmalgo_impl.h.
References bm::COUNT_AND, bm::distance_operation_any(), and bm::distance_metric_descriptor::result.
| bm::id_t bm::any_or | ( | const BV & | bv1, |
| const BV & | bv2 | ||
| ) |
Computes if there is any bit in OR operation of two bitsets.
| bv1 | - Argument bit-vector. |
| bv2 | - Argument bit-vector. |
Definition at line 1090 of file bmalgo_impl.h.
References bm::COUNT_OR, bm::distance_operation_any(), and bm::distance_metric_descriptor::result.
| bm::id_t bm::any_sub | ( | const BV & | bv1, |
| const BV & | bv2 | ||
| ) |
Computes if there is any bit in SUB operation of two bitsets.
| bv1 | - Argument bit-vector. |
| bv2 | - Argument bit-vector. |
Definition at line 1057 of file bmalgo_impl.h.
References bm::COUNT_SUB_AB, bm::distance_operation_any(), and bm::distance_metric_descriptor::result.
| bm::id_t bm::any_xor | ( | const BV & | bv1, |
| const BV & | bv2 | ||
| ) |
Computes if there is any bit in XOR operation of two bitsets.
| bv1 | - Argument bit-vector. |
| bv2 | - Argument bit-vector. |
Definition at line 1022 of file bmalgo_impl.h.
References bm::COUNT_XOR, bm::distance_operation_any(), and bm::distance_metric_descriptor::result.
| bm::id_t bm::count_and | ( | const BV & | bv1, |
| const BV & | bv2 | ||
| ) |
Computes bitcount of AND operation of two bitsets.
| bv1 | - Argument bit-vector. |
| bv2 | - Argument bit-vector. |
Definition at line 975 of file bmalgo_impl.h.
References bm::distance_and_operation().
Referenced by bv_count_and(), and main().
| bm::id_t bm::count_or | ( | const BV & | bv1, |
| const BV & | bv2 | ||
| ) |
Computes bitcount of OR operation of two bitsets.
| bv1 | - Argument bit-vector. |
| bv2 | - Argument bit-vector. |
Definition at line 1074 of file bmalgo_impl.h.
References bm::COUNT_OR, bm::distance_operation(), and bm::distance_metric_descriptor::result.
Referenced by bm::operation_deserializer< BV >::deserialize().
| bm::id_t bm::count_sub | ( | const BV & | bv1, |
| const BV & | bv2 | ||
| ) |
Computes bitcount of SUB operation of two bitsets.
| bv1 | - Argument bit-vector. |
| bv2 | - Argument bit-vector. |
Definition at line 1040 of file bmalgo_impl.h.
References bm::COUNT_SUB_AB, bm::distance_operation(), and bm::distance_metric_descriptor::result.
Referenced by bm::operation_deserializer< BV >::deserialize().
| bm::id_t bm::count_xor | ( | const BV & | bv1, |
| const BV & | bv2 | ||
| ) |
Computes bitcount of XOR operation of two bitsets.
| bv1 | - Argument bit-vector. |
| bv2 | - Argument bit-vector. |
Definition at line 1006 of file bmalgo_impl.h.
References bm::COUNT_XOR, bm::distance_operation(), and bm::distance_metric_descriptor::result.
Referenced by bm::operation_deserializer< BV >::deserialize(), and main().
| unsigned bm::distance_and_operation | ( | const BV & | bv1, |
| const BV & | bv2 | ||
| ) |
Distance AND computing template function.
| bv1 | - argument bitvector 1 (A) |
| bv2 | - argument bitvector 2 (B) |
Definition at line 781 of file bmalgo_impl.h.
References BLOCK_ADDR_SAN, bm::combine_count_and_operation_with_block(), bm::min_value(), and bm::set_array_size.
Referenced by bm::count_and().
| void bm::distance_operation | ( | const BV & | bv1, |
| const BV & | bv2, | ||
| distance_metric_descriptor * | dmit, | ||
| distance_metric_descriptor * | dmit_end | ||
| ) |
Distance computing template function.
Function receives two bitvectors and an array of distance metrics (metrics pipeline). Function computes all metrics saves result into corresponding pipeline results (distance_metric_descriptor::result) An important detail is that function reuses metric descriptors, incrementing received values. It allows you to accumulate results from different calls in the pipeline.
| bv1 | - argument bitvector 1 (A) |
| bv2 | - argument bitvector 2 (B) |
| dmit | - pointer to first element of metric descriptors array Input-Output parameter, receives metric code as input, computation is added to "result" field |
| dmit_end | - pointer to (last+1) element of metric descriptors array |
Definition at line 694 of file bmalgo_impl.h.
References BM_SET_MMX_GUARD, bm::combine_count_operation_with_block(), bm::distance_stage(), and bm::set_array_size.
Referenced by bm::similarity_batch< SDESCR >::calculate(), bm::count_or(), bm::count_sub(), bm::count_xor(), and main().
| void bm::distance_operation_any | ( | const BV & | bv1, |
| const BV & | bv2, | ||
| distance_metric_descriptor * | dmit, | ||
| distance_metric_descriptor * | dmit_end | ||
| ) |
Distance screening template function.
Function receives two bitvectors and an array of distance metrics (metrics pipeline). Function computes possybility of a metric(any bit) saves result into corresponding pipeline results (distance_metric_descriptor::result) An important detail is that function reuses metric descriptors, incrementing received values. It allows you to accumulate results from different calls in the pipeline.
| bv1 | - argument bitvector 1 (A) |
| bv2 | - argument bitvector 2 (B) |
| dmit | - pointer to first element of metric descriptors array Input-Output parameter, receives metric code as input, computation is added to "result" field |
| dmit_end | - pointer to (last+1) element of metric descriptors array |
Definition at line 848 of file bmalgo_impl.h.
References BM_IS_GAP, bm::combine_any_operation_with_block(), bm::distance_stage(), bm::distance_metric_descriptor::result, and bm::set_array_size.
Referenced by bm::any_and(), bm::any_or(), bm::any_sub(), and bm::any_xor().
|
inline |
Convert set operation into compatible distance metric.
Definition at line 73 of file bmalgo_impl.h.
References BM_ASSERT, bm::is_const_set_operation(), bm::set_COUNT, and bm::set_COUNT_B.
Referenced by bm::iterator_deserializer< BV, SerialIterator >::deserialize().


Our Bakery Starts when my grandmother Feliza Dela Rosa learned how to bake. She told us that she will try to open up a little bakery. Our breads in the very first day of opening was sold out. So my grandma decided to continue the business until now.
ELMINIC Breadhaus is a little bakery and has a goal to become a restaurant in the near future, but only that we are a small bakery, many customers still enjoy and keep on ordering some of our breads so the goal is not a dream but is yet to come.


| Keyword |
Usage |
Notes |
| Uploader |
uploader: <uploader> , uploader: me |
Keywords and values are case insensitive .
"me" returns all the datasets that you uploaded. |
| Tags |
tag: <tag 1> and <tag 2> ,
tags: <tag 1> and <tag 2> ,
tag: <tag 1> |
Keywords and value are case insensitive.
Inserting "and" will allow you to search for multiple tags. tags and tag are the same.
|
| Project |
project: <project name> , |
Keywords and value are case insensitive. |
| Anatomy |
anatomy: <anatomy> , |
Keywords and value are case insensitive. |
| References |
references: <references> ,
ref: <references> |
Keywords and value are case insensitive.
Ref and References are the same thing, but ref is a shortcut for references.
|
| Comments |
comments: <comment> |
Keywords and value are case insensitive.
Furthermore, it does NOT have to be an exact match, but rather if it contains.
|
| Funding Support |
funding_support: <supporter> ,
funding: <supporter> ,
support: <supporter> , |
Keywords and value are case insensitive.
"funding" and "support" are both shortcuts for "funding_support". |
| System Vendor |
system_vendor: <vendor> ,
vendor: <vendor> |
Keywords and value are case insensitive.
"vendor" is a shortcut for "system_vendor". |
| System Model |
system_model: <model> ,
model: <model> |
Keywords and value are case insensitive.
"model" is a shortcut for "system_model". |
| Protocol Name |
protocol_name: <protocol> ,
protocol: <protocol> |
Keywords and value are case insensitive.
"protocol" is a shortcut for "protocol_name". |
| Coil Name |
coil_name: <coil> ,
coil: <coil> |
Keywords and value are case insensitive.
"coil" is a shortcut for "coil_name". |
| Sequence Type |
sequence_type: <sequence> ,
sequence: <sequence> |
Keywords and value are case insensitive.
"sequence" is a shortcut for "sequence_type". |
| UUID |
uuid: <uuid> ,
id: <uuid> |
Keywords and value are case insensitive.
"id" is a shortcut for "uuid". |
| Fully Sampled |
fullysampled: <yes or no> ,
sampled: <yes or no> |
Keywords and value are case insensitive.
If sampled is unknown, state "unknown" or leave it blank.
Response can also be "y" for "yes" and "n" for "no".
Responses can also take the form of "1" for "yes" and "0" for "no".
"sampled" is a shortcut for "fullysampled". |


All E-Com Plus stores should include Bootstrap 4.6 theme to improve compatibility between brand colors, store template and third party widgets, keeping as possible a consistent visual identity.
To create a new template, you SHOULD use as possible the default bootstrap components, and/or adapt them to mirror your theme visual identity.
To create a new widget, you MUST use bootstrap components the maximum as possible, to follow the theme and store brand visual identity, you should also use CSS vars available on
:root
.
The merchant would set the primary and secondary colors following the store brand.
Use examples: Links, Call to actions, Obrigatory forms, Check boxes, Radio buttons, Toggles
Should be used to drive attention in the elements with relevant info, but where the user is not intended to take action
Use examples: Secondary buttons, Badges, Sales tags, Hotmarks
Back to top


Being John Malkovich Directed by: Spike Jonze Starring: John Cusack, Cameron Diaz, Catherine Keener, John Malkovich, Mary Kay Place, Orson Bean Running time: 112 minutes My rating (5 star scale): ***1/2
Craig (Cusack) is an unemployed puppeteer married to animal loving Lotte (Diaz). Their house is a menagerie.  He finally caves in and looks for a job, following up on a peculiar ad for fast fingered, small statured people. He reports to the 7 1/2 floor of an office building (the explanation how it got to have 7 1/2 floors is one of the film's funnier moments) and, after a bizarre conversation with a receptionist (Place) who can hear nothing correctly, gets the job. In a few days, he makes two discoveries: Maxine (Keener) with whom he falls desperately in love with and a door in his office which is a portal into John Malkovich's brain.
Things get increasingly complicated as Maxine wants to cash in on the portal, Lotte meets and also falls in love with Maxine, and Malkovich catches on to what is happening. And then there's Lester (Bean), the mysterious businessman who hired Craig and may know more about all of this than anyone suspects.
The first half hour or so of this film is full of sly wit.  They range from Craig's bizarre puppetry, to the story behind the animals in Lotte's menagerie, to the story of the 7 1/2 floor, and finally to Maxine's very funny first date with Craig. But the final hour and a half is quite a disappointment. Oddly, the film slows down when we get into Malkovich's head. It stops being a wacky comedy, and that's certainly what this film should be, and tries to be a philosophical film with moments of humour.
Even that might have worked had the movie hit the right philosophical note. But it errs there.  Maxine ponders the issue of being loved by two people and yet attracted to neither alone and one only when within Malkovich. Issues of gender identity are briefly touched upon. But the most interesting issue that could have been raised, the issue of whether it is right to sacrifice one person to save many others, is never even mentioned.
I know many critics have praised this as one of the best movies of 1999. But I cannot understand why. This is a moderately funny film that never gets as surreal as its topic would allow it to. It's a film with a strong point to make which it never makes. It's a film with good actors giving good performances for a failed cause. It's worth watching, but not worth all the hype.
-- Allan Jenoff Check out my web page at http://www3.sympatico.ca/jenoff/
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


TWD
Home
(current)
About
Upload
Sign in
Register
TIMER
×1
Export the 2D visualization
×
Change the data
×
Choose an Infrastructure
Description:
Choose a Trajectory data
Select an Infrastructure first.
Description:


Instructions
There you find how to use BinaryTreeVisualiser.
Application is consisted of two pages.
At the first one you find binary heap + priority queue implementation
(random binary heap, build binary heap, insert, delete, extract max, get max, heap sort).
At the other one you find binary search tree implementation
(random binary search tree, insert, find, delete, get max, get min, get predecessor, get successor, to preorder array, to inorder (sorted) array, to postorder array).
If you don't know what a binary search tree, a binary heap or any of listed algorithms means, visit this section.
See meanings of used graphic elements to understand animations
and read what control buttons do for easier work with the application.
Graphic elements
There are listed all graphic elements used in this application and their meanings.
| Graphic | Meaning | Description |
|---|---|---|
| Node | A node with his value. | |
| Selected node | Selected node is highlighted with a red stroke. You can select any node by clicking on it. | |
| Edge | An edge is a reference from one node to another. Referenced node is called child of referring node. Referring node is called parent of referenced node. | |
| Parent and his children | In binary trees there are maximum two children of a node - left child and right child. | |
| Comparison signs | Very often algorithms compare two nodes (their values). In that case one of this sign will be shown in the middle of them. | |
| Continue in parent/ |
Algorithms usually traverse a tree or recursively call themselves on one child of just processing node. These graphic elements will show you which node is next in line. | |
| No left/ |
A node do not have left/right child. | |
| Enter/ |
A start/end visualisation of an algorithms that traverse a tree. | |
| Came from left/ |
Sometimes it is important if an algorithm came from left or right child. These arrows indicate that the condition is satisfied. | |
| Did not come from left/ |
As previous, but the condition is not satisfied. | |
| Array | A tree can be represented by an array, can be transformed to the array or can be build from the array. Array is indexed (1, 2, 3, ... 7) and has values (2, 5, 22, 39, 44). Last two indexes are still empty. |
Controls
Controls are divided into three categories. You can control animation, execute algorithms and go back in history.
Animation controls
These buttons control currently playing animation and can go to previous or next animation. There is shown only a play button or only a pause pause button at a time. Buttons are disabled if there is no appropriate anomation.
| Button | Meaning | Description |
|---|---|---|
| Play an animation | This button starts playing a paused animation. Automatically an animation is playing. | |
| Pause an animation | This button pauses playing animation. | |
| Play an animation again | Move an animation to the start and start playing it. | |
| Skip an animation | Some animations take long time. This button move an animation to the end. Animation is stopped so next algorithm in history (if any) will not be played. | |
| Go to previous animation | Goes to previous algorithm (animation) and start playing it. | |
| Go to next animation | Goes to next algorithm (animation) and start playing it. | |
| Play animations one after another | If this check box is checked, next animation will start after the end of current animation automatically. | |
| Speed of move: | Set a speed of move | There are two kind of steps of algorithms. Animations of the first kind take time to move a graphic element. Animations of the other kind take time to show something. This button set duration of the first kind of step. |
| Duration of a step: | Set a duration of a step | As previous, but this button set duration of the other kind of step. |
History controls
All executed algorithms are shown in history. You can go back and play them again or change history.
| Button | Meaning | Description |
|---|---|---|
| List of executed algorithms | There are listed all executed algorithms. The first one is at the top of the list. New algorithms are added to the end. You can change the history by playing earlier algorithm (animation) and then executing another algorithm. Current algorithm (animation) is selected. You can selected another one by double-click. |
Algorithms controls
These buttons are most important. Clicking on an algorithm button execute selected algorithm and start an animation.
Also the algorithm is added to history, so you can go back to this point and play this animation again later.
Some algorithms need an input to work. Usually it is a value or a node.
Value is entered as a string at text input. Node is selected by clicking on it.
Some algorithms return a value. If it is a node, the node will be selected at the end of an animation.
It it is an array, the array will be shown at the end of an animation.
These buttons are enabled only if the animation is stopped - last animation was all played.
If you want to find out more informations about these algorithms, see pseudocodes.
| Algorithm (Binary Heap) | Meaning | Description |
|---|---|---|
| min: max: | Create a random heap | Creates a random binary heap. Values of created nodes are from given interval. |
| array: | Build a heap | Builds a binary heap from given array. The array is entered as string of values separated by ',' (comma). |
| value: | Insert a node | Creates a new node with given value and inserts it into a heap. |
| selected node | Delete a node | Deletes selected node from a heap. |
| Extract maximum value node | Same as delete of root node. The node with maximum value is always root in a binary heap. | |
| Get maximum value node | Returns root of tree, because the node with maximum value is always root in a binary heap. | |
| Sort a heap | This algorithm sorts a heap. The result is shown in an array. |
| Algorithm (Binary Search Tree) | Meaning | Description |
|---|---|---|
| min: max: | Create a random search tree | Creates a random binary search tree. Values of created nodes are from given interval. |
| value: | Insert a node | Creates a new node with given value and inserts it into a binary search tree. |
| value: | Find a node | Finds first occurrence of a node with given value. |
| selected node | Delete a node | Deletes selected node from a binary search tree. |
| of selected (sub)tree | Get maximum value node | Finds and returns node with maximum value of selected subtree. Select subtree by selecting its root. If no node is selected, root of whole tree will be selected. |
| of selected (sub)tree | Get minimum value node | Finds and returns node with minimum value of selected subtree. Select subtree by selecting its root. If no node is selected, root of whole tree will be selected. |
| of selected node | Get a predecessor | Gets a predecessor of selected node. Predecessor is a node with first previous lower value. |
| of selected node | Get a successor | Gets a successor of selected node. Successor is a node with first next higher value. |
| Order nodes into an pre-order array | Traverses a tree in pre-order walk. Shows the pre-order array. | |
| (To Sorted Array) | Order nodes into an in-order (sorted) array | Traverses a tree in in-order walk. Shows the in-order array. This array is sorted by values. |
| Order nodes into an post-order array | Traverses a tree in post-order walk. Show the post-order array. |


Firstly we need to initialize the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must be initialized.
def Initialize(self): self.SetStartDate(2004, 1, 1) self.SetEndDate(2017, 8, 30) self.SetCash(100000) equity = self.AddSecurity(SecurityType.Equity, "SPY", Resolution.Hour) self.syl = equity.Symbol
Although this is an intraday strategy, we still want to test the strategy within a long period not just within one day. The scheduling methods sets up an event to fire at a specific date or time and will execute the scheduled event function.
self.Schedule.On(self.DateRules.EveryDay(self.syl),self.TimeRules.AfterMarketOpen(self.syl,0),Action(self.SetSignal))
Here Schedule.On(DateRules, TimeRules, Action()) will trigger every trading day for our stock, at market open. Events are scheduled using date and time rules. Date rules specify on what dates and event will fire. Time rules specify at what time on those dates the event will fire. Inside of the scheduled function, we can pull the recent historical data and current open price each trading day.
In order to calculate the range, each trading day we need the close, high and low price data over the most recent N days. In addition, the open price of the current day is required in order to generate the signals. QuantConnect provides History(Symbol, TimeSpan, Resolution) method to get the history data like open, close, high and low for all configured securities over the requested N-days time span. Then the range is calculated by \[range = max(HH-LC, HC-LL)\]. In this implementation we choose N=4. It is less than one week and the range would reflect the recent price change.
history = self.History([self.syl.Value], 4, Resolution.Daily) self.high = history.loc[self.syl.Value]['high'] self.low = history.loc[self.syl.Value]['low'] self.close = history.loc[self.syl.Value]['close']
The long signal is calculated by \[cap = open + K_1 \times Range\]. The short signal is calculated by \[floor = open – K_2 \times Range\] where K1 and K2 are the parameters. When K1 is greater than K2, it is much easier to trigger the long signal and vice versa. For demonstration, here we choose K1 = K2 = 0.5. In live trading, we can still use historical data to optimize those parameters or adjust the parameters according to the market trend. K1 should be small than k2 if you are bullish on the market and k1 should be much bigger if you are bearish on the market.
This system is a reversal system, so if the investor holds a short position when the price breaks the cap line, the short margin should be liquidated first before opening a long position. If the investor holds a long position when the price breaks the floor line, the long margin should be liquidated first before opening a new short position.
holdings = self.Portfolio[self.syl].Quantity if self.Portfolio[self.syl].Price >= self.selltrig: if holdings >= 0: self.SetHoldings(self.syl, 1) else: self.Liquidate(self.syl) self.SetHoldings(self.syl, 1) elif self.Portfolio[self.syl].Price < self.selltrig: if holdings >= 0: self.Liquidate(self.syl) self.SetHoldings(self.syl, -1) else: self.SetHoldings(self.syl, -1)


Chapter 8 A brief Introduction to RMarkdown
8.1 What is RMarkdown
RMarkdown
is a language that is distinct from R
, but that incorporates R
code “chunks,” which can be displayed and run if desired in the final, knitted output. The output can be knitted to a variety of file formats, such as .html
, .pdf
, or even Microsoft Word. For this course we will get into the habit of knitting to .html
, which is the least buggy and error-prone in my experience. In the short section below, we will go over the simple steps required to write and knit your first .Rmd
file, including the basic style elements of the language and some essential R
chunk settings.
To get started using RMarkdown
, you first need to make sure that you install the package rmarkdown
from your Console, using install.packages()
. Then, assuming you have an RStudio
session running, click on File -> New File -> R Markdown. This will open a window in which you will type the name of your new file and the author’s (your) name. A new file in your RStudio
script editor pane (the upper left one) should appear. There will be a templated header, along with some other templated code, which you can modify based on your preferences. You may want to get rid of the pdf output line at the top for now, as we will knit to .html
for this course. Knitting to .pdf
requires some addtional software installation, which we don’t have time to troubleshoot during this course. In any case, let’s now cover some basic formatting code and code “chunk” types.
Below I will provide the code you would type in your own RMarkdown
file, followed by what it looks like rendered in this Bookdown
document, which is built using a collection of RMarkdown
files itself!
8.1.1 RMarkdown
formatting basics
You can include “nested” headers (like the one directly above) by using #
symbols. For example this:
## Experiment with headers
### Try a third-level header
#### Or a fourth-level header
Renders as this:
8.2 Experiment with headers
8.2.1 Try a third-level header
<IP_ADDRESS> Or a fourth-level header
Text can be rendered in bold, italics, or both like this:
Text can easilly be *italicized* or **bolded** or ***both***
Which renders as this:
Text can easilly be italicized or bolded or both
Links can be included like this:
Here is a useful link: [Rmd intro by RStudio](https://rmarkdown.rstudio.com/articles_intro.html)
Here is another: [R Markdown cheat sheet](https://rmarkdown.rstudio.com/lesson-15.html)
Which render like this:
Here is a useful link: Rmd intro by RStudio
Here is another: R Markdown cheat sheet
For many more details on RMarkdown
format and coding, I highly recommend the above links.
8.2.2 RMarkdown
code chunk options
Code chunks in RMarkdown
exist to show R
code, run the code, or both. In every RMarkdown
file you write, you will demarcate code chunks with three “ticks” at the top of the chuck followed immediately by the chunk options in curly braces, on the same line, and another three ticks (on their own line) below the chunk of code. This is what a coded chunk looks like:
```{r, eval = TRUE, echo = TRUE}
seq(1, 10, 1)
```
Which renders like this:
seq(1, 10, 1)
## [1] 1 2 3 4 5 6 7 8 9 10
Note that in the above example the R
code will be both run (“evaluated”) and displayed (“echoed”) in the knitted .html
file. If we want to suppress either or both of those from being rendered, we just set the chunk options to “FALSE.”
When your RMarkdown
file is completed, save any final changes, and click on the “Knit” icon in the toolbar, or click File -> Knit Document. Assuming there are no errors in your code, the rendered .html
file should load in a new window for inspection, and the file should be saved in the same location as your .Rmd
file. This has been a minimal treatment of RMarkdown
, but it should be enough guidance to get you started writing your own RMarkdown
scripts. Please consult the aforementioned RMarkdown
resources for additional instruction, examples, and help.
8.3 Additional learning resources:
Logan, M. 2010. Biostatistical Design and Analysis Using R. - A great intro to R for statistical analysis
http://library.open.oregonstate.edu/computationalbiology/ - O’Neil, S.T. 2017. A Primer for Computational Biology
http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf - A nice
.pdf
menu for manyR
colorshttps://www.stat.ubc.ca/~jenny/STAT545A/block14_colors.html - A good introduction to colors in
R
https://medialab.github.io/iwanthue/ - A cool automated color palette selection tool
https://rmarkdown.rstudio.com/articles_intro.html -
RStudio
guide toRMarkdown
https://rmarkdown.rstudio.com/lesson-15.html -
RMarkdown
“cheat sheet”


In my interview I am asking four questions to a patient
who has just come to the emergency room
My name is Jacques Murinda. I am striving to survive
in the software developing world
It seems like I am having challenges but also I am making progress