public class WebDriverWrapper
extends java.lang.Object
implements java.lang.Comparable
WebDriver
class.
It's purpose is to make common tasks easier and catch/fix common problems.
All WebDriver
interactions are Synchronized
on the LOCK
object.
(The WebDriver
/ Web Browser can only do one thing at a time, just like a real person.)
This allows Multi-Threading to be used with Selenium.
| Modifier and Type | Class and Description |
|---|---|
static class |
WebDriverWrapper.BrowserType
The different Web Browsers supported by
WebDriverWrapper .
|
static class |
WebDriverWrapper.ChromeBrowser
A list of supported Google Chrome Web Browsers.
|
static class |
WebDriverWrapper.FirefoxBrowser
A list of supported Firefox Web Browsers.
|
static class |
WebDriverWrapper.FirefoxExtension
All known Firefox Extensions.
|
static class |
WebDriverWrapper.IEBrowser
A list of supported Internet Explored (IE) Web Browsers.
|
| Modifier and Type | Field and Description |
|---|---|
static boolean |
autoTakeScreenshotsOnErrors
If
true , when an exception happens, a screenshot will automatically be taken and added to
the Exception's Message.
|
WebDriverWrapper.BrowserType |
BROWSER_TYPE
|
static java.lang.Object |
CHROME_LOCK
Used to make sure that we only create/launch one browser at a time,
so that System Property "webdriver.x.driver" does not conflict between 32 and 64 bit versions.
|
static java.lang.String |
chromeBinaryOverridePath
A way to override the absolute path to Chrome Browser executable.
|
static java.lang.String |
chromeDriverOverridePath
A way to override the absolute path to ChromeDriver file.
|
static org.openqa.selenium.Dimension |
chromeHeadlessDefaultWindowSize
This is the default window size for the Chrome Headless Browser.
|
static org.openqa.selenium.Keys |
CTRL_CMD_KEY
Control Key, if on Windows.
|
static java.lang.String |
DEFAULT_DOWNLOAD_PATH
Downloads go here by default.
|
static boolean |
enableDriverLogs
If set to
true , the the Browser Driver's logs will be turned on. |
static java.lang.Object |
FIREFOX_LOCK
Used to make sure that we only create/launch one browser at a time,
so that System Property "webdriver.x.driver" does not conflict between 32 and 64 bit versions.
|
static java.lang.String |
firefoxOverridePath
A way to override the absolute path to Firefox app.
|
static java.lang.Object |
IE_LOCK
Used to make sure that we only create/launch one browser at a time,
so that System Property "webdriver.x.driver" does not conflict between 32 and 64 bit versions.
|
java.lang.Object |
LOCK
Used as the lock to all
WebDriver interactions. |
static java.time.Duration |
maxElementLoadTime
The default maximum amount of time to wait for a
WebElement to appear, disappear, or change.
|
static java.time.Duration |
maxPageLoadTime
The maximum amount of time to wait for a Web Page to load.
|
static java.time.Duration |
POLLING_INTERVAL
This is the smallest amount of time it takes for a Web Browser to update the DOM.
|
static java.time.Duration |
RECOMMENDED_MIN_POLLING_TIME
The smallest recommended time to wait for any
WebElement to appear, disappear, or change.
|
static java.time.Duration |
RECOMMENDED_USER_THINKING_WAIT_TIME
This is the recommended value for the
userThinkingWaitTime .
|
static java.time.Duration |
RECOMMENDED_USER_THINKING_WAIT_TIME_DEVIATION
This is the recommended Standard Deviation
for the
userThinkingWaitTimeDeviation .
|
static java.lang.String |
SCREENSHOT_LOCATION
Where screenshots are stored, relative to the Build Path.
|
static java.lang.String |
screenshotPath
The Absolute Path where Screenshots are saved.
|
static java.time.Duration |
userThinkingWaitTime
Set this to simulate the time it would take an actual person, between actions.
|
static java.time.Duration |
userThinkingWaitTimeDeviation
Set this to add a Normal Distribution to
the
userThinkingWaitTime .
|
| Constructor and Description |
|---|
WebDriverWrapper(WebDriverWrapper.ChromeBrowser _browser)
Instantiates this WebDriverWrapper to use the given
WebDriverWrapper.ChromeBrowser .
|
WebDriverWrapper(WebDriverWrapper.ChromeBrowser _browser,
boolean _headless)
Instantiates this WebDriverWrapper to use the given
WebDriverWrapper.ChromeBrowser .
|
WebDriverWrapper(WebDriverWrapper.ChromeBrowser _browser,
boolean _headless,
org.openqa.selenium.Capabilities _capabilities)
Instantiates this WebDriverWrapper to use the given
WebDriverWrapper.ChromeBrowser .
|
WebDriverWrapper(WebDriverWrapper.ChromeBrowser _browser,
org.openqa.selenium.Capabilities _capabilities)
Instantiates this WebDriverWrapper to use the given
WebDriverWrapper.ChromeBrowser .
|
WebDriverWrapper(WebDriverWrapper.FirefoxBrowser _browser,
org.openqa.selenium.Capabilities _capabilities,
java.lang.String... _firefoxExtensionNames)
Instantiates this WebDriverWrapper to use the given
WebDriverWrapper.FirefoxBrowser .
|
WebDriverWrapper(WebDriverWrapper.FirefoxBrowser _browser,
java.lang.String... _firefoxExtensionNames)
Instantiates this WebDriverWrapper to use the given
WebDriverWrapper.FirefoxBrowser .
|
WebDriverWrapper(WebDriverWrapper.IEBrowser _browser)
Instantiates this WebDriverWrapper to use the given
WebDriverWrapper.IEBrowser .
|
WebDriverWrapper(WebDriverWrapper.IEBrowser _browser,
org.openqa.selenium.Capabilities _capabilities)
Instantiates this WebDriverWrapper to use the given
WebDriverWrapper.IEBrowser .
|
| Modifier and Type | Method and Description |
|---|---|
void |
closeWindow()
Close the current window.
|
int |
compareTo(java.lang.Object o)
|
boolean |
equals(java.lang.Object o)
|
java.lang.String |
executeJavascript(java.lang.String _javascriptCode)
Will Execute the given JavaScript code.
|
org.openqa.selenium.Alert |
getAlert()
Waits
maxPageLoadTime for an
alert to pop-up, then returns the Alert .
|
org.openqa.selenium.Alert |
getAlert(java.time.Duration _waitTime)
Waits up to the given Wait Time for an alert to pop-up, then returns the
Alert . |
java.lang.String |
getCurrentUrl()
|
java.lang.String |
getPageSource()
|
java.lang.String |
getPageTitle()
|
static WebDriverWrapper |
getWebDriverWrapper(xyz.swatt.selenium.WebDriverWrapper.SpecificBrowser _browserType)
Will create a Browser of the given Type, with defaults options, and return it.
|
WebElementWrapper
|
getWebElementWrapper(org.openqa.selenium.By _by)
Waits around
maxElementLoadTime
for the WebElement to exist and contain the correct visibility.
|
WebElementWrapper
|
getWebElementWrapper(org.openqa.selenium.By _by,
boolean _visibility)
Waits around
maxElementLoadTime
for the WebElement to exist and contain the correct visibility.
|
WebElementWrapper
|
getWebElementWrapper(org.openqa.selenium.By _by,
boolean _visibility,
java.time.Duration _waitTime)
Waits the given amount of time for the
WebElement to exist and contain the correct
visibility, then grabs it.
|
WebElementWrapper
|
getWebElementWrapper(org.openqa.selenium.By _by,
java.lang.Boolean _visibility,
java.time.Duration _waitTime,
java.lang.String _noElementExceptionMessage)
Waits the given amount of time for the
WebElement to exist and contain the correct
visibility, then grabs it.
|
WebElementWrapper
|
getWebElementWrapper(org.openqa.selenium.By _by,
boolean _visibility,
java.lang.String _noElementExceptionMessage)
Waits
maxElementLoadTime
for the WebElement to exist and contain the correct visibility, then grabs it.
|
WebElementWrapper
|
getWebElementWrapper(org.openqa.selenium.By _by,
java.time.Duration _waitTime)
Waits the given amount of time for the
WebElement to exist and contain the correct
visibility, then grabs it.
|
WebElementWrapper
|
getWebElementWrapper(org.openqa.selenium.By _by,
java.time.Duration _waitTime,
java.lang.String _noElementExceptionMessage)
Waits the given amount of time for the
WebElement to exist and contain the correct
visibility, then grabs it.
|
WebElementWrapper
|
getWebElementWrapper(org.openqa.selenium.By _by,
java.lang.String _noElementExceptionMessage)
Waits around
maxElementLoadTime
for the WebElement to exist and contain the correct visibility.
|
java.util.List<WebElementWrapper> |
getWebElementWrappers(org.openqa.selenium.By _by)
Waits
maxElementLoadTime
for at least one WebElement to exist and contain the correct visibility; then grabs all of the available
WebElement s.
|
java.util.List<WebElementWrapper> |
getWebElementWrappers(org.openqa.selenium.By _by,
boolean _visibility)
Waits
maxElementLoadTime
for at least one WebElement to exist and contain the correct visibility; then grabs all of the available
WebElement s.
|
java.util.List<WebElementWrapper> |
getWebElementWrappers(org.openqa.selenium.By _by,
boolean _visibility,
java.time.Duration _waitTime)
Waits the given amount of time for at least one
WebElement to exist and contain the correct
visibility; then grabs all of the available WebElement s.
|
java.util.List<WebElementWrapper> |
getWebElementWrappers(org.openqa.selenium.By _by,
java.time.Duration _waitTime)
Waits the given amount of time for at least one
WebElement to exist and contain the correct
visibility; then grabs all of the available WebElement s.
|
org.openqa.selenium.Alert |
goToUrl(java.lang.String _url)
Loads a URL into the current Web Driver window and waits for the page to finish loading.
|
int |
hashCode()
|
boolean |
hasQuit()
This method will tell you if the
WebDriver has quit. |
static void |
killPreviousBrowserDriverProcesses()
This method will kill any Browser Driver processes that were started in previous runs.
|
static void |
killUsedBrowserDriverProcesses()
This method will kill all of the Browser Driver processes that were created during this run.
|
WebDriverWrapper
|
maximize()
Will Maximize the current browser window.
|
void |
openNewWindow()
Opens a new Window and switches the given Web Driver to point to it.
|
void |
openNewWindow(boolean _closeOthers)
Opens a new Window and switches the given Web Driver to point to it.
|
void |
paste(java.lang.String _clipboard)
Will put the given string into the Operating System's Clipboard, then executes the paste keyboard
shortcut.
|
void |
quit()
Quits this
WebDriver , closing every associated window. |
org.openqa.selenium.Alert |
refresh()
Refreshes the current page and waits for the DOM to finish loading.
|
void |
scrollTo(int _x,
int _y)
Will scroll the current page so that the X/Y coordinates are at the top/left of the browser's window.
|
WebDriverWrapper
|
sendKeys(java.lang.String _keys)
Will send keys to the <body> element, if it exists.
|
WebDriverWrapper
|
setWindowSize(org.openqa.selenium.Dimension _dimension)
Will set the size of the Browser Window.
|
WebDriverWrapper
|
setWindowSize(int _x,
int _y)
Will set the size of the Browser Window.
|
void |
switchToFrame()
Switches to the one and only visible Frame/IFrame on the page.
|
void |
switchToFrame(org.openqa.selenium.By _by)
Switches to the given Frame/IFrame.
|
void |
switchToLastWindow()
Switches to the last (last) opened Window.
|
void |
switchToWindow(int _index)
Switches to the Window at the given index.
|
void |
switchToWindow(java.lang.String _pageTitle)
Switches to the window with the given Page Title.
|
java.io.File |
takeScreenshot()
Takes a screenshot of the current Window/Tab and saves it to
screenshotPath ("test-output/screenshots/").
|
void |
throwWebPageException(java.lang.String _message)
Will take a screenshot and throw a
WebPageException
with the given message and the screenshot's full path.
|
void |
throwWebPageException(java.lang.String _message,
java.lang.Throwable _cause)
Will take a screenshot and throw a
WebPageException
with the given message and the screenshot's full path.
|
static void |
tileWindows(boolean _zoomOut)
Will tile all of the windows of all of the
WebDriverWrapper s
that have been created and not quit.
|
static void |
tileWindows(java.util.concurrent.ConcurrentSkipListSet<WebDriverWrapper> _driverWrappers,
boolean _zoomOut)
Will tile all of the given
WebDriver s' active windows. |
void |
waitForPageLoad()
This method will wait
maxPageLoadTime
for the given page to load.
|
java.lang.String |
waitForTitle(java.util.Collection<java.lang.String> _values)
This method will wait up to
maxPageLoadTime , for the
Page's Title to equal one of the given values.
|
java.lang.String |
waitForTitle(java.util.Collection<java.lang.String> _values,
boolean _trim,
boolean _caseMatters)
This method will wait up to
maxPageLoadTime , for the
Page's Title to equal one of the given values.
|
java.lang.String |
waitForTitle(java.util.Collection<java.lang.String> _values,
boolean _trim,
boolean _caseMatters,
java.time.Duration _maxWaitTime)
This method will wait for the given amount of time, for the Page's Title to equal one of the given
values.
|
java.lang.String |
waitForTitle(java.util.Collection<java.lang.String> _values,
java.time.Duration _maxWaitTime)
This method will wait for the given amount of time, for the Page's Title to equal one of the given
values.
|
void |
waitForTitle(java.lang.String _value)
This method will wait up to
maxPageLoadTime , for the
Page's Title to equal the given value.
|
void |
waitForTitle(java.lang.String _value,
boolean _trim,
boolean _caseMatters)
This method will wait up to
maxPageLoadTime , for the
Page's Title to equal the given value.
|
void |
waitForTitle(java.lang.String _value,
boolean _trim,
boolean _caseMatters,
java.time.Duration _maxWaitTime)
This method will wait for the given amount of time, for the Page's Title to equal the given value.
|
void |
waitForTitle(java.lang.String _value,
java.time.Duration _maxWaitTime)
This method will wait for the given amount of time, for the Page's Title to equal the given value.
|
static java.time.Duration |
waitForUserThinkTime()
Will wait for the User "Think" Time, if
userThinkingWaitTime
is set and will add a Normal Deviation if userThinkingWaitTimeDeviation
is
set.
|
public static final java.time.Duration POLLING_INTERVAL
public static final java.time.Duration RECOMMENDED_MIN_POLLING_TIME
WebElement
to appear, disappear, or change.
(Twice the POLLING_INTERVAL
.
[This will cause the wait to check 2 times for the requirement.])
public static final java.time.Duration RECOMMENDED_USER_THINKING_WAIT_TIME
userThinkingWaitTime
.
It was calculated from a sampling of people running this Reaction Test.
public static final java.time.Duration RECOMMENDED_USER_THINKING_WAIT_TIME_DEVIATION
userThinkingWaitTimeDeviation
.
It was calculated from a sampling of people running this Reaction Test.
public static final org.openqa.selenium.Keys CTRL_CMD_KEY
public static final java.lang.Object CHROME_LOCK
public static final java.lang.Object FIREFOX_LOCK
public static final java.lang.Object IE_LOCK
public static final java.lang.String DEFAULT_DOWNLOAD_PATH
(Constant if for external users to use as path.)
public static final java.lang.String SCREENSHOT_LOCATION
public static boolean autoTakeScreenshotsOnErrors
true
, when an exception happens, a screenshot will automatically be taken and added to the
Exception's Message.
(default: true
)
public static boolean enableDriverLogs
true
, the the Browser Driver's logs will be turned on.
Note: Only working for the ChromeDriver, right now.
Note: Logs go to the Console and cannot be redirected, without redirecting all of Console OUT/ERROR.
public static java.time.Duration maxElementLoadTime
WebElement
to appear, disappear, or change.
(Default: 0.5
seconds.)
(In general a user will expect an action result to happen "immediately".)
public static java.time.Duration maxPageLoadTime
public static java.time.Duration userThinkingWaitTime
Default: 0 (null)
.
Recommended: RECOMMENDED_USER_THINKING_WAIT_TIME
.
See Also: userThinkingWaitTimeDeviation
.
public static java.time.Duration userThinkingWaitTimeDeviation
userThinkingWaitTime
. (Note:
The distribution will be limited to 2 *
userThinkingWaitTimeDeviation
,
to prevent outliers.)
Default: 0 (null)
.
Recommended: RECOMMENDED_USER_THINKING_WAIT_TIME_DEVIATION
.
public static org.openqa.selenium.Dimension chromeHeadlessDefaultWindowSize
public static java.lang.String chromeBinaryOverridePath
public static java.lang.String chromeDriverOverridePath
public static java.lang.String firefoxOverridePath
public static java.lang.String screenshotPath
Default: SCREENSHOT_LOCATION
.
public final java.lang.Object LOCK
WebDriver
interactions.public final WebDriverWrapper.BrowserType BROWSER_TYPE
public WebDriverWrapper(WebDriverWrapper.ChromeBrowser _browser)
Instantiates this WebDriverWrapper to use the given WebDriverWrapper.ChromeBrowser
.
Notes:
chromeBinaryOverridePath
chromeDriverOverridePath
_browser
- The Web WebDriverWrapper.ChromeBrowser
to
use.
java.lang.IllegalArgumentException
- If the given WebDriverWrapper.ChromeBrowser
is null
.
public WebDriverWrapper(WebDriverWrapper.ChromeBrowser _browser, boolean _headless)
Instantiates this WebDriverWrapper to use the given WebDriverWrapper.ChromeBrowser
.
Notes:
chromeHeadlessDefaultWindowSize
)
chromeBinaryOverridePath
chromeDriverOverridePath
_browser
- The Web WebDriverWrapper.ChromeBrowser
to
use.
_headless
- If true
than a headless (GUI-less) version of Chrome will be used; otherwise the
normal Chrome GUI will be used. (Needs Chrome version 59
or higher.)
java.lang.IllegalArgumentException
- If the given WebDriverWrapper.ChromeBrowser
is null
.
public WebDriverWrapper(WebDriverWrapper.ChromeBrowser _browser, org.openqa.selenium.Capabilities _capabilities)
Instantiates this WebDriverWrapper to use the given WebDriverWrapper.ChromeBrowser
.
Notes:
chromeBinaryOverridePath
chromeDriverOverridePath
_browser
- The Web WebDriverWrapper.ChromeBrowser
to
use.
_capabilities
- Allows you to send in custom Capabilities to the created WebDriver
. (Warning:
This will overwrite any default WebDriverWrapper
settings.)
java.lang.IllegalArgumentException
- If the given WebDriverWrapper.ChromeBrowser
is null
.
public WebDriverWrapper(WebDriverWrapper.ChromeBrowser _browser, boolean _headless, org.openqa.selenium.Capabilities _capabilities)
WebDriverWrapper.ChromeBrowser
.
Notes:
chromeHeadlessDefaultWindowSize
)
chromeBinaryOverridePath
chromeDriverOverridePath
_browser
- The Web WebDriverWrapper.ChromeBrowser
to
use.
_headless
- If true
than a headless (GUI-less) version of Chrome will be used; otherwise the
normal Chrome GUI will be used.
(Needs Chrome version 59 or higher.)
_capabilities
- Allows you to send in custom Capabilities to the created WebDriver
. (Warning:
This will overwrite any default WebDriverWrapper
settings.)
java.lang.IllegalArgumentException
- If the given WebDriverWrapper.ChromeBrowser
is null
.
org.openqa.selenium.WebDriverException
- If the current Operating System is unknown or unsupported.public WebDriverWrapper(WebDriverWrapper.FirefoxBrowser _browser, java.lang.String... _firefoxExtensionNames)
WebDriverWrapper.FirefoxBrowser
.
(Designed to work with Firefox version 56.0.2.)
Notes:
- Will look at the default install path for the Firefox app. (Can be overridden by setting firefoxOverridePath
.)
- The Window will be maximized.
- Downloads will automatically start and the files will be saved to FireFox's default download location.
(Stored in DEFAULT_DOWNLOAD_PATH
.)
_browser
- The WebDriverWrapper.FirefoxBrowser
to
use.
_firefoxExtensionNames
- A list of Firefox Add-On names. (Known names can be found in the WebDriverWrapper.FirefoxExtension
enum.) [Only works on Windows and Mac.]
java.lang.IllegalArgumentException
- If the given WebDriverWrapper.FirefoxBrowser
is null
.
Or if firefoxOverridePath
is mismatched with given WebDriverWrapper.FirefoxBrowser
.
Or if Extensions are provided when the given WebDriverWrapper.FirefoxBrowser
is Linux.
public WebDriverWrapper(WebDriverWrapper.FirefoxBrowser _browser, org.openqa.selenium.Capabilities _capabilities, java.lang.String... _firefoxExtensionNames)
WebDriverWrapper.FirefoxBrowser
.
(Designed to work with Firefox version 56.0.2.)
Notes:
- Will look at the default install path for the Firefox app. (Can be overridden by setting firefoxOverridePath
.)
- The Window will be maximized.
- Downloads will automatically start and the files will be saved to FireFox's default download location.
(Stored in DEFAULT_DOWNLOAD_PATH
.)
_browser
- The WebDriverWrapper.FirefoxBrowser
to
use.
_capabilities
- Allows you to send in custom Capabilities to the created WebDriver
. (Warning:
This will overwrite any default WebDriverWrapper
settings.)
_firefoxExtensionNames
- A list of Firefox Add-On names. (Known names can be found in the WebDriverWrapper.FirefoxExtension
enum.) [Only works on Windows and Mac.]
java.lang.IllegalArgumentException
- If the given WebDriverWrapper.FirefoxBrowser
is null
.
Or if firefoxOverridePath
is mismatched with given WebDriverWrapper.FirefoxBrowser
.
Or if Extensions are provided when the given WebDriverWrapper.FirefoxBrowser
is Linux.
public WebDriverWrapper(WebDriverWrapper.IEBrowser _browser)
WebDriverWrapper.IEBrowser
.
Note: IE requires that the "Enable Protected Mode" Security Settings be set to the same value for all Security Zones. (see: http://automate-apps.com/unexpected-error-launching-internet-explorer-protected-mode-settings-are-not-the-same-for-all-zones/)
Note: IE requires that the "Pop-up Blocking Level" to be set to "Low", in order to use the openNewWindow(boolean)
functionality.
(see: How to Turn Off
Pop-Up Blocker in Internet Explorer )
Note: The window will be maximized.
_browser
- The Web WebDriverWrapper.IEBrowser
to
use.
Note: IE 64 bit has slow typing, due to bug: Selenium Bug 5116
java.lang.IllegalArgumentException
- If the given WebDriverWrapper.IEBrowser
is null
.
public WebDriverWrapper(WebDriverWrapper.IEBrowser _browser, org.openqa.selenium.Capabilities _capabilities)
WebDriverWrapper.IEBrowser
.
Note: IE requires that the "Enable Protected Mode" Security Settings be set to the same value for all Security Zones. (see: http://automate-apps.com/unexpected-error-launching-internet-explorer-protected-mode-settings-are-not-the-same-for-all-zones/)
Note: IE requires that the "Pop-up Blocking Level" to be set to "Low", in order to use the openNewWindow(boolean)
functionality.
(see: How to Turn Off
Pop-Up Blocker in Internet Explorer )
Note: The window will be maximized.
_browser
- The Web WebDriverWrapper.IEBrowser
to
use.
Note: IE 64 bit has slow typing, due to bug: Selenium Bug 5116
_capabilities
- Allows you to send in custom Capabilities to the created WebDriver
.
(Warning: This will overwrite any default WebDriverWrapper
settings.)
java.lang.IllegalArgumentException
- If the given WebDriverWrapper.IEBrowser
is null
.
public static WebDriverWrapper getWebDriverWrapper(xyz.swatt.selenium.WebDriverWrapper.SpecificBrowser _browserType)
_browserType
- The Type of browser to create.
(You can pass in any of the WebDriverWrapper
Browser Enums.)
WebDriverWrapper
.
java.lang.IllegalArgumentException
- If the given Browser Type is null
.
Or if the given Browser Type is Unknown.
public static void killPreviousBrowserDriverProcesses()
Should only be used at the beginning off execution (like in an @BeforeSuite
method).
Note: Will only execute on windows machine.
Warning: This will kill any ECT-QED Tools' Selenium Drivers from other executions!
public static void killUsedBrowserDriverProcesses()
Should only be used at the end off all execution (like in an @AfterSuite
method).
Note: Will only execute on windows machine.
public static void tileWindows(boolean _zoomOut)
WebDriverWrapper
s
that have been created and not quit. (If only 1 WebDriverWrapper
is
still
active, then it will be maximized.)
Note: For Chrome on a Mac, "maximise" may not fill the entire screen. It just expand the window to as large as it needs to be, to not have scroll bars (up to the size of the available screen space).
_zoomOut
- If true, the windows will get zoomed out to the percentage that they are resided.
Note: Firefox does not support the use of Control keys on the browser. (see: https://github.com/mozilla/geckodriver/issues/786.)
Note: Chrome does not support the use of Control keys on the browser. (see: https://bugs.chromium.org/p/chromedriver/issues/detail?id=2265.)
public static void tileWindows(java.util.concurrent.ConcurrentSkipListSet<WebDriverWrapper> _driverWrappers, boolean _zoomOut)
WebDriver
s' active windows.
(If only 1 WebDriver
is given, it will be maximized.)
Note: For Chrome on a Mac, "maximise" may not fill the entire screen. It just expand the window to as large as it needs to be, to not have scroll bars (up to the size of the available screen space).
_driverWrappers
- The windows to tile, in a thread safe, unique collection. (see: ConcurrentSkipListSet
)
_zoomOut
- If true, the windows will get zoomed out to the percentage that they are resided.
Note: Firefox does not support the use of Control keys on the browser. (see: https://github.com/mozilla/geckodriver/issues/786.)
Note: Chrome does not support the use of Control keys on the browser. (see: https://bugs.chromium.org/p/chromedriver/issues/detail?id=2265.)
@LogMethods public static java.time.Duration waitForUserThinkTime()
userThinkingWaitTime
is
set and will add a Normal Deviation if userThinkingWaitTimeDeviation
is
set.
public void closeWindow()
public java.lang.String executeJavascript(java.lang.String _javascriptCode)
_javascriptCode
- The JavaScript Code to be Executed.String
;
or null
, if nothing was returned by the JavaScript Code Execution.
java.lang.IllegalArgumentException
- If the given JavaScript Code is blank.org.openqa.selenium.JavascriptException
- If the JavaScript Code Execution returned something other than a
String
.
public org.openqa.selenium.Alert getAlert()
maxPageLoadTime
for an alert
to pop-up, then returns the Alert
.
Alert
that is present, or null
.public org.openqa.selenium.Alert getAlert(java.time.Duration _waitTime)
Alert
._waitTime
- How long to wait (in seconds) for the Alert
to appear.Alert
that is present, or null
.public java.lang.String getCurrentUrl()
WebDriver.getCurrentUrl()
public java.lang.String getPageTitle()
WebDriver.getTitle()
public java.lang.String getPageSource()
WebDriver.getPageSource()
public WebElementWrapper getWebElementWrapper(org.openqa.selenium.By _by)
maxElementLoadTime
for the WebElement
to exist and contain the correct visibility.
Note: Wait time can be a little longer (proportional to number of Web Elements found),
because of the time it takes to construct WebElementWrapper
s.
_by
- How to search for the Web Element.NULL
, if not.java.lang.IllegalArgumentException
- If the given By object is NULL
.TooManyResultsException
- If more than 1 WebElement
is found.
public WebElementWrapper getWebElementWrapper(org.openqa.selenium.By _by, boolean _visibility)
maxElementLoadTime
for the WebElement
to exist and contain the correct visibility.
Note: Wait time can be a little longer (proportional to number of WebElement
s found),
because of the time it takes to construct WebElementWrapper
s.
_by
- How to search for the WebElement
._visibility
- If true
only returns a visible WebElement
, else if
false
, only returns a hidden WebElement
.
WebElementWrapper
,
if successful; or NULL
, if not.
java.lang.IllegalArgumentException
- If the given By object is NULL
.TooManyResultsException
- If more than 1 WebElement
is found.
public WebElementWrapper getWebElementWrapper(org.openqa.selenium.By _by, java.time.Duration _waitTime)
WebElement
to exist and contain the correct visibility,
then grabs it.
Note: Wait time can be a little longer (proportional to number of WebElement
s found),
because of the time it takes to construct WebElementWrapper
s.
_by
- How to search for the WebElement
._waitTime
- How long to wait for the WebElement
to exists and contain the correct visibility.
Pass in 0
to only try to get the Elements once.
WebElementWrapper
,
if successful; or NULL
, if not.
java.lang.IllegalArgumentException
- If the given By object is null
.
Or if the given Wait Time is negative.
TooManyResultsException
- If more than 1 WebElement
is found.
public WebElementWrapper getWebElementWrapper(org.openqa.selenium.By _by, java.lang.String _noElementExceptionMessage)
maxElementLoadTime
for the WebElement
to exist and contain the correct visibility.
Note: Wait time can be a little longer (proportional to number of WebElement
s found),
because of the time it takes to construct WebElementWrapper
s.
_by
- How to search for the WebElement
._noElementExceptionMessage
- If not NULL
, a NoSuchElementException
will be
thrown with this message, if no Element is found.
WebElementWrapper
,
if successful; or NULL
, if not.
java.lang.IllegalArgumentException
- If the given By object is NULL
.java.util.NoSuchElementException
- If no WebElement
is found, and if the _noElementExceptionMessage
argument is not NULL
.
TooManyResultsException
- If more than 1 WebElement
is found.
public WebElementWrapper getWebElementWrapper(org.openqa.selenium.By _by, boolean _visibility, java.time.Duration _waitTime)
WebElement
to exist and contain the correct visibility,
then grabs it.
Note: Wait time can be a little longer (proportional to number of WebElement
s found),
because of the time it takes to construct WebElementWrapper
s.
_by
- How to search for the WebElement
._visibility
- If true
only returns a visible WebElement
, else if
false
, only returns a hidden WebElement
.
_waitTime
- How long to wait for the WebElement
to exists and contain the correct visibility.
Pass in 0
to only try to get the Elements once.
WebElementWrapper
,
if successful; or NULL
, if not.
java.lang.IllegalArgumentException
- If the given By object is null
.
Or if the given Wait Time is negative.
TooManyResultsException
- If more than 1 WebElement
is found.
public WebElementWrapper getWebElementWrapper(org.openqa.selenium.By _by, boolean _visibility, java.lang.String _noElementExceptionMessage)
maxElementLoadTime
for the
WebElement
to exist and contain the correct visibility, then grabs it.
Note: Wait time can be a little longer (proportional to number of WebElement
s found),
because of the time it takes to construct WebElementWrapper
s.
_by
- How to search for the WebElement
._visibility
- If true
only returns a visible WebElement
, else if
false
, only returns a hidden WebElement
.
_noElementExceptionMessage
- If not NULL
, a NoSuchElementException
will be
thrown with this message, if no Element is found.
WebElementWrapper
,
if successful; or NULL
, if not.
java.lang.IllegalArgumentException
- If the given By object is NULL
.java.util.NoSuchElementException
- If no WebElement
is found, and if the _noElementExceptionMessage
argument is not NULL
.
TooManyResultsException
- If more than 1 WebElement
is found.
public WebElementWrapper getWebElementWrapper(org.openqa.selenium.By _by, java.time.Duration _waitTime, java.lang.String _noElementExceptionMessage)
WebElement
to exist and contain the correct visibility,
then grabs it.
Note: Wait time can be a little longer (proportional to number of WebElement
s found),
because of the time it takes to construct WebElementWrapper
s.
_by
- How to search for the WebElement
._waitTime
- How long to wait for the WebElement
to exists and contain the correct visibility.
Pass in 0
to only try to get the Elements once.
_noElementExceptionMessage
- If not NULL
, a NoSuchElementException
will be
thrown with this message, if no Element is found.
WebElementWrapper
,
if successful; or NULL
, if not.
java.lang.IllegalArgumentException
- If the given By object is null
.
Or if the given Wait Time is negative.
java.util.NoSuchElementException
- If no WebElement
is found, and if the _noElementExceptionMessage
argument is not NULL
.
TooManyResultsException
- If more than 1 WebElement
is found.
public WebElementWrapper getWebElementWrapper(org.openqa.selenium.By _by, java.lang.Boolean _visibility, java.time.Duration _waitTime, java.lang.String _noElementExceptionMessage)
WebElement
to exist and contain the correct visibility,
then grabs it.
Note: Wait time can be a little longer (proportional to number of WebElement
s found),
because of the time it takes to construct WebElementWrapper
s.
_by
- How to search for the WebElement
._visibility
- If true
only returns a visible WebElement
, else if
false
, only returns a hidden WebElement
.
_waitTime
- How long to wait for the WebElement
to exists and contain the correct visibility.
Pass in 0
to only try to get the Elements once.
_noElementExceptionMessage
- If not NULL
, a NoSuchElementException
will be
thrown with this message, if no Element is found.
WebElementWrapper
,
if successful; or NULL
, if not.
java.lang.IllegalArgumentException
- If the given By object is null
.
Or if the given Wait Time is negative.
java.util.NoSuchElementException
- If no WebElement
is found, and if the _noElementExceptionMessage
argument is not NULL
.
TooManyResultsException
- If more than 1 WebElement
is found.
public java.util.List<WebElementWrapper> getWebElementWrappers(org.openqa.selenium.By _by)
maxElementLoadTime
for at
least one WebElement
to exist and contain the correct visibility; then grabs all of the available WebElement
s.
Note: Wait time can be a little longer (proportional to number of WebElement
s found),
because of the time it takes to construct WebElementWrapper
s.
_by
- How to search for the WebElement
s.WebElementWrapper
(s),
if successful; or an empty List, if not.
public java.util.List<WebElementWrapper> getWebElementWrappers(org.openqa.selenium.By _by, boolean _visibility)
maxElementLoadTime
for at
least one WebElement
to exist and contain the correct visibility; then grabs all of the available WebElement
s.
Note: Wait time can be a little longer (proportional to number of WebElement
s found),
because of the time it takes to construct WebElementWrapper
s.)
_by
- How to search for the WebElement
._visibility
- If true
only returns visible WebElement
s, else if
false
, only returns hidden WebElement
s.
WebElementWrapper
(s),
if successful; or an empty List, if not.
public java.util.List<WebElementWrapper> getWebElementWrappers(org.openqa.selenium.By _by, java.time.Duration _waitTime)
WebElement
to exist and contain the correct
visibility; then grabs all of the available WebElement
s.
Note: Wait time can be a little longer (proportional to number of WebElement
s found),
because of the time it takes to construct WebElementWrapper
s.
_by
- How to search for the WebElement
._waitTime
- How long to wait for the WebElement
to exists and contain the correct visibility.
Pass in 0
to only try to get the Elements once.
WebElementWrapper
(s),
if successful; or an empty List, if not.
java.lang.IllegalArgumentException
- If the given By object is null
.
Or if the given Wait Time is negative.
public java.util.List<WebElementWrapper> getWebElementWrappers(org.openqa.selenium.By _by, boolean _visibility, java.time.Duration _waitTime)
WebElement
to exist and contain the correct
visibility; then grabs all of the available WebElement
s.
Note: Wait time can be a little longer (proportional to number of WebElement
s found),
because of the time it takes to construct WebElementWrapper
s.
_by
- How to search for the WebElement
._waitTime
- How long to wait for the WebElement
to exists and contain the correct visibility.
Pass in 0
to only try to get the Elements once.
_visibility
- If true
only returns visible WebElement
s, else if
false
, only returns hidden WebElement
s.
WebElementWrapper
(s),
if successful; or an empty List, if not.
java.lang.IllegalArgumentException
- If the given By object is null
.
Or if the given Wait Time is negative.
public org.openqa.selenium.Alert goToUrl(java.lang.String _url)
Note: If an Alert
is generated, it will be returned.
Also: This can load a file into the browser, if the "URL" is in the format "file:ABSOLUTE_PATH".
_url
- The URL to load.Alert
that was generated as a result of the navigation; or null
, if there is no Alert
.
waitForPageLoad()
public boolean hasQuit()
WebDriver
has quit.public WebDriverWrapper maximize()
WebDriverWrapper
for method call linking.
public void openNewWindow()
Note: IE requires that the "Pop-up Blocking Level" to be set to "Low", in order for Selenium to open a new window. (see: How to Turn Off Pop-Up Blocker in Internet Explorer )
public void openNewWindow(boolean _closeOthers)
Note: IE requires that the "Pop-up Blocking Level" to be set to "Low", in order for Selenium to open a new window. (see: How to Turn Off Pop-Up Blocker in Internet Explorer )
_closeOthers
- If true
, all other Windows will be closed.public void paste(java.lang.String _clipboard)
Note: The Paste Command is sent to wherever the cursor currently is.
_clipboard
- The String to Paste.public void quit()
WebDriver
, closing every associated window.
Warning: Do NOT try to use this object after closing it. This will have unexpected results.
WebDriver.quit()
public org.openqa.selenium.Alert refresh()
Alert
that was generated as a result of the refresh; or null
, if there is no
Alert
.
waitForPageLoad()
public WebDriverWrapper sendKeys(java.lang.String _keys)
Note: is the <body> element does not exist, then the keys will be sent to the root element.
_keys
- What characters to send to the <body> element / root.this
WebElementWrapper
, for method
call chaining purposes.
java.lang.IllegalArgumentException
- If the given Keys are null
or an Empty String.WebPageException
- If there is no root element.
public WebDriverWrapper setWindowSize(int _x, int _y)
_x
- Horizontal Size._y
- Vertical Size.this
WebElementWrapper
, for method
call chaining purposes.
public WebDriverWrapper setWindowSize(org.openqa.selenium.Dimension _dimension)
_dimension
- The Horizontal and Vertical Size, to set the window to.this
WebElementWrapper
, for method
call chaining purposes.
public void scrollTo(int _x, int _y)
_x
- Horizontal Position._y
- Vertical Position.java.lang.IllegalArgumentException
- If either of the given coordinates are less than 0.public void switchToFrame()
Waits maxPageLoadTime
for
the Frame/IFrame to be available.
Same as calling switchToFrame(By)
and sending By.xpath( "//frame | //iframe" )
.
java.util.NoSuchElementException
- If no Frame/IFrame is visible after maxPageLoadTime
seconds of
waiting.
TooManyResultsException
- If multiple Frames/IFrames are visible.
public void switchToFrame(org.openqa.selenium.By _by)
Waits maxPageLoadTime
for
the Frame/IFrame to be available.
_by
- How to search for the Frame/IFrame.java.util.NoSuchElementException
- If the Frame/IFrame cannot be found or is not visible after maxPageLoadTime
seconds of
waiting.
TooManyResultsException
- If the search returns multiple, visible Frames/IFrames.
org.openqa.selenium.NoSuchFrameException
- If the found Element is not a Frame/IFrame.getWebElementWrapper(By,
Duration)
public void switchToLastWindow()
Note: May need to add a small wait, before calling this method, for the Window to load.
public void switchToWindow(int _index)
Waiting up to maxPageLoadTime
for the
Window to load.
Note: Window indexes are in the order that the windows were opened and only include currently opened windows.
_index
- The 0-based index of the Window to switch to.java.lang.IndexOutOfBoundsException
- If the given Index is less than 0 or greater than the number of open
windows,
after waiting maxPageLoadTime
for
the Window to load.
public void switchToWindow(java.lang.String _pageTitle)
Waiting up to maxPageLoadTime
for the
Window to load.
Note: Page Title is compared, ignoring the case, after trimming and normalization have been applied to the Title(s) and compare string.
_pageTitle
- The Title of the Web Page's Browser Window to switch to.org.openqa.selenium.NotFoundException
- If there is no Browser Window with the given Web Page Title.TooManyResultsException
- If there is more than 1 Browser Window with the given Web Page Title.
public java.io.File takeScreenshot()
screenshotPath
("test-output/screenshots/").
org.openqa.selenium.WebDriverException
- If the Screenshot cannot be taken.WebDriverWrapperException
- If the taken Screenshot cannot be saved.
public void throwWebPageException(java.lang.String _message) throws WebPageException
WebPageException
with the given message and the screenshot's full path.
Note: If there is an error taking the Screenshot, then the exception will just contain the given message.
_message
- The Error message for the WebPageException
.
WebPageException
- With the given message.
@LogMethods public void throwWebPageException(java.lang.String _message, java.lang.Throwable _cause) throws WebPageException
WebPageException
with the given message and the screenshot's full path.
Note: If there is an error taking the Screenshot, then the exception will just contain the given message.
_message
- The Error message for the WebPageException
.
_cause
- What other Exception triggered this call.WebPageException
- With the given message.
public void waitForPageLoad()
maxPageLoadTime
for the given page to load.
Note: This will only wait for the DOM to be loaded. Any JavaScript may take longer.
org.openqa.selenium.TimeoutException
- If the Page does not finish loading in maxPageLoadTime
.
public void waitForTitle(java.lang.String _value)
maxPageLoadTime
, for the
Page's Title to equal the given value.
(This can be useful to wait for redirects to finish, because waitForPageLoad()
will not handle redirects.)
Note: The Tile and Expected values will be trimmed, and the case will be ignored.
_value
- What the Page's Title should be.org.openqa.selenium.TimeoutException
- If the Page's Title does not equal the given after maxPageLoadTime
.
public void waitForTitle(java.lang.String _value, boolean _trim, boolean _caseMatters)
maxPageLoadTime
, for the
Page's Title to equal the given value.
Note: This can be useful to wait for redirects to finish, because waitForPageLoad()
will
not handle redirects.
_value
- What the Page's Title should be._trim
- true
, to trim both values before comparing._caseMatters
- false
, to ignore case.org.openqa.selenium.TimeoutException
- If the Page's Title does not equal the given after maxPageLoadTime
.
public void waitForTitle(java.lang.String _value, java.time.Duration _maxWaitTime)
(This can be useful to wait for redirects to finish, because waitForPageLoad()
will not handle redirects.)
Note: The Tile and Expected values will be trimmed, and the case will be ignored.
_value
- What the Page's Title should be._maxWaitTime
- The maximum amount of time to wait for the Title to equal the given value.java.lang.IllegalArgumentException
- If the given Wait Time is null
.org.openqa.selenium.TimeoutException
- If the Page's Title does not equal the given after the given Wait
Time.
@LogMethods public void waitForTitle(java.lang.String _value, boolean _trim, boolean _caseMatters, java.time.Duration _maxWaitTime)
Note: This can be useful to wait for redirects to finish, because waitForPageLoad()
will
not handle redirects.
_value
- What the Page's Title should be._trim
- true
, to trim both values before comparing._caseMatters
- false
, to ignore case._maxWaitTime
- The maximum amount of time to wait for the Title to equal the given value.java.lang.IllegalArgumentException
- If the given Value or Wait Time are null
.org.openqa.selenium.TimeoutException
- If the Page's Title does not equal the given after the given Wait
Time.
public java.lang.String waitForTitle(java.util.Collection<java.lang.String> _values)
maxPageLoadTime
, for the
Page's Title to equal one of the given values.
(This can be useful to wait for redirects to finish, because waitForPageLoad()
will not handle redirects.)
Note: The Tile and Expected values will be trimmed, and the case will be ignored.
_values
- Collection of what the Page's Title could be.org.openqa.selenium.TimeoutException
- If the Page's Title does not equal the given after maxPageLoadTime
.
public java.lang.String waitForTitle(java.util.Collection<java.lang.String> _values, boolean _trim, boolean _caseMatters)
maxPageLoadTime
, for the
Page's Title to equal one of the given values.
Note: This can be useful to wait for redirects to finish, because waitForPageLoad()
will
not handle redirects.
_values
- Collection of what the Page's Title could be._trim
- true
, to trim both values before comparing._caseMatters
- false
, to ignore case.org.openqa.selenium.TimeoutException
- If the Page's Title does not equal the given after maxPageLoadTime
.
public java.lang.String waitForTitle(java.util.Collection<java.lang.String> _values, java.time.Duration _maxWaitTime)
(This can be useful to wait for redirects to finish, because waitForPageLoad()
will not handle redirects.)
Note: The Tile and Expected values will be trimmed, and the case will be ignored.
_values
- Collection of what the Page's Title could be._maxWaitTime
- The maximum amount of time to wait for the Title to equal the given value.java.lang.IllegalArgumentException
- If the given Wait Time is null
.org.openqa.selenium.TimeoutException
- If the Page's Title does not equal the given after the given Wait
Time.
@LogMethods public java.lang.String waitForTitle(java.util.Collection<java.lang.String> _values, boolean _trim, boolean _caseMatters, java.time.Duration _maxWaitTime)
Note: This can be useful to wait for redirects to finish, because waitForPageLoad()
will
not handle redirects.
_values
- Collection of what the Page's Title could be._trim
- true
, to trim both values before comparing._caseMatters
- false
, to ignore case._maxWaitTime
- The maximum amount of time to wait for the Title to equal the given value.java.lang.IllegalArgumentException
- If the given Value or Wait Time are null
.org.openqa.selenium.TimeoutException
- If the Page's Title does not equal the given after the given Wait
Time.
public int compareTo(java.lang.Object o)
compareTo
in interface java.lang.Comparable
public boolean equals(java.lang.Object o)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object


[%
page.import({
title = 'Beginning Perl (free)',
section = 'books',
description
= 'Perl.org free online Perl books: Beginning Perl',
});
##################
# NOTE:
# This content is copied from: www/books/beginning_perl/index.html
# please make sure to update that file as well if needed
##################
%]
[% base = "https://blob.perl.org/books/beginning-perl/" %]
[% MACRO chapter(pdf,title) BLOCK %]
[% title %] ⇩
[% END %]
by Simon Cozens
[% chapter("3145_Intro.pdf","Introduction") %]
[% chapter("3145_Chap01.pdf","Chapter 1: First Steps In Perl") %]
[% chapter("3145_Chap02.pdf","Chapter 2: Working with Simple Values") %]
[% chapter("3145_Chap03.pdf","Chapter 3: Lists and Hashes") %]
[% chapter("3145_Chap04.pdf","Chapter 4: Loops and Decisions") %]
[% chapter("3145_Chap05.pdf","Chapter 5: Regular Expressions") %]
[% chapter("3145_Chap06.pdf","Chapter 6: Files and Data") %]
[% chapter("3145_Chap07.pdf","Chapter 7: References") %]
[% chapter("3145_Chap08.pdf","Chapter 8: Subroutines") %]
[% chapter("3145_Chap09.pdf","Chapter 9: Running and Debugging Perl") %]
[% chapter("3145_Chap10.pdf","Chapter 10: Modules") %]
[% chapter("3145_Chap11.pdf","Chapter 11: Object-Oriented Perl") %]
[% chapter("3145_Chap12.pdf","Chapter 12: Introduction to CGI") %]
[% chapter("3145_Chap13.pdf","Chapter 13: Perl and Databases") %]
[% chapter("3145_Chap14.pdf","Chapter 14: The World of Perl") %]
[% chapter("3145_AppA.pdf","Appendix A: Regular Expressions") %]
[% chapter("3145_AppB.pdf","Appendix B: Special Variables") %]
[% chapter("3145_AppC.pdf","Appendix C: Function Reference") %]
[% chapter("3145_AppD.pdf","Appendix D: The Perl Standard Modules") %]
[% chapter("3145_AppE.pdf","Appendix E: Command Line Reference") %]
[% chapter("3145_AppF.pdf","Appendix F: The ASCII Character Set") %]
[% chapter("3145_AppG.pdf","Appendix G: Licenses") %]
[% chapter("3145_AppH.pdf","Appendix H: Solutions to Exercises") %]
[% chapter("3145_AppJ.pdf","Appendix J: Support, Errata and P2P.Wrox.Com") %]
[% chapter("3145_Index.pdf","Index") %]
[% chapter("3145.zip","Code Examples (Zip Format)",nogviewer=1) %]
[% chapter("3145.tar.gz","Code Examples (tar.gz Format)",nogviewer=1) %]
Buy This Book: [% INCLUDE "tpl/bookstore-links" isbn="1861003145" style="text"%]
What does this book cover?
- Installing Perl on Windows and UNIX
- Making use of online Perl resources like CPAN
- First principles in programming and the Perl syntax
- Working with files and databases
- Writing web pages in Perl
- Using Perl as an object-oriented language
Book overview
Perl is a well-established programming language that has been developed through the time and effort of countless free software programmers into an immensely powerful tool that can be used on pratically every operating system in the world. Perl started out as the "Swiss army knife" of computer languages and was used primarily by system administrators, but over time it's grown into an immensely robust language used by web-developers and programmers worldwide. It's also a great way to learn programming techniques and develop your own style of coding.
"There's more than one way to do it" is the motto of Perl, but this book aims to take you through them all. We'll take you from installation, through the core language elements - regular expressions, references, modules and the like - and onto basic applied techniques. You'll see how to access and work with databases in Perl, write CGI scripts to generate web pages and beyond. Examples are based on Perl 5.6, but are still relevant to current Perl versions and there's a handy reference section in the back.
Who is this book for?
This book is for those new to programming who want to learn with Perl. You will find it easier if you already have some basic programming experience, but the material covered can be mastered by anyone with just a text editor, some common sense and a computer. If you want to learn how to program with Perl and then find out how far you can go with it, this is the book for you. An excellent companion on any programming course.


Open Angel Arena 7.6.1 Update
General Changes
Fixed passive GPM (periodic gold) not increasing over time.
Fixed changing Spark not working when your hero is dead.
Courier Changes
Couriers are vulnerable again (but still not taking damage from neutrals and bosses).

Your courier can now only be controlled by you.
Couriers don't get stuck anymore when delivering items during duels.
Couriers still don't provide vision.
Wanderer Changes
Fixed Wanderer buff not applying when your hero is dead.
Previous
Home
Next


Welcome To The FruitZo World
100% quality
Delivery within 1 hour of order
All varity of fruits are available
Special discounts every Wednesday and Friday


Included in V1
In V1 I created html pages for index, about, portfolio, get to know me, and services,
though the last three are blank for now. I created a home page using the index and created
navigation to link the pages together. The home page also has an external link to Amazon as
"check out my gear" as well as an image. The home and about pages have a header, title, and footer.
I created a stylesheet has been used to change the font and navigation link colors, the font size and style
in the header and footer and create a horizontal navigation.
- title
- header
- footer
- image
- navigation
- font color and style
- background color


Managing your project from start to finish
Pattenden Construction Services provide the best tradespeople and work exclusively with local companies and contractors from relationships built over many years in the industry. View our portfolio, or contact us to find out more.


--- layout: archive title: Zulip Chat Archive permalink: /stream/113489-new-members/topic/Getting.20stuff.20out.20of.20a.20definition.20using.20dite.html ---
How do I use a definition that uses dite? All my attempts of writing the definition, it's required arguments followed by a proof of the if condition failed, with Lean giving me an error like it had no idea what I was trying to do.
dif_pos
/ dif_neg
in tactic mode perhaps split_ifs
can also help.
Last updated: Apr 24 2020 at 19:02 UTC


There really isnt a whole lot to report here. Basically I was hanging out with a friend and we got the most amazing idea to shoot up 2ce. Apparently snorting it hurts.
So i throw 1.5 mg of 2c-e in a spoon and prep it for IV. Not a huge dose i thought. I had just snorted a lot so clearly I was a good judge of IV research chem dosage. And he trusted me. And I really regret ever pushing that plunger down. Because even though he is fine and nothing bad happened there was like 45 minutes of us being in new territory, not knowing what to do.
He kept thinking he was going to die. And even though im a bit of a pharmacist he was puking violently and sweating and honestly I did not know anymore whether or not he would live. I was worried.  Even though I wouldve done the same thing to myself if I hadnt already seen him this way.
It seemed very unpleasant. Dosage of 1.5mg IV was non lethal but unnessesarily intense. the duration seems akin to that of snorting it. It was noted curiously that there seemed to be a minute of crippling sobriety. Prior to the psyechedelics taking hold when injected.  Like watching a train come at you. but in your veins.
I will likely go IV with 2ce but ill go with micrograms and work my way up. basically. Dosages dont seem to be 1/10th nasal but more like 1/50th. Also take a second to think about the very real possible outcomes before you inject yourself with something you just bought online. There was a very real moment there where he and I both were unsure of his fate. He couldve died. Be careful. Shit almost got really really really real for us.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Read the Apex dox : Test Data Factory Apex Dox
For more information, please visit : Test Data Factory on Github


Want to commemorate your first taste of salmon cookies? Just looking for a great souvenir to remember your trip to Seattle? Look no further! We have you covered (both literally and figuratively) with the Pat’s Salmon Cookies T-shirt!
Our T-shirt features a beautiful original image created from a local artist's watercolor of two spawning salmon. If you're traveling for business, our T-shirt makes a great romantic gift for your partner! And ask about our "to-go" cookie packs, so you can share the unique experience of Pat's Salmon Cookies with your family back home.


Reports any use of
==
to test for Array equality, rather than the
"java.util.Arrays.equals()"
method.
New in 10.5, Powered by InspectionGadgets


Fast Forward only (--ff-only) Strategy
This strategy fast-forward only using the --ff-only switch - or fails


Sir Stirling Moss
A racing legend
Sir Stirling Moss OBE is arguably the greatest all-round racing driver of all time and a true icon of the motor racing world. Known during his career as ‘Mr Motor Racing’ he became a professional driver in 1948, at the age of 18, racing a Cooper 500.
His early career was meteoric, with works drives for both Jaguar and HWM. 1955 was a seminal year; he was signed by Mercedes-Benz, the famed “Silver Arrows”, to partner the legendary World Champion Juan Manuel Fangio. That year saw Stirling shadow the great Argentine in most Grands Prix, famously beating him to win the British Grand Prix at Aintree racing the Mercedes-Benz W196 Monoposto. In that same year, he also won the epic 1,000 mile Mille Miglia road race in the Mercedes-Benz 300 SLR at an astonishing average speed of 97.96mph on public roads, the Targa Florio road race, again in the 300 SLR, and the Tourist Trophy at Dundrod.
For four years he would finish runner-up in the Formula 1 Drivers World Championship, his sportsmanship at the Portuguese GP allowing Mike Hawthorn to win the 1958 Championship title by half a point at his expense.
After Mercedes-Benz retired from motor racing following the 1955 Le Mans tragedy, Stirling led the Maserati and Vanwall teams. He raced 107 different types of car, across all classes of motor sport, during his remarkable career.
In the late 1950s and early 1960s, he led the changeover to rear engined Formula 1 cars with the Cooper-Climax, achieving the first victory for such a car at the 1958 Argentine Grand Prix, and was in a class of his own during this period. His victory in the 1961 Monaco Grand Prix, racing a Lotus 18 against the more powerful Ferrari’s, was his third Formula 1 victory around Principality and is still regarded as one of the best Formula 1 races ever.
Between 1954, his first year with what Stirling considered a proper Formula 1 car, the Maserati 250F, and 1962, he took part in 318 races of all types, finished in 225 of them, and bear in mind cars were not reliable in those days, and won 134.
He drove a Ferrari on 14 occasions, winning 12 of the races entered and taking 10 fastest laps. Of the remaining two races, he was disqualified at Sebring because the mechanics put in fuel when in fact the car had come in for brake linings, and in the 1961 Le Mans the radiator hose was cut by a fan blade when he was third overall and leading the GT Class.
Stirling drove for Rob Walker from 1958 to 1962, taking part in 93 races, finishing 70 of them with 46 first places, and also drove a Maserati in 72 races, finishing in 50 with 25 first places and 31 lap records. Out of the 375 competitive races in which he finished during his professional racing career, he won an astonishing 212, which is more than one win in two! A near-fatal accident at Goodwood in 1962 ended it all.
Once the decision to retire from professional motoring racing was made, Stirling expanded his commercial interests with the same vigour that he employed when racing, chief amongst these being his property business, which he runs to this day with his family. He also designed his home in Mayfair which incorporated home comforts and gadgets which were ahead of their time in the 1960s, including an automated system for running a bath at a pre-set temperature, which could be triggered by pushing a button on one of many control panels located around the house. He continued to race in historic racing, his familiar White patey helmet and Blue light weight race suit being a regular feature at historic races across the globe.
Stirling is well known for his love of design and the latest gadget. In 2009 the Stirling Moss brand was created, see above, which has led to the brand being licensed. During qualifying for 2011 Le Mans Legends race Stirling made the decision to retire from competitive racing. He continues to demonstrate the cars he raced and take part in car rallies.
One of the original jet-setters, he remains in huge demand around the world to this day – a true British legend.
You can read more about Stirling Moss on Wikipedia


In this miniproject, we are going to develop a web application that fetches information from a Twitter account using a REST API via OAuth1, storing it in a MongoDB instance on the Cloud using mLab. Our application will then obtain some business intelligence from the data extracted using the Java MongoDB API from Groovy (via GMongo).
The codebase, implementing the skeleton of the web app, facilitated to do the miniproject is built atop the Spring MVC framework using Groovy for implementing the logic and JavaServer Pages for implementing the views.
This is an individual piece of coursework that is assessed. Plagiarism, including collusion, is penalized. For further information check the section Referencing and Academic Integrity in the BSc handbook.
By submitting your solution, you are stating that you are aware of the consequences, as summarized in the Declaration of Academic Honesty that you signed already, and that the solution provided for the worksheet is the result of your sole individual work.
CO7X17.miniproject1
under partI
in the local copy of your private repository.Gradle Buildship 2
.There are several clients for the Twitter API that allow us to query data on Twitter. We are going to make calls to the REST API directly via twurl copying data in bulk once.
The data migration process is achieved by executing from a shell terminal the command ./twitterMigrate.sh
. The script will show a URL which should be pasted on to a browser and the PIN obtained should be pasted on the terminal. Once authorization is successful, friends and follower's tweets will be filtered and copied onto your MongoDB database on mLab (once you finish exercise 1).
The script will not work straight away. Please configure it as follows:
./twitterMigrate.sh
. If you are working on Windows, follow these instructions.twurl
, to connect to the Twitter REST API, as described here. You may need to install Ruby Gems.jq
, to pretty print JSON in files (optional), as described here
| jq .
from the commands in the script ./twitterMigrate.sh
./twitterMigrate.sh
on a Bash shell.
10
records when calling the Twitter API (i.e. return the first 10 friends or the first 10 tweets)../twitterMigrate.sh 20
.In class miniproject1.mongoDb.BulkTransfer
, implement the code necessary to transfer data from the stored JSON files in your MongoDB
instance on mLab
. The database should contain two collections of documents:
friends
: containing information about friends and their tweets.followers
: containing information about followers and their tweets.Take into account the following requirements:
Denormalization is going to be applied and a user may be stored in both collections and, therefore, their tweets will also be stored twice.
Each user (friend or follower) must contain its tweets in a new field tweet
.
Store the following information about friends and followers
id_str,
name,
description,
favorites_count,
followers_count,
friends_count,
language,
location,
screen_name,
url,
utc_offset
Store the following information about tweets
id_str,
created_at,
entities,
favorite_count,
favorited,
user.id_str,
in_reply_to_screen_name,
in_reply_to_status_id,
in_reply_to_user_id,
language_code,
retweet_count,
retweeted,
source,
text
To fetch JSON documents from Twitter for testing your scripts without pushing them to your MongoDB instance, comment the line ./gradlew migrateToMongoDb
in the shell script twitterMigrate.sh
using #
, that is:
# ./gradlew migrateToMongoDb
The migration process must be executable by running ./twitterMigrate 10
from a shell terminal. If there are compilation/runtime errors or this command cannot be executed for other technical reasons, a mark of 0 (zero) will be awarded.
The implementation of functional requirements will be marked as follows:
./twitterMigrate 10
executes without problems, doing what it is intended to do. [10 marks] In the controller IndexController
, add code to the handler method followers
in order to list all your follower that have tweets that mention martinfowler
, i.e. screen_name=='martinfowler'
for an entity user_mentions
in a tweet published by your follower.
The controller must get the information from the data on your MongoDB instance on mLab, and not from the JSON files directly.
For the sample data provided in src/main/resources/twitter/
, the result should be:
The web app must be executable by using ./gradlew bootRun
. If there are compilation errors or this command cannot be executed for other technical reasons, a mark of 0 (zero) will be awarded.
The implementation of functional requirements will be marked as follows:
In the controller IndexController
, add code to the handler method friends
in order to mine some intelligence about your Twitter account:
For each friend, add an object FriendDto
into the list friends
with the following information:
name
: your friend name
description
: your friend descriptionnoTweets
: their number of tweets (up to 10)noRetweets
: the overall number of retweets (aggregated retweet count for all tweets) for their selected tweets (those fetched from twurl or in the sample files)noActiveTweets
: the number of tweets that have caused discussion (whose whose retweet count is greater than 100) for their selected tweets (those fetched from twurl or in the sample files)The controller must get the information from the data on your MongoDB instance on mLab, and not from the JSON files directly.
For the sample data provided in src/main/resources/twitter/
, the result should be:
The web app must be executable by using ./gradlew bootRun
. If there are compilation errors or this command cannot be executed for other technical reasons, a mark of 0 (zero) will be awarded.
The implementation of functional requirements will be marked as follows:
name
, description
and noTweets
extracted correctly for up to 10 friends. [5 marks] noRetweets
extracted correctly for up to 10 friends. [7.5 marks] noActiveTweets
extracted correctly for up to 10 friends. [7.5 marks] Discuss the architecture of Twitter from an scalability point of view, after watching this presentation on Real-Time Delivery Architecture at Twitter by Raffi Krikorian at that time working for Twitter. Specifically:
Other references that may be helpful are:
Note that you are invited to do some research of your own.
Submit your project using git. Your project should be placed under folder partI
in your private repository. That is, your project must be found at partI/CO7X17.miniproject1
in your repository on GitHub:
./twitterMigrate.sh 10
and ./gradlew clean bootRun
must run without compilation/runtime errors.
./gradlew migrateToMongoDb
must work after copying the files src/main/resources/twitter/*
to the root folder CO7X17.miniproject1
. These are the files that will be used for testing your solution.partI/CO7X17.miniproject1/essay.pdf


Charlie Taylor signs new four-year Burnley deal
Defender Charlie Taylor believes Burnley will benefit from the peak years of his career after signing a new contract at Turf Moor.
The 26-year-old left-back, who joined the Clarets from Leeds in the summer of 2017, made his 50th Premier League appearance earlier this season and has now committed his future until 2023.
"I've thoroughly enjoyed my time here so far and I'm looking forward to the next few years ahead," he said.
"The next few years are hopefully the peak years of my career. I've signed up to Burnley to spend them here and hopefully the best years are to come.
"Ever since I made my debut in the Premier League I've wanted to stay here. I think once you have a taste of the Premier League you don't want to go anywhere else.
"We have been in the Premier League since I arrived and that's where I want to stay."
Taylor, whose existing deal was due to run until 2021, is the third player to recently sign a new contract after forwards Ashley Barnes and Chris Wood.
He featured in every Premier League match in the previous campaign but has faced competition from Erik Pieters this season and has made just three appearances, with his only start coming last time out against West Ham with his rival out injured.
"I've said before that all any professional wants to do is play. It's been frustrating at times, but it's also been worth it," added Taylor.
"We have a very competitive squad, which bodes well for now and the future, and I'm delighted that I'm going to be part of it for the future."
body check tags ::


This playground contains sample code to explore SQLite.swift, a Swift wrapper for SQLite3.
Let’s get started by importing the framework and opening a new in-memory database connection using the Database class.
Database


This bibliographic record is available under the Creative Commons CC0 public domain dedication. The New College of Florida Libraries, as creator of this bibliographic record, has waived all rights to it worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.
Format:
application/pdf
Source
Preferred Citation:
"News Release (March 20, 1966)", NCF Special Formats, DSS


Dr. Norman Borlaug
The man who saved a billion lives
- 1914 - Born in Cresco, Iowa
- 1933 - Leaves his family's farm to attend the University of Minnesota, thanks to a Depression era program known as the "National Youth Administration"
- 1935 - Has to stop school and save up more money. Works in the Civilian Conservation Corps, helping starving Americans. "I saw how food changed them", he said. "All of this left scars on me."
- 1937 - Finishes university and takes a job in the US Forestry Service
- 1938 - Marries wife of 69 years Margret Gibson. Gets laid off due to budget cuts. Inspired by Elvin Charles Stakman, he returns to school study under Stakman, who teaches him about breeding pest-resistent plants.
- 1941 - Tries to enroll in the military after the Pearl Harbor attack, but is rejected. Instead, the military asked his lab to work on waterproof glue, DDT to control malaria, disenfectants, and other applied science.
Here's a time line of Dr. Borlaug's life:
"Borlaug's life and achievement are testimony to the far-reaching contribution that one man's towering intellect, persistence and scientific vision can make to human peace and progress."
-- Indian Prime Minister Manmohan Singh


{% load static %} DEEP SEE CRIME {% if user.is_authenticated %} Search Notifications Mike John responded to your email You have 5 more tasks Your friend Michael is in town Another notification Another one Log out Profile Log out {% endif %}
Notifications
Log out


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/timeout.20universe.20issue.html ---
I have spent many hours over the last few weeks trying to make this compile (from deep within the perfectoid project):
noncomputable def valuation_on_completion {R : Type*} [comm_ring R] (v : valuation R Γ) : valuation (ring_completion (valuation.valuation_field v)) (value_group v) := valuation.completion_extend (valuation_field.canonical_valuation v)
I would get deterministic timeouts which were extremely hard to debug.
Today I idly changed Type*
to Type u
and all the issues immediately went away.
Thanks Lean.
@Simon Hudon @Mario Carneiro is this a known bug in Lean 3.4.2? Can this be fixed in Lean 3.5c? I know Kenny found some universe weirdness but I didn't remember it being as harsh as this.
I don't really know what this is
Kenny also had an example where elaboration behaved differently when universes were mentioned explicitly. We've been struggling with a "heavy rfl
" for days now, and today it just magically went away when I randomly tried this. We were on the verge of proclaiming that perfectoid spaces created terms which type class inference simply could not handle, but then all our problems seemed to magically go away when I switched. This issue has been kind of a big deal in my life over the last two weeks and I'm extremely glad to see the back of it.
Did the Type*
fill it in correctly. I had this problem where it guessed max u v
instead of w
.
also how many universe variables are actually in the statement?
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


{% load helper_tags_team %}
| Shipment Date | LR Number | Customer to be Billed | From | To | Lorry Number | POD Date | Total Amount |
|---|---|---|---|---|---|---|---|
| {{ booking.shipment_date|date:'d-M-Y' }} |
{% if booking.booking_id|slice:'0:3' == 'BRO' %}
{{ booking.booking_id }}
{% else %}
{% for lr in booking.lr_numbers.all %}
{{ lr.lr_number }} {% endfor %} {% endif %} |
{{ booking.customer_to_be_billed_to.get_name }} | {{ booking.from_city }} | {{ booking.to_city }} | {{ booking.lorry_number }} | {{ booking.pod_date|date:'d-M-Y' }} | {{ booking.total_amount_to_company }} |


Minimal
I am a toast, nice to meet you!
ProgressBar
LOOK
See, how long i will last
Toast Type
You're using the good framework!
An error occured!
Behind you!
Toast Type
You will see me for 5 seconds.
I'll stay here until you click on me!
Awesome
I got my style from the message class
LOOK
See, how long i will last
Hey, where is my icon?
Listen to me
Click on the X to close me


Post content is parsed using Markless, with some special extensions. Here's a basic rundown of the Markless syntax:
**bold**
//italic//
__underline__
<-struck through->
``code``
bold
italic
underline
struck through
code
Markless is a lot more intuitive and easy to write than HTML. For example, lists:
- Some item
- Oh man more
- And a last one,
but on multiple lines!
1.Numbered lists are also possible.
2.Hop, skip, and...
10.Jump!
One of the things you will most likely want to use for text markup is links and images. Markless offers syntax for that as well:
http://example.com
"Link label"(http://example.com)
[ image http://filebox.tymoon.eu//file/TVRRNE1nPT0= ]
Markless automatically segments your code into paragraphs when an empty line is encountered, and respects line breaks where you put them.
Purplish offers a few extra syntax specialties to integrate better. The additions are greentexting, post references, and youtube embeds.
Greentext and references work as is normal for imageboards.
> greentexting in TYOOL <current year>
>>10
>>/fab/
Aside from images, audio, and video that Markless has support for out of the box, you can embed Youtube like this:
[ youtube https://www.youtube.com/watch?v=oVeMn5xBwj0 ]
For a more complete tutorial of Markless, please see the official website.


CCNA
Table of Contents
1 Exploring the Functions of Networking
1.1 Network Devices
- Endpoints
- Intermediary devices
a. Switches - enable multiple endpoints such as PCs, file servers, printers, sensors, cameras, and manufacturing robots to connect to the network.
b. Routers - connect networks and intelligently choose the best paths between networks.
c. APs - allow wireless devices to connect to a wired network.
d. WLCs - used by network administrators or network operations centers to facilitate management of many APs.
e. Next-generation firewalls (NGFW) - network security systems that monitor and control the incoming and outgoing network traffic based on predetermined security rules.
f. Intrusion Protection System (IPS) - a system that performs deep analysis of network traffic, searching for signs that behavior is suspicious or malicious.
g. Management Services - A modern management service offers centralized management that facilitates designing, provisioning, and applying policies across a network.
1.2 Characteristics of a Network
- Topology
- Bitrate or Bandwidth
- Availability
- Reliability
- Scalability
- Security
- Quality of Service (QoS)
- Cost
- Virtualization
1.3 Topology
1.3.1 physical topology
- Bus
- Ring
- Star
- Mesh
1.3.2 logical topology
the path along which data travels from one point in the network to another.
For example, an Ethernet hub is a legacy device that functions as a central device to which other devices connect in a physical star. The characteristic of a hub is that it "copies" every signal received on one port to all other ports. So a signal sent from one node is received by all other nodes. This behavior is typical of a bus topology.
1.4 Qos
- Interactivity
- Real-time responsiveness
- Amount of data generated
- Burstiness
- Drop sensitivity
- Criticality to business
2 The Host-To-Host Communications Model
In a communication model, a layer does not define a single protocol–it defines a data communication function that may be performed by any number of protocols. Because each layer defines a function, it can contain multiple protocols, each of which provides a service suitable to the function of that layer.
2.1 layered models
- Make complexity manageable by breaking communication tasks into smaller, simpler functional groups.
- Define and specify communication tasks to provide the same basis for everyone to develop their own solutions.
- Facilitate modular engineering, allowing different types of network hardware and software to communicate with one another.
- Prevent changes in one layer from affecting the other layers.
- Accelerate evolution, providing for effective updates and improvements to individual components without affecting other components or having to rewrite the entire protocol.
- Simplify teaching and learning.
telephone networks were built using separate equipment and implemented a different set of protocols and standards. Over the years, computer networking evolved such that IP became a common data communications standard and the technology has been extended to also include other types of communication, such as voice conversations, and video.
Layers 5 to 7, or upper layers, are concerned with user interaction and the information that is communicated, its presentation and how the communication proceeds. Layers 1 to 4, the lower layers, are concerned with how this content is transferred over the network.
- Layer 1: The physical layer defines electrical, mechanical, procedural, and functional specifications for activating, maintaining, and deactivating the physical link between devices.
- Layer 2: The data link layer defines how data is formatted for transmission and how access to physical media is controlled.
- Layer 3: The network layer provides connectivity and path selection beyond the local segment, all the way from the source to the final destination.
- Layer 4: The transport layer defines segmenting and reassembling of data belonging to multiple individual communications, defines the flow control, and defines the mechanisms for reliable transport, if required.
- Layer 5: The session layer establishes, manages, and terminates sessions between two communicating hosts, to allow them to exchange data over a prolonged time period.
- Layer 6: The presentation layer ensures that data sent by the application layer of one system is "readable" by the application layer of another system.
- Layer 7: The application layer is the OSI layer that is closest to the user. It provides services to user applications that want to use the network.
- Link layer: This layer is also known as the media access layer. It defines protocols used to interface the directly connected network.
- Internet layer: This layer routes data from the source to the destination, provides a means to obtain information on how to reach other networks, and deals with reporting of errors.
- Transport layer: Along with the Internet layer, this layer is the core of the TCP/IP architecture. It is placed between so called "data mover" protocols of the Link and Internet layers and software-oriented protocols of the Application layer.
- Application layer: The functions of this layer mainly deal with user interaction.
The data processing that happens as data traverses the protocol stack alters the initial data, which means that original application data is not the same as the data represented in the electromagnetic signal transmitted, the data received as the electromagnetic signal is different to the data that will be delivered to the application. But the data that the application sees is the same data that the sending application created.
2.2 Encap and De-Encap
Encapsulation increases the size of the PDU. The added information is required for the handling of the PDU and is called overhead to distinguish it from user data.
3 Operating Cisco IOS Software
- out-of-band (OOB) access
Accessing a device CLI through a console connection is also called out-of-band (OOB) access, emphasizing that no network bandwidth is consumed in the process.
- in-band access
Because Network-based access connections(SSH&Telnet) consume network bandwidth, they are also called in-band access.
Cisco IOS Software is designed as a modal operating system. The term modal describes a system that has various modes of operation. Each mode has its own set of commands, and command history, and is intended for usage for a specific group of tasks.
To access interface configuration commands, your full path through operation mode hierarchy would be: User EXEC Mode > Privileged EXEC Mode > Global Configuration Mode > Interface Configuration Mode.
| Mode | Access Method | Prompt Example | Exit Method | About This Mode |
|---|---|---|---|---|
| User EXEC Mode | Begin a session with your device. | Switch> | Enter logout, exit, or quit. | Use this mode to change terminal settings, perform basic connectivity tests, or display system information. |
| Privileged EXEC Mode | While in user EXEC mode, enter the enable command. | Switch# | Enter disable or exit. | Use this mode to verify commands that you have entered and to enter configuration modes. Use a password to protect access to this mode. |
| Global Configuration Mode | While in privileged EXEC mode, enter the configure terminal command. | Switch(config)# | To return to Privileged EXEC Mode, enter exit or end, or press Ctrl-Z. | Use this mode to configure parameters that apply to the entire device. |
| Interface Configuration Mode | While in global configuration mode, enter the interface command followed by interface label of the interface you wish to configure. | Switch(config-if)# | To return to the Global Configuration Mode, type exit. Then to return to the Privileged EXEC mode, press Ctrl-Z or type exit or end. | Use this mode to configure parameters for the device interfaces. |
4 Question bank
4.1 Which two statements about the Cisco IOS Software CLI are true? (Choose two.)
You can always enter any command, regardless of the mode you are in.
You can easily tell which command mode you are in because each mode has a distinctive prompt.
When you finish typing in a command, you have to press Enter to execute it.
By default, every prompt begins with the name of the mode.
If you do not have authorization to access the Privileged EXEC Mode, the CLI will allow you to view the Privileged EXEC Mode commands, but not to execute them.
4.2 Which statement about the CLI operation modes is correct?
To change from the Privileged EXEC Mode to the Interface Configuration Mode, you have to type the configure terminal command first and then type the interface command.
To change from the User EXEC Mode to the Interface Configuration Mode, you have to type interface command.
By typing the exit command, you leave the Interface Configuration Mode and go to the Privileged EXEC Mode.
By typing the end command, you leave the Interface Configuration Mode and go to the User EXEC Mode.
5 Vocabulary
| Vocabulary | 含义 |
|---|---|
| revive | 苏醒 |
| resilient | 有弹性的 |
| tier | 层 |
| spine | 主干 |
| hierarchical | 有等级的 |
| integral | 必需的 |
| lease line | 专线 |
| satellite | 卫星 |
| dependability | 可靠性 |
| converged networking | 融合网 |
| exclusive | 专有的 |
| proprietary | 专利的 |
| inevitably | 不可避免地 |


Me Divider, just plain ol' HTML nested in the list directive.
Individual item directive, but can't do much. Overrides list attributes with its own left and right icons.
Individual item directive and overrides list attrs with item attributes
Below is NOT using the item directive, but just nested HTML
Nic Cage
I am not a demon. I am a lizard, a shark, a heat-seeking panther. I want to be Bob Denver on acid playing the accordion.


The notion of asynchronity in JavaScript is an unavoidable concept that is unfortunately not well understood by beginners. It can reasonably be argued that understanding its principles is an important step in learning JavaScript. In order to better understand the concept of asynchronicity, I invite you to study the script code in this example, then execute it by clicking on the button below, and observe what is displayed in the console.
Don't get frustrated because this subject can be really hard to understand, so I recommend reading more to understand the concept fully.


Allison Moorer: Blood review – an aching, moving testimony
by Neil Spencer(Autotelic/Thirty Tigers)
One summer night in 1986, teenage sisters Shelby and Allison Moorer were woken in their Alabama home by gunshots. It was the sound of their father shooting their mother dead before turning the gun on himself. The horror and trauma of the event has haunted the sisters’ songs intermittently during their respective successful careers (Shelby Lynne, the elder, using her middle name as surname), but Blood, Allison Moorer’s ninth solo album, is the first to address the tragedy and its fallout in detail, a companion piece to her newly published memoir of the same title.
Its 10 songs are stark but powerful, their anguish and insight given a deft, minimalist treatment by producer Kenny Greenberg. Opener Bad Weather evokes a brooding, southern gothic atmosphere; Cold Cold Earth, sung raw and solo, describes her parents’ last hours; and Nightflight tenderly describes the bond between the sisters, left cowering that night. The lyrics to I’m the One to Blame came from their father, an embittered songwriter, while their beloved mother is given voice in The Rock and the Hill. From tragedy, Moorer somehow finds compassion and resolution amid the inescapable bonds of a shared bloodline. An aching, moving testimony, beautifully realised.


I have acquired valuable experience in many areas of customer service, including account resolution, technical troubleshooting, up-selling and customer retention. I am best at delivering highly technical information into terms and concepts that the end users can readily grasp.
Develop, maintain and improve customer relations, provide information on digital products offered by Snap, Website sales, Technical support (both internally and to external customers), Website Content maintenance, content creation, digital marketing, social networking, website troubleshooting, HTML coding, graphic design, Filing and organising accounts, Entering accounts in MYOB, Various office duties.
Handle customer and contractor enquiries, Complaint resolution, Use of internal computer programs as well as Outlook, IE and Excel, Develop, maintain and improve customer and contractor relations, Provide technical support for service issues and connection of new equipment, Service activation, Billing and Account enquiries, Programming enquiries, Provide technical support to customer and contractors.
Handle customer and dealer enquiries, Provide solutions for customers and dealers, Credit assessment, Transfer of ownership, Assisted with training of new staff, Use of internal software, technical support to clients regarding use of mobile phones, billing and account enquiries, service activation.
Information Systems, Information Fundamentals, Information Methods, Programming Concepts, Information Design.
Introduction to Information Technology, Introduction to Programming (Java), Database Concepts, Programming 1 (Java), Software Engineering Fundamentals, Programming 2 (Java), Photographic Digital Imaging, Flash Animation, Introduction to Web Design, Web Programming (HTML, CSS, JavaScript, PHP) and Digital Imaging with PhotoShop.


s6
Software
skarnet.org
The s6-ipcserverd program
s6-ipcserverd is the serving part of the
s6-ipcserver super-server.
It assumes that its stdin is a bound and listening Unix
domain socket, and
it accepts connections from clients connecting to it, forking a
program to handle each connection.
Interface
s6-ipcserverd [ -1 ] [ -v verbosity ] [ -P | -p ] [ -c maxconn ] [ -C localmaxconn ] prog...
- s6-ipcserverd accepts connections from clients to an already
bound and listening SOCK_STREAM Unix domain socket which is its
standard input.
- For every client connection to this socket, it
forks. The child sets some environment variables, then
executes prog... with stdin reading from the socket and
stdout writing to it.
- Depending on the verbosity level, it logs what it does to stderr.
- It runs until killed by a signal. Depending on the received
signal, it may kill its children before exiting.
Environment variables
For each connection, an instance of prog... is spawned with
the following variables set:
- PROTO: always set to IPC
- IPCREMOTEEUID: set to the effective UID of the client,
unless credentials lookups have been disabled
- IPCREMOTEEGID: set to the effective GID of the client,
unless credentials lookups have been disabled
- IPCREMOTEPATH: set to the path associated with the remote socket,
if any. Be aware that it may contain arbitrary characters.
- IPCCONNNUM: set to the number of connections originating from
the same user (i.e. same uid)
If client credentials lookup has been disabled, IPCREMOTEEUID and
IPCREMOTEEGID will be set, but empty.
Options
- -1 : write a newline to stdout, and close stdout,
right before entering the client-accepting loop.
If stdout is suitably redirected, this can be used by monitoring
programs to check when the server is accepting connections. See
this page for more information on
readiness notification.
- -v verbosity : be more or less
verbose. verbosity can be 0 (quiet), 1 (normal), or 2
(verbose).
- -P : disable client credentials lookups. The
IPCREMOTEEUID and IPCREMOTEEGID environment variables will be unset
in every instance of prog.... This is the portable option,
because not every system supports credential lookup across Unix domain
sockets; but it is not as secure.
- -p : enable client credentials lookups. This
is the default; it works at least on Linux, Solaris, and
*BSD systems. On systems that do not support it, every connection
attempt will fail with a warning message.
- -c maxconn : accept at most
maxconn concurrent connections. Default is 40. It is
impossible to set it higher than 1000.
- -C localmaxconn : accept at most
localmaxconn connections from the same user ID.
Default is 40. It is impossible to set it higher than maxconn.
Signals
- SIGTERM: exit.

- SIGQUIT: send a SIGTERM and a SIGCONT to all children, then exit.
- SIGABRT: send a SIGKILL to all children, then exit.
Notes
- Unlike his close cousin
ipcserver,
s6-ipcserverd does not perform operations such as access control. Those are
delegated to the
s6-ipcserver-access program.
- s6-ipcserverd can be used to set up
local services.
- s6-ipcserverd is meant to be execve'd into by a program that gets
the listening socket. That program is normally
s6-ipcserver-socketbinder,
which creates the socket itself; but it can be a different one if the
socket is to be retrieved by another means, for instance by fd-passing
from a fd-holding daemon (some people call this "socket activation").


On 26 June 2018, 3 new articles were published in 3 journals.
Estimating Money Laundering Risks: An Application to Business Sectors in the Netherlands
Extraction and Isolation of Cannabinoids From Marijuana Seizures and Characterization By 1h Nmr Allied to Chemometric Tools
The Turkish Foreign Fighters and the Dynamics Behind Their Flow Into Syria and Iraq by Murat Haner, Ashley Wichern, Marissa Fleenor


Introduction
Influencer marketing is getting year by year more important. Although effective today influencers with more than 100k are often overpaid and are un reacheable turning long term collaborations impossible. There is a new opportunity now on Microinfluencers and Nanoinfluencers.They are:
Reviews
In 2019 all businesses are turning into online businesses de facto. Reviews are fundamental to prompt new clients into your new restaurant, venue or any other local activity. To be really effective we generate reviews across all the most important reviewing platforms.
Plans
10% discount on 20 reviews per month
15% discount on 30 reviews per month
20% discount on 80 reviews per month


Before you start to book an appointment please check your details are correct.
Check your Details
Help? If your personal details are incorrect, please contact your GP practice.
Before you start to book an appointment please check your details are correct.
Help? If your personal details are incorrect, please contact your GP practice.


fun eachLocation(callback: (Location) -> Unit): Unit
callback - pass a function that we'll call and pass a location in
callback


Custom tasks are orange
Cleaners are sorted by when they were last active.
DELETE
{{cleaner.name}} | {{cleaner.phonenumber | phonenumber}} | {{cleaner.lists.length}} Lists
Last active: {{cleaner.last_active | date:'short' }}
{{list.name || 'UNTITLED'}}
{{list.location || 'LOCATION'}}
{{list.phonenumber || 'PHONENUMBER'}}
Last modified {{list.last_modified | date:'short' }}
{{list.rooms.length}} rooms
Price: {{list.price || 'Not set'}}
Notes
{{list.notes}}
{{room.name}} ({{room.count || 1}})
- {{task.name}}


Money Play. Should Red double? If doubled, should White take?
pips Red=147 White=163
(CorrectAnswer= 0/0, ErrorScore= 0)
I thought it was time for a reference position. Positions of this genre can be found in Kit Woolsey's “The Backgammon Encyclopedia” Chapter 1.
This one is no double (only just) and easy take. If White's blot on Red's 2-pt were on Red's 4-pt it would be double/take because the blot is easier to attack there and when the point is made it is a better point than the 2-pt.
Anyone not familiar with these early blitz reference positions should get a copy of Woolsey's book - it is gold dust.
This one is no double (only just) and easy take. If White's blot on Red's 2-pt were on Red's 4-pt it would be double/take because the blot is easier to attack there and when the point is made it is a better point than the 2-pt.
Anyone not familiar with these early blitz reference positions should get a copy of Woolsey's book - it is gold dust.
Cube analysis 2-ply cubeless equity +0.503 (Money: +0.512) 0.711 0.140 0.004 - 0.289 0.051 0.001 Cubeful equities: 1. Double, take +0.756 2. Double, pass +1.000 (+0.244) 3. No double +0.729 (-0.027) Proper cube action: Double, take


Portfolio
Portfolio rate of return price change of portfolio of stocks over the time period. Rate of return is calculated for stocks of equal weights in a portfolio.
Usage
Input the companies ticker symbols and dates of a period you want to analyze.
{{error_msg}}
{% endif %}


Chris' Four-Bean Chili
We're gonna make ...
My grandpappy used to make this chili over the campfire under the Texas stars. The secret ingredient was a little squeeze of scorpion venom in the pot, which made it poisonously good.
What you'll need
Please checkmark all the ingredients you have. Anything missing? Go and buy them, I'll wait for you here.
Have everything? Continue!Directions
- Get your filthiest campfire-scorched Dutch oven over the fire the best you can situate it. Brown the bison. Add the diced onion and spices, sautee until soft.
- Add tomatoes and broth and bring to a simmer for 40 minutes. Add beans and cook another 30 minutes.
- After that, taste, and adjust salt, pepper, and chili powder if necessary. If you have other spicy ingredients that suit you best, go for it.
- The longer the chili simmers, the better it will taste. Remove from heat and serve, or refrigerate, and serve the next day.
- Serve with Tabasco and a giant spoon.


Students
The Institute is organized as research groups and education programs, and has not maintained strong department boundaries. However, faculty can be broadly grouped according to their disciplines which are given below. Apart from those listed below, the institute also has Post Doctoral Fellows, PhD Students and Student Members in various disciplines.


An example of snapScroll.js, using a bounce animation.
It works on elements of any height...
...or width.
Snapping to your chosen elements.
Easy peasy!


Cancel
Confirm


Once there was a girl named Jenny.
She was like all the other girls,
except for one thing.
She always wore a green ribbon
around her neck.
Scroll down to progress through the story
Hover over the bubble to uncover the tale
The story will unveil here.
There was a boy named Alfred in her class.
Alfred liked Jenny, and Jenny liked Alfred.
One day he asked her: "Why do you wear that ribbon all the time?"
"I cannot tell you." said Jenny.
But Alfred kept asking: "Why do you wear it?"
And Jenny would say: "It is not important."
Jenny and Alfred grew up and fell in love.
One day they got married.
After their wedding, Alfred said:
"Now that we are married, you must tell me about the green ribbon"
"You still must wait" said Jenny.
"I will tell you when the right time comes."
Years passed. Alfred and Jenny grew old.
One day, Jenny became very sick.
The doctor told her she was dying.
Jenny called Alfred to her side.
"Aldred" she said, "now I can tell you about the green ribbon."
"Untie it, and you will see why I could not tell you before."
Slowly and carefully, Alfred untied the ribbon...


--- layout: master title: Home description: Home Page for Jekyll Metro Theme ---
Having completed my undergrad from IIT Jodhpur in Computer Science and Engineering...
{{ post.content | strip_html | truncatewords: 10 }}


{% extends 'base.html' %} {% block content %}
Do you ever wake up in the middle of the night to right something?
Do you ever feel like opening up somewhere without anyone to judge?
Well thats how I started my poetry journey
Everyone needs a friend and having somewhere to write and rant about your issues could be the best place. Well, lets walk together in this journey and learn much much more.
© Copyright 2018 Victoria Mutai
Contact me at: My Email
Phone Number:<PHONE_NUMBER>


A table showing the minimum version required for various functions of the cardmaker:
|
Woff
Web open fonts. These power the fonts on the cardmaker. |
9.0 | 3.6 | 5.0 | 5.1 | 11.1 |
|
HTML5 Canvas
Used to draw the blank card. |
9.0 | 2.0 | 4.0 | 3.1 | 9.6 |
|
Advanced image functions
Functions such as rotating images. |
9.0,10.0 | 3.5,16.0 | 4.0,36.0 | 3.1 | 10.5,23.0 |


Pose
I need questions for a
Head Recruiter
including
logic questions
Custom & contemporary industry-level questions, straight to your inbox
Receive monthly questions & answers on your chosen topics
for
$5
/month


PNGJ: a pure Java library for PNG image encoding/decoding
Main features:
- Very efficient in memory usage and speed.
- Pure Java (requires 5 or greater).
- Small and self contained. No dependencies on third party libraries, nor even on
java.awt.*/javax.imageio.*
- Runs on GAE (Google App Engine) and Android
- Allows to read/write progressively, row by row. This means that
you can process huge images without needing to load them fully in memory.
- Reads all PNG color models (true color, gray, palette, all bit depths: 1-2-4-8-16,
with-without alpha). Interlaced PNG is supported (though not welcomed).
- Writes all PNG color models - interlaced PNG writing is not supported.
- Full support for metadata (CHUNKS) handling.
- Supports (since 2.0) asyncronous reading.
- The format of the pixel data (read and write) is extensible (since 2.0)
and very efficient (no double copies).
- Supports (since 2.0) low level tweaking and extension in the reader.
- Open source (Apache 2.0 licence)
Note that this is a relatively low-level library.
It does not provide any high-level image processing (eg, resizing,
colour conversions), nor tries to abstract the concrete image format
(as BufferedImage does, for example). In particular, the default format
of the scanlines (as wrapped in ImageLineInt or ImageLineByte) is not
abstract, the meaning of the values depends on the image color model and bitdepth.


M2CSEA - Multicriteria Microservice Criticality Suggestion for Established Architectures
Home
Interdependence Verification
Tech Debit Verification
Resouce Usage Verification
Response Time Verification
Availability Verification
Unit Test Coverage Verification
Ranking
Multiple Criteria
Response Time Verification
Most Critical Microservice:
Microservices
Status
Average
Average Last 7 Days
Average Last 30 Days