Agong stops to offer royal roadside assistance at scenes of two car crashes (VIDEO)
by BY R. LOHESWARKUALA LUMPUR, Nov 8 — Yang di-Pertuan Agong Sultan Abdullah Ri’ayatuddin Al-Mustafa Billah Shah put all protocol aside once more today to personally check on the victims of two separate traffic accidents.
In two minute-long videos posted on Istana Negara’s official Instagram account, the Agong is shown leaving his limousine twice after his motorcade encountered the accidents on the way back from a pre-Cabinet meeting with Prime Minister Tun Dr Mahathir Mohamad this morning.
The first accident involved a young man whose car was seen facing the wrong direction and with its bumpers damaged. The driver appeared uninjured when the Agong approached him to ask after him.
Sultan Abdullah clambered over the divider to reach the car to speak to the driver.
The second accident was of a young couple whose car appeared to have veered into the divider about 500m from the Putrajaya MEX toll booth.
On the Instagram post, the Agong advised Malaysians to drive carefully when in heavy rain in order to avoid accidents.
Since his coronation, Sultan Abdullah has demonstrated an uncanny ability to come across traffic accidents and has repeatedly stopped to check on the conditions of the victims and to offer assistance.


Friday Deal of the Day Promo
Top Seller Promo
April Fools Day Email Promo
Football Season Vendor Promo


HTTP/1.1 301 Moved Permanently Content-Type: text/html; charset=UTF-8 Location: https://www.shopgoodwill.com/Item/47947780 X-Frame-Options: SAMEORIGIN Strict-Transport-Security: max-age=16070400; includeSubDomains Date: Fri, 19 Jan 2018 23:51:04 GMT Set-Cookie: BNI_persistence=00000000000000000000000022c6410a0000bb01; Path=/ Strict-Transport-Security: max-age=31536000 Transfer-Encoding: chunked


{% extends "base.html" %} {% block content %} Activation has failed. Please re-register. {% endblock %}


Latest News: October contest underway. Click here to participate.
Upcoming Contest
Keep Checking This Place for upcoming contests...
September 2011
Add Sample descriptor text here. Add Sample descriptor text here.
Current Contest
Participate Now!!!
September 2011
Add Sample descriptor text here.Add Sample descriptor text here.
Past contests
Have a look at the previous contests
Add descriptor text here.Add descriptor text here.Add descriptor text here.
September 2011
Add descriptor text here.Add descriptor text here.Add descriptor text here.
Optimal Design
Add descriptor text here.Add descriptor text here.Add descriptor text here.Add descriptor text here.Add descriptor text here.Add descriptor text here.
Power Design
Add descriptor text here.Add descriptor text here.Add descriptor text here.Add descriptor text here.Add descriptor text here.Add descriptor text here.


RTL
The change that might have some of the biggest implications to migrating sites is the adoption of RTL or Right to Left classes and multiple version of Bootstrap to add this capability.
RTL Classes
-start
and-end
- TRBL -> TEBS
- Optional Install
- Search and Replace
Bootstrap has a lot of classes like for example, the margin and padding classes which assume that you want to add spacing to one or more sides. Even if you're not using a language that requires an RTL display, horizontal classes now have the new start and end names.
That means that instead of Top, Right, Bottom, Left, you now have to use Top, End, Bottom and Start. It's a bit jarring to get used to doing this.
If you actually WANT the text to load in right to left, you have load a different CSS file, so make sure you look at the install folder for the right version of your project.
Upgrading is not as bad as you think. It's a simple search and replace for the left keyword and the right keyword, but since these classes are everywhere, you'll be doing this a lot.
You can see a good example of it here, Normally, the float CSS property uses the left and right keyword, but in this new version of bootstrap you can see that's been switched to left and right.
Sometimes the words will be spelled out and sometimes the keyword to replace is a single letter. This does make it more challenging to find and replace things though.
Exceptions
Popper.js
data-
attributes- Tooltips/Popovers
Speaker Notes:
Bootstrap uses the Popper.js library to manage how different components work. This library hasn't been updated with the RTL approach so in instances where you'll be using Popper, you'll have to remember to use
This shows up primarily in data attributes where you use javascript to configure and control how popper manages dropdowns.
You can see this at work in tooltips and popovers where the popper.js library uses left and right values that are passed through data properties.


Create a Product!
Name:
Name Error
Company:
Company Error
Cancel
“Let food be thy medicine and medicine be thy food”


{% extends "base_template.html" %} {% block title %} Domain experiment {% endblock %} {% block page_specific_stylesheet %} {% endblock %} {% block page_specific_scripts %} {% endblock %} {% block progress_intro %}{% endblock %} {% block content %}
General
YOUR INFO HERE
Purpose
In this study, we want to examine so-called phishing attacks.
Phishing is the attempt to obtain sensitive pieces of information.
For example, you receive an e-mail stating that you have to log in to your Amazon account to prevent it from being permanently deleted.
The e-mail contains a link to a website that looks similar to the actual Amazon login website.
However, when you enter your login details on this website, you do not log into your Amazon account, but your credentials get stolen.
One way to identify such fake websites is by their domain. A domain is the "name" of a website that tells your Internet browser where to go, e.g., www.amazon.com takes you to Amazon's American website. Cyber criminals often use similar domains (e.g., www.amazen.com) to lure victims on websites under the cyber criminals' control and steal the victim's credentials. This survey aims at understanding how trustworthy humans rate fake domains. We will also ask you to create fake domains to understand how humans create these. Note that all created domains are only used in the context of this scientific study and are not used in real-world phishing attacks.


|
Class Summary |
| ActionConfigContentHandler |
INTERNAL: Parse an XML instance which stores information about the
action configuration which builds up basically action groups hold
inside a so-called action registry. |
| ActionConfigRegistrator |
INTERNAL: Keeps track with registering the action registry object
in the web application scope. |
| ActionConfigurator |
INTERNAL: Provide easy access for reading in an action
configuration file and generating an action registry object from
it. |
| ActionConfigWatchdog |
INTERNAL: |
| ActionData |
INTERNAL: Server-side data carrier for actions that have been sent
to the user and for which we are waiting for a reply. |
| ActionResponseComposite |
INTERNAL: Container to store an action object together with a
action response type, which enables to store the forward
information as a triple consisting of (key: ActionResponseComposite
= action + response type, value: ActionForwardPageIF). |
| ActionSignature |
INTERNAL. |
| ActionUtils |
INTERNAL: Utility methods to ease getting access to action related
objects. |
| AlwaysDifferentObject |
INTERNAL: Used as the value of form controls which are not real
form controls and whose actions need to always execute. |
| ForwardPageResponseComposite |
INTERNAL: Container to store an action forward page object together
with a action response type, which enables to store the forward
information as a triple consisting of (key: forward id, value =
forward page + response type). |
| LockManagers |
INTERNAL: Factory class for getting hold of lock managers. |
| LockResult |
|
| ModelLinkGeneratorWithObjID |
INTERNAL: Link generator which generates a URI link to a model page
(MVS environment) with topic map and object ID included. |
| NamedLock |
INTERNAL. |
| NamedLockManager |
INTERNAL: Class to handle basic lock controlling for objects in the web
editor framework. |
| Parameters |
INTERNAL: This class is used to hide the API difference between
FileUpload and ordinary servlets. |
| ReqParamUtils |
INTERNAL: Utility class for providing helper methods handling
servlet request parameters (mainly for string manipulation
purposes). |
| SchemaUtils |
INTERNAL: Utitlity class for providing help around making topic map
schema support available to the web editor. |
| ScopeStorage |
INTERNAL: Helper class for storing a collection of TopicIF objects
for scope specification as well as a flag which indicates that the
unconstrained scope is allowed. |
| SessionListener |
INTERNAL: Class to listen when sessions are created and destroyed and keep
the associated lock manager up to date. |
| TagUtils |
INTERNAL: Utilities used by the tag classes. |
| TypeStorage |
INTERNAL: Helper class for storing a collection of TopicIF objects
for type specification as well as a flag which indicates that the
untyped type is allowed. |
| UniqueStringCreator |
INTERNAL: Systematically generates strings that are guaranteed not to be
repeated. |


TaNACL heat stress NAC Arabidopsis transgenic wheat transcription tolerance expression Plant levels {border-style genes px;} #ffffff;} Fig lines plants protein Central PMC. PMCID: high response //. Epub [pii]. degradation factors normal proteins responses temperature transcript (Atg), TaNAC drip gene overexpression results stress. treated analysis enhanced factor function wild DRIP drought px; seedlings stress-responsive {font-family TaNACL-OX TaNACL-OX# abiotic conditions days font-size stress, type Wheat domain double; drought, expressed increased regulating salt, used Cell. Guo PCR Zhang aestivum border-color border-width compared containing cultivar degraded development double exhibited genes. growth improved level line min quantitative rice secondary solid; stresses study, using wild-type {font-style {font-weight ./s--- A). China Heat However, Key L.) Molecular Peng Research TaNACL, TaNACL. Tolerance Xie abundance acid acquired bold buffer courier; em; hypocotyl identified important independent knowledge lateral ligases low maintained min; mutant observed pathway. performed plant plants. potential promoter proteasome-mediated pt;} real-time recovery regulate regulated transferred treatment


New here?
Join us today! It takes only few steps
Username
Email
Password
Postcode
Plan ID
or
Provider Name
Customer Type
--Please Select--
Residential
Business
Tariff Type
--Please Select--
single
timeofuse
usage
Verification Bar
Drag the slider to unlock.
>>
I agree to all Terms & Conditions
SIGN UP
Already have an account?
Login
Copyright © 2021 Energy Dash Team. All rights reserved.


Methods for addressing uncertainty in risk assessments using hybrid representations of uncertainty (probability distributions, fuzzy numbers, intervals, probability distributions with imprecise parameters). The uncertainty propagation procedure combines random sampling using Monte Carlo method with fuzzy interval analysis of Baudrit et al. (2007) <doi:10.1109/TFUZZ.2006.876720>. The sensitivity analysis is based on the pinching method of Ferson and Tucker (2006) <doi:10.1016/j.ress.2005.11.052>.
| Version: | 1.2 |
| Depends: | R (≥ 3.2.0) |
| Imports: | datasets, utils, grDevices, graphics, stats, sets, pbapply, reliaR, kerdiest, triangle, rgenoud |
| Published: | 2017-04-04 |
| Author: | Jeremy Rohmer, Jean-Charles Manceau, Dominique Guyonnet, Faiza Boulahya |
| Maintainer: | Jeremy Rohmer <j.rohmer at brgm.fr> |
| License: | GPL-3 |
| NeedsCompilation: | no |
| CRAN checks: | HYRISK results |
| Reference manual: | HYRISK.pdf |
| Package source: | HYRISK_1.2.tar.gz |
| Windows binaries: | r-devel: HYRISK_1.2.zip, r-release: HYRISK_1.2.zip, r-oldrel: HYRISK_1.2.zip |
| OS X binaries: | r-release: HYRISK_1.2.tgz, r-oldrel: HYRISK_1.2.tgz |
Please use the canonical form https://CRAN.R-project.org/package=HYRISK to link to this page.


@@include('section/head/_head.html')
@@include('section/header/_header.html')
@@include('section/welcome/_welcome.html')
@@include('section/footer/_footer.html')


statsmodels.graphics.mosaicplot.mosaic¶
-
statsmodels.graphics.mosaicplot.
mosaic
(data, index=None, ax=None, horizontal=True, gap=0.005, properties=<function <lambda>>, labelizer=None, title='', statistic=False, axes_label=True, label_rotation=0.0)[source]¶ Create a mosaic plot from a contingency table.
It allows to visualize multivariate categorical data in a rigorous and informative way.
Parameters: data : dict, pandas.Series, np.ndarray, pandas.DataFrame
The contingency table that contains the data. Each category should contain a non-negative number with a tuple as index. It expects that all the combination of keys to be representes; if that is not true, will automatically consider the missing values as 0. The order of the keys will be the same as the one of insertion. If a dict of a Series (or any other dict like object) is used, it will take the keys as labels. If a np.ndarray is provided, it will generate a simple numerical labels.
index: list, optional
Gives the preferred order for the category ordering. If not specified will default to the given order. It doesn’t support named indexes for hierarchical Series. If a DataFrame is provided, it expects a list with the name of the columns.
ax : matplotlib.Axes, optional
The graph where display the mosaic. If not given, will create a new figure
horizontal : bool, optional (default True)
The starting direction of the split (by default along the horizontal axis)
gap : float or array of floats
The list of gaps to be applied on each subdivision. If the lenght of the given array is less of the number of subcategories (or if it’s a single number) it will extend it with exponentially decreasing gaps
labelizer : function (key) -> string, optional
A function that generate the text to display at the center of each tile base on the key of that tile
properties : function (key) -> dict, optional
A function that for each tile in the mosaic take the key of the tile and returns the dictionary of properties of the generated Rectangle, like color, hatch or similar. A default properties set will be provided fot the keys whose color has not been defined, and will use color variation to help visually separates the various categories. It should return None to indicate that it should use the default property for the tile. A dictionary of the properties for each key can be passed, and it will be internally converted to the correct function
statistic: bool, optional (default False)
if true will use a crude statistical model to give colors to the plot. If the tile has a containt that is more than 2 standard deviation from the expected value under independence hipotesys, it will go from green to red (for positive deviations, blue otherwise) and will acquire an hatching when crosses the 3 sigma.
title: string, optional
The title of the axis
axes_label: boolean, optional
Show the name of each value of each category on the axis (default) or hide them.
label_rotation: float or list of float
the rotation of the axis label (if present). If a list is given each axis can have a different rotation
Returns: fig : matplotlib.Figure
The generate figure
rects : dict
A dictionary that has the same keys of the original dataset, that holds a reference to the coordinates of the tile and the Rectangle that represent it
See also
A
- Michael Friendly, York University, Psychology Department Journal of Computational and Graphical Statistics, 2001
Mosaic
- Michael Friendly, York University, Psychology Department Proceedings of the Statistical Graphics Section, 1992, 61-68.
Mosaic
- Michael Friendly, York University, Psychology Department Journal of the american statistical association March 1994, Vol. 89, No. 425, Theory and Methods
Examples
The most simple use case is to take a dictionary and plot the result
>>> data = {'a': 10, 'b': 15, 'c': 16} >>> mosaic(data, title='basic dictionary') >>> pylab.show()
A more useful example is given by a dictionary with multiple indices. In this case we use a wider gap to a better visual separation of the resulting plot
>>> data = {('a', 'b'): 1, ('a', 'c'): 2, ('d', 'b'): 3, ('d', 'c'): 4} >>> mosaic(data, gap=0.05, title='complete dictionary') >>> pylab.show()
The same data can be given as a simple or hierarchical indexed Series
>>> rand = np.random.random >>> from itertools import product >>> >>> tuples = list(product(['bar', 'baz', 'foo', 'qux'], ['one', 'two'])) >>> index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second']) >>> data = pd.Series(rand(8), index=index) >>> mosaic(data, title='hierarchical index series') >>> pylab.show()
The third accepted data structureis the np array, for which a very simple index will be created.
>>> rand = np.random.random >>> data = 1+rand((2,2)) >>> mosaic(data, title='random non-labeled array') >>> pylab.show()
If you need to modify the labeling and the coloring you can give a function tocreate the labels and one with the graphical properties starting from the key tuple
>>> data = {'a': 10, 'b': 15, 'c': 16} >>> props = lambda key: {'color': 'r' if 'a' in key else 'gray'} >>> labelizer = lambda k: {('a',): 'first', ('b',): 'second', ('c',): 'third'}[k] >>> mosaic(data, title='colored dictionary', properties=props, labelizer=labelizer) >>> pylab.show()
Using a DataFrame as source, specifying the name of the columns of interest >>> gender = [‘male’, ‘male’, ‘male’, ‘female’, ‘female’, ‘female’] >>> pet = [‘cat’, ‘dog’, ‘dog’, ‘cat’, ‘dog’, ‘cat’] >>> data = pandas.DataFrame({‘gender’: gender, ‘pet’: pet}) >>> mosaic(data, [‘pet’, ‘gender’]) >>> pylab.show()


Mokoena Stunner Seals Big SA Victory
by Soccer LadumaTeboho Mokoena was the hero for South Africa's U23s on Tuesday night, thumping home a stunner of a free-kick to give them their first three points of the U23 Africa Cup of Nations tournament.
Read: Key Details Of Wits’ CAF Adventure
David Notoane's side won 1-0 against the Ivory Coast in Cairo and climbed to the top of their group going into their third game, and it's all thanks to the SuperSport United midfielder that only arrived in camp a couple of days ago.
The Matsatsantsa star was straight into the starting line-up alongside his teammate, Sipho Mbule, after the duo were just two of the key players that missed the opening U23 AFCON game against Zambia, but he made sure to make up for his absence when he rifled home a superb freekick from range to give them the win.
Other results last night mean that Notoane's side are the only team in Group B left without defeat after two games played each, and they know that a draw in their final game against Nigeria on Friday will be enough to see them progress to the semifinals.
Read: Chiefs Lose Analyst To Bafana
The top three teams at the tournament will book their place at the 2020 Olympics in Japan, and South Africa will be eager to do even better than their last outing at the competition in 2015 when they finished third.
Check out Mokoena's beauty here:


 Don’t be trapped by dogma, which is living the result of other people’s thinking. Don’t let the noise of other opinions drown your own inner voice. And most important, have the courage to follow your heart and intuition, they somehow already know what you truly want to become. Everything else is secondary. -Steve Job-
Tinh dầu sả đuổi muỗi xem thêm


Man arrested for tampering with election posters in north Dublin
The incident happened in Balbriggan earlier this week.
by Stephen McDermottA MAN IN his 40s has been arrested after being caught tampering with election posters in Balbriggan in north Dublin.
Gardaí were alerted after a member of the public spotted the individual allegedly cutting down a number of posters earlier this week.
It is understood that posters belonging to a number of candidates, including Fianna Fáil senator Lorraine Clifford-Lee, Fine Gael’s James Reilly and Labour’s Duncan Smith, were tampered with.
A garda spokeswoman confirmed that were investigating an incident of criminal damage on the Naul Road in Balbriggan on Thursday.
“A male in his late 40s was arrested at the scene and was detained at Balbriggan Garda Station,” a statement said.
“He has since been charged and bailed to appear before Balbriggan District Court later this month.”
Comments have been closed as an individual has been charged.


| Module | Spec::Rails::DSL::RenderObserver |
| In: |
vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/render_observer.rb
|
Provides specialized mock-like behaviour for controller and view examples, allowing you to mock or stub calls to render with specific arguments while ignoring all other calls.
Similar to mocking render with the exception that calls to render with any other options are passed on to the receiver (i.e. controller in controller examples, template in view examples).
This is necessary because Rails uses the render method on both controllers and templates as a dispatcher to render different kinds of things, sometimes resulting in many calls to the render method within one request. This approach makes it impossible to use a normal mock object, which is designed to observe all incoming messages with a given name.
expect_render is auto-verifying, so failures will be reported without requiring you to explicitly request verification.
Also, expect_render uses parts of RSpec‘s mock expectation framework. Because it wraps only a subset of the framework, using this will create no conflict with other mock frameworks if you choose to use them. Additionally, the object returned by expect_render is an RSpec mock object, which means that you can call any of the chained methods available in RSpec‘s mocks.
controller.expect_render(:partial => 'thing', :object => thing) controller.expect_render(:partial => 'thing', :collection => things).once controller.stub_render(:partial => 'thing', :object => thing) controller.stub_render(:partial => 'thing', :collection => things).twice
template.expect_render(:partial => 'thing', :object => thing) template.expect_render(:partial => 'thing', :collection => things) template.stub_render(:partial => 'thing', :object => thing) template.stub_render(:partial => 'thing', :collection => things)
This is exactly like expect_render, with the exception that the call to render will not be verified. Use this if you are trying to isolate your example from a complicated render operation but don‘t care whether it is called or not.


public class RpcBroker extends java.lang.Object implements IPulseHandler, ITimerHandler
The RpcBroker
class provides VistA application developers with client/server-related
functionality for software written in the Java programming language.
Using an instance of RpcBroker
, an application can connect to the server by simply
calling the connect
method passing the server host and port. Remote procedures on the
server can be executed by invoking one of the overloaded lCall
, tCall
, or
sCall
methods.
RpcBroker rpcBroker = new RpcBroker(); rpcBroker.connect("test.lom.med.va.gov", 9100); long duz = rpcBroker.doSignon("access", "verify"); if (duz > 0) { String s = rpcBroker.sCall("OR CPRS GUI CHART, "ORWU USERINFO"); }
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
RPC_BROKER |
| Constructor and Description |
|---|
RpcBroker()
Constructs an instance of RpcBroker using the default version of the
RPC broker protocol.
|
RpcBroker(int rpcProtocolVersion)
Constructs an instance of RpcBroker using the version of the protocol specified.
|
RpcBroker(int rpcProtocolVersion,
java.lang.String server,
int port)
Constructs an instance of RpcBroker and connects to the server
at the specified server host/ip and port using the version of the
broker protocol that is specified .
|
RpcBroker(java.lang.String server,
int port)
Constructs an instance of RpcBroker and connects to the server
at the specified server host/ip and port using the Version 2
broker protocol.
|
| Modifier and Type | Method and Description |
|---|---|
java.lang.String |
call()
Makes the call on the broker server using the current context and current RPC API.
|
java.lang.String |
call(java.lang.String api)
Makes the call on the broker server using the current context.
|
java.lang.String |
call(java.lang.String api,
java.lang.Object[] paramArray)
Makes the call on the broker server.
|
java.lang.String |
call(java.lang.String api,
Params params)
Makes the call on the broker server using the current context.
|
java.lang.String |
call(java.lang.String api,
java.lang.String ien)
Makes the call on the broker server using the current context.
|
void |
callOnRpcBrokerSignon()
Calls the onRpcBrokerSignon event handler.
|
boolean |
connect()
Connect to the broker server using the previously set server host/ip and port.
|
boolean |
connect(java.lang.String server,
int port)
Connect to the broker server.
|
BrokerException |
createBrokerException(java.lang.Exception e,
java.lang.String action,
int code)
Creates a broker exception.
|
boolean |
createContext(java.lang.String aContext)
Creates and sets the context on the broker server.
|
boolean |
disconnect()
Disconnects from the broker server.
|
void |
doClearParams()
Clears the
params property. |
void |
doClearResults()
Clears the results.
|
void |
doPulse() |
java.lang.String |
doSignon()
Performs a signon setup and signon using the cached access and verify codes.
|
java.lang.String |
doSignon(java.lang.String avCode)
Performs a signon setup and signon using the supplied
semicolon delimited access and verify codes.
|
java.lang.String |
doSignon(java.lang.String accessCode,
java.lang.String verifyCode)
Performs a signon setup and signon using the supplied
access and verify codes.
|
java.lang.String |
getAppHandle()
Gets a token that can be used to sign-on a new process.
|
java.lang.String |
getApplicationSegment()
Gets the application segment of the last inbound message.
|
BrokerException |
getBrokerException()
Gets the last broker exception.
|
int |
getBrokerInfo()
Gets info from the server regarding setup and parameters of the broker.
|
boolean |
getClearParams()
Tests whether or not to clear the parameter list between calls.
|
boolean |
getClearResults()
Tests whether the results are to be cleared between calls.
|
java.lang.String |
getCurrentContext()
Gets the current broker context.
|
java.lang.String |
getDataSegment()
Gets the data segment of the last inbound message.
|
java.lang.String |
getDomain()
Gets the domain of the signed-on user.
|
java.lang.String |
getErrorMessage()
Gets the message property associated with the exception or error that was encountered.
|
IRpcBrokerEventHandler |
getEventHandler()
Gets the event handler object that implements IRpcBrokerEventHandler interface.
|
java.lang.String |
getHashedAVCodes()
Returns the hashed access;verify code pair.
|
int |
getInactiveTimeout()
Returns the timeout duration (in msec) in which RpcBroker will log off
of VistA if a connection has been idle for a period of time.
|
java.util.Date |
getLastMessageTime()
Returns the timestamp of the last (non-pulse) message sent to VistA.
|
int |
getListenerPort()
Gets the listener port on the broker server.
|
static LogChannel |
getLogChannel()
The log channel is used to write messages to a logging facility.
|
java.lang.String |
getLoginHandle()
The login handle property holds the application handle for doing a silent login.
|
Params |
getParams()
Params is an object that holds all of the parameters that the
application needs to pass to the remote procedure. |
java.lang.String |
getRemoteProcedure()
Gets the remote procedure property to the name of the remote procedure call entry in the REMOTE PROCEDURE file (#8994).
|
java.lang.StringBuffer |
getResults()
Gets the results as a StringBuffer.
|
IRpcProtocol |
getRpcProtocol()
The Rpc Protocol is the implementation of the RPC Broker protocol used.
|
int |
getRpcProtocolVersion()
The Rpc protocol version is the version of the RPC protocol used.
|
java.lang.String |
getRpcVersion()
Returns the RPC version
|
java.lang.String |
getSecuritySegment()
Gets the security segment of the last inbound message.
|
java.lang.String |
getServer()
The server property contains the name or Internet Protocol (IP) address of the server computer.
|
java.lang.String |
getService()
Gets the service ID of the signed-on user.
|
java.lang.String |
getServiceSection()
Gets the service/section of the signed-on user.
|
java.lang.String |
getStation()
Gets the station of the signed-on user.
|
java.lang.String |
getStationIen()
Gets the station IEN of the signed-on user.
|
java.lang.String |
getStationNo()
Gets the station number of the signed-on user.
|
java.lang.String |
getTitle()
Gets the title of the signed-on user.
|
java.lang.String |
getUserClass()
Gets the class of the signed-on user.
|
java.lang.String |
getUserDuz()
Gets the duz of the signed-on user.
|
java.lang.String |
getUserName()
Gets the name of the signed-on user.
|
boolean |
isConnected()
Tests if a connection is established, and allows you to branch accordingly depending
on whether a connection is established or not.
|
boolean |
isConnecting()
Tests whether the broker client is currently in the process of connecting to the server.
|
boolean |
isKernelLogin()
Tests whether the login type is kernel login.
|
protected void |
lockCallMonitor() |
void |
log(int level,
java.lang.Exception e)
Writes the exception message to the logging facility.
|
void |
log(int level,
java.lang.String msg)
Writes the message to the logging facility.
|
static void |
main(java.lang.String[] args) |
void |
onTimerEvent() |
void |
setClearParameters(boolean value)
The clear parameters design-time property gives the developer the option to clear the
params property following
every invocation of the call methods. |
void |
setClearResults(boolean value)
Setting clear results to
true clears the results property. |
boolean |
setConnected(boolean value)
If
value is true , connects to the broker server using the
previously set server host/ip and port. |
void |
setContext(java.lang.String context)
Sets the current context without creating the context on the server.
|
boolean |
setCurrentContext(java.lang.String currentContext)
Sets the current broker context and creates the context on the server.
|
void |
setDomain(java.lang.String domain)
Sets the domain of the signed-on user.
|
void |
setEventHandler(IRpcBrokerEventHandler eventHandler)
Gets the event handler object.
|
void |
setHashedAVCodes(java.lang.String avCode)
Sets the hashed access;verify code pair for the user.
|
void |
setInactiveTimeout(int inactiveTimeout)
Sets the timeout duration (in msec) for inactivity, after which RpcBroker
will log off of VistA.
|
void |
setKernelLogin(boolean kernelLogin)
If
kernelLogin is true , sets the login type to kernel login. |
void |
setListenerPort(int listenerPort)
Sets the port on which the broker server is listening.
|
static void |
setLogChannel(LogChannel logChannel)
Sets the static log channel used for writing messages to the logging facility.
|
void |
setParams(Params params)
Sets the
Params object, which holds all of the parameters that the
application needs to pass to the remote procedure. |
void |
setRemoteProcedure(java.lang.String remoteProcedure)
Sets the remote procedure property to the name of the remote procedure call entry in the REMOTE PROCEDURE file (#8994).
|
void |
setRpcProtocol(IRpcProtocol rpcProtocol)
Sets the RPC version number
|
void |
setRpcProtocolVersion(int rpcProtocolVersion)
Sets the RPC broker protocol version number
|
void |
setRpcVersion(java.lang.String rpcVersion)
The RPC version property is used to pass the version of the RPC.
|
void |
setServer(java.lang.String server)
Changing the name of the server while the RpcBroker is connected disconnects the RpcBroker from the previous server.
|
void |
setService(java.lang.String service)
Sets the service ID of the signed-on user.
|
void |
setServiceSection(java.lang.String serviceSection)
Sets the service/section of the signed-on user.
|
void |
setStation(java.lang.String station)
Sets the station of the signed-on user.
|
void |
setStationIen(java.lang.String stationIen)
Sets the station IEN of the signed-on user.
|
void |
setStationNo(java.lang.String stationNo)
Sets the station number of the signed-on user.
|
void |
setTitle(java.lang.String title)
Sets the title of the signed-on user.
|
void |
setUserClass(java.lang.String userClass)
Sets the class of the signed-on user.
|
void |
setUserDuz(java.lang.String duz)
Sets the duz of the signed-on user.
|
void |
setUserName(java.lang.String userName)
Sets the name of the signed-on user.
|
protected void |
unlockCallMonitor() |
public static final java.lang.String RPC_BROKER
public RpcBroker() throws BrokerException
server
- the host/ip of the serverport
- the listening port on the serverBrokerException
public RpcBroker(int rpcProtocolVersion) throws BrokerException
rpcProtocolVersion
- the version of the rpc broker protocol to useBrokerException
public RpcBroker(java.lang.String server, int port) throws BrokerException
server
- the host/ip of the serverport
- the listening port on the serverBrokerException
public RpcBroker(int rpcProtocolVersion, java.lang.String server, int port) throws BrokerException
server
- the host/ip of the serverport
- the listening port on the serverBrokerException
public IRpcBrokerEventHandler getEventHandler()
public void setEventHandler(IRpcBrokerEventHandler eventHandler)
eventHandler
- object that implements IRpcBrokerEventHandler interface.public java.lang.String getRpcVersion()
public void setRpcVersion(java.lang.String rpcVersion)
The RPC version property is used to pass the version of the RPC. This can be useful for backward compatibility.
As you introduce new functionality into an existing RPC, your RPC can branch into different parts of the code based on the value of the RPC version property. The broker sets the XWBAPVER variable on the server to the contents of the RPC version property. This property cannot be empty and defaults to "0" (zero).
rpcVersion
- the version of the RPC to set.public boolean getClearParams()
true
if the list of parameters should be cleared between calls, false
otherwise.public void setClearParameters(boolean value)
The clear parameters design-time property gives the developer the option to clear the params
property following
every invocation of the call methods. Setting clear parameters to true
clears the params
property.
Simple assignment of true
to this property clears the Pparam
property after every invocation of the
call methods. Thus, the parameters need only be prepared for the next call without being concerned about
what was remaining from the previous call. By setting clear parameters to false
, the programmer can
make multiple calls with the same params
property. It is also appropriate to set this property to false when a
majority of the parameters in the params
property should remain the same between calls.
However, minor changes to the parameters can still be made.
If value
is true
, clears the parameter list and clears parameters between all calls.
Otherwise, if value
is false
, the parameters will not be cleared between calls.
value
- public void doClearParams()
params
property.setClearParameters(boolean value)
public boolean getClearResults()
true
if the results have been cleared, false
otherwise.setClearResults(boolean)
public void setClearResults(boolean value)
Setting clear results to true
clears the results
property.
If this property is true
, then the results
property is cleared before every
invocation of the call methods, thus, assuring that only the results of the last call are returned.
Conversely, a setting of
property.false
results
value
- true
if results are to be cleared between calls, false
otherwisepublic void doClearResults()
setClearResults(boolean)
public boolean isConnecting()
true
if the broker client is connecting, false
otherwise.public BrokerException createBrokerException(java.lang.Exception e, java.lang.String action, int code)
e
- the exception that this broker exception encapsulatesaction
- the action for which this exception occurredcode
- the integer code representing this exceptionpublic BrokerException getBrokerException()
public java.lang.String getCurrentContext()
public boolean setCurrentContext(java.lang.String currentContext) throws BrokerException
currentContext
- the current context to setBrokerException
public void setContext(java.lang.String context)
context
- the context to setpublic boolean isKernelLogin()
true
if login type is kernel login, false
otherwise.public void setKernelLogin(boolean kernelLogin)
kernelLogin
is true
, sets the login type to kernel login.kernelLogin
- true
if login type is kernel login, false
otherwise.public int getListenerPort()
public void setListenerPort(int listenerPort)
listenerPort
- the port on which the broker server is listeningpublic Params getParams()
Params
is an object that holds all of the parameters that the
application needs to pass to the remote procedure.public void setParams(Params params)
Params
object, which holds all of the parameters that the
application needs to pass to the remote procedure.params
- the params that the application needs to pass to the remote procedurepublic java.lang.String getRemoteProcedure()
public void setRemoteProcedure(java.lang.String remoteProcedure)
remoteProcedure
- the current remote procedure APIpublic java.lang.StringBuffer getResults()
public java.lang.String getHashedAVCodes()
public void setHashedAVCodes(java.lang.String avCode)
avCode
- the hashed access;verify code pairpublic java.lang.String getErrorMessage()
public java.lang.String getSecuritySegment()
public java.lang.String getApplicationSegment()
public java.lang.String getDataSegment()
public java.lang.String getUserDuz()
public void setUserDuz(java.lang.String duz)
duz
- signed-on user's duzpublic java.lang.String getDomain()
public void setDomain(java.lang.String domain)
domain
- signed-on user's domainpublic java.lang.String getService()
public void setService(java.lang.String service)
service
- signed-on user's service IDpublic java.lang.String getServiceSection()
public void setServiceSection(java.lang.String serviceSection)
serviceSection
- signed-on user's service/sectionpublic java.lang.String getStation()
public void setStation(java.lang.String station)
station
- signed-on user's stationpublic java.lang.String getStationIen()
public void setStationIen(java.lang.String stationIen)
stationIen
- signed-on user's station IENpublic java.lang.String getStationNo()
public void setStationNo(java.lang.String stationNo)
stationNo
- signed-on user's station numberpublic java.lang.String getTitle()
public void setTitle(java.lang.String title)
title
- signed-on user's titlepublic java.lang.String getUserClass()
public void setUserClass(java.lang.String userClass)
userClass
- signed-on user's classpublic java.lang.String getUserName()
public void setUserName(java.lang.String userName)
userName
- signed-on user's namepublic IRpcProtocol getRpcProtocol()
public void setRpcProtocol(IRpcProtocol rpcProtocol)
rpcProtocol
- the Rpc protocol implementation to usegetRpcProtocol()
public int getRpcProtocolVersion()
public void setRpcProtocolVersion(int rpcProtocolVersion)
rpcProtocolVersion
- the Rpc protocol version being usedgetRpcProtocolVersion()
public java.lang.String getServer()
public void setServer(java.lang.String server) throws BrokerException
Changing the name of the server while the RpcBroker is connected disconnects the RpcBroker from the previous server.
If the name is used instead of the IP address, it should be resolved by the socket through the Domain Name Service (DNS).
server
- the server host/IP address to setBrokerException
getServer()
public java.lang.String getLoginHandle()
getAppHandle
method.
The login handle may be passed as a command line argument to an application that is being started. The new application must know to look for the handle, and if present, set up the silent login.
Note: The app handle that is obtained via the getAppHandle
function is only valid
for approximately 20 seconds, after which the silent login would fail.
getAppHandle
getAppHandle()
public int getInactiveTimeout()
public void setInactiveTimeout(int inactiveTimeout)
inactiveTimeout
- the duration of inactivity in msec.public java.util.Date getLastMessageTime()
public static LogChannel getLogChannel()
public static void setLogChannel(LogChannel logChannel)
logChannel
- the log channel to use for logginggetLogChannel()
public void log(int level, java.lang.String msg)
level
- the logging level (e.g. Logger.ERROR)msg
- the messge to logpublic void log(int level, java.lang.Exception e)
level
- the logging level (e.g. Logger.ERROR)msg
- the exception to logpublic boolean isConnected()
true
if connected to the broker server, false
otherwisepublic boolean setConnected(boolean value) throws BrokerException
value
is true
, connects to the broker server using the
previously set server host/ip and port. Otherwise, if value
is false
disconnects from the broker server.true
if connected to the broker server, false
otherwiseBrokerException
public boolean connect() throws BrokerException
true
if connected to the broker server, false
otherwiseBrokerException
public boolean connect(java.lang.String server, int port) throws BrokerException
server
- the host name or IP address of the broker serverport
- the listener port on the broker servertrue
if connected to the broker server, false
otherwiseBrokerException
public boolean disconnect() throws BrokerException
true
if successfully disconnected, false
otherwiseBrokerException
public boolean createContext(java.lang.String aContext) throws BrokerException
Creates and sets the context on the broker server.
You can use the createContext
method to create a context for your application.
To create context, pass an option name as a parameter. If the function returns true
,
a context was created, and your application can use all RPCs entered in the option's RPC multiple.
If the RpcBroker is not connected at the time context is created, a connection will be established.
If for some reason a context could not be created, the createContext
method will return False.
Since context is nothing more than a client/server 'B'-type option in the OPTION file (#19), standard MenuMan security is applied in establishing a context. Therefore, a context option can be granted to user(s) exactly the same way as regular options are done using MenuMan. Before any RPC can run, it must have a context established for it to on the server. Thus, all RPCs must be registered to one or more 'B'-type option(s). This plays a major role in Broker security.
A context cannot be established for the following reasons:context
- the context to createtrue
if the context was created, false
otherwiseBrokerException
public java.lang.String doSignon(java.lang.String avCode) throws BrokerException
avCode
- semicolon-delimited access and verify codesBrokerException
public java.lang.String doSignon(java.lang.String accessCode, java.lang.String verifyCode) throws BrokerException
accessCode
- the user's access codeverifyCode
- the user's verify codeBrokerException
doSignon(String)
public java.lang.String doSignon() throws BrokerException
BrokerException
doSignon(String)
public int getBrokerInfo() throws BrokerException
BrokerException
public java.lang.String getAppHandle() throws BrokerException
BrokerException
public void doPulse()
doPulse
in interface IPulseHandler
public void onTimerEvent()
onTimerEvent
in interface ITimerHandler
public java.lang.String call() throws BrokerException
BrokerException
public java.lang.String call(java.lang.String api, java.lang.Object[] paramArray) throws BrokerException
api
- the RPC API to callparamArray
- the array of parameters to pass to the callBrokerException
public java.lang.String call(java.lang.String api, java.lang.String ien) throws BrokerException
api
- the RPC API to callien
- the internal entry number of the record to retrieveBrokerException
public java.lang.String call(java.lang.String api, Params params) throws BrokerException
api
- the RPC API to callparams
- the Params object containing the list of paramsBrokerException
public java.lang.String call(java.lang.String api) throws BrokerException
api
- the RPC API to callBrokerException
public void callOnRpcBrokerSignon()
protected void lockCallMonitor()
protected void unlockCallMonitor()
public static void main(java.lang.String[] args)


[Exchange Seal Stones]
You currently have %stoneCount% %stoneColor% seal stones. How many do you wish to exhange? I will trade you %stoneValue% ancient adena for each %stoneColor% seal stone.
[Enter quantity.]


|
Congrats!
You've just voted for [[${coin}]] to be traded on Exsudo and [[${votes}]] Votes will be added for the coin listing.
You will be notified by email on round results and voting EONs return to your wallet
(it takes up to 3 days after round end date).
|


RPI Discord Server Directory
Report an issue
RPI's student success office is a division of the student life department. The student success server
is a good place to ask your deans academic questions. This includes anything regarding Pass/No-Credit,
the ARCH, and ALAC.
The CCPD (or Center for Career and Professional Development) is a useful resource for RPI students
working on a resume and applying to jobs and internships.
The School of Science Hub is a resource to advice students (including incoming students) about their
coursework in the school of science during their time at RPI.
This is the main discord server associated with RPI. This is a student run server
for all current, previous, and prospective RPI students.
Unofficial Pokemon Go server for the Troy area. Has a channel for the RPI campus.
A club at RPI that discusses STEM ethics.
A club that talks about linux, BSD, and other UNIX based operating systems.


Chris Zietlow \ @aczietlow
Case studies conducted at Microsoft and IBM indicate that teams that adopt TDD experience 40% to 90% bugs, which results in 15-35% additional development time.
Behat is a BDD (Behavior Driven Development) framework written in PHP
There's the module for that, because of course there is*
Drupal ExtensionThis "module" comes with many many opinions.
Composer.json
"require": {
"behat/behat": "3.0.*@stable",
"drupal/drupal-extension": "3.0.*@dev"
}
Behat.yml
default:
suites:
default:
contexts:
- FeatureContext
- Drupal\DrupalExtension\Context\DrupalContext
extensions:
Behat\MinkExtension:
Use your google powers
That simple configuration is a bit of a lie
# Default profile.
# Common settings for all profiles
default:
autoload:
'': %paths.base%/tests/behat/features/bootstrap
suites:
default:
paths: [ %paths.base%/tests/behat/features ]
contexts:
- FeatureContext:
parameters:
screenshot_dir: %paths.base%/tests/behat/screenshots
- Drupal\DrupalExtension\Context\DrupalContext
- Drupal\DrupalExtension\Context\MinkContext
- Drupal\DrupalExtension\Context\MessageContext
- Drupal\DrupalExtension\Context\DrushContext
# The twig formatter.
# formatters:
# html:
# output_path: %paths.base%/output
extensions:
Behat\MinkExtension:
goutte: ~
selenium2: ~
default_session: goutte
javascript_session: selenium2
Drupal\DrupalExtension:
blackbox: ~
drush: ~
api_driver: "drupal"
# Map template regions.
region_map:
header: "#header"
content: "#content"
footer: "#footer"
# Map selectors.
selectors:
message_selector: '#messages'
error_message_selector: '#messages .messages.error'
success_message_selector: '#messages .messages.status'
# Load custom Dixon sub contexts.
subcontexts:
paths:
- %paths.base%/tests/behat/features/bootstrap
text:
password_field: "pass"
username_field: "name"
#@TODO fix this so that it's not the default formatter.
# Pretty Twig formatter.
# emuse\BehatHTMLFormatter\BehatHTMLFormatterExtension:
# name: html
# renderer: Twig
# file_name: index
# print_args: true
# print_outp: true
# loop_break: true
# Docker profile.
# For use inside the CLI container in Docksal.
docker:
extensions:
Behat\MinkExtension:
# URL of the site when accessed inside Docksal.
base_url: http://web
# Configure browser to be used. Browser must be available on wd_host.
# Stick with chrome by default. It's 2x faster than firefox or phantomjs (your results may vary).
browser_name: chrome
selenium2:
wd_host: http://browser:4444/wd/hub
capabilities: { "browser": "chrome", "version": "*" }
Drupal\DrupalExtension:
drupal:
# Site docroot inside Docksal.
drupal_root: /var/www/web
drush:
# Site docroot inside Docksal.
root: /var/www/web
See the README
Tests are saved in .feature files
I want to be able to log into my website in order to edit my content.
As a an anonymous user,
I want to be able to log into my website,
So that I can edit my content.
What does it mean to be logged in? How do we know that we are logged in?
Given I am an anonymous user
When I am at "user/login"
And I fill in "name" with "admin"
And I fill in "pass" with "admin"
And press "Log in"
Then I should see the link "Log out"
How do we check can edit content.
Given I am logged in as a user with the administrator role
When I am at "node/add/page"
Then I should see "Create Basic page"
And I should get a 200 HTTP response
Slap it in a feature file and boom you have your test.
#./features/user_login.feature
@api
Feature: User Login.
As a an anonymous user,
I want to be able to log into my website,
So that I can edit my content.
Scenario: I can log in.
Given I am an anonymous user
When I am at "user/login"
And I fill in "name" with "admin"
And I fill in "pass" with "admin"
And press "Log in"
Then I should see the link "Log out"
Scenario: I can edit content
Given I am logged in as a user with the administrator role
When I am at "node/add/page"
Then I should see "Create Basic page"
And I should get a 200 HTTP response
$ bin/behat features/user_login.feature
This is not a place for cross browser testing
An abstraction API layer that handles communication with all drivers
$element = $session->getPage();
$element->findAll($selector, $locator);
$element->getText();
$element->getHtml();
$element->isVisible();
$element->click();
$element->press();
$element->check();
$element->uncheck();
@api
Feature: Content Type Event
As an anonymous user
I want to view data related to an Event
So that I can decide it is something I would like to attend.
Scenario: Add an event node and verify that the necessary fields exist.
Given I am an anonymous user
And an "Event Terms" term with the name "camp"
And an "Event Terms" term with the name "drupal"
And "event" content:
| title | field_event_location | field_event_date | field_event_tags | status |
| Drupal Camp | Orlando | 2016-04-11 9:00:00 | camp, drupal | 1 |
When I am at "content/drupal-camp"
Then I should see the text "Florida Drupal Camp"
And I should see the text "Orlando"
And I should see the text "Saturday, April 11, 2016"
Each scenario step maps to a function that performs the step
Given I am an anonymous user
/**
* @Given I am an anonymous user
* @Given I am not logged in
*/
public function assertAnonymousUser() {
// Verify the user is logged out.
if ($this->loggedIn()) {
$this->logout();
}
Out of the box the Mink and Drupal Drivers will provide a lot of step definitions that you can use.
# definitions list
$ behat -dl
default | When I visit the login page
default | Given I am an anonymous user
default | Given I am not logged in
default | Given I am logged in as a user with the :role role(s)
default | Given I am logged in as a user with the :role role(s) and I have the following fields:
default | Given I am logged in as :name
default | Given I am logged in as a user with the :permissions permission(s)
default | Then I should see (the text ):text in the ":rowText" row
default | Given I click :link in the :rowText row
Feature: Migrations
As an editor of the website
I want the workbench module enabled
So that I can create custom editing work flows
Scenario: Confirm the workbench module is installed
Given the "workbench" module is installed
Custom step definitions go in features/bootstrap/FeatureContext.php**
//features/bootstrap/FeatureContext.php
use Drupal\DrupalExtension\Context\RawDrupalContext;
use Behat\Behat\Context\SnippetAcceptingContext;
use Behat\Gherkin\Node\PyStringNode;
use Behat\Gherkin\Node\TableNode;
/**
* Defines application features from the specific context.
*/
class FeatureContext extends RawDrupalContext implements SnippetAcceptingContext
{
}
/**
* Asserts that a given module exists and is enabled.
*
* @Given the :module module is installed
*/
public function assertModuleExists($module)
{
if (module_exists($module)) {
return TRUE;
}
$message = sprintf('Module "%s" is not installed.', $module);
throw new \Exception($message);
}
Then "events" migration is complete$/
/**
* Asserts the given migration is complete.
*
* @Then the :machine_name migration is complete$/
*
* @throws /Exception if the migration did not complete.
*/
public function assertMigrationIsComplete($machine_name)
{
$migration = Migration::getInstance($name);
if ($migration->isComplete()) {
return TRUE;
}
$message = sprintf('The "%s" migration is not complete.', $name);
throw new \Exception($message);
}
We use Mink to interact with the browser
Some common usages of the Mink API
$element = $session->getPage();
$element->findAll($selector, $locator);
$element->getText();
$element->getHtml();
$element->isVisible();
$element->click();
$element->press();
$element->check();
$element->uncheck();
Mink Cheat Sheet
- tests are awesome
- tests are good for you, the client, and the product
- Drupal Extension (3.x) Documentation
- Behat (3.x) Documentation
- Mink Documentation
- Follow me on twitter: @aczietlow


All students John Jane Susan Stella Sue REAL-TIME CENTER STUDENTS PRACTICING STUDENTS IDLE STUDENTS WHO NEED HELP SKILLS PRACTICE QUESTIONS ANSWERED PAST HOUR Student activity wall John Jane Susan Sue
REAL-TIME CENTER STUDENTS PRACTICING STUDENTS IDLE STUDENTS WHO NEED HELP SKILLS PRACTICE QUESTIONS ANSWERED PAST HOUR


Up: Part II: Inflection Previous: ADVERBS Next: VERBS
The numeral adjectives and corresponding adverbs are as follows:
| SIGN | CARDINAL | ORDINAL | ADVERB | |
| 1 | α᾽ | εἷς, μία, ἕν one | πρῶτος first | ἅπαξ once |
| 2 | β᾽ | δύο two | δεύτερος second | δίς twice |
| 3 | γ᾽ | τρεῖς, τρία three | τρίτος third | τρίς thrice |
| 4 | δ᾽ | τέτταρες, τέτταρα | τέταρτος, -η, -ον | τετράκις |
| (τέσσαρες, τέσσαρα) | ||||
| 5 | ε᾽ | πέντε | πέμπτος | πεντάκις |
| 6 | σ᾽ | ἕξ | ἕκτος | ἑξάκις |
| 7 | ζ᾽ | ἑπτά | ἕβδομος | ἑπτάκις |
| 8 | η᾽ | ὀκτώ | ὄγδοος | ὀκτάκις |
| 9 | θ᾽ | ἐννέα | ἔνατος | ἐνάκις |
| 10 | ι᾽ | δέκα | δέκατος, -η, -ον | δεκάκις |
| 11 | ια᾽ | ἕνδεκα | ἑνδέκατος | ἑνδεκάκις |
| 12 | ιβ᾽ | δώδεκα | δωδέκατος | δωδεκάκις |
| 13 | ιγ᾽ | τρεῖς ( τρία ) καὶ δέκα | τρίτος καὶ δέκατος | τρεισκαιδεκάκις |
| (or τρεισκαίδεκα ) | ||||
| 14 | ιδ᾽ | τέτταρες ( τέτταρα ) καὶ | τέταρτος καὶ δέκατος | τετταρεσκαιδεκάκις |
| δέκα | ||||
| 15 | ιε᾽ | πεντεκαίδεκα | πέμπτος καὶ δέκατος | πεντεκαιδεκάκις |
| 16 | ισ᾽ | ἑκκαίδεκα (for ἑξκαίδεκα | ἕκτος καὶ δέκατος | ἑκκαιδεκάκις |
| 103) | ||||
| 17 | ιζ᾽ | ἑπτακαίδεκα | ἕβδομος καὶ δέκατος | ἑπτακαιδεκάκις |
| 18 | ιη᾽ | ὀκτωκαίδεκα | ὄγδοος καὶ δέκατος | ὀκτωκαιδεκάκις |
| 19 | ιθ᾽ | ἐννεακαίδεκα | ἔνατος καὶ δέκατος | ἐννεακαιδεκάκις |
| 20 | κ᾽ | εἴκοσι ( ν ) | εἰκοστός, -ή, -όν | εἰκοσάκις |
| 21 | κα᾽ | εἷς καὶ εἴκοσι ( ν ) or | πρῶτος καὶ εἰκοστός | εἰκοσάκις ἅπαξ |
| εἴκοσι ( καὶ ) εἷς | ||||
| 30 | λ᾽ | τριά̄κοντα | τριᾱκοστός | τριᾱκοντάκις |
| 40 | μ᾽ | τετταράκοντα | τετταρακοστός | τετταρακοντάκις |
| 50 | ν᾽ | πεντήκοντα | πεντηκοστός | πεντηκοντάκις |
| 60 | ξ᾽ | ἑξήκοντα | ἑξηκοστός | ἑξηκοντάκις |
| 70 | ο᾽ | ἑβδομήκοντα | ἑβδομηκοστός | ἑβδομηκοντάκις |
| 80 | π᾽ | ὀγδοήκοντα | ὀγδοηκοστός | ὀγδοηκοντάκις |
| 90 | ϟ | ἐνενήκοντα | ἐνενηκοστός | ἐνενηκοντάκις |
| 100 | ρ᾽ | ἑκατόν | ἑκατοστός, -ή, -όν | ἑκατοντάκις |
| 200 | σ᾽ | διᾱκόσιοι, -αι, -α | διᾱκοσιοστός | διᾱκοσιάκις |
| 300 | τ᾽ | τριᾱκόσιοι | τριᾱκοσιοστός | τριᾱκοσιάκις |
| 400 | υ᾽ | τετρακόσιοι | τετρακοσιοστός | τετρακοσιάκις |
| 500 | φ᾽ | πεντακόσιοι | πεντακοσιοστός | πεντακοσιάκις |
| 600 | χ᾽ | ἑξακόσιοι | ἑξακοσιοστός | ἑξακοσιάκις |
| 700 | ψ᾽ | ἑπτακόσιοι | ἑπτακοσιοστός | ἑπτακοσιάκις |
| 800 | ω᾽ | ὀκτακόσιοι | ὀκτακοσιοστός | ὀκτακοσιάκις |
| 900 | [σαμπι ] | ἐνακόσιοι | ἐνακοσιοστός | ἐνακοσιάκις |
| 1,000 | [τνυμ ]α | χί̄λιοι, -αι, -α | χῑλιοστός, -ή, -όν | χῑλιάκις |
| 2,000 | [τνυμ ]β | δισχί̄λιοι | δισχῑλιοστός | δισχῑλιάκις |
| 3,000 | [τνυμ ]γ | τρισχί̄λιοι | τρισχῑλιοστός | τρισχῑλιάκις |
| 10,000 | [τνυμ ]ι | μύ̄ριοι, -αι, -α | μῡριοστός | μῡριάκις |
| 20,000 | [τνυμ ]κ | δισμύ̄ριοι | δισμῡριοστός | δισμῡριάκις |
| 100,000 | [τνυμ ]ρ | δεκακισμύ̄ριοι | δεκακισμῡριοστός | δεκακισμῡριάκις |
N.—Above 10,000: δύο μῡριάδες 20,000, etc., μῡριάκις μύ̄ριοι, i.e. 10,000 x 10,000.
1. For the cardinals 1-4, see 349 D. Hom. has, for 12, δώδεκα (for δϝωδεκα), δυώδεκα, and δυοκαίδεκα (also generally poetic); 20, εἴκοσι and ἐείκοσι; 30, τριήκοντα; 80, ὀγδώκοντα; 90, ἐνενήκοντα and ἐννήκοντα; 200 and 300, διηκόσιοι, τριηκόσιοι; 9000 and 10,000, ἐννεάχῑλοι, δεκάχῑλοι (-χειλοι?). He has also the ordinals 3d, τρίτατος; 4th, τέτρατος; 7th, ἑβδόματος; 8th, ὀγδόατος; 9th, εἵνατος; 12th, δυωδέκατος; 13th, τρῑς (τρεισ-?) καιδέκατος; 20th, ἐεικοστός; and the Attic form of each.
2. Hdt. has δυώδεκα (δυωδέκατος), τεσσερεσκαίδεκα indeclinable (τεσσερεσκαιδέκατος), τριήκοντα (τριηκοστός), τεσσεράκοντα, ὀγδώκοντα, διηκόσιοι (διηκοσιοστός), τριηκόσιοι: for ἔνατος he has εἴνατος, and so εἰνάκις, εἰνακόσιοι, εἰνακισχί̄λιοι.
3. Aeolic has πέμπε for 5 (cp. Hom. πεμπώβολον five-pronged fork), gen. plur. πέμπων inflected, as also δέκων, τεσσερακόντων, etc.; for 1000, χέλλιοι. Doric has, for 1, ἧς (37 D. 2); 4, τέτορες; 6, ϝέξ; 7th, ἕβδεμος; 12, δυώδεκα; 20, ϝί̄κατι, ϝείκατι; 40, τετρώκοντα (τετρωκοστός); 200, etc., διᾱκατίοι, etc.; 1000, χηλίοι and χειλίοι (37 D. 2); for 1st, πρᾶτος.
Notation.—The system of alphabetic notation came into use after the second century B.C. The first nine letters stand for units, the second nine for tens, the third nine for hundreds (27 letters). In addition to the 24 letters of the alphabet, three obsolete signs are employed: ς, a form identical with the late abbreviation for στ, in place of the lost ϝ (3), once used for 6; ϟ (koppa), in the same order as Lat. q, for 90; for 900, [sampi ] sampi, probably for san, an old form of sigma, + pi. From 1 to 999 a stroke stands above the letter, for 1000's the same signs are used but with the stroke below the letter (α# = 1, [τνυμ ]α = 1000). Only the last letter in any given series has the stroke above: ρνζ# 157, υα# 401, [τνυμ ]α[σαμπι ]ι# 1910. α̈ is sometimes used for 10,000; β̈ for 20,000, etc.
a. In the classical period the following system was used according to the inscriptions: Ι = 1, ΙΙΙΙ = 4, Γ (πέντε) = 5, ΓΙ = 6, Δ (δέκα) = 10, ΔΔ = 20, Η (ἑκατόν) = 100, ΗΗ = 200, Χ = 1000, Μ = 10,000, Ι (πεντάκις δέκα) = 50, ΓχΧ (πεντάκις χί̄λιοι ¨ χί̄λιοι) = 6000.
b. For the numbers from 1 to 24 the letters, used in continuous succession, are frequently used to designate the books of the Iliad (Α, Β, Γ, etc.) and of the Odyssey (α, β, γ, etc.).
The cardinals from 1 to 4 are declined as follows:
| one | two | three | four | |||
| Nom. | εἱ̄ς | μία | ἕν | N. A. δύο | τρεῖς τρία | τέτταρες τέτταρα |
| Gen. | ἑνός | μιᾶς | ἑνός | G. D. δυοῖν | τριῶν | τεττάρων |
| Dat. | ἑνί | μιᾷ | ἑνί | τρισί ( ν ) | τέτταρσι ( ν ) | |
| Acc. | ἕνα | μίαν | ἕν | τρεῖς τρία | τέτταρας τέτταρα |
a. εἷς is for ἑν-ς (cp. 245). The stem ἑν was originally σεμ (Lat. semel, simplex, singuli), weak forms of which are ἅ-παξ, ἁ-πλοῦς, from σμ-π- (35 b). μία stands for σμ-ια.
b. οὐδὲ εἷς, μηδὲ εἷς not even one unite (with change in accent) to form the compounds οὐδείς, μηδείς no one. These words are declined like εἷς: thus, οὐδείς, οὐδεμία, οὐδέν, οὐδενός, οὐδεμιᾶς, οὐδενός, etc., and sometimes in the plural (no men, none or nobodies) οὐδένες, οὐδένων, οὐδέσι, οὐδένας. For emphasis the compounds may be divided, as οὐδὲ εἷς not ONE. A preposition or ἄν may separate the two parts, as οὐδ᾽ ἀπὸ μιᾶς from not a single one, οὐδ᾽ ἂν ἑνί ne uni quidem.
c. πρῶτος (primus) means the first among more than two, πρότερος (prior) the first of two.
d. δύο may be used with the gen. and dat. pl., as δύο μνηνῶν of two months. δὺοῖν occurs rarely with plurals: παισὶν . . . δυοῖν D. 39.32. δυεῖν for δυοῖν does not appear till about 300 B.C.
e. ἄμφω both, N. A. ἄμφω, G. D. ἀμφοῖν (Lat. ambo). But both is more commonly ἀμφότεροι, -αι, -α.
f. For τέτταρες, -ράκοντα, etc., early Attic prose and tragedy have τέσσαρες, etc.
g. The first numeral is inflected in τρεῖς καὶ δέκα 13, τέτταρες καὶ δέκα 14 τρεισκαίδεκα and Ionic τεσσερεσκαίδεκα (very rare in Attic) are indeclinable.
Hom. has, for μία, ἴα (ἰῆς, ἰῇ, ἴαν); for ἑνί, ἰῷ; δύο, δύω (undeclined); the adj. forms δοιώ and pl. δοιοί regularly declined. For 4, τέσσαρες, (Aeolic) πίσυρες; Pind. has τέτρασιν. Hdt. has δύο sometimes undeclined, also δυῶν, δυοῖσι; τέσσερες, -α, τεσσέρων, τέσσερσι; τεσσερεσκαίδεκα 14 undeclined. Aeolic δύεσιν 2; πέσσυρες, πέσυρα for 4.
The cardinals from 5 to 199 are indeclinable; from 200 the cardinals, and all the ordinals from first on, are declined like ἀγαθός.
a. Compound numbers above 20 are expressed by placing the smaller number first (with καί) or the larger number first (with or without καί).
| δύο καὶ εἴκοσι (ν) two and twenty | δεύτερος καὶ εἰκοστός |
| εἴκοσι καὶ δύο twenty and two, or εἴκοσι δύο twenty-two | εἰκοστὸς καὶ δεύτερος |
| 555 = πέντε καὶ πεντήκοντα καὶ πεντακόσιοι or πεντακόσιοι | (καὶ) πεντήκοντα (καὶ) |
| πέντε. |
b. For 21st, 31st, etc., εἷς (for πρῶτος) καὶ εἰκοστός (τριᾱκοστός) is permissible, but otherwise the cardinal is rarely thus joined with the ordinal.
c. Compounds of 10, 20, etc., with 8 and 9 are usually expressed by subtraction with the participle of δέω lack, as 18, 19, δυοῖν (ἑνὸς) δέοντες εἴκοσι. So ναυσὶ μιᾶς δεούσαις τεττάρακοντα with 39 ships, δυοῖν δέοντα πεντήκοντα ἔτη 48 years; and with ordinals ἑνὸς δέον εἰκοστὸν ἔτος the 19th year. The same method may be employed in other numbers than 8's or 9's: ἑπτὰ ἀποδέοντες τριᾱκόσιοι, i.e. 293.
d. An ordinal followed by ἐπὶ δέκα denotes the day of the month from the 13th to the 19th, as πέμπτῃ ἐπὶ δέκα on the 15th.
With the collective words (996) ἡ ἵππος cavalry, ἡ ἀσπίς men with shields, numerals in -ιοι may appear even in the singular: διᾱκοσίᾱ ἵππος 200 horse T. 1.62, ἀσπὶς μῡρίᾱ καὶ τετρακοσίᾱ 10,400 horse X. A. 1.7.10.
μύ̄ριοι, the greatest number expressed by a single word, means 10,000; μῡρίοι, countless, infinite. In the latter sense the singular may be used, as μῡρίᾱ ἐρημίᾱ infinite solitude P. L. 677 E.
Fractions are expressed in several ways: ἥμισυς 1/2, ὁ ἥμισυς τοῦ ἀριθμοῦ half the number, αἱ ἡμίσειαι τῶν νεῶν half of the ships, τὸ ἥμισυ τοῦ στρατοῦ half the army, ἡμιτάλαντον half a talent; τρία ἡμιτάλαντα 1 1/2 talents, τρίτον ἡμίμναιον 2 1/2 minae; τριτημόριον 1/3, πεμπτημόριον 1/5, ἐπίτριτος 1 1/3, ἐπίπεμπτος 1 1/5, τῶν πέντε αί δύο μοῖραι 2/5. But when the numerator is less by one than the denominator, the genitive is omitted and only the article and μέρη are used: as τὰ τρία μέρη 3/4, i.e. the three parts (scil. of four).
Other classes of numeral words.
a. Distributives proper, answering the question how many each? are wanting in Greek. Instead, ἀνά, εἰς, and κατά, with the accus., and compounds of σύν with, are used: κατὰ δύο or σύνδυο two by two, two each (Lat. bini). The cardinals are often used alone, as
singulis militibus dabo quinas argenti minasἀνδρὶ ἑκάστῳ δώσω πέντε ἀργυρίου μνᾶς
b. Multiplicatives in -πλοῦς -fold (from -πλοος, Lat. -plex), ἁπλοῦς simple, διπλοῦς twofold, τριπλοῦς threefold, πολλαπλοῦς manifold.
c. Proportionals in -πλασιος: διπλάσιος twice as great or (plur.) as many, πολλαπλάσιος many times as great (many).
d. διττός means double, τριττός treble (from διχ-ιος, τριχ-ιος 112).
N.—Multiplication.—Adverbs answering the question how many times? are used in multiplication: τὰ δὶς πέντε δέκα ἐστίν twice five are ten. See also 347 N.
e. Abstract and Collective Numbers in -άς (gen. -άδ-ος), all feminine: ἑνάς or μονάς the number one, unity, monad, δυάς the number two, duality, τριάς trinity, triad, δεκάς decad, decade, εἰκάς, ἑκατοντάς, χῑλιάς, μῡριάς myriad, ἑκατὸν μῡριάδες a million. Also in -ύς: τριττύς (-ύος) the third of a tribe (properly the number three), τετρακύς.
f. Adjectives in -αῖος, answering the question on what day? δευτεραῖος (or τῇ δευτεραίᾳ) ἀπῆλθε he departed on the second day.
g. Adverbs of Division.—μοναχῇ singly, in one way only, δίχα, διχῇ in two parts, doubly, τριχῇ, τέτραχα, etc., πολλαχῇ in many ways, πανταχῇ in every way.
Hdt. has διξός (from διχθ-ιος), τριξός for διττός, τριττός; also -πλησιος and -φασιος. Hom. has δίχα and διχθά, τρίχα and τριχθά; τριπλῇ, τετραπλῇ.


Michelle Fullwood
@michelleful
Slides: michelleful.github.io/PyCon2017
Image source: Fjodor van Veen (2016) Neural Network Zoo
|
|
|
| Traditional machine learning | Deep learning |
X_train = np.array([
[1250, 350, 3],
[1700, 900, 6],
[1400, 600, 3]
])
Y_train = np.array([345000, 580000, 360000])
Multiply each feature by a weight and add them up.
Add an intercept to get our final estimate.
weights = np.array([300, -10, -1])
intercept = -26497
def model(X, weights, intercept):
return X.dot(weights) + intercept
Y_hat = model(X_train, weights, intercept)
def cost(Y_hat, Y):
return np.sum((Y_hat - Y)**2)
Hold X and Y constant.
Adjust parameters to minimize cost.
Image source: Wikimedia Commons
$$\hat{y} = w_0x_0 + w_1x_1 + w_2x_2 + b$$ $$\epsilon = (y-\hat{y})^2$$
Goal: \(\frac{\partial\epsilon}{\partial w_i}, \frac{\partial\epsilon}{\partial b}\)
\(\frac{\partial\hat{y}}{\partial w_0} = x_0\)
\(\frac{d\epsilon}{d\hat{y}} = -2(y-\hat{y})\)
Chain rule: \(\frac{\partial\epsilon}{\partial w_0} = \frac{d\epsilon}{d\hat{y}}\frac{\partial\hat{y}}{\partial w_0} \)
$$\hat{y} = w_0x_0 + w_1x_1 + w_2x_2 + b$$
\(\frac{\partial\hat{y}}{\partial w_0} =\)\( x_0\)
$$\epsilon = (y-\hat{y})^2$$
\(\frac{d\epsilon}{d\hat{y}} =\) \(-\)\(2(y-\hat{y})\)
\(\frac{\partial\hat{y}}{\partial w_0} = x_0\)
\(\frac{d\epsilon}{d\hat{y}} = -2(y-\hat{y})\)
\(\frac{\partial\epsilon}{\partial w_0} = -2(y-\hat{y})x_0 \)
$$\hat{y} = w_0x_0 + w_1x_1 + w_2x_2 + b\cdot1$$
\(\frac{\partial\epsilon}{\partial b} = -2(y-\hat{y})\cdot 1 \)
delta_y = y - y_hat
gradient_weights = -2 * delta_y * weights
gradient_intercept = -2 * delta_y * 1
weights = weights - gradient_weights
intercept = intercept - gradient_intercept
learning_rate = 0.05
weights = weights - \
learning_rate * gradient_weights
intercept = intercept - \
learning_rate * gradient_intercept
def training_round(x, y, weights, intercept,
alpha=learning_rate):
# calculate our estimate
y_hat = model(x, weights, intercept)
# calculate error
delta_y = y - y_hat
# calculate gradients
gradient_weights = -2 * delta_y * weights
gradient_intercept = -2 * delta_y
# update parameters
weights = weights - alpha * gradient_weights
intercept = intercept - alpha * gradient_intercept
return weights, intercept
NUM_EPOCHS = 100
def train(X, Y):
# initialize parameters
weights = np.random.randn(3)
intercept = 0
# training rounds
for i in range(NUM_EPOCHS):
for (x, y) in zip(X, Y):
weights, intercept = training_round(x, y,
weights, intercept)
def test(X_test, Y_test, weights, intercept):
Y_predicted = model(X_test, weights, intercept)
error = cost(Y_predicted, Y_test)
return np.sqrt(np.mean(error))
>>> test(X_test, Y_test, final_weights, final_intercept)
6052.79
import tensorflow as tf
X = tf.placeholder(tf.float32, [None, 3])
Y = tf.placeholder(tf.float32, [None, 1])
# create tf.Variable(s)
W = tf.get_variable("weights", [3, 1],
initializer=tf.random_normal_initializer())
b = tf.get_variable("intercept", [1],
initializer=tf.constant_initializer(0))
Y_hat = tf.matmul(X, W) + b
cost = tf.reduce_mean(tf.square(Y_hat - Y))
learning_rate = 0.05
optimizer = tf.train.GradientDescentOptimizer
(learning_rate).minimize(cost)
with tf.Session() as sess:
# initialize variables
sess.run(tf.global_variables_initializer())
# train
for _ in range(NUM_EPOCHS):
for (X_batch, Y_batch) in get_minibatches(
X_train, Y_train, BATCH_SIZE):
sess.run(optimizer,
feed_dict={
X: X_batch,
Y: Y_batch
})
# Placeholders
X = tf.placeholder(tf.float32, [None, 3])
Y = tf.placeholder(tf.float32, [None, 1])
# Parameters/Variables
W = tf.get_variable("weights", [3, 1],
initializer=tf.random_normal_initializer())
b = tf.get_variable("intercept", [1],
initializer=tf.constant_initializer(0))
# Operations
Y_hat = tf.matmul(X, W) + b
# Cost function
cost = tf.reduce_mean(tf.square(Y_hat - Y))
# Optimization
optimizer = tf.train.GradientDescentOptimizer
(learning_rate).minimize(cost)
# ------------------------------------------------
# Train
with tf.Session() as sess:
# initialize variables
sess.run(tf.global_variables_initializer())
# run training rounds
for _ in range(NUM_EPOCHS):
for X_batch, Y_batch in get_minibatches(
X_train, Y_train, BATCH_SIZE):
sess.run(optimizer,
feed_dict={X: X_batch, Y: Y_batch})
# Placeholders
X = tf.placeholder(tf.float32, [None, 3])
Y = tf.placeholder(tf.float32, [None, 1])
# Parameters/Variables
W = tf.get_variable("weights", [3, 1],
initializer=tf.random_normal_initializer())
b = tf.get_variable("intercept", [1],
initializer=tf.constant_initializer(0))
# Operations
Y_hat = tf.matmul(X, W) + b
# Cost function
cost = tf.reduce_mean(tf.square(Y_hat - Y))
# Optimization
optimizer = tf.train.GradientDescentOptimizer
(learning_rate).minimize(cost)
# ------------------------------------------------
# Train
with tf.Session() as sess:
# initialize variables
sess.run(tf.global_variables_initializer())
# run training rounds
for _ in range(NUM_EPOCHS):
for X_batch, Y_batch in get_minibatches(
X_train, Y_train, BATCH_SIZE):
sess.run(optimizer,
feed_dict={X: X_batch, Y: Y_batch})
#-------------
def training_round(x, y, weights, intercept,
alpha=learning_rate):
# calculate our estimate
y_hat = model(x, weights, intercept)
# calculate error
delta_y = y - y_hat
# calculate gradients
gradient_weights = -2 * delta_y * weights
gradient_intercept = -2 * delta_y
# update parameters
weights = weights - alpha * gradient_weights
intercept = intercept - alpha * gradient_intercept
return weights, intercept
def training_round(x, y, weights, intercept,
alpha=learning_rate):
# calculate our estimate
y_hat = model(x, weights, intercept)
# calculate error
delta_y = y - y_hat
# calculate gradients
gradient_weights = -2 * delta_y * weights
gradient_intercept = -2 * delta_y
# update parameters
weights = weights - alpha * gradient_weights
intercept = intercept - alpha * gradient_intercept
return weights, intercept
def training_round(x, y, weights, intercept,
alpha=learning_rate):
# calculate our estimate
y_hat = model(x, weights, intercept)
# calculate error
delta_y = y - y_hat
# calculate gradients
gradient_weights = -2 * delta_y * weights
gradient_intercept = -2 * delta_y
# update parameters
weights = weights - alpha * gradient_weights
intercept = intercept - alpha * gradient_intercept
return weights, intercept
def training_round(x, y, weights, intercept,
alpha=learning_rate):
# calculate our estimate
y_hat = model(x, weights, intercept)
# calculate error
delta_y = y - y_hat
# calculate gradients
gradient_weights = -2 * delta_y * weights
gradient_intercept = -2 * delta_y
# update parameters
weights = weights - alpha * gradient_weights
intercept = intercept - alpha * gradient_intercept
return weights, intercept
sess.run(optimizer,
feed_dict={
X: X_batch,
Y: Y_batch
})
with tf.Session() as sess:
# train
# ... (code from above)
# test
Y_predicted = sess.run(model,
feed_dict = {X: X_test})
squared_error = tf.reduce_mean(
tf.square(Y_test, Y_predicted))
>>> np.sqrt(squared_error)
5967.39
Take a weighted sum of the features
and add a bias term to get the logit.
Convert the logit to a probability
via the logistic-sigmoid function.
Image generated with playground.tensorflow.org
Z = np.sum(np.exp(logits))
# X = vector length 784 (= 28 x 28 pixels)
# Y = one-hot vectors
# digit 0 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
X = tf.placeholder(tf.float32, [None, 28*28])
Y = tf.placeholder(tf.float32, [None, 10])
# Parameters/Variables
W = tf.get_variable("weights", [784, 10],
initializer=tf.random_normal_initializer())
b = tf.get_variable("bias", [10],
initializer=tf.constant_initializer(0))
Y_logits = tf.matmul(X, W) + b
cost = tf.reduce_mean(
tf.nn.softmax_cross_entropy_with_logits(
logits=Y_logits, labels=Y))
$H(\hat{y}) = -\sum\limits_i y_i \log(\hat{y}_i)$
learning_rate = 0.05
optimizer = tf.train.GradientDescentOptimizer
(learning_rate).minimize(cost)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for i in range(NUM_EPOCHS):
for (X_batch, Y_batch) in get_minibatches(
X_train, Y_train, BATCH_SIZE):
sess.run(optimizer,
feed_dict={X: X_batch,
Y: Y_batch})
predict = tf.argmax(Y_logits, 1)
with tf.Session() as sess:
# training code from above
predictions = sess.run(predict,
feed_dict={X: X_test})
accuracy = tf.reduce_mean(np.mean(
np.argmax(Y_test, axis=1) == predictions)
>>> accuracy
0.925
Image generated with playground.tensorflow.org
Image generated with playground.tensorflow.org
HIDDEN_NODES = 128
W1 = tf.get_variable("weights1", [784, HIDDEN_NODES],
initializer=tf.random_normal_initializer())
b1 = tf.get_variable("bias1", [HIDDEN_NODES],
initializer=tf.constant_initializer(0))
W2 = tf.get_variable("weights2", [HIDDEN_NODES, 10],
initializer=tf.random_normal_initializer())
b2 = tf.get_variable("bias2", [10],
initializer=tf.constant_initializer(0))
hidden = tf.matmul(X, W1) + b1
y_logits = tf.matmul(hidden, W2) + b2
| # hidden layers | Train accuracy | Test accuracy |
| 0 | 93.0 | 92.5 |
| 1 | 89.2 | 88.8 |
(Well, it's a little bit over-hyped...)
A linear transformation of a linear transformation is still a linear transformation!
We need to add non-linearity to the system.
hidden = tf.nn.relu(tf.matmul(X, W1) + b1)
y_logits = tf.matmul(hidden, W2) + b2
| # hidden layers | Train accuracy | Test accuracy |
| 0 | 93.0 | 92.5 |
| 1 | 97.9 | 95.2 |
Image generated with playground.tensorflow.org
Image generated with playground.tensorflow.org
2 hidden neurons
Image generated with ConvNetJS by Andrej Karpathy
3 hidden neurons
Image generated with ConvNetJS by Andrej Karpathy
4 hidden neurons
Image generated with ConvNetJS by Andrej Karpathy
5 hidden neurons
Image generated with ConvNetJS by Andrej Karpathy
Image generated with ConvNetJS by Andrej Karpathy
Image generated with ConvNetJS by Andrej Karpathy
No!
hidden_1 = tf.nn.relu(tf.matmul(X, W1) + b1)
hidden_2 = tf.nn.relu(tf.matmul(hidden_1, W2) + b2)
y_logits = tf.matmul(hidden_2, W3) + b3
→ End-to-end learning
Image source: Goodfellow, Bengio, and Courville (2016) (The) Deep Learning (Book)
So let's go deeper!
| # hidden layers | Train accuracy | Test accuracy |
| 0 | 93.0 | 92.5 |
| 1 | 97.9 | 95.2 |
| 2 | 98.0 | 94.2 |
Image source: Goodfellow, Bengio, and Courville (2016) (The) Deep Learning (Book)
L2 regularization: weights should be small.
$L = \sum{w_i^2}$
cost += REGULARIZATION_CONSTANT * \
(tf.nn.l2_loss(W1) +
tf.nn.l2_loss(W2) +
tf.nn.l2_loss(W3))
| Regularization | Train accuracy | Test accuracy |
| None | 95.5 | 92.9 |
| L2 | 95.1 | 95.1 |
# add a new placeholder
keep_prob = tf.placeholder(tf.float32)
# add a step to the model
hidden = tf.nn.relu(tf.matmul(X, w0) + b0)
dropout = tf.nn.dropout(hidden, keep_prob)
y_logits = tf.nn.relu(tf.matmul(dropout, w1) + b1)
with tf.Session() as sess:
# ... init, then train:
for _ in range(NUM_EPOCHS * 2):
for (X_batch, Y_batch) in get_minibatches(
X_train, Y_train, BATCH_SIZE):
sess.run(optimizer,
feed_dict={
X: X_batch, Y: Y_batch,
keep_prob: 0.5
})
# test
sess.run(predict, feed_dict={X: X_test,
keep_prob: 1.0})
| Regularization | Train accuracy | Test accuracy |
| None | 95.5 | 92.9 |
| L2 | 95.1 | 95.1 |
| Dropout | 93.3 | 93.1 |
# layers, # neurons / layer
Image source: Fjodor van Veen (2016) Neural Network Zoo
Activation functions: ReLU, tanh, leaky RELU, Maxout...
Image source: Fjodor van Veen (2016) Neural Network Zoo
Image source: Fjodor van Veen (2016) Neural Network Zoo
Try Adam
Image source: Alec Radford
from keras.models import Sequential
model = Sequential()
model.add(Dense(input_dim=784, units=128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(units=128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(units=10, activation='softmax'))
model.compile(loss='categorical_crossentropy',
optimizer=keras.optimizers.SGD(lr=0.05),
metrics=['accuracy'])
model.fit(X_train, Y_train, epochs=100, batch_size=120)
model.evaluate(X_test, Y_test)
Slides: michelleful.github.io/PyCon2017


Ecommerce Store
This is Amazon.com for Books only.
The server side code is written in Python/Django which is used as a rest API.
The client side is made with React.js .
View Live Source CodeHello, I'm Sagar Mohanty a Computer Science Engineering student from Odisha, India. I am in love with uilding softwares and sproblem solving. I work on the backend in most cases but also I have some experience in building UI by myself. Also I have some experience in building smart systems using ML.
Languages I mostly work on are C , C++ , python3 HTML5 ,CSS3 ,Bootstrap4
ResumeThese are some of my best projects
This is Amazon.com for Books only.
The server side code is written in Python/Django which is used as a rest API.
The client side is made with React.js .
View Live Source CodeThis is a music streaming web app.
The server side code is written in Python/Django which is used as a rest API.
The client side is made with React.js .
View Live Source Code


{% extends 'base.html'%} {% block content%}
Name: {{current_user.username}}
: {{profile.neighbourhood.name}}
Businesses: {{total_business}}
Status: {{profile.status}}


Home
3.0.1.RELEASE - 26th October 2011
Bug
- [PDM-43]
- Inherited collection breaks PodamFactoryImpl
3.0.0.RELEASE - 29th August 2011
Story
- [PDM-40]
- Data strategies should receive a Metadata object containing
information about the attribute they are going to fill.
2.3.12.RELEASE - 16th July 2011
Bug
- [PDM-42]
- Inherited Map Attribute Fails to be Populated
2.3.10.RELEASE - 05th June 2011
Improvement
- [PDM-37]
- Random strings should only contain the following characters:
[a-zA-Z0-9_]
2.3.8.RELEASE - 04th June 2011
Bug
- [PDM-39]
- Filling a String.class as POJO does break without trying all
possible constructors.
2.3.7.RELEASE - 30th May 2011
Improvement
- [PDM-38]
- Allow for native java classes to be treated as POJOs and therefore
attempt to return a value for them
2.3.6.RELEASE - 21th May 2011
Improvement
- [PDM-36]
- When retrieving random enum values, choose random values, not
always the first one
2.3.5.RELEASE - 21th May 2011
Improvement
- [PDM-35]
- In assigning random values, try to use ASCII characters so that
auto-generated strings are easier to read
2.3.4.RELEASE - 19th May 2011
Bug
- [PDM-33]
- Resolve the problem when PODAM tries to build a type with a
non-public, no-arg constructor
Improvement
- [PDM-34]
- Make PODAM more fault-taulerant. If it can't manufacture an
attribute, just log a WARNING and return null value for that
attribute
2.3.2.RELEASE - 16th May 2011
Bug
- [PDM-32]
- During the graph traversal, PODAM should not instantiate attributes
whose type is an abstract class or interface
- [PDM-33]
- Resolve the problem when PODAM tries to build a type with a
non-public, no-arg constructor
Improvement
- [PDM-34]
- Make PODAM more fault-taulerant. If it can't manufacture an
attribute, just log a WARNING and return null value for that
attribute
2.3.0.RELEASE - 14th May 2011
Improvement
- [PDM-29]
- Random Longs should return the current time in milliseconds.
Story
- [PDM-28]
- As a user I would like to have an annotation which allows me to
decide a per-instance attribute data strategy
Task
- [PDM-30]
- Add a "sponsor" page to the documentation
Sub-task
- [PDM-31]
- Provide support for collections
2.2.0.RELEASE - 8th May 2011
Bug
- [PDM-27]
- Allow PODAM to create instances for third party POJOs with no
setters which cannot be annotated
Story
- [PDM-23]
- Add a numValue attribute to the numeric annotations. If such value
is specified it takes precedence over min and max.
2.1.0.RELEASE - 3rd May 2011
Bug
- [PDM-24]
- Provide support for classes in the java/javax naming space with
constructors which accepts arguments
Story
- [PDM-25]
- Provide support for Enums
2.0.0.RELEASE - 2nd May 2011
Story
- [PDM-21]
- Move all code to GitHub
- [PDM-22]
- Modify PodamFactory to be an instantiable class with instance
methods to allow it to be used as a Spring bean
1.0.0.RELEASE - 30th April 2011
Improvement
- [PDM-19]
- Suggestion: Allow data to be generated in a repeatable manor (i.e.
sequence)
Story
- [PDM-20]
- Create an HTML page which shows corner cases, such as hierarchies
with abstract classes, static factory methods, etc
0.0.1-RC4 - 27th April 2011
Improvement
- [PDM-17]
- Support static factory methods with parameters
0.0.1-RC3 - 26th April 2011
Bug
- [PDM-16]
- To fix creation of instance when no setters are available
- [PDM-18]
- PODAM is not JDK5 backwards compatible
0.0.1-RC2 - 25th April 2011
Bug
- [PDM-15]
- Annotations in immutable-like POJOs are not handled properly
Improvement
- [PDM-14]
- Remove Javadocs warnings
Story
- [PDM-4] -
As a technical user I'd like to see detailed information about
which POJOs are supported by PODAM in order to know whether I can use
it or not
- [PDM-5] -
As a user I want to know current limitations of PODAM in order to
assess whether I can use it to fill my POJOs
0.0.1-RC1 - 24th April 2011
Story
- [PDM-1] -
As a user I want to know what to do to use PODAM in my projects to
use PODAM as quickly as possible
- [PDM-2] -
As a user I want PODAM to fill also my non-generic map attributes
declared in my POJOs in order to support legacy code
- [PDM-6] -
As a user I want to be able to customise how PODAM assigns a Byte
value
- [PDM-7] -
As a user I want to be able to customise how PODAM assigns a char
value
- [PDM-8] -
As a user I want to be able to customise how PODAM assigns a short
value
- [PDM-9] -
As a user I want to be able to customise how PODAM assigns a Float
value
- [PDM-10]
- As a user I want to be able to customise how PODAM assigns a Double
value
- [PDM-11]
- As a user I want to be able to customise how PODAM assigns a String
value
- [PDM-12]
- As a user I want to be able to customise how PODAM assigns values
to Collections


If you have time to read this, try reloading the page.
If that doesn't fix this, report issue from the left-bottom triangle.
Your existivity is and has chance of existances existing.
You know existances. They produce existivity each second.
Existances experienced as much as seconds. It boosts the production of existivity from existances by .
You have thoughts and think strings per second. Recently generated:
You have thought of words in the titleMany to do, Less you have to. and finds existances per second.
There are joules of energy in your system. Existances and existivity together experience seconds per second.
See if it exists. Reduces existivity or resets it if it is low. Repeating makes efficient. Resets existivity and reduces most of existances. You need to think. Resets experienced time, existance, and existivity. Energy heat up the encouragement. Resets thoughts, words, experienced time, existance, and existivity. BOOM Resets energy, thoughts, words, experienced time, existance, and existivity.
Disable shake
You have explosion points.
Speed it up
Double the effect of experience, and experiencing gives five more existances.
c/=sqrt(2)
Double the production from energy.
Woah, You have some business goin' on.
Boost existance by ×10, and yet the lower your existability, more boost you get to it. The III, you know.
Boost: +
Productive existances
The more existances you have, the more existances you get from making it exist.
Enabled:
Boost: ×
Enhance existivity.
Increases the amount of existances to be found, but dramatically decreases and creates a peak around 720000 existivity to the probability.
Disables boost on fail. Always resets existivity completely when finding existance.
Enabled:
Boost: ×
Twisted Space
The lower your existability, more boost you get to it.
Boost: +
Weighted Average
The lower your existability, more boost you get to it. The II
Boost: +
Temperature Mapping
Boosts existivity production by existances by 5 times. This is equivalent to 8.82747 seconds of experienced time.
Existing Words
Words and existances boosts each other.
Existances boost existance production by words, and words boost existivity production by existances.
The boosts are shown in word boost by existances, then existance boost by words.
Enabled:
Boost: ×
, ×
Efficienthought
Being energetic requires way less words.
EneWorExp
Experienceing from energy is boosted by words.
Boost: ×
Find existance when you have existivity.
Enable:
Enable:
Enable:
There was total of existivity.
You have found existances.
Total of seconds experienced.
You got thoughts.
Thoughts thought about words.
Total of joules of work.
Boom! Exploded times.
You were playing for .
Since the beginning, it has been .
Insert text
Saved NaN seconds ago.
Cookie Notice
This notice is to make this website's cookie usage to be GDPR compliant. I know this may be annoying to some people, but please follow me.
This page uses cookie for following:
Save the game progress
Maybe Google Analytics? I couldn't really figure it out.
You can continue using this website(and play this game) without accepting cookie, but some functionality may not work as intended. For more information about GDPR, read other websites.


{% from "security/_macros.html" import render_field_with_errors, render_field %} {% include "security/_messages.html" %}
An email Confirmation will be sent


A few friends and I decided that we wanted to try and make some of our own absinthe. So we looked up how to desolve thujone(psychoactive chemical in wormwood), and it could be desolved with either ethanol, diethyl ether, or formaldahyde. And since we did not have the means to get ride of the last two we just bought a bottle of grain alchol added .11 lbs of wormwood and set it at a low boil/simmer for an hour. To apply heat to the mixture we simply used a makeshift pressure cooker. NOTE: do not let the grain alcohol get near open fire or to be extra safe oxygen (we learned this the hard way). Also not a lot of heat was necessary to acquire the effects we sought.
After boiling the concotion for an hour the liquid had taken on a deep green color. Once we strained the mix and got out all of the wormwood herb and placed it in the bottle we noticed that when held up to the light the extract emitted no light through. The mixture also had a pungent smell to it.

After the first glass I sat down and began to notice a distinct high, such as I have never encountered before. My hands tingled, I was told to be totally spaced out, I felt wonderfully tranquil and relaxed, I was giggly, and it was like dope without the nods and not being able to converse with others. I also feel it necessary to mention that until this point I felt no effects from any of the alcohol that I had embibed. The buzz lasted for roughly a half an hour. However, the fowl taste on the back of my throat lasted much longer.
Criticisms and strongs points of experience. Next time I attempt this extract I will use anise, fennel, or corriander seeds, and probably some spearemint or peppermint. Eucalyptus mght not be a bad idea either. The high was short lived and I felt that downing that horendous crap is not worth it. So next time if the flavor cannot be enhanced I will try to find some other form of ingestion. The high was quite unique. For someone that has tried just about everything, this is a very tranquil and relaxing way to unwind. I found the experience to be very novil, and especially those who are into the late bohemian period might appreciate an experience like this.
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.


org.simpleframework.http.parse
Class LanguageParser
java.lang.Object
org.simpleframework.util.parse.Parser
org.simpleframework.http.parse.ListParser<java.util.Locale>
org.simpleframework.http.parse.LanguageParser
public class LanguageParser
- extends ListParser<java.util.Locale>
LanguageParser is used to parse the HTTP Accept-Language
header. This takes in an Accept-Language
header and parses
it according the RFC 2616 BNF for the Accept-Language
header.
This also has the ability to sequence the language tokens in terms of
the most preferred and the least preferred.
This uses the qvalues outlined by RFC 2616 to order the language tokens
by preference. Typically the language tokens will not have qvalues with
the language. However when a language tag has the qvalue parameter then
this tag will be ordered based on the value of that parameter. A language
tag without the qvalue parameter is considered to have a qvalue of 1 and
is ordered accordingly.
- Author:
- Niall Gallagher
|
Constructor Summary |
LanguageParser()
This is used to create a LanguageParser for the
Accept-Language HTTP header value. |
LanguageParser(java.util.List<java.lang.String> list)
This is used to create a LanguageParser for the
Accept-Language HTTP header value. |
LanguageParser(java.lang.String text)
This is used to create a LanguageParser for the
Accept-Language HTTP header value. |
|
Method Summary |
protected java.util.Locale |
create(char[] text,
int start,
int len)
This creates a locale object using an offset and a length. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
LanguageParser
public LanguageParser()
- This is used to create a
LanguageParser
for the
Accept-Language
HTTP header value. This will
parse a set of language tokens and there parameters. The
languages will be ordered on preference. This constructor
will parse the value given using parse(String)
.
LanguageParser
public LanguageParser(java.lang.String text)
- This is used to create a
LanguageParser
for the
Accept-Language
HTTP header value. This will
parse a set of language tokens and there parameters. The
languages will be ordered on preference. This constructor
will parse the value given using parse(String)
.
- Parameters:
text
- value of a Accept-Language
header
LanguageParser
public LanguageParser(java.util.List<java.lang.String> list)
- This is used to create a
LanguageParser
for the
Accept-Language
HTTP header value. This will
parse a set of language tokens and there parameters. The
languages will be ordered on preference. This constructor
will parse the value given using parse(String)
.
- Parameters:
list
- value of a Accept-Language
header
create
protected java.util.Locale create(char[] text,
int start,
int len)
- This creates a locale object using an offset and a length.
The locale is created from the extracted token and the offset
and length ensure that no leading or trailing whitespace are
within the created locale object.
- Specified by:
create
in class ListParser<java.util.Locale>
- Parameters:
text
- this is the text buffer to acquire the value fromstart
- the offset within the array to take characterslen
- this is the number of characters within the token


London, UK
I'm a front end developer, living in London. I work on an array of projects, from PHP, Javascript, GSAP and WordPress.


Popup menu
Expand all lists
Collapse all lists
Lists settings
Cards settings
Scrum settings
Global settings
Lists settings
Display mode
Default
Multiple rows
Table
Enable colored lists
Show list cards counter
Cards settings
Show cards short ID
Enable custom tags for cards
[?]
Enable cards separator
[?]
Enable cards prioritization
[?]
Scrum settings
Enable scrum times
[?]
Show sum times for lists
Show estimations
Show consumptions
Show team1
Show team2


cv-examples
Blob Detection
source
Detect connected blobs of color in video. Click a color to track bounding boxes.


We're sorry but easymarket doesn't work properly without JavaScript enabled. Please enable it to continue.


--- layout: post title: Admob works date: 2006-07-10 00:00:00 categories: digital-media mobile ---
Admob works: "I used it for one of my clients in the last week or so and we're very pleased with the results and the conversion rate. So I'll be using it again for my clients. We'll be trialling some of the other wap advertising networks over time as well to see how they compare, but it seems to me that Admob has comprehensive global reach and is getting the conversion rates."


{% extends "QuestionPage.html" %} {% from "look-and-feel/components/fields.njk" import formSection, selectionButtons %} {% set title %} Have you lived in the British Isles for the last 12 months? {% endset %} {% block fields %} {% call formSection() %} {{ selectionButtons( field = fields.britishIslesResident, question = "Have you lived in the British Isles for the last 12 months?", hideQuestion = true, hint = 'If you’re adopting as a couple, you must both have lived in the British Isles for the last 12 months.', options = [ { label: "Yes", value: "yes" }, { label: "No", value: "no" } ] ) }}


STaC Solutions Privacy Statement
We, STaC solutions will act as data controllers for customers. This
privacy statement outlines how we may access, and store personal data
shared with us.
What information we collect about you?
We will voluntarily collect information from you pertinent to completing
contracts with you. This information includes:
- Name and company email address of nominated contact.
-
Company name, and contact details including email, telephone and
address.
-
Information pertinent to invoicing such as: Billing name and address.
This information will be mandatory in order for us to complete a contract
with a client. By supplying StaC solutions with this data, you consent to
being contacted for reasons to do with the contract.
Accessing data
In order to complete contracts for our clients, it may be necessary for
clients to provide us with access to their customers data. In these
instances, it is the data controllers responsibility to inform customers
that they have shared this data with us. In these instances we will:
-
Only access data necessary for us to complete our contract with the data
processor
- Personal data will not be deleted or altered by STaC solutions
-
Personal data will not leave the databases provided to us by clients, or
be otherwise duplicated
-
Access to data will only take place on hardware provided by the client,
and data will not be accessed by personal hardware, or hardware owned by
STaC solutions.
-
Personal data will be accessed by logging into secure systems provided
to us by the client, it is the clients responsibility to only provide
access to the data required to complete the contract.
How do we store our data?
-
StaC solutions will not store your data outside of our secure email
systems or, where needed to complete a contract, inside accountancy
systems (see below).
Who do we share our data with?
-
We do not sell, trade or rent your personal information to third
parties.
-
STaC solutions uses Xero to store information needed for billing.
Without this information we are unable to carry out contracts with
customers. Xero’s privacy policy can be found here: Xero:
https://www.xero.com/content/xero/uk/campaigns/xero-and-gdpr.html
-
You may choose to use the contact us form to register an enquiry. To
handle your request it is necessary to provide us with a valid email
address. Data collected from the website is stored within our secure
email service and will only be used to reply to enquires. STaC Solutions
will contact you with marketing, unless specifically requested.
Data rights?
Customers have the right to request access, or ask for deletion of,
information about them that we hold. To make a request for information
please contact<EMAIL_ADDRESS>You also have the right to:
-
object to processing of personal data that is likely to cause, or is
causing, damage or distress
- prevent processing for the purpose of direct marketing
- object to decisions being taken by automated means
-
in certain circumstances, have inaccurate personal data rectified,
blocked, erased or destroyed;
-
claim compensation for damages caused by a breach of the Data Protection
regulations
If you have a concern about the way we are collecting or using your
personal data, we request that you raise your concern with us in the first
instance. Alternatively, you can contact the Information Commissioner’s
Office at https://ico.org.uk/concerns/


EXOTICA A film review by Christopher Null Copyright 1995 Christopher Null
EXOTICA is a new dramatic thriller from Canadian director Atom Egoyan, who brings us this fascinating glimpse into the life of Francis Brown (Bruce Greenwood), a Canadian tax auditor whose life intertwines with a his brother and niece, an exotic animal smuggler, and, most importantly, the denizens of a strip joint called Exotica.
The action in EXOTICA jumps from one character to another, from location to location, and back into Brown's past occasionally, teasing the viewer with bits of information about how these people's lives are eventually going to gel into a cohesive story. As the story progresses, there are plenty of blanks left for the viewer to fill in as the action springs around. The seamless editing makes this seem natural, albeit a bit overdone at times, but eventually it all comes together to make perfect sense in the end.
Thematically, EXOTICA is a dense study of human nature, obsession, and the difficulties of reconciling our perceptions with reality. Egoyan's careful braiding of plotlines and characters makes this reconciliation all the more difficult, but that's the point. In the end, the film gives us about five different viewpoints on a single situation, an admirable effort that not many filmmakers could pull off.
EXOTICA is a beautiful sensory feast, studded with lush cinematography and haunted by an outstanding score. The sets are excellent as well, particularly the seductive Exotica club itself. The performances are dead-on, especially Greenwood's slightly twisted accountant and Mia Kirshner as Kristina, the stripper with whom Francis is obsessed. The convoluted plot line and rather mature subject matter may make the film too esoteric for some, but you won't be able to get EXOTICA out of your mind for days.
RATING: ****
|* Unquestionably awful | |** Sub-par on many levels | |*** Average quality, hits and misses | |**** Good, memorable film | |***** Perfection |
.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews