You can describe a story in the main json file (here).
Direct link to story description
You can describe a story in a spearate json file that is linked from within the main json file. The fields from the linked story description will overwrite the ones given here. You don't need to give any other fields than 'link' unless you want to.


I'm missing you this first year away from family during Christmas.  Even though I can't spend the Christmas season days and nights with you, you reside in my heart as I hope I do in yours. Stay warm, be safe, eat lots of good food and enjoy this holiday with family near and far.
Love,Jason


We recommend you to read our Privacy Policy section.
If you have any other question or concern, feel free to get in touch with us.
To help you make decisions about the information you provide anywhere on this site, this notice has been provided to outline our practices. You should know that we respect your privacy, and we will never sell your information to anyone. Also, we hate spam as much as you do, so you will only ever get email from us that you have asked for and we have personally approved for distribution to the list.
We use secure hosting accounts and other security measures to protect our database and any information provided.
Any e-mail you receive from this site will be sent as an answer to a question of yours made via contact form or an old contact. We do not keep an email database.
Tracking
We don’t directly track your presence on this website. Your IP address is logged and we look at the server logs on occasion, but this is in an aggregate fashion for the purpose of determining why people come to visit us. What we are most interested in specifically are two things: The websites that link to us and send traffic here, and what keywords people use to find us via search engines such as Google, Yahoo, and MSN.
Cookies
“Cookies” are data sent to your web browser from a web server (such as Google) that can uniquely identify your computer and store information about user preferences. Most web browsers will accept cookies by default, but they can be set to reject cookies, either from all websites or from specific sites. You can also manually delete cookies from your web browser. These options are generally set through a “Privacy” setting in your browser setup.
Depending on your location we can place a cookie that has a single purpose - to show us your location so that we can serve you the download from the closest server. The cookie is set to expire automatically after 48 hours and has no other hidden purpose (except for the download service) so we can claim that we use a single cookie without tracking or collecting data. We also run a number of scripts from providers such as Google. Some of these set web browser cookies. Google in particular quietly collects a tremendous amount of data on your browsing habits, and we participate in that data collection.
General informations to all international visitors ( updated 16 August 2012 )
We would like to inform you that we are now using Google interest-based advertising technology. This technology is implemented by us www.FossHub.com using Google. This will not be used to identify you or your location, it will be used only to help our advertising system ( Adsense ) provided by Google to show more relevat Ads to our visitors.
We also use DoubleClick DART cookie from Google. What is the DoubleClick DART cookie?
"The DoubleClick DART cookie is used by Google in the ads served on publisher websites displaying AdSense for content ads. When users visit an AdSense publisher's website and either view or click on an ad, a cookie may be dropped on that end user's browser. The data gathered from these cookies will be used to help AdSense publishers better serve and manage the ads on their site(s) and across the web."
"Google, as a third party vendor, uses cookies to serve ads on your site.
Google's use of the DART cookie enables it to serve ads to your users based on their visit to your sites and other sites on the Internet."
"We use third-party advertising companies to serve ads when you visit our website. These companies may use information (not including your name, address, email address, or telephone number) about your visits to this and other websites in order to provide advertisements about goods and services of interest to you. "
Besides Google Adsense we also use Google Analytics which may collect data. We can't say what kind of data is being collected, for more information look for their privacy policy or terms of agreement. Since most websites on the Internet runs Google services, there is nothing to worry about.
If you can read this privacy policy available for www.FossHub.com, it means that you agree with all the terms listed here. If you do not agree with our privacy policy you should leave this website immediately without visiting any other website page.
We encourage all visitors ( users ) to read our PRIVACY POLICY and also our TERMS OF USE ( also know as Terms of Agreement ). By simply accessing this website you agree and you accept all of our terms and conditions and also our privacy policy that can be changed any time without any notification since we do not keep, store or manage any email address databases.
Updated last time on 28 Ju;y 2015
Visit this page frequently to check with our Privacy Policy


Employment
VB.NET Developer
Aug 2012 - Present
Bluedoor - DST Global Solutions - Superannuation Platform Provider.
- Interpreted Functional Specifications and wrote Detailed Design Documents for the Presentation, Service and Database layers.
- Implemented designs following coding standards for the Presentation, Service and Database layers.
- Wrote Unit Tests and Release Notes for each completed Task.
- Completed Code Reviews.
- Developed and provided Client Support for SuperStream (Web Services) Implementation.
- Enhanced Document Archive Functionality.
- Frequently visited clients to debug high priority issues with SuperStream and Trading Systems.
- Familiar with Australian and UK Superannuation.
- Testing and completing Test Documentation.
- Created and Maintained Multi Thread Batch Jobs (Automated Scheduled). This included Batch Jobs related to Share Trading.
- Created and Maintained Workflows.
- Maintained Inhouse Workflow Engine.
- Maintained Inhouse Transaction Engine.
- Developed PDF/CSV Correspondence and Complex Financial Report Queries for Inhouse reporting systems.
- Recorded and Played back Regression Steps.
- Maintained Inhouse Win Form Tools.
- Local Development with Build Server.
Neo200 Spencer St Freelance Web Development
2012
Neo200 Spencer St, Melbourne.
- Created a Custom Content Management System using .NET, Caching, JQuery and an XML database.
- http://www.neo200.com
VB.NET Analyst Programmer
2010 - Aug 2012
The University of Tasmania.
- Developed Secure & Dynamic .NET Web Portals for Student and Staff using AJAX, Grids, Datasources, Multiviews and TreeViews. The portals were role based and allowed users to view data, update data and download archived documents.
- Developed Dynamic PDF output for Agresso Curriculum Management System - SLIMS Project.
- Developed the University of Tasmania Graduation Verification System using UniObjects for .NET
- Managed Student Correspondence Change, Output and Archiving using Create!form.
- Gathering requirements directly from Clients.
- Created mockups for presentations.
- MS Access VBA Coding.
- Reported at Weekly team meetings.
Casual Web Developer
2008 - 2010
The University of Tasmania.
- Maintained static HTML webpage content.
- Managed Adobe Contribute Websites and Users.
- Reported at Weekly team meetings.
Education
Bachelor of Computing and Bachelor of Science
2006 - 2009
The University of Tasmania.
- Distinction Average.
- Major in Chemistry.
- Deans Roll of Excellence 2006 & 2009.
Skills
VB.NET 3.5/4.0/4.5
Proficient with Framework Development, Page & User Control Lifecycle, Service Code, Database code & Caching.
.NET Member and Role Providers
Familiar
SQL
Proficient with Database Design, Queries, Stored Procs, TSQL, Optimization
WCF Web Services
Familiar
HTML, CSS, JQuery, Javascript, JSON
Proficient
HTML 5
Proficient
Responsive Web Design
Proficient
C#.NET, JAVA, C, C++
Familiar
Third Party Libraries
iTextSharp, PDFSharp
PDF Creation
ChilKat
Zip File Creation
Entity Framework
Data Layer
Software
Visual Studio 2008, 2010, 2012, 2013
Debugging, Searching, Coding
Visual Studio Team Foundation Server
Checking In, Checking Out, Changesets, Merging, Branching
SQL Server 2005, 2008, 2012, 2014
Database Design, Queries, Stored Procs, TSQL, Optimization
SQL Profiler
Debugging SQL queries
RedGate Tools
Database Comparison
Beyond Compare
Comparing XML documents
SOAP UI
WCF Testing
IIS
Hosting .NET applications and WCF services
Adobe Photoshop and Illustrator
Creating Wireframes and Designs


Public Member Functions | |
| UniformFlowletIntermediary () | |
| Packet | adaptOutgoing (Packet packet) |
| Packet | adaptIncoming (Packet packet) |
| Public Member Functions inherited from ch.ethz.systems.netbench.ext.flowlet.FixedGapFlowletIntermediary | |
| FixedGapFlowletIntermediary () | |
Additional Inherited Members | |
| Protected Member Functions inherited from ch.ethz.systems.netbench.ext.flowlet.FixedGapFlowletIntermediary | |
| boolean | flowletGapExceeded (long flowId) |
| Protected Member Functions inherited from ch.ethz.systems.netbench.ext.flowlet.FlowletIntermediary | |
| FlowletIntermediary () | |
| long | getAndUpdateLastSent (long flowId) |
| int | getCurrentFlowlet (long flowId) |
| void | setCurrentFlowlet (long flowId, int newFlowlet) |
| Protected Member Functions inherited from ch.ethz.systems.netbench.core.network.Intermediary | |
| Intermediary () | |
| NetworkDevice | getNetworkDevice () |
The uniform flowlet intermediary simply increases the flowlet identifier each time a flowlet gap has occurred, changing the sequential hash for each packet with an increment of one.
In effect, the uniform flowlet intermediary changes the sequential hash when a flowlet gap has been encountered. Whether the sequential hash actually encodes to another path is up to the underlying network and the hash function it uses.
| ch.ethz.systems.netbench.ext.flowlet.UniformFlowletIntermediary.UniformFlowletIntermediary | ( | ) |
| Packet ch.ethz.systems.netbench.ext.flowlet.UniformFlowletIntermediary.adaptIncoming | ( | Packet | packet | ) |
Identity.
| packet | Packet instance |
Reimplemented from ch.ethz.systems.netbench.core.network.Intermediary.
| Packet ch.ethz.systems.netbench.ext.flowlet.UniformFlowletIntermediary.adaptOutgoing | ( | Packet | packet | ) |
Adapt the flowlet in the outgoing packet to the correct one for the flow it is in.
| packet | Packet instance |
Reimplemented from ch.ethz.systems.netbench.core.network.Intermediary.


*** User 2017-04-18 14:15:54.343 ***
14:15:54.343 [info] Disabling blocking sync...
*** User 2017-04-18 14:15:54.348 ***
14:15:54.348 [info] Configured peer_service_manager partisan_default_peer_service_manager on node 'node-1@MBPdeAnneFrance'
*** User 2017-04-18 14:15:55.800 ***
14:15:55.800 [info] Enabling membership...
*** User 2017-04-18 14:15:55.801 ***
14:15:55.801 [info] Disabling blocking sync...
*** User 2017-04-18 14:15:55.806 ***
14:15:55.806 [info] Configured peer_service_manager partisan_default_peer_service_manager on node 'node-2@MBPdeAnneFrance'
*** User 2017-04-18 14:15:57.256 ***
14:15:57.256 [info] Enabling membership...
*** User 2017-04-18 14:15:57.257 ***
14:15:57.257 [info] Disabling blocking sync...
*** User 2017-04-18 14:15:57.262 ***
14:15:57.262 [info] Configured peer_service_manager partisan_default_peer_service_manager on node 'node-3@MBPdeAnneFrance'
*** User 2017-04-18 14:15:57.496 ***
Joining node: 'node-3@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 49858
*** User 2017-04-18 14:15:57.497 ***
Joining issued: 'node-3@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 49858
*** User 2017-04-18 14:15:57.497 ***
Joining node: 'node-2@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 49843
*** User 2017-04-18 14:15:57.497 ***
Joining issued: 'node-2@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 49843
*** User 2017-04-18 14:15:57.498 ***
Joining node: 'node-1@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 49832
*** User 2017-04-18 14:15:57.498 ***
Joining issued: 'node-1@MBPdeAnneFrance' to runner@MBPdeAnneFrance at port 49832
*** User 2017-04-18 14:15:57.559 ***
Waiting for join to complete with manager: partisan_default_peer_service_manager
*** User 2017-04-18 14:15:57.560 ***
Finished.
*** CT 2017-04-18 14:15:57.560 *** COVER INFO
Adding nodes to cover test: [runner@MBPdeAnneFrance]
*** CT 2017-04-18 14:15:57.569 *** COVER INFO
Successfully added nodes to cover test: []
*** User 2017-04-18 14:16:01.543 ***
Case finished: ivar_test
*** User 2017-04-18 14:16:08.516 ***
14:16:08.516 [info] Application lasp exited with reason: stopped
*** User 2017-04-18 14:16:08.517 ***
14:16:08.517 [info] Application partisan exited with reason: stopped
=== Ended at 2017-04-18 14:16:08
=== successfully completed test case
=== Returned value: ok
Test run history
| Top level test index


|
Fried gator tail rolled into balls, served with our sweet sweet potato fries. $5.50 |
The chef's favorite dish! Classic cajun sandwich made with your choice of fried shrimp or catfish. $7.95 |
Traditional Etoufee, made with local crawdads on a bed of white rice. $7.95 |
|
Made with sausage, pork, chicken, and local crawdads. Comes with a side of sweet potato fries. $6.75 |
Cradads by the bucket! Comes with redbeans and rice. $7.95 |
A huge cut of catfish, deep fried to prefection. Comes with our sweet potato fries. $8.50 |
Phillip Fulmer Way, Knoxville, TN 37916
(502) 555-7777


Toggle navigation
Station Control
Home
Radio
SteppIR
Amplifier
Relays
Radio Control
FlexRadio Flex-6000 Series
Radio Monitor
Current Slices
ON
OFF
Remote Radio Power
OFF
Notes:
(Program updated: Tue 5-Jul-16)
Automatically updates Slice info with changes on the radio. This information is then used by other programs needing Slice info.
Added Relay Control. Here, to control Remote Radio ON signal to Flex-6000.


@*
* Copyright 2023 HM Revenue & Customs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*@
@(
title: String,
visuallyHiddenTitle: Option[String]=None,
summaryClass: Option[String]=None,
panelClass: Option[String]=Some("panel-indent")
)(body: Html)
@if(visuallyHiddenTitle) {
@title
@visuallyHiddenTitle
} else {
@title
}
@body
@if(visuallyHiddenTitle) {
@title
@visuallyHiddenTitle
} else {
@title
}
@body


Screenplay Assertions
We have seen how make assertions using the should()
method with targets or questions combined with Hamcrest matchers, like this:
sam.attemptsTo(
Enter.theValue("40").into(AGE_FIELD).thenHit(Keys.ENTER)
);
sam.should(
seeThat(the(AGE_FIELD), hasValue("40"))
);
In the code shown here, the the()
method is a static import from the WebElementQuestion
class, and the hasValue()
is a static import from the WebElementStateMatchers
class.
This is quite flexible, as you can add custom matchers quite easily. However, it means you need to know what matchers exist, and which ones can be used in different circumstances.
Introducing Serenity Ensure
Recent versions of Serenity Screenplay also provides an alternative approach, which many developers find easier to use and faster to write. This approach uses the Ensure
class. The Ensure
class produces a Performable
, so you can integrate them directly into the attemptsTo()
method. It also has a very readable DSL and lets you use code completion to discover the assertions you can use for different values, making writing assertions easier and quicker. An example of code equivalent to the above can be seen here:
sam.attemptsTo(
Enter.theValue("40").into(AGE_FIELD).thenHit(Keys.ENTER),
Ensure.that(AGE).text().isEqualTo("40")
);
Adding Serenity Ensure to your project
Serenity Ensure needs an extra dependency in your build script. For Maven, add the serenity-enusre
dependency to your pom.xml
file:
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-ensure</artifactId>
<version>${serenity.version}</version>
<scope>test</scope>
</dependency>
And in Gradle, you need to add the following dependency:
testCompile "net.serenity-bdd:serenity-screenplay-webdriver:${serenity.version}"
Your first Ensure test
A very simple Ensure
test can be seen here:
Actor aster = Actor.named("Aster");
int age = 20;
aster.attemptsTo(
Ensure.that(age) (1)
.isEqualTo(20) (2)
);
| 1 | Pass the value under test to the Ensure.that(…) method |
| 2 | Add an assertion method |
Almost all Ensure
assertions start with the Ensure.that()
method (1).
This method takes the value being tested as a parameter (in this case an integer).
Following this comes the actual assertion method (2).
Assertions about numbers
You can use auto-complete in your IDE to see the range of assertions available. For integers, longs and floating point numbers, the assertions include:
| Assertion | Example |
|---|---|
isEqualTo |
|
isNotEqualTo |
|
isGreaterThan |
|
isGreaterThanOrEqualTo |
|
isLessThan |
|
isBetween |
|
isStrictlyBetween |
|
For doubles and floats, you can also use the isCloseTo()
assertion:
float creditScore = 9.8F;
aster.attemptsTo(
Ensure.that(creditScore).isCloseTo(9.81F, 0.01F)
);
Assertions about Strings
Another common requirement is to make assertions about Strings. An example is shown here:
String name = "Bill";
aster.attemptsTo(
Ensure.that(name).isEqualToIgnoringCase("BILL")
);
Other basic comparison assertions about Strings include the following:
| Assertion | Example |
|---|---|
isEqualTo |
|
isNotEqualTo |
|
isGreaterThan |
|
isGreaterThanOrEqualTo |
|
isLessThan |
|
isBetween |
|
isStrictlyBetween |
|
String contents
The Ensure
class also has a number of assertions related to string contents.
For example:
String colors = "Red Green Blue";
aster.attemptsTo(
Ensure.that(colors).contains("Green")
);
| Assertion | Example |
|---|---|
containsIgnoringCase |
|
containsOnlyDigits |
|
containsOnlyLettersOrDigits |
|
containsOnlyLetters |
|
containsWhitespaces |
|
containsOnlyWhitespaces |
|
startsWith |
|
endsWith |
|
matches |
|
doesNotContain |
|
isBlank() |
|
isNotBlank() |
|
isEmpty() |
|
isNotEmpty() |
|
isInLowerCase() |
|
isInUpperCase() |
|
isSubstringOf |
|
String Size
There are also some assertions to check the length of the string For example:
String colors = "Red Green Blue";
aster.attemptsTo(
Ensure.that(colors).hasSizeGreaterThan(3)
);
| Assertion | Example |
|---|---|
hasSize |
|
hasSizeGreaterThan |
|
hasSizeGreaterThanOrEqualTo |
|
hasSizeLessThan |
|
hasSizeLessThanOrEqualTo |
|
hasSizeBetween |
|
hasLineCount |
|
Assertions using Lambda expressions
Another useful trick is to use a Java 8 Lambda expression to do the check.
You can use the Ensure.that(…).matches(…)
construct to pass in a lambda predicate which will determine whether the Ensure
statement should pass or fail.
For example:
String actualColor = "green";
aster.attemptsTo(
Ensure.that(actualColor).matches("is an RGB color", (1)
color -> color.equals("red") (2)
|| color.equals("blue")
|| color.equals("green"))
);
-
A plain English description of the lambda, which will appear in the reports
-
A predicate that takes the parameter type passed to the
Ensure.that()
method, and returns a boolean.
Negative assertions
You can negate an Ensure.that()
statement simply by including the not()
method. For example:
String colors = "Red Green Blue";
aster.attemptsTo(
Ensure.that(colors).not().contains("Cyan")
);
Working with dates and times
The Ensure
class provides a few special methods for dates and times.
For LocalTime
variables, we can use Ensure.that(…).isBefore()
and Ensure.that(…).isAfter()
to compare two times, as we can see here:
LocalTime tenInTheMorning = LocalTime.of(10,0);
LocalTime twoInTheAfternoon = LocalTime.of(14,0);
aster.attemptsTo(
Ensure.that(tenInTheMorning).isBefore(twoInTheAfternoon)
);
For LocalDate
variables, we have isBefore()
and isAfter()
, as well as a number of others,
such as the isDayOfWeek()
method illustrated here:
LocalDate firstOfJanuary = LocalDate.of(2000,1,1);
aster.attemptsTo(
Ensure.that(firstOfJanuary).isDayOfWeek(DayOfWeek.SATURDAY)
);
Other date-related assertions include:
| Assertion | Example |
|---|---|
isDayOfWeek |
|
isDayOfMonth |
|
isInTheMonthOf |
|
isTheYear |
|
Working with collections
The Ensure
class gives you a range of methods to make assertions about collections.
This can be as simple as checking whether an element appears in a collection:
we can do this using the Ensure.that(…).isIn(…)
construct:
List<String> colors = Arrays.asList("red", "green", "blue");
aster.attemptsTo(
Ensure.that("red").isIn(colors)
);
Suppose we had the following lists:
List<String> sameColors = Arrays.asList("red", "green", "blue");
List<String> differentColors = Arrays.asList("red", "green", "cyan");
List<String> allColors = Arrays.asList("red", "green", "blue","yellow","cyan");
List<String> lastColors = Arrays.asList("yellow","cyan");
List<String> redAndPink = Arrays.asList("red", "pink");
List<String> noColors = Arrays.asList();
Here are some examples of other assertion methods using these collections:
Assertions about list equality and size
The following assertions are useful if you need to check the size of a collection, or whether it is equivalent to another collection.
| Assertion | Example |
|---|---|
isEqualTo |
|
isEmpty |
|
isNotEmpty |
|
hasSize |
|
hasSizeGreaterThan |
|
hasSizeLessThan |
|
hasSizeBetween |
|
hasSameSizeAs |
|
Assertions about list contents
Often we need to check the contents of a collection. We can do this using a range of contains assertions, as illustrated here:
List<String> colors = Arrays.asList("red", "green", "blue");
aster.attemptsTo(
Ensure.that(contains).contains("red")
);
Some of the other contains assertions are listed in the table below:
| Assertion | Example |
|---|---|
contains |
|
containsAnyOf |
|
containsOnly |
|
containsExactly |
|
containsExactlyInAnyOrder |
|
doesNotContain |
|
containsElementsFrom |
|
containsAnyElementsOf |
|
containsExactlyElementsOf |
|
isASubsetOf |
|
doesNotHaveDuplicates |
|
startsWith |
|
startsWithElementsFrom |
|
endsWith |
|
endWithElementsFrom |
|
Matching list elements with Java 8 Lambdas
Lambda expressions provide a powerful way of making arbitrary assertions about the contents of a collection.
We can use the Ensure.that(…).allMatch()
, Ensure.that(…).anyMatch()
and Ensure.that(…).noneMatch()
to do this.
For example, the following code asserts that each element in a collection is 4 characters long:
List<String> colors = ImmutableList.of("blue", "cyan", "pink");
aster.attemptsTo(
Ensure.that(colors).allMatch("4 characters long",
it -> it.length() == 4)
);
Note that when we use a Lambda expression, we need to include a description of the expectation before providing the lambda expression itself. This description will be used in the reports should the assertion fail.
The anyMatch method checks that there exists at least one element in a collection that matches a specified predicate. An example is shown here:
@Test
public void shouldContainAtLeastOnePrimaryColor() {
Actor aster = Actor.named("Aster");
List<String> colors = ImmutableList.of("blue", "cyan", "pink");
aster.attemptsTo(
Ensure.that(colors).anyMatch("is a primary color",
it -> isAPrimaryColor(it))
);
}
private boolean isAPrimaryColor(String color) {
return (color == "red")
|| (color == "green")
|| (color == "blue");
}
The noneMatch method checks that no elements exist in a collection that match a certain condition.
List<String> colors = ImmutableList.of("orange", "cyan", "pink");
aster.attemptsTo(
Ensure.that(colors).noneMatch("is a primary color",
it -> isAPrimaryColor(it))
);
You can also check for specific numbers of elements, using atLeast
, noMoreThan
, and exactly
.
For example:
List<String> colors = ImmutableList.of("blue", "cyan", "red","pink");
aster.attemptsTo(
Ensure.that(colors).atLeast(2, "is a primary color",
it -> isAPrimaryColor(it))
);
Using Named Expectations
If you have commonly used predicates in your test code, you can use the NamedException
to make your code more concise.
For example, here we define a NamedException
that matches primary colors:
private static final NamedExpectation<String> IS_A_PRIMARY_COLOR
= new NamedExpectation<>("is a primary color",
color -> (color.equals("red"))
|| (color.equals("green"))
|| (color.equals("blue")));
We could use this in the Ensure.that()
method like this:
aster.attemptsTo(
Ensure.that(colors).anyMatch(IS_A_PRIMARY_COLOR)
);
Working with web elements
When writing UI tests, we need to make assertions about the state of elements on a web page.
The Ensure
class makes this an easy task.
We can make assertions about Target
elements directly using the Ensure.that()
method.
Target FIRST_NAME = Target.the("First name field").locatedBy("#firstName")
aster.attemptsTo(
Ensure.that(FIRST_NAME).value().isEqualTo("Joe"),
);
A more flexible approach is to use the ElementLocated
class to identify an element.
We can also locate elements using By
locators or CSS/XPath strings.
The following code uses the Ensure.that()
and ElementLocated.by()
methods to check
whether the element located by the CSS selector "#firstName" is displayed:
aster.attemptsTo(
Ensure.that(ElementLocated.by("#firstName")).isDisplayed(),
);
The ElementLocated.by()
will work with By
locators, XPath/CSS strings or Target
elements,
which means that you can easily decouple your locator strategy from your assertions.
Simple web element assertions
The most simple assertions about web elements are boolean checks about the state of the element.
The Ensure.that(…).is…
assertions let you make assertions about whether an element
is displayed or disabled.
| Assertion | Example |
|---|---|
isDisplayed |
|
isDisabled |
|
isEnabled |
|
Checking text content and field values
Checking field values and text content is the bread-and-butter of many web tests.
You can use Ensure.that(…).value()
to read the value attribute of a field, as shown here:
aster.attemptsTo(
Ensure.that(FIRST_NAME).value().startsWith("Joe"),
);
The Ensure.that(…).text()
method lets you read the text of the element:
aster.attemptsTo(
Ensure.that(SEARCH_RESULTS_SUMMARY)
.text()
.endsWith("results for 'Serenity'"),
);
You can also read the text contents of an element using Ensure.that(…).textContent()
.
The text content is the value of the textContent
CSS attribute.
This value is available even when an element is not visible, making it useful in cases where you need to read a full set of values, even those not currently visible on the page.
The most important Ensure.that(…)
methods for web elements include the following:
| Assertion | Example |
|---|---|
value |
|
text |
|
textContent |
|
attribute |
|
selectedValue |
|
selectedVisibleText |
|
hasCssClass |
|
containsElements |
|
All of these methods allow you to make all of the String assertions we saw earlier.
Converting values to different types
Sometimes it is useful to be able to make assertions about non-String types. For example:
aster.attemptsTo(
Ensure.that(ElementLocated.by("#itemCount"))
.value()
.asAnInteger()
.isGreaterThanOrEqualTo(2)
);
The main conversion methods include:
| Assertion | Example |
|---|---|
asAnInteger |
|
asADouble |
|
asAFloat |
|
asABigDecimal |
|
asADate |
|
asATime |
|
asABoolean |
|
If a date or time value uses as non-standard format, we can pass a format string to the asADate()
or asATime()
methods:
aster.attemptsTo(
Ensure.that(ElementLocated.by("#currentDate"))
.value()
.asADate("dd-MM-yyyy")
.isBefore(dateLimit)
);
Making assertions about collections of web elements
You can make assertions about multiple values, for example, all the titles of a list of search results.
One way to do this is to use the Ensure.thatTheSetOf()
method (or its synonym, Ensure.thatAmongst()
).
This method takes a Target
or a locator, and lets you apply the
aster.attemptsTo(
Ensure.thatTheSetOf(ElementsLocated.by(".train-line"))
.hasSizeGreaterThan(5)
);
We can also use static methods defined in TheMatchingElement
to perform commonly used checks on web elements, e.g.
aster.attemptsTo(
Ensure.thatTheSetOf(ElementsLocated.by(".train-line"))
.allMatch(TheMatchingElement.containsText("Line"))
);
The main methods defined in the TheMatchingElement
class include:
| Assertion | Example |
|---|---|
isDisplayed |
|
isNotDisplayed |
|
isDisabled |
|
isNotDisabled |
|
isEnabled |
|
isNotEnabled |
|
hasCssClass |
|
hasValue |
|
containsText |
|
containsOnlyText |
|
containsElementsLocatedBy |
|
We can also make assertions about collections of matching values or the text contents of matching elements.
We can do this using the Ensure.that(…).values()
, Ensure.that(…).textValues()
and Ensure.that(…).textContentValues()
.
For example:
aster.attemptsTo(
Ensure.that(ElementLocated.by("#colors option"))
.values()
.contains("red","blue","green")
);
Waiting for elements and defining timeouts
When working with asynchronous web applications, an element may not be immediately ready when a test interacts with it.
By default, Serenity will wait for 5 seconds for an element to be present.
Using the Ensure
class, we can fine-tune the amount of time we need to wait for an element to become available.
For example:
Target SLOW_FIELD = Target.the("Slow field")
.locatedBy("#slow")
aster.attemptsTo(
Ensure.that(SLOW_FIELD
.waitingForNoMoreThan(Duration.ofSeconds(10)))
.value()
.isEqualTo("Marseille")
);
We can also build a delay into a Target
field, if the same delay should be applied everywhere the element is used:
Target SLOW_FIELD = Target.the("Slow field")
.locatedBy("#slow")
.waitingForNoMoreThan(Duration.ofSeconds(5))
Making assertions about the current page
There are also some Ensure
methods that allow us to make basic assertions about the page itself.
For example, you can check the page title like this:
aster.attemptsTo(
Ensure.thatTheCurrentPage().title().isEqualTo("Some Title")
);
Page-level assertions also include currentUrl()
, pageSource()
and windowHandle()
.
Working with Screenplay Questions
So far we have been using the Ensure.that*
methods with web page locators and with field values.
We can also use Ensure.that*
methods with arbitrary Screenplay questions.
This can be used to write custom Question
classes or methods that query the state of the application
without using the UI, or which do more tailored queries of the UI.
For example,
public Question<Integer> countOf(String todoItem) {
return Question.about("todo status").answeredBy(
actor -> // return some value related to a particular todo item
);
}
We could then use the Ensure.thatTheAnswerTo()
method to check the result of this question:
aster.attemptsTo(
Ensure.thatTheAnswerTo("the count",
countOf("some-todo-item"))
.isEqualTo(1)
);
We can also work with Question
classes that return collections, using the Ensure.thatTheAnswersTo()
method.
Suppose we had a Question that returned a list of Strings:
Question<Collection<String>> colors() {
return Question.about("colors").answeredBy(
actor -> // returns "red","green","blue"
);
}
We could then use the Ensure.thatTheAnswersTo()
method to make an assertion about this question:
aster.attemptsTo(
Ensure.thatTheAnswersTo(colors()).contains("red")
);
Reporting and hiding Ensure steps
Each Ensure
performable will be reported in the Serenity report as a separate step, including a short description of the expectation.
Sometimes, however, we want to use the Ensure
statement as a way to make sure the application is ready to continue the tests.
In these cases, we may prefer to leave the Ensure
statement out of the reports.
We can do this using the silently()
method:
aster.attemptsTo(
Ensure.that(ElementLocated.by("#firstName"))
.silently()
.isDisplayed()
);


Form Test
First Name:
Last Name:
Password:
What's your favourite colour?
Blue
Green
Red
What day do you attend class?
Monday:
Tuesday:
Wednesday:
Thursday:
Friday:


Class: Aws::QuickSight::Types::FilterControl
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Struct
|
|
|
Instance Chain:
self,
::Aws::Structure ,
Struct
|
|
| Inherits: |
Struct
|
| Defined in: | gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/types.rb |
Overview
The control of a filter that is used to interact with a dashboard or an analysis.
This is a union type structure. For this structure to be valid, only one of the attributes can be defined.
Constant Summary
Instance Attribute Summary
-
#date_time_picker ⇒ Types::FilterDateTimePickerControl
rw
A control from a date filter that is used to specify date and time.
-
#dropdown ⇒ Types::FilterDropDownControl
rw
A control to display a dropdown list with buttons that are used to select a single value.
-
#list ⇒ Types::FilterListControl
rw
A control to display a list of buttons or boxes.
-
#relative_date_time ⇒ Types::FilterRelativeDateTimeControl
rw
A control from a date filter that is used to specify the relative date.
-
#slider ⇒ Types::FilterSliderControl
rw
A control to display a horizontal toggle bar.
-
#text_area ⇒ Types::FilterTextAreaControl
rw
A control to display a text box that is used to enter multiple entries.
-
#text_field ⇒ Types::FilterTextFieldControl
rw
A control to display a text box that is used to enter a single entry.
Instance Method Summary
::Aws::Structure
- Included
| #to_hash | Alias for Structure#to_h. |
Instance Attribute Details
#date_time_picker ⇒ Types::FilterDateTimePickerControl (rw)
A control from a date filter that is used to specify date and time.
# File 'gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/types.rb', line 12689
class FilterControl < Struct.new( :date_time_picker, :list, :dropdown, :text_field, :text_area, :, :relative_date_time) SENSITIVE = [] include Aws::Structure end
#dropdown ⇒ Types::FilterDropDownControl (rw)
A control to display a dropdown list with buttons that are used to select a single value.
# File 'gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/types.rb', line 12689
class FilterControl < Struct.new( :date_time_picker, :list, :dropdown, :text_field, :text_area, :, :relative_date_time) SENSITIVE = [] include Aws::Structure end
#list ⇒ Types::FilterListControl (rw)
A control to display a list of buttons or boxes. This is used to select either a single value or multiple values.
# File 'gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/types.rb', line 12689
class FilterControl < Struct.new( :date_time_picker, :list, :dropdown, :text_field, :text_area, :, :relative_date_time) SENSITIVE = [] include Aws::Structure end
#relative_date_time ⇒ Types::FilterRelativeDateTimeControl (rw)
A control from a date filter that is used to specify the relative date.
# File 'gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/types.rb', line 12689
class FilterControl < Struct.new( :date_time_picker, :list, :dropdown, :text_field, :text_area, :, :relative_date_time) SENSITIVE = [] include Aws::Structure end
#slider ⇒ Types::FilterSliderControl (rw)
A control to display a horizontal toggle bar. This is used to change a value by sliding the toggle.
# File 'gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/types.rb', line 12689
class FilterControl < Struct.new( :date_time_picker, :list, :dropdown, :text_field, :text_area, :, :relative_date_time) SENSITIVE = [] include Aws::Structure end
#text_area ⇒ Types::FilterTextAreaControl (rw)
A control to display a text box that is used to enter multiple entries.
# File 'gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/types.rb', line 12689
class FilterControl < Struct.new( :date_time_picker, :list, :dropdown, :text_field, :text_area, :, :relative_date_time) SENSITIVE = [] include Aws::Structure end
#text_field ⇒ Types::FilterTextFieldControl (rw)
A control to display a text box that is used to enter a single entry.
# File 'gems/aws-sdk-quicksight/lib/aws-sdk-quicksight/types.rb', line 12689
class FilterControl < Struct.new( :date_time_picker, :list, :dropdown, :text_field, :text_area, :, :relative_date_time) SENSITIVE = [] include Aws::Structure end


IAM Policy analysis result, consisting of one IAM policy binding and derived access control lists.
Inheritance
Implements
Inherited Members
Namespace: Google.Cloud.Asset.V1
Assembly: Google.Cloud.Asset.V1.dll
Syntax
public sealed class IamPolicyAnalysisResult : IMessage<IamPolicyAnalysisResult>, IMessage, IEquatable<IamPolicyAnalysisResult>, IDeepCloneable<IamPolicyAnalysisResult>
Constructors
IamPolicyAnalysisResult()
Declaration
public IamPolicyAnalysisResult()
IamPolicyAnalysisResult(IamPolicyAnalysisResult)
Declaration
public IamPolicyAnalysisResult(IamPolicyAnalysisResult other)
Parameters
| Type | Name | Description |
|---|---|---|
| IamPolicyAnalysisResult | other |
Properties
AccessControlLists
The access control lists derived from the [iam_binding][iam_binding] that match or potentially match resource and access selectors specified in the request.
Declaration
public RepeatedField<IamPolicyAnalysisResult.Types.AccessControlList> AccessControlLists { get; }
Property Value
| Type | Description |
|---|---|
| Google.Protobuf.Collections.RepeatedField<IamPolicyAnalysisResult.Types.AccessControlList> |
AttachedResourceFullName
The full resource name of the resource to which the [iam_binding][iam_binding] policy attaches. (-- api-linter: core::0122::name-suffix=disabled aip.dev/not-precedent: full_resource_name is a public notion in GCP. --)
Declaration
public string AttachedResourceFullName { get; set; }
Property Value
| Type | Description |
|---|---|
| System.String |
FullyExplored
Represents whether all analyses on the [iam_binding][iam_binding] have successfully finished.
Declaration
public bool FullyExplored { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
IamBinding
The Cloud IAM policy binding under analysis.
Declaration
public Binding IamBinding { get; set; }
Property Value
| Type | Description |
|---|---|
| Google.Cloud.Iam.V1.Binding |
IdentityList
The identity list derived from members of the [iam_binding][iam_binding] that match or potentially match identity selector specified in the request.
Declaration
public IamPolicyAnalysisResult.Types.IdentityList IdentityList { get; set; }
Property Value
| Type | Description |
|---|---|
| IamPolicyAnalysisResult.Types.IdentityList |


--- layout: post status: publish published: true title: Back to 4008 author: Leask author_login: leask author_email<EMAIL_ADDRESS>author_url: https://leaskh.com wordpress_id: 524 wordpress_url: http://leaskh.wordpress.com/2006/06/22/back-to-4008 date: '2006-06-22 21:52:44 +0800' date_gmt: '2006-06-22 21:52:44 +0800' categories: - Life tags: [] comments: [] ---


This page creates various types of console log messages at the time of page load.
This can be used to try the new CDP (Chrome DevTools Protocol) support in Selenium 4.
Using CDP feature, now you can access the console logs using Selenium.
This page generates the console logs as shown below:


This comes from DomainDtoDetailsTopHtmlTableTemplate.html. The blue outlined cells' contents were added with automatic databinding. The red outlined cells were manually set.
| Start date | $${domainDto.startDate} | ||
|---|---|---|---|
| Name | ${domainDto.name} | ||
| Count | ${domainDto.count} | ||
Subheading |
|||
| Some Ratio | ${domainDto.someRatio} | $${x.hookForMouseOverEvent} |


Based on the license from mnmlist.
This site is exists without copyrights. Its creator has released all claims on copyright and has put all the content into the public domain.
No permission is needed to copy, distribute, or modify the content of this site. Credit is appreciated but not required.
Terms and Conditions for Copying, Distribution and Modification
- Do whatever you like.


Go Back
Landscape navigation
First
Second
Third
Fourth
Portrait navigation
First
Second
Third
Fourth


Lawyer numbers to top 96K in Illinois after oaths this week
CHICAGO (AP) - If you were worried that Illinois didn’t have enough lawyers, fear not. More are on the way.
Illinois Supreme Court justices are scheduled to administer the attorney’s oath to 1,459 people on Thursday. A statement from the high court says that’ll bring the total number of licensed attorneys in Illinois to around 96,500.
To qualify, the candidates had to pass both the Illinois State Bar Examination and an ethics exam.
Ceremonies will take place in five locations statewide. The largest groups will be at two Thursday ceremonies at the Arie Crown Theater in Chicago, where 1,172 candidates will take the oath.
There will also be admission ceremonies Thursday in Peoria, Springfield, Elgin and Carbondale.
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


Résumé
— I am a full stack student studying at KPI at the Faculty of Applied Mathematics, majoring in software engineering
Skills
Life Experience
Now
-
1st September 2020 - present
Student at Kyiv Polytechnic Institute
- Software testing (creating requirements, checking the product for requirements, writing basic tests using selenium)
- Object-oriented programming (study of the basics of OOP and patterns of programming in C#)
- Basics of programming (learning C and C ++ programming, creating a desktop application using Qt)
- Study mathematical analysis and probability theory
- Do not like philosophy and psychology 😁
Back then
-
1st September 2013 - 30th June 2020
Schoolchild at Khotyn Gymnasium
- Study mathematics and physics
- Bored of history
-
18th March 2002
Born in Khotyn, Ukraine
Languages
Character
CALM QUIET CHEERFUL FRIENDLY STUBBORN PERSISTENT
Likes😄
PLAY CHESS CODES EAT COOKIES MARVEL
Dislikes👎
LIVER AND UNFRIENDLY PEOPLE
Wants
FIND A JOB MORE CODING BUY CAR
Education🧐
-
December 2020
-
February 2020
-
February 2018


new Tileset(name, firstgid, width, height, margin, spacing, properties) A Tile set is a combination of an image containing the tiles and collision data per tile. Tilesets are normally created automatically when Tiled data is loaded. Parameters: Name Type Argument Default Description name string The name of the tileset in the map data. firstgid integer The first tile index this tileset contains. width integer <optional> 32 Width of each tile (in pixels). height integer <optional> 32 Height of each tile (in pixels). margin integer <optional> 0 The margin around all tiles in the sheet (in pixels). spacing integer <optional> 0 The spacing between each tile in the sheet (in pixels). properties object <optional> {} Custom Tileset properties. Source - tilemap/Tileset.js, line 22 Members <readonly> columns :integer The number of tile columns in the tileset. Source - tilemap/Tileset.js, line 101 firstgid :integer The Tiled firstgid value. This is the starting index of the first tile index this Tileset contains. Source - tilemap/Tileset.js, line 40 <readonly> image :object The cached image that contains the individual tiles. Use setImage to set. Source - tilemap/Tileset.js, line 85 name :string The name of the Tileset. Source - tilemap/Tileset.js, line 33 properties :object Tileset-specific properties that are typically defined in the Tiled editor. Source - tilemap/Tileset.js, line 77 <readonly> rows The number of tile rows in the the tileset. Properties: Type Description integer Source - tilemap/Tileset.js, line 93 <readonly> tileHeight :integer The height of each tile (in pixels). Source - tilemap/Tileset.js, line 54 <readonly> tileMargin The margin around the tiles in the sheet (in pixels). Use setSpacing to change. Properties: Name Type Description tileMarge integer Source - tilemap/Tileset.js, line 63 <readonly> tileSpacing :integer The spacing between each tile in the sheet (in pixels). Use setSpacing to change. Source - tilemap/Tileset.js, line 71 <readonly> tileWidth :integer The width of each tile (in pixels). Source - tilemap/Tileset.js, line 47 <readonly> total :integer The total number of tiles in the tileset. Source - tilemap/Tileset.js, line 109 Methods containsTileIndex() ? {boolean} Returns true if and only if this tileset contains the given tile index. Returns: boolean - True if this tileset contains the given index. Source - tilemap/Tileset.js, line 155 draw(context, x, y, index) Draws a tile from this Tileset at the given coordinates on the context. Parameters: Name Type Description context CanvasRenderingContext2D The context to draw the tile onto. x number The x coordinate to draw to. y number The y coordinate to draw to. index integer The index of the tile within the set to draw. Source - tilemap/Tileset.js, line 123 setImage(image) Set the image associated with this Tileset and update the tile data. Parameters: Name Type Description image Image The image that contains the tiles. Source - tilemap/Tileset.js, line 171 setSpacing(margin, spacing) Sets tile spacing and margins. Parameters: Name Type Argument Default Description margin integer <optional> 0 The margin around the tiles in the sheet (in pixels). spacing integer <optional> 0 The spacing between the tiles in the sheet (in pixels). Source - tilemap/Tileset.js, line 185


@import models.User; @(message: String, user: User) @main("Admin | Login") {
@message
New to site? Create Account
©2015 All Rights Reserved. Gentelella Alela! is a Bootstrap 3 template. Privacy and Terms
Already a member ? Log in


<subprojects>
[optional] informs the IDE of other projects which should be
considered "required projects" for purposes of the Open Required Projects
context menu item, the checkbox in the Open Project dialog, etc.
<subprojects> <project>subdir-with-project</project> <project>${other.project.dir}</project> </subprojects>
See also subproject
view style.


"The Flexible Box Module, usually referred to as flexbox, was designed as a one-dimensional layout model, and as a method that could offer space distribution between items in an interface and powerful alignment capabilities."
"When we describe flexbox as being one dimensional we are describing the fact that flexbox deals with layout in one dimension at a time — either as a row or as a column."
Basic Concepts of Flexbox
https://developer.mozilla.org
| SQUARES 014 |
| somewhat squishy squares |
| You can re-size the browser window to see flexbox in action, but through this exercise I realized that this might not be the best CSS tool for this series. |


winsend - send implementation for windows platform
TABLE OF CONTENTS
SYNOPSIS
DESCRIPTION
COMMANDS
EXAMPLES
DOWNLOAD and INSTALLATION
AUTHORS
SEE ALSO
KEYWORDS
COPYRIGHT
package require Tcl 8.3
package require winsend ?1.0?
|
The winsend package is an attempt to provide the complete functionality of the Tk send command using the Microsoft Windows platform. The two key points are inter-process communications between one interpreter and another, and automatic registration of interpreters with a central source. With the Tk send command this is done via the X Windows server. The winfo interps command returns a list of registered interpreters and the send command allows you to execute Tcl commands in the named interpreter. Finally tk appname allows the programmer to select the registration name.
There are alternative methods for providing remote command xecution on the windows platform. The comm package that is now part of tcllib provides cross-platform remote command execution by the use of TCP sockets. The disadvantage of this package is the lack of interpreter registration. Potential clients need to be told of the port number to use to communicate with the server application.
The other method is the dde package which is supplied as part of the Tcl core. This provides automatic registration and the available interpreters can be listed by excuting dde servers TclEval {}. The disadvantage if the DDE system is that a badly written windows application can hang your application. DDE uses windows messages to do its work. If an application isn't processing it's message queue then the dde command given above will never complete.
An alternative is available using Microsoft's COM technology. COM is designed to permit interprocess communication through the use of interfaces. There is also a system provided registration object where a reference to a running interpreter can be lodged. Querying the list of available servers only communicates with the Running Object Table (the ROT) and doesn't need to send messages to any applications. Sending commands does require the server interpreter to be processing events - but if the server is not processing these events then the command will time out. This is a significant advantage over DDE. Also, because we are using standard OLE automation interfaces it becomes possible for any other Automation capable application to send commands to Tcl for execution. Such applications include Microsoft Office applications, Internet Explorer and many others. For instance the following VB script can be run using the Windows Scripting Host cscript application using cscript test.vbs
Set interp = GetObject("TclEval\tkcon.tcl") interp.Send "puts {Hello from VB Script}" WScript.Echo interp.Send("info tcl") |
% package require winsend 1.0 % winsend appname MyApp MyApp % winsend send MyApp info tcl 8.3 |
An example session between two interpreters
An example (from tkcon): from a concurrent tclsh: % package require winsend | % package require winsend 1.0 | 1.0 % winsend interps | % winsend interps tkcon.tcl | tkcon.tcl TCLSH.EXE | % winsend send tkcon.tcl set x 1 | 1 % set x | 1 | % winsend send TCLSH.EXE set y 2 | % after 2000 {set zx 1} ; vwait zx 2 | % set y | 2 | % exit % winsend interps | tkcon.tcl | |
The latest version is available at http://prdownloads.sourceforge.net/tclsoap/winsend-1.0.zip This includes the source and the DLLs. To install, copy the DLLs and the "pkgIndex.tcl" file to a subdirectory of your auto_path variable. For instance, to "c:/Program Files/Tcl/lib/winsend10/"
Documentation is located at http://tclsoap.sourceforge.net/winsend.html
Pat Thoyts
send(n), tk(n), winfo(n)
Automation, COM, appname, send, tk, winfo
Copyright © 2002 Pat Thoyts <patthoyts@users.sourceforge.net>


Beginning on August 28, 1967, the Milwaukee NAACP Youth Council/Commandos, Father James Groppi, Alderperson Vel Phillips, and a host of activists and community members marched for over 200 consecutive nights to demand an end to housing segregation.
In many ways, the marches signify the pinnacle of the Black Freedom Movement and activism in the city. In fact, this series of marches are remembered as Milwaukee’s contribution to the story of Civil Rights in America and even helped inspire federal legislation on fair housing.
For a deeper exploration of this history, check out our resources section.
Inspiration for the 50th Anniversary Commemoration
Our 50th anniversary commemoration recognizes the courage, perseverance, and ingenuity of those who marched for racial justice in Milwaukee, taking inspiration from their grassroots efforts to reignite a spirit of collectivity and change-making.
Three Ways to Get Involved
{% include themes/bootstrap-3/cta.html %}Get a Civil Rights History Refresher
Extensive Timeline detailing Milwaukee’s contribution to the Civil Rights Movement
For the 40th anniversary, the efforts of the March On Milwaukee committee resulted in the creation of a web-based archive housed by the UW-Milwaukee library. It contains many resources to explore, including a detailed timeline of events, as well as a map of Milwaukee with key locations and routes. It also contains an extensive bibliography with suggestions for many more books, articles, and other resources.


An RMI server program needs to create the initial remote objects and export them to the RMI runtime, which makes them available to receive incoming remote invocations. This setup procedure can be either encapsulated in a method of the remote object implementation class itself or included in another class entirely. The setup procedure should do the following:
The complete implementation of the compute engine follows. The
class implements the remote interface
engine.ComputeEngine
Compute
and also includes the main
method for
setting up the compute engine.
Here is the source code for the ComputeEngine
class:
package engine; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import java.rmi.server.UnicastRemoteObject; import compute.Compute; import compute.Task; public class ComputeEngine implements Compute { public ComputeEngine() { super(); } public <T> T executeTask(Task<T> t) { return t.execute(); } public static void main(String[] args) { if (System.getSecurityManager() == null) { System.setSecurityManager(new SecurityManager()); } try { String name = "Compute"; Compute engine = new ComputeEngine(); Compute stub = (Compute) UnicastRemoteObject.exportObject(engine, 0); Registry registry = LocateRegistry.getRegistry(); registry.rebind(name, stub); System.out.println("ComputeEngine bound"); } catch (Exception e) { System.err.println("ComputeEngine exception:"); e.printStackTrace(); } } }
The following sections discuss each component of the compute engine implementation.
public class ComputeEngine implements Compute
This declaration states that the class implements the Compute
remote interface and therefore can be used for a remote object.
The ComputeEngine
class defines a remote object
implementation class that implements a single remote interface and no
other interfaces. The ComputeEngine
class also contains
two executable program elements that can only be invoked locally. The
first of these elements is a constructor for
ComputeEngine
instances. The second of these elements is
a main
method that is used to create a
ComputeEngine
instance and make it available to clients.
The ComputeEngine
class has a single constructor that
takes no arguments. The code for the constructor is as follows:
public ComputeEngine() { super(); }
Object
class.
Although the superclass constructor gets invoked even if omitted from
the ComputeEngine
constructor, it is included for clarity.
The class for a remote object provides implementations for each
remote method specified in the remote interfaces. The
Compute
interface contains a single remote method,
executeTask
, which is implemented as follows:
public <T> T executeTask(Task<T> t) { return t.execute(); }
This method implements the protocol between the
ComputeEngine
remote object and its clients. Each client
provides the ComputeEngine
with a Task
object that has a particular implementation of the Task
interface's execute
method. The
ComputeEngine
executes each client's task and returns the
result of the task's execute
method directly to the
client.
Arguments to or return values from remote methods can be of almost any
type, including local objects, remote objects, and primitive data types.
More precisely, any entity of any type can be passed to or from a
remote method as long as the entity is an instance of a type that is a
primitive data type, a remote object, or a serializable
object, which means that it implements the interface
java.io.Serializable.
Some object types do not meet any of these criteria and thus cannot be
passed to or returned from a remote method. Most of these objects, such
as threads or file descriptors, encapsulate information that makes sense only
within a single address space. Many of the core classes, including
the classes in the packages java.lang
and
java.util
, implement the Serializable
interface.
The rules governing how arguments and return values are passed are as follows:
static
or transient
. Default
serialization behavior can be overridden on a class-by-class
basis.
Passing a remote object by reference means that any changes made to the state of the object by remote method invocations are reflected in the original remote object. When a remote object is passed, only those interfaces that are remote interfaces are available to the receiver. Any methods defined in the implementation class or defined in non-remote interfaces implemented by the class are not available to that receiver.
For example, if you were to pass a reference to an instance of the
ComputeEngine
class, the receiver would have access only
to the compute engine's executeTask
method. That receiver
would not see the ComputeEngine
constructor, its
main
method, or its implementation of any methods
of java.lang.Object
.
In the parameters and return values of remote method invocations, objects that are not remote objects are passed by value. Thus, a copy of the object is created in the receiving Java virtual machine. Any changes to the object's state by the receiver are reflected only in the receiver's copy, not in the sender's original instance. Any changes to the object's state by the sender are reflected only in the sender's original instance, not in the receiver's copy.
main
Method
The most complex method of the ComputeEngine
implementation is the main
method. The main
method is used to start the ComputeEngine
and therefore
needs to do the necessary initialization and housekeeping to prepare
the server to accept calls from clients. This method is not a
remote method, which means that it cannot be invoked from a different
Java virtual machine. Because the main
method is declared
static
, the method is not associated with an object at all
but rather with the class ComputeEngine
.
The main
method's first task is to create and
install a security manager, which protects access to system
resources from untrusted downloaded code running within the Java virtual
machine. A security manager determines whether downloaded code has
access to the local file system or can perform any other privileged
operations.
If an RMI program does not install a security manager, RMI will not download classes (other than from the local class path) for objects received as arguments or return values of remote method invocations. This restriction ensures that the operations performed by downloaded code are subject to a security policy.
Here's the code that creates and installs a security manager:
if (System.getSecurityManager() == null) { System.setSecurityManager(new SecurityManager()); }
Next, the main
method creates an instance of
ComputeEngine
and exports it to the RMI runtime with the
following statements:
Compute engine = new ComputeEngine(); Compute stub = (Compute) UnicastRemoteObject.exportObject(engine, 0);
The static UnicastRemoteObject.exportObject
method
exports the supplied remote object so that it can receive invocations
of its remote methods from remote clients. The second argument, an
int
, specifies which TCP port to use to listen for
incoming remote invocation requests for the object. It is common to
use the value zero, which specifies the use of an anonymous port. The
actual port will then be chosen at runtime by RMI or the underlying
operating system. However, a non-zero value can also be used to specify a
specific port to use for listening. Once the exportObject
invocation has returned successfully, the ComputeEngine
remote object is ready to process incoming remote invocations.
The exportObject
method returns a stub for the exported
remote object. Note that the type of the variable stub
must be Compute
, not ComputeEngine
, because
the stub for a remote object only implements the remote interfaces
that the exported remote object implements.
The exportObject
method declares that it can throw a
RemoteException
, which is a checked exception type.
The main
method handles this
exception with its try
/catch
block. If the
exception were not handled in this way, RemoteException
would have to be declared in the throws
clause of the
main
method. An attempt to export a remote object can
throw a RemoteException
if the necessary communication
resources are not available, such as if the requested port is bound
for some other purpose.
Before a client can invoke a method on a remote object, it must first obtain a reference to the remote object. Obtaining a reference can be done in the same way that any other object reference is obtained in a program, such as by getting the reference as part of the return value of a method or as part of a data structure that contains such a reference.
The system provides a particular type of remote object, the RMI registry, for finding references to other remote objects. The RMI registry is a simple remote object naming service that enables clients to obtain a reference to a remote object by name. The registry is typically only used to locate the first remote object that an RMI client needs to use. That first remote object might then provide support for finding other objects.
The java.rmi.registry.Registry
remote interface is the API
for binding (or registering) and looking up remote objects in the
registry. The java.rmi.registry.LocateRegistry
class provides
static methods for synthesizing a remote reference to a registry at a
particular network address (host and port). These methods create
the remote reference object containing the specified network address
without performing any remote communication.
LocateRegistry
also provides static methods for creating
a new registry in the current Java virtual machine, although this example
does not use those methods.
Once a remote object is registered with an RMI registry on
the local host, clients on any host can look up the remote object by
name, obtain its reference, and then invoke remote methods on the
object. The registry can be shared by all servers running on a host, or
an individual server process can create and use its own registry.
The ComputeEngine
class creates a name for the object with
the following statement:
String name = "Compute";
The code then adds the name to the RMI registry running on the server. This step is done later with the following statements:
Registry registry = LocateRegistry.getRegistry(); registry.rebind(name, stub);
This rebind
invocation makes a remote call to the RMI
registry on the local host. Like any remote call, this call can result in a
RemoteException
being thrown, which is handled by
the catch
block at the end of the main
method.
Note the following about the Registry.rebind
invocation:
LocateRegistry.getRegistry
synthesizes a reference to a registry on the local host and on the
default registry port, 1099. You must use an overload that has an
int
parameter if the registry is created on a port other
than 1099.
ComputeEngine
, never leave the Java virtual machine in which they were
created. Thus, when a client performs a lookup in a server's remote
object registry, a copy of the stub is returned.
Remote objects in such cases are thus effectively passed by
(remote) reference rather than by value.
bind
, unbind
, or rebind
remote
object references with a registry running on the same host. This
restriction prevents a remote client from removing or overwriting
any of the entries in a server's registry. A lookup
,
however, can be requested from any host, local or remote.
Once the server has registered with the local RMI registry, it prints
a message indicating that it is ready to start handling calls.
Then, the main
method completes. It is not necessary to have a
thread wait to keep the server alive. As long as there is a reference
to the ComputeEngine
object in another Java virtual machine,
local or remote, the ComputeEngine
object will not be shut
down or garbage collected. Because the program binds a reference to
the ComputeEngine
in the registry, it is reachable from a
remote client, the registry itself. The RMI system
keeps the ComputeEngine
's process running. The
ComputeEngine
is available to accept calls and won't be
reclaimed until its binding is removed from the registry
and no remote clients hold a remote reference to
the ComputeEngine
object.
The final piece of code in the ComputeEngine.main
method
handles any exception that might arise. The only checked
exception type that could be thrown in the code is
RemoteException
, either by the
UnicastRemoteObject.exportObject
invocation or by the
registry rebind
invocation. In either case, the program
cannot do much more than exit after printing an error message. In some
distributed applications, recovering from the failure to
make a remote invocation is possible. For example, the application could attempt
to retry the operation or choose another server to continue the operation.


Use the colour buttons to make the colour shown on the jar's sticker.
Each button fills the jar with 50% colour.
Hint: You can play with a keyboard! A = Red. S = Blue. D = Yellow


| Find pages with... |
|
To do this in the search box |
| all these words: |
|
Type the important words:
tricolor rat terrier
|
| this exact word or phrase: |
|
Put exact words in quotes:
"rat terrier"
|
| any of these words: |
|
Type OR between all the words you want:
miniature OR standard
|
| none of these words: |
|
Put a minus sign just before words you don't want:
-rodent, -"Jack Russell"
|


Piers Morgan names his top three choices for next Arsenal manager
Mauricio Pochettino, Carlo Ancelotti and Massimiliano Allegri should be Arsenal's top three candidates, says Piers Morgan
by Social SpyPiers Morgan says that he wants Mauricio Pochettino, Carlo Ancelotti or Massimiliano Allegri to succeed Unai Emery at Arsenal.
The north London side confirmed the sacking of Emery on Friday morning in the wake of their 2-1 defeat by Eintracht Frankfurt in the Europa League on Thursday.
The Gunners have been struggling to find any consistent form in recent weeks and they suffered a disappointing loss in front of their home fans as boos rang out around the ground at the final whistle in what turned out to be Emery’s final game in charge.
After Pierre-Emerick Aubameyang had give the home side the lead on the stroke of half-time, Daichi Kamada netted twice in nine second-half minutes for the visitors to fire them to victory.
Freddie Ljungberg will take temporary charge of first-team affairs at The Emirates as Arsenal begin their search for a long-term successor for Emery.
Former Daily Mirror editor and celebrity Arsenal fan Morgan, who had been vocal in his criticism of Emery in recent weeks, took to social media on Friday morning to offer his thoughts on who should be appointed next at The Emirates.
Asked by one user who he wants to take over, Morgan tweeted: “Pochettino, Ancelotti or Allegri.”
Whether Pochettino would be willing to take over at Arsenal having only just been sacked by their fierce local rivals Tottenham Hotspur remains to be seen.
Arsenal do not have long to dust themselves down as they prepare for their Premier League trip to Norwich City on Sunday afternoon.
The Gunners will then take on Brighton at home on Thursday next week in the top flight.
Arsenal are currently on their longest winless run in all competitions since February 1992, with the Gunners having failed to win in their last six outings.


| Package | Description |
|---|---|
| edu.uiuc.ncsa.qdl.config |
All things relating to the QDL configuration file.
|
| edu.uiuc.ncsa.qdl.state |
Classes that manage the state of an interpreter session.
|
| edu.uiuc.ncsa.qdl.util |
Utilities for QDL.
|
| edu.uiuc.ncsa.qdl.workspace |
The workspace and the commands that drive it.
|
| edu.uiuc.ncsa.security.core.cache | |
| edu.uiuc.ncsa.security.core.configuration.provider | |
| edu.uiuc.ncsa.security.core.util | |
| edu.uiuc.ncsa.security.storage.sql |
Classes that setup a specific type of correspondence between java objects and rows of an SQL table.
|
| edu.uiuc.ncsa.security.storage.sql.mariadb | |
| edu.uiuc.ncsa.security.storage.sql.mysql | |
| edu.uiuc.ncsa.security.util.cli | |
| edu.uiuc.ncsa.security.util.configuration |
Configuration
|
| edu.uiuc.ncsa.security.util.json | |
| edu.uiuc.ncsa.security.util.mail | |
| edu.uiuc.ncsa.security.util.pkcs | |
| edu.uiuc.ncsa.security.util.ssl | |
| edu.uiuc.ncsa.security.util.terminal | |
| edu.uiuc.ncsa.security.util.testing |
| Class and Description |
|---|
| AbstractEnvironment
Basic environment.
|
| ConfigurationLoader
For loading a configuration into an environment.
|
| LoggingConfigLoader
Created by Jeff Gaynor
on 6/18/12 at 2:13 PM |
| MyLoggingFacade
A simple front for logging.
|
| Class and Description |
|---|
| MetaDebugUtil
Created by Jeff Gaynor
on 10/23/20 at 2:54 PM |
| MyLoggingFacade
A simple front for logging.
|
| Class and Description |
|---|
| FileUtil
Created by Jeff Gaynor
on 1/26/21 at 7:10 AM |
| Class and Description |
|---|
| MyLoggingFacade
A simple front for logging.
|
| Class and Description |
|---|
| MyLoggingFacade
A simple front for logging.
|
| Class and Description |
|---|
| MyLoggingFacade
A simple front for logging.
|
| Class and Description |
|---|
| AbstractEnvironment
Basic environment.
|
| ConfigurationLoader
For loading a configuration into an environment.
|
| DebugConstants
Created by Jeff Gaynor
on 10/23/20 at 3:41 PM |
| IdentifiableImpl
Simple implementation of the
Identifiable interface. |
| IdentifierProvider
Creates Identifiers for use by
Identifiable objects. |
| LoggingConfigurationTags
Tags that are used in the logging XML element in a configuration file.
|
| MetaDebugUtil
Created by Jeff Gaynor
on 10/23/20 at 2:54 PM |
| MyLoggingFacade
A simple front for logging.
|
| PoolException
Exception thrown by the
Pool class under certain conditions. |
| QueueWithSpare
A Queue with a "spare tire".
|
| Class and Description |
|---|
| Pool
A pool of items, that is to say, a managed list that keeps valid items
on it and can create or destroy them as needed.
|
| PoolException
Exception thrown by the
Pool class under certain conditions. |
| Class and Description |
|---|
| Pool
A pool of items, that is to say, a managed list that keeps valid items
on it and can create or destroy them as needed.
|
| Class and Description |
|---|
| Pool
A pool of items, that is to say, a managed list that keeps valid items
on it and can create or destroy them as needed.
|
| Class and Description |
|---|
| AbstractEnvironment
Basic environment.
|
| ConfigurationLoader
For loading a configuration into an environment.
|
| MyLoggingFacade
A simple front for logging.
|
| Class and Description |
|---|
| MyLoggingFacade
A simple front for logging.
|
| Class and Description |
|---|
| IdentifiableImpl
Simple implementation of the
Identifiable interface. |
| Class and Description |
|---|
| AbstractEnvironment
Basic environment.
|
| MyLoggingFacade
A simple front for logging.
|
| Class and Description |
|---|
| QueuePopulationThread
A thread for populating a
QueueWithSpare . |
| QueueWithSpare
A Queue with a "spare tire".
|
| Class and Description |
|---|
| MyLoggingFacade
A simple front for logging.
|
| Class and Description |
|---|
| MyLoggingFacade
A simple front for logging.
|
| Class and Description |
|---|
| AbstractEnvironment
Basic environment.
|
| ConfigurationLoader
For loading a configuration into an environment.
|
| LoggingConfigLoader
Created by Jeff Gaynor
on 6/18/12 at 2:13 PM |
| MyLoggingFacade
A simple front for logging.
|
Copyright © 2022. All rights reserved.


{{ greeting }}
lender address:
submit
lend details:
{{ lend }}
symbol:
start time:
end time:
submit
pool details:
{{ pool }}
symbol:
submit
borrow details:
{{ borrow }}


public class Polyline2D
extends java.lang.Object
implements java.awt.Shape, java.lang.Cloneable, java.io.Serializable
Polygon2D
, except that
the figure is not closed.| Modifier and Type | Field and Description |
|---|---|
protected java.awt.geom.Rectangle2D |
bounds
Bounds of the Polyline2D.
|
int |
npoints
The total number of points.
|
float[] |
xpoints
The array of x coordinates.
|
float[] |
ypoints
The array of x coordinates.
|
| Constructor and Description |
|---|
Polyline2D()
Creates an empty Polyline2D.
|
Polyline2D(float[] xpoints,
float[] ypoints,
int npoints)
Constructs and initializes a
Polyline2D from the specified
parameters. |
Polyline2D(int[] xpoints,
int[] ypoints,
int npoints)
Constructs and initializes a
Polyline2D from the specified
parameters. |
Polyline2D(java.awt.geom.Line2D line) |
| Modifier and Type | Method and Description |
|---|---|
void |
addPoint(float x,
float y)
Appends the specified coordinates to this
Polyline2D . |
void |
addPoint(java.awt.geom.Point2D p) |
java.lang.Object |
clone() |
boolean |
contains(double x,
double y)
Determines if the specified coordinates are inside this
Polyline2D . |
boolean |
contains(double x,
double y,
double w,
double h)
Tests if the interior of this
Polyline2D entirely
contains the specified set of rectangular coordinates. |
boolean |
contains(int x,
int y)
Determines whether the specified coordinates are inside this
Polyline2D . |
boolean |
contains(java.awt.Point p)
Determines whether the specified
Point is inside this
Polyline2D . |
boolean |
contains(java.awt.geom.Point2D p)
Tests if a specified
Point2D is inside the boundary of this
Polyline2D . |
boolean |
contains(java.awt.geom.Rectangle2D r)
Tests if the interior of this
Polyline2D entirely
contains the specified Rectangle2D . |
java.awt.Rectangle |
getBounds()
Gets the bounding box of this
Polyline2D . |
java.awt.geom.Rectangle2D |
getBounds2D()
Returns the high precision bounding box of the
Shape . |
java.awt.geom.PathIterator |
getPathIterator(java.awt.geom.AffineTransform at)
Returns an iterator object that iterates along the boundary of this
Polygon and provides access to the geometry
of the outline of this Polygon . |
java.awt.geom.PathIterator |
getPathIterator(java.awt.geom.AffineTransform at,
double flatness)
Returns an iterator object that iterates along the boundary of
the
Shape and provides access to the geometry of the
outline of the Shape . |
Polygon2D |
getPolygon2D() |
boolean |
intersects(double x,
double y,
double w,
double h)
Tests if the interior of this
Polygon intersects the
interior of a specified set of rectangular coordinates. |
boolean |
intersects(java.awt.geom.Rectangle2D r)
Tests if the interior of this
Polygon intersects the
interior of a specified Rectangle2D . |
void |
reset()
Resets this
Polyline2D object to an empty polygon. |
public int npoints
npoints
represents the number of points in this Polyline2D
.public float[] xpoints
npoints
is equal to the
number of points in this Polyline2D
.public float[] ypoints
npoints
is equal to the
number of points in this Polyline2D
.protected java.awt.geom.Rectangle2D bounds
getBounds()
public Polyline2D()
public Polyline2D(float[] xpoints, float[] ypoints, int npoints)
Polyline2D
from the specified
parameters.xpoints
- an array of x coordinatesypoints
- an array of y coordinatesnpoints
- the total number of points in the
Polyline2D
java.lang.NegativeArraySizeException
- if the value of
npoints
is negative.java.lang.IndexOutOfBoundsException
- if npoints
is
greater than the length of xpoints
or the length of ypoints
.java.lang.NullPointerException
- if xpoints
or
ypoints
is null
.public Polyline2D(int[] xpoints, int[] ypoints, int npoints)
Polyline2D
from the specified
parameters.xpoints
- an array of x coordinatesypoints
- an array of y coordinatesnpoints
- the total number of points in the Polyline2D
java.lang.NegativeArraySizeException
- if the value of
npoints
is negative.java.lang.IndexOutOfBoundsException
- if npoints
is
greater than the length of xpoints
or the length of ypoints
.java.lang.NullPointerException
- if xpoints
or
ypoints
is null
.public Polyline2D(java.awt.geom.Line2D line)
public void reset()
Polyline2D
object to an empty polygon.
The coordinate arrays and the data in them are left untouched
but the number of points is reset to zero to mark the old
vertex data as invalid and to start accumulating new vertex
data at the beginning.
All internally-cached data relating to the old vertices
are discarded.
Note that since the coordinate arrays from before the reset
are reused, creating a new empty Polyline2D
might
be more memory efficient than resetting the current one if
the number of vertices in the new polyline data is significantly
smaller than the number of vertices in the data from before the
reset.public java.lang.Object clone()
clone
in class java.lang.Object
public void addPoint(java.awt.geom.Point2D p)
public void addPoint(float x, float y)
Polyline2D
.
If an operation that calculates the bounding box of this
Polyline2D
has already been performed, such as
getBounds
or contains
, then this
method updates the bounding box.
x
- the specified x coordinatey
- the specified y coordinatePolygon.getBounds()
,
Polygon.contains(double,double)
public java.awt.Rectangle getBounds()
Polyline2D
.
The bounding box is the smallest Rectangle
whose
sides are parallel to the x and y axes of the
coordinate space, and can completely contain the Polyline2D
.getBounds
in interface java.awt.Shape
Rectangle
that defines the bounds of this
Polyline2D
.public boolean contains(java.awt.Point p)
Point
is inside this
Polyline2D
.
This method is required to implement the Shape interface,
but in the case of Line2D objects it always returns false since a line contains no area.public boolean contains(double x, double y)
Polyline2D
.
This method is required to implement the Shape interface,
but in the case of Line2D objects it always returns false since a line contains no area.contains
in interface java.awt.Shape
public boolean contains(int x, int y)
Polyline2D
.
This method is required to implement the Shape interface,
but in the case of Line2D objects it always returns false since a line contains no area.public java.awt.geom.Rectangle2D getBounds2D()
Shape
.getBounds2D
in interface java.awt.Shape
Rectangle2D
that precisely
bounds the Shape
.public boolean contains(java.awt.geom.Point2D p)
Point2D
is inside the boundary of this
Polyline2D
.
This method is required to implement the Shape interface,
but in the case of Line2D objects it always returns false since a line contains no area.contains
in interface java.awt.Shape
public boolean intersects(double x, double y, double w, double h)
Polygon
intersects the
interior of a specified set of rectangular coordinates.intersects
in interface java.awt.Shape
x
- the x coordinate of the specified rectangular
shape's top-left cornery
- the y coordinate of the specified rectangular
shape's top-left cornerw
- the width of the specified rectangular shapeh
- the height of the specified rectangular shapetrue
if the interior of this
Polygon
and the interior of the
specified set of rectangular
coordinates intersect each other;
false
otherwise.public boolean intersects(java.awt.geom.Rectangle2D r)
Polygon
intersects the
interior of a specified Rectangle2D
.intersects
in interface java.awt.Shape
r
- a specified Rectangle2D
true
if this Polygon
and the
interior of the specified Rectangle2D
intersect each other; false
otherwise.public boolean contains(double x, double y, double w, double h)
Polyline2D
entirely
contains the specified set of rectangular coordinates.
This method is required to implement the Shape interface,
but in the case of Line2D objects it always returns false since a line contains no area.contains
in interface java.awt.Shape
public boolean contains(java.awt.geom.Rectangle2D r)
Polyline2D
entirely
contains the specified Rectangle2D
.
This method is required to implement the Shape interface,
but in the case of Line2D objects it always returns false since a line contains no area.contains
in interface java.awt.Shape
public java.awt.geom.PathIterator getPathIterator(java.awt.geom.AffineTransform at)
Polygon
and provides access to the geometry
of the outline of this Polygon
. An optional
AffineTransform
can be specified so that the coordinates
returned in the iteration are transformed accordingly.getPathIterator
in interface java.awt.Shape
at
- an optional AffineTransform
to be applied to the
coordinates as they are returned in the iteration, or
null
if untransformed coordinates are desiredPathIterator
object that provides access to the
geometry of this Polygon
.public Polygon2D getPolygon2D()
public java.awt.geom.PathIterator getPathIterator(java.awt.geom.AffineTransform at, double flatness)
Shape
and provides access to the geometry of the
outline of the Shape
. Only SEG_MOVETO and SEG_LINETO, point types
are returned by the iterator.
Since polylines are already flat, the flatness
parameter
is ignored.getPathIterator
in interface java.awt.Shape
at
- an optional AffineTransform
to be applied to the
coordinates as they are returned in the iteration, or
null
if untransformed coordinates are desiredflatness
- the maximum amount that the control points
for a given curve can vary from colinear before a subdivided
curve is replaced by a straight line connecting the
endpoints. Since polygons are already flat the
flatness
parameter is ignored.PathIterator
object that provides access to the
Shape
object's geometry.Copyright © 2022 Apache Software Foundation. All Rights Reserved.


Home
Line-Up
Areas
Gallery
(current)
Contact
History
Buy Ticket
CHECKOUT
First name
Last name
Email
Phone
Address line 1
Address line 2
Town or City
County
Choose...
Bedfordshire
Berkshire
Bristol
Buckinghamshire
Cambridgeshire
Cheshire
City of London
Cornwall
Cumbria
Derbyshire
Devon
Dorset
Durham
East Riding of Yorkshire
East Sussex
Essex
Gloucestershire
Greater London
Greater Manchester
Hampshire
Herefordshire
Hertfordshire
Isle of Wight
Kent
Lancashire
Leicestershire
Lincolnshire
Merseyside
Norfolk
North Yorkshire
Northamptonshire
Northumberland
Nottinghamshire
Oxfordshire
Rutland
Shropshire
Somerset
South Yorkshire
Staffordshire
Suffolk
Surrey
Tyne and Wear
Warwickshire
West Midlands
West Sussex
West Yorkshire
Wiltshire
Worcestershire
Anglesey
Brecknockshire
Caernarfonshire
Carmarthenshire
Cardiganshire
Denbighshire
Flintshire
Glamorgan
Merioneth
Monmouthshire
Montgomeryshire
Pembrokeshire
Radnorshire
Aberdeenshire
Angus
Argyllshire
Ayrshire
Banffshire
Berwickshire
Buteshire
Cromartyshire
Caithness
Clackmannanshire
Dumfriesshire
Dunbartonshire
East Lothian
Fife
Inverness-shire
Kincardineshire
Kinross
Kirkcudbrightshire
Lanarkshire
Midlothian
Morayshire
Nairnshire
Orkney
Peeblesshire
Perthshire
Renfrewshire
Ross-shire
Roxburghshire
Selkirkshire
Shetland
Stirlingshire
Sutherland
West Lothian
Wigtownshire
Antrim
Armagh
Down
Fermanagh
Londonderry
Tyrone
Postal Code


Poland seizes two for plotting Breivik-style attacks on Muslims
WARSAW (Reuters) - Polish agents arrested two people accused of planning attacks against Muslims inspired by Norwegian mass killer Anders Behring Breivik and suspected white supremacist Brenton Tarrant in New Zealand, the security service said on Wednesday.
The arrests follow a spate of attacks involving white supremacists targeting ethnic and religious minorities across the globe. Far-right groups have grown in strength in Poland, the largest of the European Union’s post-communist states.
The two suspects were taken into custody on Sunday in the capital Warsaw and the northern city of Szczecin.
“The arrests are the result of information collected earlier by the Internal Security Agency (ABW) about an extremist group whose aim was to intimidate Muslims living in Poland,” the statement said.
“The materials gathered during the investigation show the group modeled itself on terrorist attacks carried out by extremists including Anders Breivik (in 2011 in Norway) and Brenton Tarrant (in 2019 in New Zealand).”
The group intended to carry out attacks using firearms and explosives, the statement said, and during one search of a house in the Warsaw suburb of Wlochy, ABW agents found materials for making large quantities of explosives, guns and ammunition.
Breivik, an anti-Muslim neo-Nazi, massacred 77 people in Norway’s worst peacetime atrocity in July 2011.
Tarrant has been charged with an attack broadcast live on Facebook in 2019 on two mosques in Christchurch, New Zealand, that killed 51 people and wounded dozens.


Talented hard-working young man whose desire is to become professional full stack web-developer through tons of hours on self-teaching and searching for brand new technologies to use on next project.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolorem nesciunt dolores at possimus, sit.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloremque earum adipisci soluta deserunt. Provident, vel!
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Omnis accusamus sunt eaque maiores officia quibusdam qui facilis perferendis quae nihil qui facilis perferendis quae nihil quam. qui facilis perferendis quae nihil quam.quam.
What i have created.
Feel free to contact me.
+48-791-107-382.
<EMAIL_ADDRESS>Poland, Rzeszow


Hard Learned Lessons
todo
axios
makara
freshy
todo
todo
gulp
es6
using webpack for backend
kraken – could have used old stable version of framework
todo
todo
Acknowledgements
- Cross stitch headlines made with Photofunia


Mum of Billyjoe Bates urges Glasgow gangsters to stop protecting son's killer
Jackie Wilson has begged people in Milton, including gangland figures, to stop protecting Billyjoe’s murderer.
by Mark McGivern, https://www.dailyrecord.co.uk/authors/mark-mcgivern/A mother has issued an emotional appeal to catch her son’s killer on the first anniversary of his death.
Jackie Wilson yesterday begged people in Milton, Glasgow, including gangland figures, to stop protecting Billyjoe Bates’s murderer.
She said: “I am appealing to anyone who has information about the murder of my son to come forward, even if you think it’s irrelevant.
“After a year has passed, I still have no answers to why this has happened.
“I’m devastated and heartbroken.
“You know what you have done.
“Others must know too, so it’s time for people to stop protecting you.”
Seriously injured Billyjoe, 28, was found lying on Ashfield Street, where it meets Kippen Street, on November 18 last year. He died in hospital four days later.
Police have issued a CCTV image of a man buying cream soda and milk in a Londis shop close to the scene.
Officers believe he may have witnessed a key detail in the crime but stressed they aren’t connecting the shopper with Billyjoe’s death.
Reports have suggested the killer is a man known to Billyjoe and the knife attack happened after an altercation at a party.
It was claimed the killer had fled to Spain.
Crimestoppers, which can be contacted on 0800 555 111, has offere£10,000 reward for information leading to an arrest and conviction.


Simple Sequencing Resources
The Simple Sequencing specification faciltates the linking together of learning objects based on sequencing rules. This means that a specific route through a set of learning materials can be retained when it is moved from one LMS (Learning Management System) to another. Simple Sequencing is often seen as intermediate step towards the much more powerful facilities offered by Learning Design. In the short term though, Simple Sequencing will provide enough functionality for many users and its incorporation into SCORM v1.3 (in beta release as of 18/06/03) will ensure its widespread uptake.
Simple Sequencing Briefing
CETIS have produced a briefing paper on Simple Sequencing which provides a concise introduction to the specification. Download the CETIS SS Briefing here: http://www.cetis.ac.uk/lib/media/ssbrief.pdf


| {{ leagueTableRow.position }} |
{{ leagueTableRow.name }} |
{{ leagueTableRow.points | number:'.2-2' }} |
{{ leagueTableRow.players }} |
{{ leagueTableRow.perfects | percent:'.2-2' }} |
{{ leagueTableRow.goodGaps | percent:'.2-2' }} |
{{ leagueTableRow.goods | percent:'.2-2' }} |
{{ leagueTableRow.bads | percent:'.2-2' }} |
{{ leagueTableRow.assiduity | percent:'.2-2' }} |


Callao is the port of the capital Lima, which is only a short distance inland.
Position 12°03.5'S, 077°09.8'W.
See the main Peru Formalities page for full details on clearing into Peru. Also note the comments at the bottom of the page.
It is advisable to contact Yacht Club Peruano in advance for help and advice. Advise YCP of your expected arrival before leaving your previous port. Advise again 72 hours before arrival so they can organise an agent and make the appropriate appointments for your clearance. Alternatively inform them of the agent you are using for clearance.
Once at the yacht club, contact YCP on Channel 68. They answer to "La Punta" (Yacht club office hours are 9am-6pm). No English is spoken. They will assign you a mooring and arrange check-in for you. Avoid arriving on the weekend to keep overtime costs down. Remain on the boat until you have received official clearance to leave.
There are four offices to visit; Health Department (Sanidad Maritima), National Port Authority (civilian), Port Captain (Navy), Immigration. and Customs (although this is not supposed to be required for pleasure yachts).
Shore passes will be issued, but these are not valid for travel outside Callao and Lima, so a proper visa should be requested if intending to travel inland.
Cruisers have reported that it can take more than a few days to complete clearance here, depending on the agent used (see reports adjacent).
On clearing out, Port Authority, Port Captain and Immigration must be visited. There will be an agency charge (negotiable) and a fee for the exit Zarpe.
Last updated April 2015.
The moorings here are a little rolly, but the area is safe and the people are reported to be friendly. It is advisable to check the mooring buoy for strength.
That yacht club has recently been remodelled and now has a new restaurant and showers.
Last updated April 2015.


Wildfires in the U.S.A.
Description
This website hosts an up to date collection of interactive maps that show all the current active wildfires in the US as of 12/9/2020, based on data from the National Wildfire Coordinating Group.
MARKER MAP
This map places markers at the locations of all currently active wildfires, with additional details.
HEATMAP
This map illustrates the areas of higher fire concentration.
CHOROPLETH MAP
This map illustrates how each state compares in total acreage currently burning.


Sell for cryptocurrencies
Push the crypto revolution forward and sell goods and services directly for cryptocurrencies, without using a fiat processor nor a centralized marketplace.
Reach buyers across the world and directly sell them products and services for cryptocurrencies in total confidentiality.
Push the crypto revolution forward and sell goods and services directly for cryptocurrencies, without using a fiat processor nor a centralized marketplace.
Particl Open Marketplace is private by default and does not collect any of your data, keeping your sales statistics, business analytics browsing history, personal identity, and any other information completly private.
Selling products and services for crypto has never been so easy. Save yourself the hassle of searching for buyers. With the marketplace, you can effortlessly get in touch with various buyers who already use crypto.
Only pay the bare minimum that is required for the marketplace to operate and avoid the exhorbitant fees charged by centralized marketplaces and their rent-seeking behaviors.
Since the marketplace belongs to its users, not to some company or organization, anytime you or someone else put an item up for sale, its listing fee is redistributed back into your and everyone else’s pockets.
Particl is different than what you know and use every day. Read the basics of Particl on our Wiki, come and join our social media and reach out to our community for assistance and answers.
Join us on DiscordParticl is available for all major operating systems and devices to serve a variety of your needs:
Download Particl DesktopYou can get Particl by accepting it as a payment for goods and services. There are also several ways you can buy Particl on cryptocurrency exchanges:
Particl ExchangesBrowse available products on Particl Open Marketplace using Particl Desktop and start offering your products!
Get the latest updates about Open Marketplace, tailored to Sellers and get exclusive access to early releases and market tips.
We value your privacy, so no spam, no ads and no BS!


Quốc Thái Nguyễn
Ho Chi Minh City, Vietnam
<EMAIL_ADDRESS>0776380164
Summary
3rd year student at University of Science HCMC.
About me:
- I’m a friendly, easy-going and open-mind person
- Passion for learning and updating the latest technologies
- High sense of responsibility
- Documents reading in english & basic communicate
- Ability to self-study and problems solving
- Good background in data structure and algorithms
- Good at teamwork and communicate
- I love making fun side projects and blogging about dev
Tools & Skills:
- Front-end: HTML, CSS, JS, Bootstrap, ReactJs, SCSS
- Back-end: Nodejs, ExpressJs, Socket.io, MongoDB, Swagger UI, SQL Server
- Others: Github, NPM, Jira, deploy, linux
- Tools: VS, VS Code, Postman, Docker
Experience
Job Social Network
R2W Team
Apr 2021 - Present (3 months +)
Descriptions:
The social network for jobs finding & hiring (CSR)
Base infos:
- Team size: 5
- Role: Backend developer
- Technologies: Node express boilerplate, ReactJS, RESTful API, OAuth, ...
Responsibilities:
- Schema design & implement
- Swagger UI for API testing
- Routing, handle controllers, mongo query
In the future:
- APIs protect, rate limit
- Optimal respond time
- Public APIs
Quốc Thái Nguyễn - page 1
E-Store
R2W Team
Oct 2020 - Nov 2020 (2 months)
Descriptions:
Ecommerce website for selling PC, laptop, mobile, ... (SSR)
Base infos:
- Team size: 3
- Role: Backend developer
- Technologies: NodeJS, ExpressJS, MongoDB, EJS, API, OAuth, ...
Responsibilities:
- Schema design & implement
- Define routes, handle controllers & mongo query
- API implement
In the future:
- Optimal respond time
- Security: avoid XSS, CSRF
Corona virus dashboard
R2W Team
Feb 2020 - Mar 2020 (2 months)
Descriptions:
Coronavirus (COVID-19) Map Dashboard using coronavirus-tracker-api (CSR)
Base infos:
- Role: Fullstack developer
- Technologies: ReactJs, Nodejs, APIs, HighCharts/Maps
Responsibilities:
- Build an UI
- API fetching
- Chart/Map render
- Location request
In the future:
- Warning if people is near epidemic zone (location)
- Coronavirus articles (backend nodejs)
Education
Quốc Thái Nguyễn - page 2
VNUHCM - University of Science
Bachelor's degree, Computer Software Engineering
2018 - 2022
Chau Thanh 1 High school
High School
2016 - 2018
Licenses & Certifications
Semester scholarship - VNUHCM - University of Science
Issued Nov 2019 - Expires Nov 2019
18120554
Cyber Security Web Application Exploitation - Udemy
Issued Dec 2020 - Expires Dec 2022
UC-fa7b5436-7e0f-4ac9-9e87-cd82ccebcae1
Skills
NodeJS
• ReactJS
• MongoDB
• JavaScript
• GIT
• REST API
• SQL
• C++
• Microsoft Office
• Teamwork
Quốc Thái Nguyễn - page 3


Adds key to file path pair to cache and copies file to new location. Does not delete the given file at filepath
Automatically throws out least recently used items if not enough space left to fit new file
Resolves with path to cached file location
the key pointing to the given file path
the file path representing the file to cache
Gets the cached file path associated with the key. Returns undefined if file mapped from key is not cached
Generated using TypeDoc
A variant of the LRU cache where this cache stores mappings from keys to file paths. This throws out least recently used items when adding a new file path to cache. Thrown out items are removed from cache and the file it pointed to is deleted


@jl777 @radix42 if a groth16 joinsplit has ever occurred on any KMD chain, this PR is not valid and can be rejected. If not, then there must be some trivial issue in the code somewhere preventing this, but it should be possible.
after sapling activation on dec 15 all the sprout txns on asset chains would have been groth16 if I understand the code correctly, so there will be months of them for pirate along. wilingl to be wrong here
i think to do this right, would need to do a checkpoint past dec 15th and suppress any validation using the old sprout method. not sure how involved that would be
@jl777 ok, I will look into what that would take, I think it should be possible. If all old sprout joinsplits are no longer validated, then we can get rid of both sprout param files, which is about 1.6GB