Maria:
What do you think of the Dion Peasant Riot?
"It was a result of the unusually bitter cold and the oppressive policies of the Lord. The riot was justified."
"The situation was bad, but the peasants were disloyal and the actions of the Lord were justified."


Accurate data collection and analysis is necessary for transit agencies to provide good service. Each different mode of transit presents unique challenges in collecting and collating data.
Our initial goal was to collect data from multiple transit modes, clean and translate it into a common format, and make it available to agencies and developers for easy analysis and rapid application development.
While we found a plethora of static data (e.g. routes, schedules, locations) we discovered that the data we needed - usage data - was the exact kind of data that was not available to us. Usage data seems to what agencies want to acquire as well. For example, if we could access the number of total MARTA cards used per day and where each MARTA card was swiped, we could show concentration patterns during busy times, display the busiest stop locations, etc.
However, the best way to provide improved services without significant infrastructure investment is for agencies and technologists to work together to make data on services and usage openly available, so we elected to continue in order to demonstrate a few potential applications.


Totally Original Group Application
The API
Entities
User
| Parameter | Type | Max size | Required | Notes |
|---|---|---|---|---|
| name | string | 120 | yes | |
| username | string | 30 | yes | Must be unique |
| password | string | 25 | yes | The password will be encrypted, server-side |
| picture | string/raw image/url | - | no | Supports many formats |
Group
| Parameter | Type | Max size | Required | Notes |
|---|---|---|---|---|
| name | string | yes | Does not have to be unique. | |
| picture | string/raw image/url | - | no | Supports many formats |
| closed | bool | - | no | Sets whether or not new users can join. |
| hidden | bool | - | no | Sets whether or not this group is publicly viewable. |
| position | lat/long as string | - | no | The longitude/latitude of the group's [general] position - might change to an address? |
End Points
The final column shows whether or not this route has been implemented (to at least a partially working degree) as of the latest commit. The parameter list should indicate how much is working.
Where necessary, pagination must be added (or put another way, would have to be added in a real system).
As stated, everything is returned in JSON format.
As of v0.2, all parameters are LOWER CASE to fit JSON de facto standards.
Users/People
| Path | METHOD | Parameters | Notes | ✓ |
|---|---|---|---|---|
| / | GET | - | Returns standard response (version, 200 OK etc.) | ✓ |
| /register | POST | See user table | You cannot register if you have logged in/submitted HTTP BASIC AUTH. | ✓ |
| /user | POST | - | Alias of POST /register | ✓ |
| /feed | GET | - | Returns your feed | ✓ |
| /user | GET | - | Returns current User data, or error if not logged in. | ✓ |
| /user | PUT/PATCH | Changed fields from user table | For editing your data - only submit the changed/altered fields. | ✓ |
| /user/feed | GET | - | Returns your feed | ✓ |
| /user/groups | GET | - | Returns a list of your groups [groupID: groupName] | ✓ |
| /user/group | POST | groupID (int), hidden (bool) | Add yourself to a group | ✓ |
| /user/group | DELETE | groupID (int) | Remove yourself from a group | ✓ |
| /user/1 | GET | - | Returns User data for user #1 | ✓ |
| /user/1 | PATCH/PUT | Changed fields from user table | Updates user #1's details - changed fields only. For admin use (e.g. removing abusive profile pic etc.). May not be used. | ✓ |
| /user/1/groups | GET | - | Returns PUBLIC (i.e. not HIDDEN) groups of user #1. | ✓ |
| /user/1/group | POST | groupID (int), hidden (bool) | Deprecated in favour of an invite /group/1/invite (which may not be implemented anyway). | X |
Groups
| Path | METHOD | Parameters | Notes | ✓ |
|---|---|---|---|---|
| /group | POST | See group table | Creates a group with provided parameters. | ✓ |
| /group/25 | GET | - | Gets group information for #25, NOT including users (may change). | ✓ |
| /group/25 | PATCH/PUT | Changed fields from group table | Updates group information for #25. Only available to staff or owners of groups. | |
| /group/25 | DELETE | - | Deletes group #25. Only available to staff or owners of groups. | |
| /group/25/users | GET | - | Retrieves all PUBLIC users of group #25 | |
| /group/25 /user/8 | DELETE | - | Removes user #8 from group 25. For group owners and admins only. | |
| /group/25 /feed/page/2 | GET | - | Retrieves the group feed, page 2. The /page/2 segment is optional. /group/25/feed returns the first page of posts and is equivilent to /group/25/feed/page/1. | ✓ |
| /group/25 /feed/post/5 | PATCH/PUT | Changed fields from group table | Updates the changed fields (post text, title, etc.) of post #5, which has been posted in group #25's feed. | |
| /group/25 /feed/post/5 | DELETE | - | Deletes post #5, which has been posted in group #25's feed. |
Other/Miscellaneous
| Path | METHOD | Parameters | Notes | ✓ |
|---|---|---|---|---|
| /interests/page/2 | GET | - | Page 2 of list of interests. The page is optional and can be ommited (so it becomes /interests, showing the first page - equivilent to /interests/page/1). | |
| /interest/5 | GET | - | List of groups that are associated with interest #5 |


Anchor Brewing Releases Its 45th Christmas Ale Since Prohibition
by Emily PriceAnchor Brewing Company announced the release of its 2019 Christmas Ale this week, marking the 45th year the beer has been available.“We are committed to preserving Anchor Christmas Ale’s signature style while adding new ingredients to enhance this annual delicacy. Slightly darker than last year’s Christmas Ale, the 2019 edition is layered with toasted caramel and coffee flavors with subtle hints of Mexican chocolate, rounded out with herbaceous spices. Crack open a bottle for a spiced whiff of western evergreens, roasted malts and coastal flowers,” shared Anchor Brewmaster, Scott Ungermann.
“It’s a rich, round and full bodied-treat with a silky, smooth finish. Christmas Ale is best served in a big open glass at a table full of family and friends.”
45 years ago Anchor released the very first holiday beer in America since Prohibition. Each year it relives that tradition by once again brewing the spiced beer, which gets a new, hand-drawn label each year.
This year’s label was illustrated by Jim Stitt, who has illustrated the labels every year since 1975.
Those spices in the beer also evolve over time, which makes the beer exceptionally popular or side by side tastings. While this year and last year’s beers are technically the same, they’ll taste very different when consumed side by side today.
“People love to align past Christmas Ale styles in vertical tastings,” said Ungermann. “An added bonus of this holiday tradition is that the beer can age gracefully for years to come.”
The beer has a 6.9% ABV and will be available between now and mid-January.


Conference + Training SALE: Save 25% off any conf + training package at
STAR
CANADA
with promo code
LEARN4LESS
when you register by September 30 (exclusions apply).
EXPLORE THE PROGRAM
x


click
dblclick
mouseenter
mouseleave
mousedown
mouseup
mouseover
mouseout
mousemove
Map Event Sample
This sample will highlight the name of the events that are firing as you interact with the map.


More Recipes
Top Recipes
Sign out
My Recipes
(current)
Add Recipes
Edit Recipes
Favorite Recipes
Account details
Modify Recipe
Recipe Title
Enter a short, catchy title for your Recipe.
Description
Try to keep your description short and interesting.
Upload an Image
Category
Breakfast
Lunch
Dinner
Dessert
Pick a Category your recipe fits into.
Ingredients
Enter your recipe ingredients, separated by Commas.
Instructions
Enter your step-by-step Instructions.
Confirm
Cancel


We believe in Lean Product Development process, focusing on constant idea validation, product feature evaluation, continuous improvement & quick iterations.
Our work culture & processes are geared towards agile, lean & collaborative projects ensuring effective product scoping, faster delivery, and as a result, a quick to market product.
Development process which stresses on Tests first. Test Automation & Quality Assurance which ensures that the applications are error free in every release.
New features are released to production as quickly as possible. Our processes are geared up for continuous integration and delivery ensuring speed of releases.


{{ define "title" }}Timeline{{ end }}
{{ define "content" }}
{{if .publictimeline }}
Public Timeline
{{ else if .usertimeline }}
{{ .userpagename}}'s Timeline
{{else}}
My Timeline
{{end}}
Timeline
{{if .loggedin}}
{{if .usertimeline}}
{{if .sameuser}}
This is you!
{{else if .alreadyFollow}}
You are currently following this user.
Unfollow user.
{{ else }}
You are not yet following this user.
Follow user.
{{ end }}


No luck as yet with the decipherment of the great Steve Bloch's lyrical sally in “Jane's Gone To France”. But for those of you keen to see the resurrection of perhaps the most important beat combo ever to mention Marshal Petain in a song, here are some cuttings culled from distant outposts of Interwebshire.
First, two reviews of the magnum opus itself, from a couple of local rags. Please note that a young Mr Key did not write either of them.
Second, unfortunately as low in resolution as he was high in importance, Bloch himself, on stage.


--- title : Andrew Gainer-Dewar ---
I'm a mathematician and undergraduate mathematics educator, currently on the faculty at Hobart and William Smith Colleges in Geneva, NY. My research focuses on applications of the theory of combinatorial species to problems in graph enumeration; I am especially interested in using this as an avenue to introduce my students to the methods and experience of research-level mathematics.
I am an alumnus of Woodstock High School (Woodstock, GA), Mercer University (Macon, GA), and most recently Brandeis University (Waltham, MA), where I completed a Ph.D. in mathematics under the advisement of Ira Gessel in 2012.
My CV is available to download.


Instructions:
Put 3 numbers on first line, separated by spaces. Then on new lines put pairs of space separated numbers. Example:
8 10 2
4 8
2 7
And then press submit to check result or watch strawberries rot day by day.
X - rotten, O - good


Public Member Functions |
|
| GraphWeight (const int _V, const int _E, const EdgeType _edgeType) |
|
void | read (const char *File, const int nof_lines) |
|
void | toBinary (const char *File) |
|
| GraphSTD (const int _V, const int _E, const EdgeType _edgeType) |
|
void | BFS_Init () |
|
void | BFS_Reset () |
|
void | BFS (node_t source) |
|
void | BFS_Frontier (std::vector< node_t > &Frontiers) |
|
int | BFS_visitedNodes () |
|
int | BFS_visitedEdges () |
|
int | BFS_getEccentricity () |
|
void | TwoSweepDiameter () |
|
void | SCC_Init () |
|
void | SCC (std::map< int, int > *SCC_MAP=NULL) |
|
void | Single_SCC (const node_t source, std::map< int, int > *SCC_MAP=NULL) |
|
void | DegreeAnalisys () |
|
void | print () |
|
| GraphDegree (const node_t _V, const edge_t _E, const EdgeType _Direction) |
Data Fields |
|
weight_t * | Weights |
|
edge_t * | OutNodes |
|
edge_t * | InNodes |
|
node_t * | OutEdges |
|
node_t * | InEdges |
|
degree_t * | InDegrees |
|
node_t2 * | COO_Edges |
|
int | COOSize |
|
node_t | V |
|
edge_t | E |
|
EdgeType | Direction |
|
degree_t * | OutDegrees |
Additional Inherited Members |
|
void | readMatrixMarket (std::ifstream &fin, const int nof_lines) |
|
void | readDimacs9 (std::ifstream &fin, const int nof_lines) |
|
void | readDimacs10 (std::ifstream &fin) |
|
void | readSnap (std::ifstream &fin, const int nof_lines) |
|
void | readBinary (const char *File) |
|
void | ToCSR () |
|
dist_t * | Distance |
|
fast_queue::Queue< node_t > * | Queue |
|
std::vector< bool > | Visited |
|
std::vector< bool > | InStack |
|
dist_t * | LowLink |
|
node_t * | Index |
|
int * | Color |
The documentation for this class was generated from the following files:
- Graph/Host/include/GraphWeight.hpp
- Graph/Host/src/GraphWeight.cpp
- Graph/Host/src/GraphWeight_Read.cpp


Two hour first person scene - Unity 5
-
What is it?
-
I was flying from Los Angeles to Vancouver B.C. and had my work laptop with me. I decided to see if I could remember all of my 'training' and do a first person scene from memory. Didn't want to spend the $4.99 on the inflight wifi so had no examples to refer to. I did use the scripting API reference which ships with Unity because who can remember method names.... so not 100% from memory but still a good exercise!
Check out my video demonstrating it working here!


Automation
Application Development
RED HAT ENTERPRISE OPEN SOURCE
BEST-IN-CLASS OPEN SOURCE
DATA ANALYTICS
BLOCKCHAIN
INFRASTRUCTURE AND
API MANAGEMENT
Databases
Devops Tools
CONTINUOUS INTEGRATION/
CONTINUOUS DELIVERY
Source Control
Management
Build and Artifact
Management
Testing
Collaboration
CODE QUALITY
CODE REVIEW
PROJECT & ISSUE TRACKING
Container Platform
RED HAT OPENSHIFT CONTAINER PLATFORM
GITOPS & TEMPLATING
Monitoring and Logging
BACKED BY RED HAT ENTERPRISE LINUX


|
✔
Data Hub contacts page - chrome
|
|
|
✔
Data Hub companies page - chrome
|
|
|
✔
Data Hub interactions page - chrome
|
|
|
✔
Data Hub investments page - chrome
|
|
|
✔
Data Hub omis page - chrome
|
|
|
✔
Data Hub events page - chrome
|
|
|
✔
Data Hub home page content - chrome
|
|
|
✔
Data Hub home page header - chrome
|
|
|
✔
Data Hub home page search bar - chrome
|
|


Status updates are a good way to let other people know what you are up to or what's on your mind.
Status updates will also disappear when they are about a week old.
Status updates can also be sent to your Twitter account, if you have one. You can manage this in your Preferences page.
You can also restrict who can see your status updates in your Privacy page.


Version 4.6.0¶
Version 4.6.0 of mod_wsgi can be obtained from:
Bugs Fixed¶
- Management of reference counting on Python objects in the access, authentication, authorization and dispatch hooks wasn’t correct for certain error cases. The error cases shouldn’t have ever occurred, but still fixed.
- Point at which details of Python exceptions occuring during access, authentication, authorization and dispatch hooks was incorrect and not done, with exception cleared, before trying to close per callback error log. That the exception hadn’t been cleared would result in the call to close the per callback error log to itself fail as it believed an exception occurred in that call when it hadn’t. The result was confusing error messages in the Apache error log.
- The deprecated backwards compatability mode enabled by setting the
directive
WSGILazyInitialization Off
, to have Python initialised in the Apache parent process before forking, was resulting in the Apache parent process crashing on Apache shutdown or restart. This resulted in Apache child processes and daemon process being orphaned. Issue has been fixed, but you should never use this mode and it will be removed in a future update. The reason it shouldn’t be used is due to memory leaks in Python interpreter re-initialisation in same process and also the risks due to Python code potentially being run as root. - When stack traces were being dumped upon request timeout expiring, the line numbers of the definition of each function in the stack trace was being displayed, instead of the actual line number within the body of the function that was executing at the time.
- When stack traces were being dumped upon request timeout expiring, the thread ID was being truncated to 32 bits when displayed, meaning it wouldn’t match the actual Python thread ID on 64 bit systems.
Features Changed¶
Now flagging mod_wsgi package when installing using
setup.py
as being notzip_safe
. This is to workaround an apparent bug withsetuptools
when using Python 3.7 alpha versions. Believe this will disable use of egg file in certain cases.When the connection to a client is lost when writing back the response, the HTTP response code logged in the Apache access log will be that for the original response from the WSGI application rather than a 500 error.
This is done to avoid confusion where a 500 error is recorded in the access log, making you think your WSGI application is at fault when it wasn’t, but there is no actual error recorded in the error log as to why the 500 error was recorded in the access log.
The reason no error is logged in the case of the connection to a client being lost is that doing so would create a lot of noise due to the regularity which it can happen. The only time an error is logged is when a timeout occurs rather than connection being lost. That is done to highlight that connections are hanging due to the effect it can have on available server capacity when connections are kept open for long times.
Thanks to Jesús Cea Avión for identifying how using the Apache C API it could be identified that the connection had been aborted and in that case the original HTTP response code could safely be used.
When using the Django integration for
mod_wsgi-express
, if thewhitenoise.middleware.WhiteNoiseMiddleware
middleware is listed inMIDDLEWARE
orMIDDLEWARE_CLASSES
of the Django settings file, Apache will now not be used to host Django’s static files. This is being done to allow WhiteNoise middleware to be used in conjunction with front end content delivery networks or other caching systems. If you aren’t using such a front end and do want Apache to still host the static files, either don’t list the WhiteNoise middleware in the list of middleware classes when usingmod_wsgi-express
, or pass the--url-alias
option explictly, along with the URL mount point for static files and the directory where they have been placed by thecollectstatic
management command of Django.When running
mod_wsgi-express
if theTMPDIR
environment variable is specified, it will be used as the directory under which the default server root directory for generated files will be created. IfTMPDIR
is not specified, then/tmp
will be used.This allows
TMPDIR
to be used to control the directory used as a default. On MacOS whereTMPDIR
is set to a unique directory for the login session under/var/tmp
, this also avoids a problem where a system cron job in MacOS will delete files under/tmp
which are older than a certain date, which can cause a long running instance ofmod_wsgi-express
to start failing.The “process_stopping” event previously would not be delivered when the process was being shutdown and there were still active requests, such as when a request timeout occurred. Seen as better to always deliver the event if can, even if there were still requests that hadn’t been completed. This will allow the event handler to dump out details on what the active requests were, helping to identify long running or stuck requests.
New Features¶
When using
--compress-responses
option ofmod_wsgi-express
, content of typeapplication/json
will now be compressed.Added directive
WSGISocketRotation
to allow the rotation of the daemon socket file path on restarts of Apache to be disabled. By default it isOn
to preserve existing behaviour but can be set toOff
to have the same socket file path always be used for lifetime of that Apache instance.Rotation should only be disabled where the Apache configuration for the mod_wsgi application stays constant over time. The rotation was originally done to prevent a request received and handled by an Apache worker process being proxied through to a daemon process created under a newer configuration. This was done to avoid the possibility of an error, or a security issue, due to the old and new configurations being incompatible or out of sync.
By setting rotation to
Off
, when a graceful restart is done and the Apache worker process survives for a period of time due to keep alive connections, those subsequent requests on the keep alive connection will now be proxied to the newer daemon processes rather than being failed as occurred before due to no instances of daemon process existing under the older configuration.Although socket rotation still defaults to
On
for mod_wsgi, this is overridden formod_wsgi-express
where it is always now set toOff
. This is okay as is not possible for configuration to change when using it.The
process-group
andapplication-group
options can now be used with theWSGIScriptAliasMatch
directive. If substitutions are not used in the value for the WSGI script file target path, then the WSGI script file will be pre-loaded if bothprocess-group
andapplication-group
options are used at the same time.Note that the documentation was wrongly updated recently to suggest that these options were already supported by
WSGIScriptAliaMatch
. This was done in error. Instead of removing the documentation, the ability to use the options with the directive was instead added with this release.Raise an actual exception when installing using
pip
or using thesetup.py
file on MacOS and it doesn’t appear that Xcode application has been installed. Lack of Xcode application will mean that cannot find the SDK which has the Apache include files.An explicit error message is now logged when the calculated daemon socket path is too long and would be truncated, causing potential failures. A shorter directory path should be set with the
WSGISocketPrefix
option.Added the
--socket-path
option tomod_wsgi-express
so you can set the daemon socket prefix via theWSGISocketPrefix
directive to an alternate directory if the calculated path would be too long based on where server root is set formod_wsgi-express
.Added the
--isatty
option tomod_wsgi-express
to indicate that running the command in an interactive terminal session. In this case Apache will be run as a sub process rather than it replacing the current script. Signals such as SIGINT, SIGTERM, SIGHUP and SIGUSR1 will be intercepted and forwarded onto Apache, but the signal SIGWINCH will be ignored. This will avoid the problems of Apache shutting down when the terminal session Apache is run in is resized.Technically this could be done automatically by working out if the attached terminal is a tty, but is being done using an option at this point so the reliability of the mechanism used to run Apache as a sub process and the handling of the signals, can be verified. If everything checks out, it is likely that this will become the default behaviour when the attached terminal is a tty.
When using
WSGIDaemonProcess
, if you set the number of threads to zero you will enable a special mode intended for using a daemon process to run a managed task or program. You will need to useWSGIImportScript
to pre-load a Python script into the main application group specified by%{GLOBAL}
where the script runs a never ending task, or does an exec to run an external program. If the script or external program exits, the process is shutdown and replaced with a new one. For the case of using a Python script to run a never ending task, aSystemExit
exception will be injected when a signal is received to shutdown the process. You can usesignal.signal()
to register a signal handler forSIGTERM
if needing to run special actions before then exiting the process usingsys.exit()
, or to signal your own threads to exit any processing so you can shutdown in an orderly manner.The ability to do something very similar did previously exist in that you could use
WSGIImportScript
to run a never ending task even when the number of threads was non zero. This was used by--service-script
option ofmod_wsgi-express
. The difference in settingthreads=0
is that signals will work correctly and be able to interupt the script. Also once the script exits, the process will shutdown, to be replaced, where as previously the process would stay running until Apache was restart or shutdown. The--service-script
option ofmod_wsgi-express
has been updated to set the number of threads to zero.Added
mod_wsgi.active_requests
dictionary. This is populated with the per request data object for active requests, keyed by the Apache request ID.Add
--cpu-time-limit
option tomod_wsgi-express
so that limit can be imposed on daemon process group as to how much CPU can be used for process is restarted automatically.Pass a “shutdown_reason” argument with “process_stopping” event so event handler knows the reason the process is being shutdown.


Free Call: +880 *********
Free Call: +880 *********
Email Adddress<EMAIL_ADDRESS>Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.
Far far away, behind the word mountains.
Far far away, behind the word mountains.
Far far away, behind the word mountains.
Far far away, behind the word mountains.
Roger Scott
Marketing ManagerFar far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.
Roger Scott
Marketing ManagerFar far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.
Roger Scott
Marketing ManagerFar far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.
Roger Scott
Marketing ManagerFar far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.
Roger Scott
Marketing ManagerFar far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.


Input Parameters¶
A set of parameters are supported by API to help users provide additional details per project.
EmissionsTracker¶
The online mode object EmissionsTracker
takes following input parameters:
Parameters |
Description |
|---|---|
project_name |
Name of the project, defaults to |
measure_power_secs |
Interval (in seconds) to measure hardware power usage, defaults to |
output_dir |
Directory path to which the experiment details are logged
in a CSV file called
emissions.csv , defaults to current directory |
save_to_file |
Boolean variable indicating if the emission artifacts should be logged
to a CSV file at
output_dir/emissions.csv , defaults to True |
OfflineEmissionsTracker¶
The offline mode object OfflineEmissionsTracker
takes following input parameters.
Parameters |
Description |
|---|---|
country_iso_code |
3 letter ISO Code of the country where the experiment is being run.
Available countries are listed in global_energy_mix.json
|
region |
Optional Name of the Province/State/City, where the infrastructure is hosted
Currently, supported only for US States
for example - California or New York, from the list
|
project_name |
Name of the project, defaults to |
measure_power_secs |
Interval (in seconds) to measure hardware power usage, defaults to |
output_dir |
Directory path to which the experiment details are logged
in a CSV file called
emissions.csv , defaults to current directory |
save_to_file |
Boolean variable indicating if the emission artifacts should be logged
to a CSV file at
output_dir/emissions.csv , defaults to True |
@track_emissions¶
Decorator track_emissions
takes following input parameters.
Parameters |
Description |
|---|---|
project_name |
Name of the project, defaults to |
measure_power_secs |
Interval (in seconds) to measure hardware power usage, defaults to |
output_dir |
Directory path to which the experiment details are logged
in a CSV file called
emissions.csv , defaults to current directory |
save_to_file |
Boolean variable indicating if the emission artifacts should be logged
to a CSV file at
output_dir/emissions.csv , defaults to True |
offline |
Boolean variable indicating if the tracker should be run in offline mode
defaults to
False |
country_iso_code |
3 letter ISO Code of the country where the experiment is being run.
Available countries are listed in global_energy_mix.json
|
region |
Optional Name of the Province/State/City, where the infrastructure is hosted
Currently, supported only for US States
for example - California or New York, from the list
|


{% extends 'base.html' %} {% block content %}
OpenSUTD strives to adhere to and evangelise Open Organisation principles
Some placeholder text
Placeholder
{{ project_item.caption }}
Error! No projects are available.


Exclusive: Saif Ali Khan’s next will be helmed by Raees’ director
by Vedanshi PathakSaif Ali Khan is currently gearing up for the release of Tanaji: The Unsung Hero as well as Jawaani Jaaneman. The actor has a good mix of scripts in his kitty as he will also be seen in the Hindi remake of Vikram Vedha. Our sources inform us that the actor has given his nod to yet another interesting project. The film will be helmed by Shah Rukh Khan starrer Raees‘ director Rahul Dholakia. It has also been confirmed that the film is being bankrolled by Excel Entertainment.
The makers have kept all the other details about the film under wraps but we hope more details are revealed soon. Keep watching this space for more B-town updates.


Are you hosting a Bingo event? Use this to track the Bingo numbers as they are called!
Just playing Bingo? Use this to play Bingo while someone else uses the Bingo Caller!


We're super excited to have you join our ranks. Before you come to your first mentor session, we need to take care of a few things.
Joined on {{ mentor.user.date_joined|naturalday|capfirst }}
| Class | Date | |
|---|---|---|
| {% if order.session.course.code %}({{ order.session.course.code }}) {% endif %}{{ order.session.course.title }} | {{ order.session.mentor_start_date }} | Can't make it |
You have no upcoming classes. Find one now!
{% endif %}| Class | Date |
|---|---|
| {% if order.session.course.code %}{{ order.session.course.code }}: {% endif %}{{ order.session.course.title }} | {{ order.session.mentor_start_date }} |
You have not participated in any classes yet. Find one now!
{% endif %}| Meeting | Date | |
|---|---|---|
| {{ meeting_order.meeting.meeting_type.title }} | {{ meeting_order.meeting.start_date }} | {% if mentor in meeting.get_current_mentors %}Can't make it{% else %}RSVP{% endif%} |
No upcoming mentor meetings at this time. Please check back soon.
{% endif %}


Verifies that the (whitespace-trimmed) value of an input field is not empty. When the verify fails, the test will continue execution, logging the failure.
Usage
verifyNotValueEmpty(locator)
verifyNotValueEmpty(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
Verify Not Variable
Verifies that the specified variable value not equal to the given value. When the verify fails, the test will continue execution, logging the failure.
Usage
verifyNotVariable(variable, text)
Parameters
| Parameter | Description |
|---|---|
| variable | the variable |
| text | the value to match with the result |
Verify Not Visible
Verifies that the specified element is not visible. When the verify fails, the test will continue execution, logging the failure. An element can be rendered invisible by setting the CSS "visibility" property to "hidden", or the "display" property to "none", either for the element itself or one if its ancestors. This method will fail if the element is not present.
Usage
verifyNotVisible(locator)
verifyNotVisible(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
Verify Page Source
Verifies that the current application hierarchy XML (app) or page source (web).
In a web context, the source returns the source HTML of the current window. In a native context (iOS, Android, etc...) it will return the application hierarchy XML equals to the given value. When the verify fails, the test will continue execution, logging the failure.
Usage
verifyPageSource(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Verify Page Source Match
Verifies that the current application hierarchy XML (app) or page source (web).
In a web context, the source returns the source HTML of the current window. In a native context (iOS, Android, etc...) it will return the application hierarchy XML matches the given value. When the verify fails, the test will continue execution, logging the failure.
Usage
verifyPageSourceMatch(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Verify Page Source Not Match
Verifies that the current application hierarchy XML (app) or page source (web).
In a web context, the source returns the source HTML of the current window. In a native context (iOS, Android, etc...) it will return the application hierarchy XML not match the given value. When the verify fails, the test will continue execution, logging the failure.
Usage
verifyPageSourceNotMatch(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Verify Prompt
Verifies that the message of a JavaScript question prompt dialog equals to the given value. When the verify fails, the test will continue execution, logging the failure.
Usage
verifyPrompt(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Verify Prompt Match
Verifies that the message of a JavaScript question prompt dialog matches the given value. When the verify fails, the test will continue execution, logging the failure.
Usage
verifyPromptMatch(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Verify Prompt Not Match
Verifies that the message of a JavaScript question prompt dialog not match the given value. When the verify fails, the test will continue execution, logging the failure.
Usage
verifyPromptNotMatch(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Verify Prompt Not Present
Verifies that a prompt dialog is not present. When the verify fails, the test will continue execution, logging the failure.
This function never throws an exception
Usage
verifyPromptNotPresent()
Parameters
| Parameter | Description |
|---|
Verify Prompt Present
Verifies that a prompt dialog is present. When the verify fails, the test will continue execution, logging the failure.
This function never throws an exception
Usage
verifyPromptPresent()
Parameters
| Parameter | Description |
|---|
Verify Row Count
Check if the number of rows returned from selectStatement is equal to the value submitted.
Usage
verifyRowCount(sql, count)
Parameters
| Parameter | Description |
|---|---|
| sql | the sql |
| count | the count |
Verify Row Count Greater Than
Check if the number of rows returned from selectStatement is greater than the value submitted.
Usage
verifyRowCountGreaterThan(sql, count)
Parameters
| Parameter | Description |
|---|---|
| sql | the sql |
| count | the count |
Verify Row Count Less Than
Check if the number of rows returned from selectStatement is less than the value submitted.
Usage
verifyRowCountLessThan(sql, count)
Parameters
| Parameter | Description |
|---|---|
| sql | the sql |
| count | the count |
Verify Text
Verifies that the text of an element. This works for any element that contains text. This command uses either the textContent (Mozilla-like browsers) or the innerText (IE-like browsers) of the element, which is the rendered text shown to the user equals to the given value. When the verify fails, the test will continue execution, logging the failure.
Usage
verifyText(locator, text)
verifyText(parentLocator, locator, text)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
| text | the value to match with the result |
Verify Text Empty
Verifies that the text of an element is empty. When the verify fails, the test will continue execution, logging the failure.
Usage
verifyTextEmpty(locator)
verifyTextEmpty(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
Verify Text List Order Asc
Returns the text values of the specified elements are sorted in ascending order.
Usage
verifyTextListOrderAsc(locator)
verifyTextListOrderAsc(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator pointing to an element |
Verify Text List Order Desc
Returns the text values of the specified elements are sorted in descending order.
Usage
verifyTextListOrderDesc(locator)
verifyTextListOrderDesc(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator pointing to an element |
Verify Text Match
Verifies that the text of an element. This works for any element that contains text. This command uses either the textContent (Mozilla-like browsers) or the innerText (IE-like browsers) of the element, which is the rendered text shown to the user matches the given value. When the verify fails, the test will continue execution, logging the failure.
Usage
verifyTextMatch(locator, text)
verifyTextMatch(parentLocator, locator, text)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
| text | the value to match with the result |
Verify Text Not Match
Verifies that the text of an element. This works for any element that contains text. This command uses either the textContent (Mozilla-like browsers) or the innerText (IE-like browsers) of the element, which is the rendered text shown to the user not match the given value. When the verify fails, the test will continue execution, logging the failure.
Usage
verifyTextNotMatch(locator, text)
verifyTextNotMatch(parentLocator, locator, text)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
| text | the value to match with the result |
Verify Text Not Present
Verifies that the specified text appears somewhere on the page not equal to the given value. When the verify fails, the test will continue execution, logging the failure.
Usage
verifyTextNotPresent(text)
Parameters
| Parameter | Description |
|---|---|
| text | a text to match with the text of the page |
| text | the value to match with the result |
Verify Text Present
Verifies that the specified text appears somewhere on the page equals to the given value. When the verify fails, the test will continue execution, logging the failure.
Usage
verifyTextPresent(text)
Parameters
| Parameter | Description |
|---|---|
| text | a text to match with the text of the page |
| text | the value to match with the result |
Verify Value
Verifies that the (whitespace-trimmed) value of an input field (or anything else with a value parameter) equals to the given value. When the verify fails, the test will continue execution, logging the failure. For checkbox/radio elements, the value will be "on" or "off" depending on whether the element is checked or not.
Usage
verifyValue(locator, text)
verifyValue(parentLocator, locator, text)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
| text | the value to match with the result |
Verify Value Empty
Verifies that the (whitespace-trimmed) value of an input field is empty. When the verify fails, the test will continue execution, logging the failure.
Usage
verifyValueEmpty(locator)
verifyValueEmpty(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
Verify Value Match
Verifies that the (whitespace-trimmed) value of an input field (or anything else with a value parameter) matches the given value. When the verify fails, the test will continue execution, logging the failure. For checkbox/radio elements, the value will be "on" or "off" depending on whether the element is checked or not.
Usage
verifyValueMatch(locator, text)
verifyValueMatch(parentLocator, locator, text)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
| text | the value to match with the result |
Verify Value Not Match
Verifies that the (whitespace-trimmed) value of an input field (or anything else with a value parameter) not match the given value. When the verify fails, the test will continue execution, logging the failure. For checkbox/radio elements, the value will be "on" or "off" depending on whether the element is checked or not.
Usage
verifyValueNotMatch(locator, text)
verifyValueNotMatch(parentLocator, locator, text)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
| text | the value to match with the result |
Verify Variable
Verifies that the specified variable value equals to the given value. When the verify fails, the test will continue execution, logging the failure.
Usage
verifyVariable(variable, text)
Parameters
| Parameter | Description |
|---|---|
| variable | the variable |
| text | the value to match with the result |
Verify Visible
Verifies that the specified element is visible. When the verify fails, the test will continue execution, logging the failure. An element can be rendered invisible by setting the CSS "visibility" property to "hidden", or the "display" property to "none", either for the element itself or one if its ancestors. This method will fail if the element is not present.
Usage
verifyVisible(locator)
verifyVisible(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
Wait For Activity
Waits for the current activity matches the given activity. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. The activity is identified by a string separated by a comma, containing "appPackage" and "appActivity" properties. For example: appPackage=example,appActivity=example
Usage
waitForActivity(activity)
Parameters
| Parameter | Description |
|---|---|
| activity | the given activity |
Wait For Alert
Waits for the message of a JavaScript alert equals to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForAlert(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Wait For Alert Match
Waits for the message of a JavaScript alert matches the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForAlertMatch(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Wait For Alert Not Match
Waits for the message of a JavaScript alert not match the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForAlertNotMatch(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Wait For Alert Not Present
Waits for an alert dialog is not present. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
This function never throws an exception
Usage
waitForAlertNotPresent()
Parameters
| Parameter | Description |
|---|
Wait For Alert Present
Waits for an alert dialog is present. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
This function never throws an exception
Usage
waitForAlertPresent()
Parameters
| Parameter | Description |
|---|
Wait For All Element Not Present
Waits for all of the specified elements are not present on the page.
Usage
waitForAllElementNotPresent(locatorArray)
Parameters
| Parameter | Description |
|---|---|
| locatorArray | array of element locators |
Wait For All Element Present
Waits for all of the specified elements are somewhere on the page.
Usage
waitForAllElementPresent(locatorArray)
Parameters
| Parameter | Description |
|---|---|
| locatorArray | array of element locators |
Wait For All Text Not Present
Waits for all of the specified texts are not present on the page.
Usage
waitForAllTextNotPresent(textArray)
Parameters
| Parameter | Description |
|---|---|
| textArray | array of texts |
Wait For All Text Present
Waits for all of the specified texts are somewhere on the page.
Usage
waitForAllTextPresent(textArray)
Parameters
| Parameter | Description |
|---|---|
| textArray | array of texts |
Wait For Any Element Not Present
Waits for any of the specified elements is not present on the page.
Usage
waitForAnyElementNotPresent(locatorArray)
Parameters
| Parameter | Description |
|---|---|
| locatorArray | array of element locators |
Wait For Any Element Present
Waits for any of the specified elements is somewhere on the page.
Usage
waitForAnyElementPresent(locatorArray)
Parameters
| Parameter | Description |
|---|---|
| locatorArray | array of element locators |
Wait For Any Text Not Present
Waits for any of the specified texts is not present on the page.
Usage
waitForAnyTextNotPresent(textArray)
Parameters
| Parameter | Description |
|---|---|
| textArray | array of texts |
Wait For Any Text Present
Waits for any of the specified texts is somewhere on the page.
Usage
waitForAnyTextPresent(textArray)
Parameters
| Parameter | Description |
|---|---|
| textArray | array of texts |
Wait For Attribute
Waits for the value of the given attribute of the element equals to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. Will return the current value, even if this has been modified after the page has been loaded.
More exactly, this method will return the value of the property with the given name, if it exists. If it does not, then the value of the attribute with the given name is returned. If neither exists, null is returned.
The "style" attribute is converted as best can be to a text representation with a trailing semi-colon.
The following are deemed to be "boolean" attributes, and will return either "true" or null:
async, autofocus, autoplay, checked, compact, complete, controls, declare, defaultchecked, defaultselected, defer, disabled, draggable, ended, formnovalidate, hidden, indeterminate, iscontenteditable, ismap, itemscope, loop, multiple, muted, nohref, noresize, noshade, novalidate, nowrap, open, paused, pubdate, readonly, required, reversed, scoped, seamless, seeking, selected, truespeed, willvalidate
Finally, the following commonly mis-capitalized attribute/property names are evaluated as expected:
- If the given name is "class", the "className" property is returned.
- If the given name is "readonly", the "readOnly" property is returned.
Note: The reason for this behavior is that users frequently confuse attributes and properties. If you need to do something more precise, e.g., refer to an attribute even when a property of the same name exists, then you should evaluate Javascript to obtain the result you desire.
Usage
waitForAttribute(locator, name, text)
Parameters
| Parameter | Description |
|---|---|
| locator | an element locator |
| name | The name of the attribute. |
| text | the value to match with the result |
Wait For Attribute Match
Waits for the value of the given attribute of the element matches the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. Will return the current value, even if this has been modified after the page has been loaded.
More exactly, this method will return the value of the property with the given name, if it exists. If it does not, then the value of the attribute with the given name is returned. If neither exists, null is returned.
The "style" attribute is converted as best can be to a text representation with a trailing semi-colon.
The following are deemed to be "boolean" attributes, and will return either "true" or null:
async, autofocus, autoplay, checked, compact, complete, controls, declare, defaultchecked, defaultselected, defer, disabled, draggable, ended, formnovalidate, hidden, indeterminate, iscontenteditable, ismap, itemscope, loop, multiple, muted, nohref, noresize, noshade, novalidate, nowrap, open, paused, pubdate, readonly, required, reversed, scoped, seamless, seeking, selected, truespeed, willvalidate
Finally, the following commonly mis-capitalized attribute/property names are evaluated as expected:
- If the given name is "class", the "className" property is returned.
- If the given name is "readonly", the "readOnly" property is returned.
Note: The reason for this behavior is that users frequently confuse attributes and properties. If you need to do something more precise, e.g., refer to an attribute even when a property of the same name exists, then you should evaluate Javascript to obtain the result you desire.
Usage
waitForAttributeMatch(locator, name, text)
Parameters
| Parameter | Description |
|---|---|
| locator | an element locator |
| name | The name of the attribute. |
| text | the value to match with the result |
Wait For Attribute Not Match
Waits for the value of the given attribute of the element not match the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. Will return the current value, even if this has been modified after the page has been loaded.
More exactly, this method will return the value of the property with the given name, if it exists. If it does not, then the value of the attribute with the given name is returned. If neither exists, null is returned.
The "style" attribute is converted as best can be to a text representation with a trailing semi-colon.
The following are deemed to be "boolean" attributes, and will return either "true" or null:
async, autofocus, autoplay, checked, compact, complete, controls, declare, defaultchecked, defaultselected, defer, disabled, draggable, ended, formnovalidate, hidden, indeterminate, iscontenteditable, ismap, itemscope, loop, multiple, muted, nohref, noresize, noshade, novalidate, nowrap, open, paused, pubdate, readonly, required, reversed, scoped, seamless, seeking, selected, truespeed, willvalidate
Finally, the following commonly mis-capitalized attribute/property names are evaluated as expected:
- If the given name is "class", the "className" property is returned.
- If the given name is "readonly", the "readOnly" property is returned.
Note: The reason for this behavior is that users frequently confuse attributes and properties. If you need to do something more precise, e.g., refer to an attribute even when a property of the same name exists, then you should evaluate Javascript to obtain the result you desire.
Usage
waitForAttributeNotMatch(locator, name, text)
Parameters
| Parameter | Description |
|---|---|
| locator | an element locator |
| name | The name of the attribute. |
| text | the value to match with the result |
Wait For Checked
Waits for a toggle-button (checkbox/radio) is checked. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. Fails if the specified element doesn't exist or isn't a toggle-button.
Usage
waitForChecked(locator)
waitForChecked(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator pointing to a checkbox or radio button |
Wait For Confirmation
Waits for the message of a JavaScript confirmation dialog equals to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForConfirmation(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Wait For Confirmation Match
Waits for the message of a JavaScript confirmation dialog matches the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForConfirmationMatch(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Wait For Confirmation Not Match
Waits for the message of a JavaScript confirmation dialog not match the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForConfirmationNotMatch(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Wait For Confirmation Not Present
Waits for a confirmation dialog is not present. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
This function never throws an exception
Usage
waitForConfirmationNotPresent()
Parameters
| Parameter | Description |
|---|
Wait For Confirmation Present
Waits for a confirmation dialog is present. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
This function never throws an exception
Usage
waitForConfirmationPresent()
Parameters
| Parameter | Description |
|---|
Wait For Editable
Waits for the specified input element is editable, ie hasn't been disabled. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. This method will fail if the specified element isn't an input element.
Usage
waitForEditable(locator)
waitForEditable(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
Wait For Element Not Present
Waits for the specified element is not somewhere on the page. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForElementNotPresent(locator)
waitForElementNotPresent(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
Wait For Element Present
Waits for the specified element is somewhere on the page. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForElementPresent(locator)
waitForElementPresent(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
Wait For Enabled
Waits for an element is enabled. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. Fails if the specified element doesn't exist.
Usage
waitForEnabled(locator)
waitForEnabled(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
Wait For Eval
Waits for the result of evaluating the specified snippet equals to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForEval(expression, text)
Parameters
| Parameter | Description |
|---|---|
| expression | the snippet to run |
| text | the value to match with the result |
Wait For Exists In Database
Waits for any row would be returned by given the input SQL statement. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForExistsInDatabase(sql)
Parameters
| Parameter | Description |
|---|---|
| sql | the sql |
Wait For Expression
Waits for the specified expression equals to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
This is useful because of JavaScript preprocessing. It is used to generate commands like assertExpression and waitForExpression.
Usage
waitForExpression(expression, text)
Parameters
| Parameter | Description |
|---|---|
| expression | the value to return |
| text | the value to match with the result |
Wait For Expression Match
Waits for the specified expression matches the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
This is useful because of JavaScript preprocessing. It is used to generate commands like assertExpression and waitForExpression.
Usage
waitForExpressionMatch(expression, text)
Parameters
| Parameter | Description |
|---|---|
| expression | the value to return |
| text | the value to match with the result |
Wait For Expression Not Match
Waits for the specified expression not match the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
This is useful because of JavaScript preprocessing. It is used to generate commands like assertExpression and waitForExpression.
Usage
waitForExpressionNotMatch(expression, text)
Parameters
| Parameter | Description |
|---|---|
| expression | the value to return |
| text | the value to match with the result |
Wait For Not Activity
Waits for the current activity matches the given activity. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. The activity is identified by a string separated by a comma, containing "appPackage" and "appActivity" properties. For example: appPackage=example,appActivity=example
Usage
waitForNotActivity(activity)
Parameters
| Parameter | Description |
|---|---|
| activity | the given activity |
Wait For Not Alert
Waits for the message of a JavaScript alert not equal to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForNotAlert(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Wait For Not Attribute
Waits for the value of the given attribute of the element not equal to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. Will return the current value, even if this has been modified after the page has been loaded.
More exactly, this method will return the value of the property with the given name, if it exists. If it does not, then the value of the attribute with the given name is returned. If neither exists, null is returned.
The "style" attribute is converted as best can be to a text representation with a trailing semi-colon.
The following are deemed to be "boolean" attributes, and will return either "true" or null:
async, autofocus, autoplay, checked, compact, complete, controls, declare, defaultchecked, defaultselected, defer, disabled, draggable, ended, formnovalidate, hidden, indeterminate, iscontenteditable, ismap, itemscope, loop, multiple, muted, nohref, noresize, noshade, novalidate, nowrap, open, paused, pubdate, readonly, required, reversed, scoped, seamless, seeking, selected, truespeed, willvalidate
Finally, the following commonly mis-capitalized attribute/property names are evaluated as expected:
- If the given name is "class", the "className" property is returned.
- If the given name is "readonly", the "readOnly" property is returned.
Note: The reason for this behavior is that users frequently confuse attributes and properties. If you need to do something more precise, e.g., refer to an attribute even when a property of the same name exists, then you should evaluate Javascript to obtain the result you desire.
Usage
waitForNotAttribute(locator, name, text)
Parameters
| Parameter | Description |
|---|---|
| locator | an element locator |
| name | The name of the attribute. |
| text | the value to match with the result |
Wait For Not Checked
Waits for a toggle-button (checkbox/radio) is not checked. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. Fails if the specified element doesn't exist or isn't a toggle-button.
Usage
waitForNotChecked(locator)
waitForNotChecked(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator pointing to a checkbox or radio button |
Wait For Not Confirmation
Waits for the message of a JavaScript confirmation dialog not equal to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForNotConfirmation(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Wait For Not Editable
Waits for the specified input element is not editable, ie hasn't been disabled. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. This method will fail if the specified element isn't an input element.
Usage
waitForNotEditable(locator)
waitForNotEditable(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
Wait For Not Enabled
Waits for an element is not enabled. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. Fails if the specified element doesn't exist.
Usage
waitForNotEnabled(locator)
waitForNotEnabled(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
Wait For Not Eval
Waits for the result of evaluating the specified snippet not equal to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForNotEval(expression, text)
Parameters
| Parameter | Description |
|---|---|
| expression | the snippet to run |
| text | the value to match with the result |
Wait For Not Exists In Database
Waits for any row would be returned by given the input SQL statement. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForNotExistsInDatabase(sql)
Parameters
| Parameter | Description |
|---|---|
| sql | the sql |
Wait For Not Expression
Waits for the specified expression not equal to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
This is useful because of JavaScript preprocessing. It is used to generate commands like assertExpression and waitForExpression.
Usage
waitForNotExpression(expression, text)
Parameters
| Parameter | Description |
|---|---|
| expression | the value to return |
| text | the value to match with the result |
Wait For Not Page Source
Waits for the current application hierarchy XML (app) or page source (web).
In a web context, the source returns the source HTML of the current window. In a native context (iOS, Android, etc...) it will return the application hierarchy XML not equal to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForNotPageSource(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Wait For Not Prompt
Waits for the message of a JavaScript question prompt dialog not equal to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForNotPrompt(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Wait For Not Text
Waits for the text of an element. This works for any element that contains text. This command uses either the textContent (Mozilla-like browsers) or the innerText (IE-like browsers) of the element, which is the rendered text shown to the user not equal to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForNotText(locator, text)
waitForNotText(parentLocator, locator, text)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
| text | the value to match with the result |
Wait For Not Text Empty
Waits for the text of an element is not empty. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForNotTextEmpty(locator)
waitForNotTextEmpty(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
Wait For Not Value
Waits for the (whitespace-trimmed) value of an input field (or anything else with a value parameter) not equal to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. For checkbox/radio elements, the value will be "on" or "off" depending on whether the element is checked or not.
Usage
waitForNotValue(locator, text)
waitForNotValue(parentLocator, locator, text)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
| text | the value to match with the result |
Wait For Not Value Empty
Waits for the (whitespace-trimmed) value of an input field is not empty. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForNotValueEmpty(locator)
waitForNotValueEmpty(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
Wait For Not Visible
Waits for the specified element is not visible. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. An element can be rendered invisible by setting the CSS "visibility" property to "hidden", or the "display" property to "none", either for the element itself or one if its ancestors. This method will fail if the element is not present.
Usage
waitForNotVisible(locator)
waitForNotVisible(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
Wait For Page Source
Waits for the current application hierarchy XML (app) or page source (web).
In a web context, the source returns the source HTML of the current window. In a native context (iOS, Android, etc...) it will return the application hierarchy XML equals to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForPageSource(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Wait For Page Source Match
Waits for the current application hierarchy XML (app) or page source (web).
In a web context, the source returns the source HTML of the current window. In a native context (iOS, Android, etc...) it will return the application hierarchy XML matches the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForPageSourceMatch(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Wait For Page Source Not Match
Waits for the current application hierarchy XML (app) or page source (web).
In a web context, the source returns the source HTML of the current window. In a native context (iOS, Android, etc...) it will return the application hierarchy XML not match the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForPageSourceNotMatch(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Wait For Prompt
Waits for the message of a JavaScript question prompt dialog equals to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForPrompt(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Wait For Prompt Match
Waits for the message of a JavaScript question prompt dialog matches the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForPromptMatch(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Wait For Prompt Not Match
Waits for the message of a JavaScript question prompt dialog not match the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForPromptNotMatch(text)
Parameters
| Parameter | Description |
|---|---|
| text | the value to match with the result |
Wait For Prompt Not Present
Waits for a prompt dialog is not present. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
This function never throws an exception
Usage
waitForPromptNotPresent()
Parameters
| Parameter | Description |
|---|
Wait For Prompt Present
Waits for a prompt dialog is present. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
This function never throws an exception
Usage
waitForPromptPresent()
Parameters
| Parameter | Description |
|---|
Wait For Text
Waits for the text of an element. This works for any element that contains text. This command uses either the textContent (Mozilla-like browsers) or the innerText (IE-like browsers) of the element, which is the rendered text shown to the user equals to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForText(locator, text)
waitForText(parentLocator, locator, text)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
| text | the value to match with the result |
Wait For Text Empty
Waits for the text of an element is empty. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForTextEmpty(locator)
waitForTextEmpty(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
Wait For Text Match
Waits for the text of an element. This works for any element that contains text. This command uses either the textContent (Mozilla-like browsers) or the innerText (IE-like browsers) of the element, which is the rendered text shown to the user matches the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForTextMatch(locator, text)
waitForTextMatch(parentLocator, locator, text)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
| text | the value to match with the result |
Wait For Text Not Match
Waits for the text of an element. This works for any element that contains text. This command uses either the textContent (Mozilla-like browsers) or the innerText (IE-like browsers) of the element, which is the rendered text shown to the user not match the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForTextNotMatch(locator, text)
waitForTextNotMatch(parentLocator, locator, text)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
| text | the value to match with the result |
Wait For Text Not Present
Waits for the specified text appears somewhere on the page not equal to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForTextNotPresent(text)
Parameters
| Parameter | Description |
|---|---|
| text | a text to match with the text of the page |
| text | the value to match with the result |
Wait For Text Present
Waits for the specified text appears somewhere on the page equals to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForTextPresent(text)
Parameters
| Parameter | Description |
|---|---|
| text | a text to match with the text of the page |
| text | the value to match with the result |
Wait For Value
Waits for the (whitespace-trimmed) value of an input field (or anything else with a value parameter) equals to the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. For checkbox/radio elements, the value will be "on" or "off" depending on whether the element is checked or not.
Usage
waitForValue(locator, text)
waitForValue(parentLocator, locator, text)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
| text | the value to match with the result |
Wait For Value Empty
Waits for the (whitespace-trimmed) value of an input field is empty. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting.
Usage
waitForValueEmpty(locator)
waitForValueEmpty(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
Wait For Value Match
Waits for the (whitespace-trimmed) value of an input field (or anything else with a value parameter) matches the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. For checkbox/radio elements, the value will be "on" or "off" depending on whether the element is checked or not.
Usage
waitForValueMatch(locator, text)
waitForValueMatch(parentLocator, locator, text)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
| text | the value to match with the result |
Wait For Value Not Match
Waits for the (whitespace-trimmed) value of an input field (or anything else with a value parameter) not match the given value. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. For checkbox/radio elements, the value will be "on" or "off" depending on whether the element is checked or not.
Usage
waitForValueNotMatch(locator, text)
waitForValueNotMatch(parentLocator, locator, text)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |
| text | the value to match with the result |
Wait For Visible
Waits for the specified element is visible. They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting. An element can be rendered invisible by setting the CSS "visibility" property to "hidden", or the "display" property to "none", either for the element itself or one if its ancestors. This method will fail if the element is not present.
Usage
waitForVisible(locator)
waitForVisible(parentLocator, locator)
Parameters
| Parameter | Description |
|---|---|
| parentLocator | an element locator of parent element |
| locator | an element locator |


73% of B.C. residents agree with a temporary ban on vaping products: poll
54% say they would not date someone who vapes, Research Co. poll suggests
by Black Press Media StaffJust under three-quarters of British Columbians support temporary ban on vaping products, a Research Co. poll released Wednesday suggests.
The poll found that 49 per cent of B.C. residents said strongly agree with temporary ban due to the pulmonary illnesses associated with e-cigarettes, while another 24 per cent moderately agree. Health Canada said there are three probable cases of vaping-related illness in B.C., the most in any one province in the country. There are seven confirmed and probable cases nationwide.
The poll also suggests that 76 per cent of British Columbians believe vaping should be banned everywhere where smoking cigarettes is banned, and 83 per cent believe they should display nicotine warnings.
If you vape, you might be out of luck on the dating scene with 54 per cent of British Columbians saying they would not consider dating a person who uses e-cigarettes.
Just over half of the province’s residents believed that flavoured vaping products should be banned.
READ MORE: Health Canada ‘actively monitoring’ U.S. vaping illness
READ MORE: Three cases of probable vaping-related illness in B.C., says Health Canada


Tisander
Ordered JSON parser in pure Swift
I needed a JSON parser that has all of the items in dictionaries to be sorted to work around an issue where an existing API couldn’t be changed to return objects in an array. In my quest to find this, I noticed almost all parsers used JSONSerialization
from Apple to create their dictionaries and the dictionaries (quite correctly) has no order, but it was not consistent. Different platforms (simulator vs device) would give different orders and this is not something I could accept in my work.
The parser is now pure Swift and returns an array of either JSON.ArrayValues
or JSON.ObjectValues
(depending on what the structure was when they were parsed). This can be accessed by subscripting a String
or Int
and then cast to get values. Most importantly for me, you can get .allKeys from the array of JSON.ObjectValues
and they are sorted in the order they were in the JSON file because JSONSwift is: A JSON parser written from the ground up in pure Swift. It is a functional recursive descent parser.
Installing
Cocoapods
Add this to your Podfile
pod 'Tisander', '~> 1.0'
Manual
Copy JSON.swift
file into your project. Or just import the framework. That’s it. :)
How to use:
Parse JSON Object
// Data
let jsonString = """
{
"Monday": [
{
"title": "Test Driven Development",
"speaker": "Jason Shapiro",
"time": "9:00 AM"
},
{
"title": "Java Tools",
"speaker": "Jim White",
"time": "9:00 AM"
}
],
"Tuesday": [
{
"title": "MongoDB",
"speaker": "Davin Mickleson",
"time": "1:00 PM"
},
{
"title": "Debugging with Xcode",
"speaker": "Jason Shapiro",
"time": "1:00 PM"
}
]
}
"""
Call the static method JSON.parse(string:)
with the jsonString string, and use optional chaining to get the values you want:
var parsedJSON: Value?
do {
parsedJSON = try JSON.parse(string: jsonString)
} catch let error {
print("Could not parse JSON because of error: \(error)")
}
let keys = parsedJSON?.keys
print(keys?.joined(separator: ", ") ?? "")
// Prints:
// Monday, Tuesday
let mondayValues = parsedJSON?["Monday"]?.values
mondayValues?.forEach({ (day) in
print((day["title"] as? String) ?? "")
})
// Prints:
// Test Driven Development
// Java Tools


F-210 Performance Racing Drone
Breakthrough design makes F-210 essentially improved. With a new bow body design and carbon fiber material, it has superior ruggedness and anti-drop ability. Though improved small details, it will definitely give you more satisfaction. Axis equidistant design ensures the gravity center of the aircraft in the middle, which makes the flight more stable and turning agiler. Motor protection cover makes flying safer.
F-210 Performance Racing Drone
Breakthrough design makes F-210 essentially improved. With a new bow body design and carbon fiber material, it has superior ruggedness and anti-drop ability. Though improved small details, it will definitely give you more satisfactionAxis equidistant design ensures the gravity center of the aircraft in the middle, which makes the flight more stable and turning agiler. Motor protection cover makes flying safer.
F-210 Performance Racing Drone
Classic outer design, more humane control design. Adopting 2.4Hz direct sequence spread spectrum technology (DSSS), the Devo 7 can match frequency and assign ID automatically. The devo7 has wireless copy function, The player can set his own fixed checkpoints.


Multiple Choice
Horizontal - Above
Horizontal - Side
Column
Matrix
Matrix - Likert
Matrix - Profile
Matrix - Dropdown Likert
Matrix - Text Entry / Rank Order
Matrix - Constant Sum
// Matrix - Bipolar
Text Entry
Form


Represents an infinite plane in 3D, which is composed of a planar normal and its perpendicular distance to the origin.
Currently it provides a transform of the plane, and a norm 1 differencing of two planes. Refer to Trevor12iros for more math details.
|
| OrientedPlane3 | transform (const Pose3 &xr, OptionalJacobian< 3, 3 > Hp=boost::none, OptionalJacobian< 3, 6 > Hr=boost::none) const |
| | Transforms a plane to the specified pose. More...
|
| |
| Vector3 | error (const OrientedPlane3 &plane) const |
| | Computes the error between two planes. More...
|
| |
| Vector3 | errorVector (const OrientedPlane3 &other, OptionalJacobian< 3, 3 > H1=boost::none, OptionalJacobian< 3, 3 > H2=boost::none) const |
| | Computes the error between the two planes, with derivatives. More...
|
| |
|
size_t | dim () const |
| | Dimensionality of tangent space = 3 DOF.
|
| |
|
OrientedPlane3 | retract (const Vector3 &v, OptionalJacobian< 3, 3 > H=boost::none) const |
| | The retract function.
|
| |
|
Vector3 | localCoordinates (const OrientedPlane3 &s) const |
| | The local coordinates function.
|
| |
|
Vector4 | planeCoefficients () const |
| | Returns the plane coefficients.
|
| |
|
Unit3 | normal () const |
| | Return the normal.
|
| |
|
double | distance () const |
| | Return the perpendicular distance to the origin.
|
| |
|
|
| OrientedPlane3 () |
| | Default constructor.
|
| |
|
| OrientedPlane3 (const Unit3 &s, double d) |
| | Construct from a Unit3 and a distance.
|
| |
|
| OrientedPlane3 (const Vector4 &vec) |
| | Construct from a vector of plane coefficients.
|
| |
|
| OrientedPlane3 (double a, double b, double c, double d) |
| | Construct from four numbers of plane coeffcients (a, b, c, d)
|
| |
|
|
void | print (const std::string &s=std::string()) const |
| | The print function.
|
| |
|
bool | equals (const OrientedPlane3 &s, double tol=1e-9) const |
| | The equals function with tolerance.
|
| |


| Interface | Description |
|---|---|
| CloseableIterator<E> |
A
CloseableIterator is intended to be used when it may hold resources (such as file or socket handles). |
| CollectionFilter<T> |
Base strategy for filtering out a subset of a Collection of elements.
|
| Pool<T> |
Represents a pool of items.
|
| SimplePool.PoolItemCallback<T> |
User of the pool provide an implementation of this interface; called during
various pool operations.
|
| Class | Description |
|---|---|
| AbstractExpressionEvaluator | |
| AcceptOnceCollectionFilter<T> |
An implementation of
CollectionFilter that remembers the elements passed in
the previous invocation in order to avoid returning those elements more than once. |
| AnnotatedMethodFilter |
A MethodFilter implementation that enables the following:
matching on method name, if available
exclusion of void-returning methods if 'requiresReply' is true
limiting to annotated methods if at least one is present
|
| BeanFactoryTypeConverter | |
| CallerBlocksPolicy |
A
RejectedExecutionHandler that blocks the caller until
the executor has room in its queue, or a timeout occurs (in which
case a RejectedExecutionException is thrown. |
| ClassUtils | |
| CompositeExecutor |
An
Executor that encapsulates two underlying executors. |
| CompoundTrigger |
A
Trigger that delegates the CompoundTrigger.nextExecutionTime(TriggerContext)
to one of two Triggers. |
| DynamicPeriodicTrigger |
This is a dynamically changeable
Trigger . |
| ErrorHandlingTaskExecutor |
A
TaskExecutor implementation that wraps an existing Executor
instance in order to catch any exceptions. |
| FixedMethodFilter |
A
MethodFilter implementation that will always return
the same Method instance within a single-element list if it is
present in the candidate list. |
| FunctionIterator<T,V> |
An
Iterator implementation to convert each item from the target
FunctionIterator.iterator to a new object applying the FunctionIterator.function on FunctionIterator.next() . |
| JavaUtils |
Chained utility methods to simplify some Java repetitive code.
|
| MessagingAnnotationUtils |
Utility methods to support annotation processing.
|
| SimplePool<T> |
Implementation of
Pool supporting dynamic resizing and a variable
timeout when attempting to obtain an item from the pool. |
| StackTraceUtils |
Utility methods for analyzing stack traces.
|
| UniqueMethodFilter | |
| UpperBound |
Thin wrapper around a Semaphore that allows to create a potentially unlimited upper bound
to by used in buffers of messages (e.g.
|
| UUIDConverter |
Utility to help generate UUID instances from generic objects.
|
| WhileLockedProcessor |
A simple strategy callback class that allows you to provide
a code that needs to be executed under
Lock provided by
LockRegistry
A typical usage would be to provide implementation of WhileLockedProcessor.whileLocked() method and
then call WhileLockedProcessor.doWhileLocked() |
| Exception | Description |
|---|---|
| PoolItemNotAvailableException |
Thrown when a pooled item could not be obtained for some reason.
|


http-server
If your terminal is closed, open it from the "Terminal" menu at the top of VS Code.
Just like CSS and JS, data is often stored in external files and loaded into the page dynamically.
D3 comes with functions that can read in external data files automagically. Filetypes include:
Reads text in as a string. 'Nuff said.
Some sample text
This can be loading like this:
d3.text("file.txt", function(error, data) {
console.log(data);
});
Comma-separated values. Each line of the file is a data object, with it's values separated by commas. The first row in the file is expected to be the key names for each data point.
country,value
usa,4
mexico,10
canada,6
This can be loading like this:
d3.csv("file.csv", function(error, data) {
console.log(data);
});
JavaScript Object Notation. Data is stored with the same syntax as it would be in Javascript, with keys and values.
[
{
country: "usa",
value: 4
}
]
This can be loading like this:
d3.json("file.json", function(error, data) {
console.log(data);
});
In the context of data, developers who store data in databases need to enable an easy way for themselves and others to extract data based on specific query parameters.
Data USA collates data from 17 public US datasets.
Additionally, all of the data is available for free through a JSON API. Documentation is here.
Data from an API is commonly delivered in JSON format, so instead of providing d3.json a filename for it's first argument, we can provide it a full URL (if the other website allows it):
var url = "https://datausa.io/api/data?measures=Population&year=latest";
d3.json(url, function(error, data) {
console.log(data);
});
https://github.com/public-apis/public-apis/blob/master/README.md
Arrays have a built in "forEach" function that allows you to loop through every item in an Array to analyze and/or change things:
data.forEach(function(d) {
d.value = parseFloat(d.value);
});
Here we are using the built-in parseFloat
function to change strings into numbers.
Arrays have a built in "filter" function that allows you to selectively trim a large data Array to create a smaller Array:
var currentYear = "2019";
var currentYearData = data.filter(function(d) {
return d.year == currentYear;
});
D3 contains a number of helper functions that will analyze an Array in different ways. For example, finding the minimum value of a dataset:
var dataMinimum = d3.min(data, function(d) {
return d.value;
});
Most of these functions require providing 2 arguments: the Array to be analyzed and an "accessor" function that returns the object key to be used for the analysis. Other helpful functions include "max" and "extent".
The d3.nest() function can be used to group data on a common key:
var groupedData = d3.nest()
.key(function(d) {
return d.continent;
})
.entries(csvData);
When using 2 data files, like a geographical map and CSV data, it is sometimes necessary to create a mapping in order to cross-reference from one data file to the other.
In order to save on filesize, the dataset may use short IDs to identify items, so we can add in the full legible names using a forEach function and a lookup Object:
var countryMapping = {
"CAN": "Canada",
"USA": "United States",
"MEX": "Mexico"
};
data.forEach(function(d) {
d.fullName = countyMapping[d.country];
});
This is often called "cross-walking".
Identify a public dataset you would like to use for your final project, and come to next class prepared to present the dataset to the class.


Feel free to finish this sample game. When you are done, click begin game to start the trial.
Did you expect this move from the robot?
Yes
No
Begin Game