| Words | Definitions |
|---|---|
| Resource | It can be anything that needs to be protected for example : a picture of a user or an API operation. |
| Folder | Resource which can contains one or more resources. |
| File | Unique resource. |
| Authorization policy | Can contains one or more security rules and is assigned to one or several resources. It is used by the UMA server to determine if an incoming request can execute the requesting operations (read, write or delete) on a protected resource. |
| Security rule | Belongs to an authorization policy. |
| Resource owner | An entity capable of granting access to a protected resource. When the resource owner is a person, it is referred to as an end-user. |
| Scope | List of resources which can be accessed by a client. |
| Client | An application making protected resource requests on behalf of the resource owner and with its authorization. The term “client” does not imply any particular implementation characteristics (e.g., whether the application executes on a server, a desktop, or other devices) |
| UMA server | Server which is conformed to the OPENID-RFC 1 |
| OPENID server | Server which is conformed to the UMA-RFC 2 |
| Requesting Party Token (RPT) | An UMA access token associated with a set of authorization data, used by the client to gain access to protected resources at the UMA server. |
The following table lists the differences between our product and others: Lokit, Identity Server, Gluu server and AUTH0. It has been made in “29-08-2016”, if you noticed some differences don’t hesitate to contact-us by email.
| Lokit | Identity Server | Gluu server | AUTH0 | |
|---|---|---|---|---|
| Authors | Habart Thierry | Brock Allen & Dominick Baier | Gluu | Auth0 |
| Start date | October 2015 | January 2014 | March 2014 | November 2012 |
| Workflow Oauth2.0 | ||||
| Client credentials | OK | OK | OK | OK |
| Password | OK | OK | OK | OK |
| Refresh token | OK | OK | OK | OK |
| Workflow OpenId | ||||
| Implicit | OK | OK | OK | OK |
| Hybrid | OK | OK | OK | NOK |
| Other OPENID features | ||||
| Register a client (RFC) | OK | NOK | OK | NOK |
| Sign token (JWS) | OK | OK | OK | OK |
| Encrypt token (JWE) | OK | NOK | NOK | NOK |
| Invalidate session | OK | OK | OK | NOK |
| Client authentication methods (RFC) | ||||
| client_secret_basic | OK | OK | OK | OK |
| client_secret_post | OK | OK | OK | OK |
| client_secret_jwt | OK | NOK | NOK | NOK |
| private_key_jwt | OK | NOK | NOK | NOK |
| none | OK | NOK | NOK | NOK |
| Response modes | ||||
| Query | OK | OK | OK | OK |
| Fragment | OK | OK | OK | OK |
| Form_post | OK | OK | OK | OK |
| Other parameters | ||||
| claims (RFC) | OK | OK | OK | NOK |
| request (RFC) | OK | OK | OK | NOK |
| Quality | ||||
| Code coverage | 84% | Unknown | Unknown | Unknown |
| Nombre UTs | 633 | Unknown | Unknown | Unknown |
| UMA (RFC) | ||||
| UMA supported | OK | NOK | OK | NOK |
| UI | ||||
| UI exists | OK | OK | OK | OK |
| CRUD opened assets | OK | OK | OK | OK |
| CRUD uma assets | OK | NOK | OK | NOK |
| Resource organized by urls | OK | NOK | NOK | NOK |
| Enable or disable external identity providers | OK | NOK | OK | OK |
| Deployments | ||||
| Deployment methods | Docker or manually | Manually | Manually | Manually or hosted on the cloud |
| Others | ||||
| Number of OPENID certifications | 5 | 4 | 5 | 2 |
| Preferred languages | C# | C# | Java | No preference |
| Tools or methods used to easily interact with APIs | Visual Studio extensions and nugget packages | Nuget packages | Unknown | Unknown |
The schema below shows the interactions between components.
On a total of 11 components, there are 5 APIs, one visual studio extension, one website and four databases :
Manager API : used by the clients to execute CRUD operations on OPENID assets for examples : client or resource owners.
OpenId et UMA API : They are conformed to the RFCs OPENID and UMA.
Configuration API : used by the clients to manage the OpenId API configuration for example : enable or disable external identity providers.
WebSite API : an abstract layer which assigns Uris to resources.
WebSite : it is used by an administrator to manage resource access.
Visual studio extension : used by a .NET developer to easily interact with the different components in code.
The website is used by the administrator to manage the UMA and OPENID assets. Whereas the visual studio extension will be used by developers to access / protect resources such as API operations.
By default the administrator credentials are :
Login : administrator
Password : password
Use cases of both roles have been identified and they are described in the two next chapters.
Select one or more resources and click on the item “” displayed in the context menu. Selected resources will be moved to a new sub directory.
Select some resources and execute one of the following actions :
Keyboard Shortcut : DEL
Action Delete in the contextual menu
A resource can be renamed by executing one of the following actions:
Keyboard Shortcut : F2
Action Rename in in the contextual menu
Select several resources and drag & drop them into an existing folder. A special icon will be displayed in the bottom-right left corner.
Select a resource and duplicate it by executing one of the actions :
Display the context menu and click on the actions copy & paste or duplicate.
Use the shortcuts “CTRL+C & CTRL+V“.
Select a resource and display its contextual menu. When the option “how to access?” is selected then a new window is displayed in front of the file explorer.
Display the contextual menu of your current working directory and click on the option new file .
Do the same than before but instead of clicking on new file select the action new folder .
Resources can be uploaded via different ways:
Open a windows explorer and select several files, drag and drop them to the page “Protect your resources”.
Click on the option upload files displayed in the contextual menu
Either press F5 or click on the action reload in the contextual menu
List of shortcuts can be displayed by pressing F1.
You can choose between vertical or horizontal resources visualization, to do that click on the icon displayed in the menu bar.
Accessible by pressing the keyboard shortcut CTRL+F or by typing your text in the search bar positioned at the top right-hand corner of the window.
The navigation history is stored into your browser. Navigating to the previous / next folder can be done by executing one of the following actions :
Use the buttons displayed in the search bar
Keyboard shortcut Back or CTRL+← : navigate to the previous folder
Keyboard shortcut CTRL+→ : navigate to the next folder.
If a resource is selected then it’s possible to add or edit its authorization rules. Click on the icon or press the keyboard shortcut CTRL+P.
Rules and authorization policy were mentioned several times but they have never been clearly explained properly.
An authorization policy must contains at least one rule otherwise an error is displayed when attempting to create an empty one. They are used by the UMA server during the authorization process. Indeed when a client wants to access to a protected resource, he asked to the UMA resource an RPT token. The server internally decides to grant client access to a protected resource by executing the policy. The workflow is described in UMA website 3.
Rules are exclusive and if at least one of them is satisfied then authorization is granted by the policy. Here the authorization policy formula is : policy = rule1 ∪ rule2. A rule is satisfied if the received claims values and / or clients are correct.
Policy structure overview :
In order to help you identifying policy and their rules, you can read the scenario below.
Problematic : Only the end-user thabart of the application Sample Client is allowed to view his bank account N°12345.
Solution : In the first place the identities should be identified and classified by their nature. There are four important information in the scenario, they are underlined in the text. Thanks to the decision table it was possible to classified them.
| Question | Nature |
|---|---|
| What is the identity of your resource to protect ? | Resource identifier |
| What is the identity of your client ? | Client Identifier |
| Which actions do-you want to perform on the resource ? | Permissions |
| Do-you want to restrict access to one or more users ? If yes, which information can be used to identify them ? For example : role or geographical position ? | Claims |
| Can-you identify the nature of your resource ? | Nature |
Classified information :
Resource identifier : N°12345
Client Id : Sample Client
Permissions : view / read
Claims : thabart
Nature : BankAccount
When you have finished with the resource classification, you can go to the second step.
A resource needs to be created, first add a “BankAccount” folder into the “resources” directory, it should match with the nature of a resource.
Navigate to the new directory and create a file named “N°12345”, same value as the resource identifier.
Finally open the authorization policy editor and add a new rule. Below allowed clients select the authorized clients, in our case the client is “Sample Client”.
Under the sub-title “allowed claims” select “sub” et fill-in the field with “thabart”, then click on “Add” to add the claim into the list.
Persist your policy by clicking on add rule and on save.
A red square is displayed around a resource with an authorization policy applied on it.
To select all resources press CTRL+A.
You probably noticed that the actions available in the assets directory have not been described, it will be the object of the next chapter.
Open the folder assets >> openid >> clients and display its contextual menu.
Click on add client and fill-in the callback urls separated by a comma.
Warning : urls should begin with https 4
Select several clients, display the contextual menu and click on remove client
.
Display the client information by clicking on client information option in the contextual menu.
The client identity, secret and its callback urls are displayed on the new window.
Click on the link Edit to edit them.
The parameters are explained in the OPENID RFC 5.
In most of the cases, advanced parameters don’t need to be updated except if you want to change the workflows. Here some uncommon scenarios in which advanced settings need to be updated:
The client have a JWKS url, it is used by the OPENID server to decrypt and / or check the signature of the request 6 parameter.
Update the client authentication method.
Change information displayed in the consent view.
If you want more information about the other advanced settings, you can contact-us or read the OPENID documentation7.
Open the directory assets>>openid>>scopes, select several scopes, display the context menu and click on remove scope .
Select one scope, open its contextual menu and click on scope information . The following information are displayed :
Nature : Is-it an openid scope?
Visibility : Is-it visible in the consent screen ?
Contract : Is-is returned by the openid configuration endpoint /.well-known/openid-configuration.
Select some resource owners, display the context menu and click on remove resource owner .
Select a resource owner, display its context menu and click on resource owner info button .
In the new window displayed in front, roles can be assigned to the resource owner. To do that, a local account needs to be created otherwise the message “not a local account” is displayed.
Why is-it useful to add roles ? Sometime it’s difficult to make an authorization policy based on the claims returned by external identity providers. If you want to limit the access of a resource only to certain roles but the claims are coming from facebook, the solution cannot be implemented simply because roles are not returned. But thanks to the website, claims returned by facebook can be enriched with roles. If we replace facebook by ADFS, additional roles don’t need to be specified because they are already returned.
Enrichment workflow :
As we mentioned earlier a resource owner account can have two states :
When a resource owner is authenticated against one of the external identity providers : « Twitter », « Hotmail » or « GitHub » then an external account is automatically created.
To switch to a local account, click on the link create a local account:
Open the folder assets>>uma>>authorization policies, select several authorization policies, display the context menu and click on remove authorization policy .
Select an authorization policy, display its contextual menu and click on authorization policy . List of resources impacted by the policy and number of rules are displayed in the window.
Open the folder assets>>uma>>resources, select one or more resources, display the contextual menu and click on remove resource .
Display the contextual menu and click on resource info . Scopes and resource are displayed in the window :
In the OpenId server, the end user can choose between one of the identity provider to authenticate himself: Hotmail, ADFS, GitHub or the Belgium id card.
When the claims are returned, they are used by the authorization policies to grant a request access to a protected resource.
If some claims are missing in the result, it’s always possible to enrich them with roles (refer to the chapter “edit a resource owner”).
List of actions available in the “connections” screen:
The following providers are configured by default: Microsoft, Linkedin, Google, GitHub, Facebook and the Belgium id card.
Click on the connections tab to display the providers.
Providers can be enabled / disabled from the authentication page. To do that click on the button “On / Off” next to each provider.
By default an authentication page looks like:
New authentication page after the Facebook provider has been disabled:
Providers are managed by the administrator without worrying about restarting application.
Click on the new identity provider button to add a new one. When the window is displayed, try to fill-in all the fields. Use the decision table below to find all the values. When you have finished with it, click on the button create to persist the new provider.
| Fields | Description |
|---|---|
| Name | Name displayed is the authentication page |
| Callback path | Technical data used by the OPENID server. The value should start with « /signin-* » otherwise there is no button displayed |
| Choose an identity provider type | Choose between OPENID, OAUTH2.0 or WS-Federation |
If there is no corresponding identity provider type, you can submit a new “enhancement” ticket to our website. The feature will be developed and deployed to your environment via Docker or XCOPY (refer to the Installation chapter)
If you want to use the resource owners which are stored in your database. We can help you writing some scripts to migrate from the old schema to the new one or create a new OPENID identity provider which takes your database as source.
Click on the provider title to edit it. You will be redirected to a new window where all the parameters are displayed. You will probably notice some differences between types, they are listed in the table:
| Type | Parameters | Options |
|---|---|---|
| OAUTH2.0 | Callback path | TokenEndpoint |
| Namespace | AuthorizationEndpoint | |
| Class | Scope | |
| Code | ClientId | |
| UserInformationEndpoint | ||
| ClientSecret | ||
| OPENID | Callback path | ClientId |
| Scope | ||
| ClientSecret | ||
| WellKnownConfigurationEndPoint | ||
| WSFEDERATION | Callback path | Realm |
| Namespace | IdEndpoint | |
| Class | ||
| Code |
All parameters except namespace, code and class can be deduced with the configuration of your external identity providers for examples: the client identifier or secret. Those specific parameters are used by the OPENID server to parse xml or json and returns OPENID claims.
Those specific settings are not present in OPENID for a very simple reason, because a parser is not needed when OPENID is correctly implemented. The complete list of applications compliant with the standard is available online 8 .
The parameter “code” presents in OAUTH2.0 and WS-Federation should contains a class with a method that respects a certain signature:
When the code has been written, the fields namespace and class name can be filled-in with their corresponding values. If we have the code below then the namespace is “Parser” and class name is “Example” :
Parameters are accessible via the “settings” tab. The token / authorization code expiration times can be updated.
The extension is working only with Visual Studio version 2015. The previous versions will be supported in future release.
The configuration window is accessible via “Tools >> Options >> SimpleIdentityServer”. There are two URLs, the first one is used by the “generate resource” feature to generate a resource for each selected actions.
The other url is mostly used to retrieve an access token via client credentials, it is passed in the Authorization header to access to protected operations.
Choose any API project for which you want to protect its operations and display its contextual menu, then click on the option generate resource
Don’t worry if it takes some times to load the operations. If after a while they are not displayed then close the panel window, select the project and reopen it again.
Here some features available in the window:
To refresh the resources, just click on the button refresh. It will take some times before they are displayed.
Select the resources that you wish to protect and indicate the API version. It’s very important to mention it because several versions of the same API can be deployed and they can present different contracts. The number should be incremented if there are any breaking changes with the previous version.
When the form has been filled-in then click on the button protect to protect the resources.
Behind the scene the following sub-tasks are performed :
Create a resource by following a naming convention : “Api\<assembly name>\<version number>\<controller name>\<action>”
Add Nuget packages : “SimpleIdentityServer.UmaIntrospection.Authentication” and “SimpleIdentityServer.Uma.Authorization”
Add a test file “Startup_Sample.cs”, it can be reused to protect the operations.
Technical details are described in the « technical documentation »».
An application / client who wants to access to protected resources, needs to retrieve an RPT token first and passes it to the Authorization request header. To do that the option generate security proxy can be used by the developer.
The following actions are available in the window:
Type the name in the search bar and click on “search” to confirm.
Select one resource and click on Add. The following sub-tasks are performed :
Install the Nuget package : “SimpleIdentityServer.Proxy”
Add files to the selected project :
SecurityProxy_*.cs : contains a static method which can be used to retrieve an RPT token
AuthProvider.cs : can be used to retrieve an identity token via resource owner credentials
In this chapter we will focus on the most common problems in enterprise, and we will try to solve them.
Samples can be found here :
https://github.com/thabart/SimpleIdentityServer.Samples.git
Context An e-commerce enterprise has internally developed a tool used by his marketing team, to retrieve information about his most loyal clients.
The application has been developed in WPF and interact with a RESTFUL API to retrieve the clients. Only this application and users that belong to the “marketing” group are authorized to retrieve the list.
Problem: How the application can access to the protected operation?
Solution:
The workflow is made of three big steps:
Identity token: retrieve an identity token with implicit grant-type 9. The token is returned to the client in a callback parameter.
RPT token The identity and access token (valid for the scope uma_authorization) are passed in the request to retrieve the RPT one 10. When it is received by the WPF application, the token is passed in the Authorization header to retrieve the loyal clients. Both parameters are required by the authorization policy.
Check RPT token: The token is checked against the introspection endpoint 11, this endpoint is offered by the UMA server.
We spared you the implementation details, otherwise it will be too much difficult to understand. The workflow is normally much more complex and contains more intermediate steps.
Before going further, we are going to prepare the environment by following the steps:
The decision table can help you identify and classify them.
| Questions | Type |
|---|---|
| Which application wants to access to the resource ? | Client |
| Which operation do-you want to protected ? Identify the service name, his version, the business entity (client, product) et operation. | Resource : Concatenation of service name, version number, business entity and operation. |
| Which applications are authorized to access ? | Authorized clients |
| Which resource owner informations are accepted ? | Claims |
Result:
Client: WPF application
Resource ClientApi / v1 / Clients / Get
Authorized clients : WPF application
Claims : role marketing.
When you have finished, the identities can be added.
Add a new client and edit his properties (for more information refer to the use cases “add a client” and “edit a client”). In the new window update as many properties as you can. There are parameters very easy to update like the displayed name and callback urls, however some of them are not obvious. Try to guess the grant-types value, they are needed by the client to interact with the other components. If you succeed, then other values can be easily deduced.
The better way to choose grant-types is by identifying all interactions with the OPENID server. Only one interaction has been identified in the workflow. An identity and access token (valids for the scopes “uma_protection” and “uma_authorization”) are returned to the client. Keep in mind that whatever the situation, when a client is trying to retrieve an RPT token, an access token valids for both scopes should be retrieved.
Depending on the technical implementation of the client, the grant-type can be different. Relationships between implementation type and grant-types are listed:
| Implementation | Grant-Type | Advantages | Disadvantages |
|---|---|---|---|
| Embedded browser | implicit | Authentication is delegated to OPENID | No control over the look and feel |
| Create formula | client_credentials | Control look and feel | The code must be obfuscated, because the client identifier and secret must be hidden from malicious users. Don’t choose this approach if there is no trust relationship between the client and server. |
When you have the grant-types then the other parameters can be deduced. Just answer the questions of the next two tables:
| Grant type | Response types |
|---|---|
| Authorization code | Authorization code |
| Implicit flow | Token |
| Authorization code | |
| Identity token | |
| Client credentials | |
| Password | |
| Refresh token |
Mappings between grant-types and response-types
| Type token | Scopes |
|---|---|
| RPT token | uma_authorization |
| uma_protection | |
| Identity token | Openid |
| Profile | |
| Role | |
| Complete list can be found in the documentation 12 |
Mappings between tokens and scopes
When all the parameters have been found, the edit page can be filled-in:
Callback uris : https://client.com
Grant types implicit
Response types: token, id_token
Scopes: openid, profile, role, uma_authorization, uma_protection
There are two different ways to add a resource, either with the website (refer to the use case “create a folder”) or either with the Visual Studio extension (refer to the use case “generate one or more resources”). In both cases, the name must respect a certain convention which has been decided by you and it must be consistent with the other resources. For example, imagine there are two pictures, one “Thierry\picture.png” and an another “Lokit \ picture.png”. At first glance this organisation seems to be awkward, and it can be easily reorganized in something cleaner: “images\thierry-picture.png & images\lokit-picture.png”.
 If you are working with the Visual Studio Extension you don’t have to be worried about the name because the convention is respected.
We really insist on the fact that it’s very important to have a good architecture since the beginning. If later the structure is modified, then all the resource consumers will be impacted and they must be updated and redeployed again.
When the client and resource have been created then the authorization policy can be assigned. If you encounter some difficulties to identity clients and claims, you can always refer to the use case “Add / Edit authorization rules”.
Allowed clients: WpfClient
Allowed claims: role marketing
Permissions: execute
The marketing role have to be assigned to the resource owner, otherwise the authorization policy will never pass. Choose a resource owner, edit his properties and assign the role.
When you have finished with the initial setup, you can start to implement the changes.
There are two different kinds of authorization policies:
Conventional: the URL of the resource must match the structure of the project and also the API version. The last value can be set to the property “ConventionalUmaOptions.Version”.
Individual: limit the access to one specific resource by passing the URL and scopes.
The technical implementation is running only on ASP.NET CORE projects. If you are working on a previous version, we can help you with the implementation.
Previous versions will be supported in future release.
The Nuget packages
« SimpleIdentityServer.UmaIntrospection.Authentication » and « SimpleIdentityServer.Uma.Authorization » must be installed on your API project.
Enabling the conventional authorization is pretty simple. Insert the code below into the method “ConfigurationServices” of the Startup class.
Then the operation « ClientController / Get » is decorated by the attribute « Authorize » :
In first place, add the Nuget package “SimpleIdentityServer.Proxy” to your client. You need it get an RPT token to retrieve the list of clients.
An authentication window must be displayed by your application. There are two different ways to do it, either by displaying the OPENID authentication webpage inside an embedded browser or with a WPF formula. Whatever the methodology you have chosen, at the end the identity and access tokens must be retrieved and stored.
Our preference of course is to use an embedded browser, because we don’t trust the OPENID server.
The following code is used to retrieve an RPT token. Don’t forget to update the properties like UmaConfigurationUrl, OpenIdConfigurationUrl and RootManagerApiUrl.
Invoke the method GetRptToken and pass the tokens as parameters. When the RPT is received, it can be passed to the authorization header.
If you want to launch the application, open the solution “Scenario1 \ WpfClient” from the repository “SimpleIdentityServer.Samples”. Open the two files ”UI\WpfClient\SecurityProxyClientApi”, “UI\WpfClient\Constants” and update their properties.
Launch the application and enters the credentials of a resource owner with marketing role.
If the authentication succeeds, then the list of clients is displayed:
Context: A new RESTFUL service has been developed to retrieve the most loyal clients. Those data must be enriched with marketing information, they have been gathered by the marketing team since the creation of the enterprise.
At the end consolidated data must be returned by the API. They will be consumed by analytics tools to follow the evolution of client satisfactions.
Problem : How the API can access to the clients ?
Solution:
The workflow presents here is very to similar to the one in the first scenario. There is only one difference, the identity token is not returned to the client. The reason is simple, if the client is correct then an RPT token is granted by the UMA server. User information are not needed by the authorization policy then by deduction the identity token doesn’t have to be passed in the request.
The workflow that we are going to follow to implement the solution looks like the one in the previous scenario. The task “assigned marketing role to the resource owner” have been removed.
After using the decision table (refer to the previous scenario) we obtained :
Client : API
Resource : ClientApi / v1 / Clients / Get
Authorized clients : API
Claims : none
Most of the parameters can be easily deduced including the grant-type ! Which grant-type will you choose by taking into account that there is a trust relationship with the OPENID server and there is no identity token ?
The correct answer is … “client_credentials”. Indeed there is no danger to embed the client credentials into the code because the API is hosted in a server, so the code cannot be accessed by malicious users.
Client parameters :
Grant-types : client credentials
Scopes : uma_authorization et uma_protection
The resource already exists (refer to the first scenario).
Edit the authorization policy of the resource « resources \ Apis \ ClientApi \ v1 \ ClientsController \ Get » and add a new rule. If you have some doubts about the parameters, we invite you to re-read again the use case « add / edit authorization policy rules ». It’s very important to guess by yourself the parameters, at the beginning it’s difficult but you will quickly take the habit.
Rule parameters :
Allowed clients : Marketing API
Allowed claims : empty
Permissions : execute
Install the Nuget package « SimpleIdentityServer.Proxy » to your client.
Retrieve an access token valids for the scope “uma_protection” and “uma_authorization” by using the grant-type client_credentials.
Invoke the function « GetRptToken » and pass the access token value as parameters (umaProtectionToken and umaAuthorizationToken). The result can be used to retrieve the clients.
If you want to launch the complete example, open the solution « Scenario2 \ MarketingClient » from the repository « SimpleIdentityServer.Samples » and update the properties.
Launch both projects “ClientApi” and “MarketingClient” and browse the URL :
http://localhost:5103/api/ratings. The clients will be displayed in the browser.
Context: Only users with « administrator » role can see the button « administrate » whereas the others cannot.
Problème : How to limit access to certain features based on the users roles ?
Solution :
Compared to other scenarios, the workflow is pretty simple :
End users authenticate themselves to the OPENID server. If authentication succeeds then identity and access tokens are returned to the website.
The tokens are used to retrieve the permissions from the UMA server.
Like the other scenarios, we are going to follow a set of steps to implement the solutions.
After using the decision table we obtained :
Client: WebSite
Resources: WebSite \ Scenario3 \ Home \ Admin
Authorized clients : WebSite
Claims : administrator role
Once again the parameters are fairly easy to deduce except the grant-types … Your choice depends on your technical implementation, if you have your own authentication page then the logical grant type is “password”.
If this grant-type has been chosen then you have to be careful to hide the client credentials because the application doesn’t trust the OPENID server.
In the other side, if you are using the OPENID authentication page then the “implicit” grant-type should be used. The user-agent will be redirected to OPENID , if the authentication succeeds then the tokens are returned to the website. Our preference is the implicit one because it’s easier to implement and more reliable.
Don’t forget the scopes « uma_authorization » & « uma_protection » because there is an interaction with the UMA server.
Client parameters :
Callback url : https://localhost:5105/Authenticate/Callback
Grant types : implicit
Response types : token & id_token
Scopes : uma_protection, uma_authorization, role, openid, profile
Add the resource « WebSite \ Scenario 3 \ Home \ Admin ».
Assign an authorization policy to the resource “WebSite \ Scenario3 \ Home \ Admin” and add the following rule :
Allowed clients : WebApplicationScenario3
Permissions : read
Allowed claims : administrator role
Edit the resource owner properties and add a new “administrator” role :
If you want to launch the full example, open solution “Scenario3 \ WebApplication” from the repository “SimpleIdentityServer.Samples”. Update the parameters and launch the application.
Authenticate with an administrator account, you will see four permissions. Try to connect with an another none administrator account, there are only three permissions because the Admin resource is not accessible.
Permissions of an administrator
Permissions of a none administrator user
We assumed that everything will be installed on the same machine. Keep in mind that it’s also possible to deploy the components on separate machines ! It can be useful if you want load balancing.
Whatever the methodology (manual or Docker) you have chosen to install the product, the following perquisites must be done.
GIT must be installed, follow the official guide (link) for more information.
The certificate « LokitCA.cer » must be added to the certificate store “Local User \ Trusted CA”. Without it the website is not going to work.
TODO
Install Docker by following the official guide (lien)
By default Docker is using Virtual Box to launch his virtual machines. Some forwarding port rules must be added to the “default” machine :
Open VirtualBox and select the default machine
Click on Configuration
Click on “connection” tab
Click on the button “port redirection” and add those rules :
Note : a rule is missing in the screenshot, add it :
Name: Kibana
Protocol : TCT
Host IP : <IP_ADDRESS>
Host port : 5601
Private port : 5601
In a command prompt execute the instruction « docker-compose up ». When the application is installed and deployed, you can browse the website via
TODO
TODO
TODO
TODO
RFC OPENID : http://openid.net/specs/openid-connect-core-1_0.html↩
RFC UMA : https://docs.kantarainitiative.org/uma/rec-uma-core.html↩
RPT token : https://docs.kantarainitiative.org/uma/rec-uma-core.html#rfc.section.3.5.1↩
Redirect_uri validation rules : https://openid.net/specs/openid-connect-registration-1_0.html#ClientMetadata↩
Client parameters : https://openid.net/specs/openid-connect-registration-1_0.html#ClientMetadata↩
Request parameter : http://openid.net/specs/openid-connect-core-1_0.html#JWTRequests↩
OPENID documentation : http://openid.net/specs/openid-connect-core-1_0.html↩
Applications compliants with OPENID : http://openid.net/certification/↩
Implicit grant type : http://openid.net/specs/openid-connect-implicit-1_0.html↩
RPT token : https://docs.kantarainitiative.org/uma/rec-uma-core.html#rfc.section.3.5.1↩
Introspection endpoint : https://docs.kantarainitiative.org/uma/rec-uma-core.html#rfc.section.3.4.1↩
Liste des scopes : http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims↩


To-Do List
Why don't you come up sometime and see me?
I'm gonna make her an offer he can't refuse.
I'm walking here! I'm walking here!

Made it, Ma! Top of the world!


Fifteen and Pregnant (1998)
Grade: 81
"Fifteen and Pregnant" is a made-for-television movie, produced by the Lifetime cable channel. It is a highly credible and interesting study in teenage pregnancy, and its effect on the family.
 Tina finds reluctant family support from her embittered mother (Park Overall) and father (David Andrews). Andrews has been evicted by Overall, but is attempting a reconciliation. Tina's best friend is unwed teen mother Laurie (Margot Demeter), who is struggling to make something of her life.
There is nothing romantic about "Fifteen and Pregnant". Tina has become pregnant because she feels that her life is empty, and perhaps a baby would add meaning to it. Her faith in Kountz, and her desire to have a loving relationship with him, is quickly shattered. The poverty, hassles and struggles of becoming a young unwed mother are effectively shown.
Tina's pregnancy isolates her from school friends. This is actually positive, as it stops her tobacco and alcohol abuse, and increases her interdependence with Demeter. But she remains selfish, and naive about what is in store for her. Her parents are ambivalent: they want to punish her for becoming pregnant, but they know that she will need support.
Julia Whelan is a bit miscast as the "younger" "fat" sister. Her character is excellent however. As the family focus is on Tina's pregnancy and the parent's potential reconciliation, she understandably feels left out. The siblings say viciously cruel things to each other: there is jealousy and strong disapproval, but it fits the unblinking unromatic mood of the film.
Margot Demeter gives a superb performance as Tina's friend. It is unfortunate that few people will ever see this made-for-cable instant obscurity to take notice of it.
<EMAIL_ADDRESS>http://members.tripod.com/~Brian_Koller/movies.html
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


ceqlogo [ -i <motif file> -m <id> | -i<id> <motif file> ]+ [options]
Load all motifs within a MEME motif file and write to logo.eps in EPS format:
ceqlogo -i meme.motifs -o logo.eps -f EPS
Load second motif from each of two files and shift the first one:
ceqlogo -i2 meme1.motifs -s 3 -i2 meme2.motifs -o logo.eps -f EPS
The ceqlogo program generates one or multiple, aligned logos in EPS
or PNG format, based on a set of frequency matrices provided in the
MEME file format.
The code of ceqlogo
is based on the Perl code of
weblogo but is written in C
and supports PNG output. Note that the program strives to use command
line options similar to those of weblogo
.
The letter stacks are calculated by the following equations found in Schneider and Stephens paper "Sequence Logos: A New Way to Display Consensus Sequences" and adapted from the weblogo documentation. The height of a letter is calculated as:
height(b,l) = f(b,l) * R(l)
where f(b,l)
is the frequency of base or amino acid
b
at position l
. The stack height
R(l)
is the amount of information present at position
l
and can be quantified as follows:
R(l) for amino acids = log(20) - (H(l) + e(n))
R(l) for nucleic acids = 2 - (H(l) + e(n))
where log
is taken base 2
,
H(l)
is the uncertainty at position l
, and
e(n)
is the error correction factor for small sample sizes
n
. H(l)
is computed as follows:
H(l) = - (Sum f(b,l) * log[ f(b,l) ])
where again, log
is taken base 2
.
f(b,l)
is the frequency of base b
at position
l
. The sum is taken over all amino acids or bases.
The error correction factor e(n)
is approximated by:
e(n) = (s-1) / (2 * ln 2 * n)
A file containing one or more motifs in MEME format.
If no output file is specified ceqlogo
writes to standard output.
| Option | Parameter | Description | Default Behavior |
|---|---|---|---|
| Options with arguments | |||
| -i | motif file | Load all motifs within the motif file. | |
| -m | id or num | Load the numth motif or the motif whose ID is id within the motif file specified by the previous -i option. | |
| -ix | motif file | Load the xth motif or the motif whose ID is x within the motif file. | |
| -r | Reverse-complement the logo for the previous -i or -m option. | ||
| -l | Load motifs by IDs, preferentially. | Load motifs in input order, preferentially. | |
| -s | shift | Offset the previously loaded motif by shift. | -b | bar bits | Number of bits in bar (real # > 0). | DNA motifs have a default height of 2 bits and protein motifs have a default height of 4.3 bits. |
| -c | tic bits | Number of bits between tic marks. | |
| -e | error bar fraction | Fraction of error bar to show (real # > 0). | |
| -f | EPS|PNG | Set the format of the output. | The output is created in EPS. |
| -F | Create a frequency logo with stack height 1. | Height of stack is information content of motif column. | |
| -h | logo height | Height of output logo in cm (real # > 0). | |
| -o | image file | Create an image called image file and send the output to it. | Send the output to standard out. |
| -n | sample number | Set the sample count of the previously loaded motif to sample number. This value is used to calculate error bars. | Use the sample count embedded in the motif file. |
| -t | title label | Set the title of the image to title label. | |
| -w | logo width | Width of output logo in cm (real # > 0) | |
| -x | x-axis label | Label for x-axis. | |
| -y | y-axis label | Label for y-axis. | |
| -p | pseudocount | Pseudocount for motifs. | A pseudocount value of 1 is used. |
| -d | fineprint | Print fineprint in small font at bottom of logo. | "Ceqlogo |
| --test | verbosity level | Runs a self test, ignoring all other options. The verbosity level [0..3] is optional. | |
| Toggles | |||
| -S | Turn off small sample correction. | Small sample correction is used. | |
| -B | Toggle bar ends. | ||
| -E | Toggle error bar. | ||
| -O | Toggle outlining of characters. | ||
| -N | Toggle numbering of x-axis. | ||
| -X | Toggle boxing of characters. | ||
| -Y | Toggle y-axis. |


$1,333,555
$2,000,000
$3,543,116
$5,000,000
$4,813,735
$7,000,000
All rights reserved 2016 (c) MayerDoa Themes


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.blogspot.applications4android.comicreader.zoom.FrictionSpringDynamix
public class FrictionSpringDynamix
Uses friction and spring physics in order to provide a more realistic UI. Logic is that when inside the bounds, we'll use friction factor. But as soon as we go out of bounds, we'll apply spring physics.
| Constructor Summary | |
|---|---|
FrictionSpringDynamix()
|
| Method Summary | |
|---|---|
float |
getPosition()
Get current position |
float |
getVelocity()
Get current velocity |
boolean |
isUnderRest(float vel_tol,
float pos_tol)
Finds out whether the object is at rest and is inside the bounds. |
void |
setMinMax(float min,
float max)
Set bounds for this object. |
void |
setParameters(float fric,
float stiff,
float damp)
Set the parameters for this object |
void |
setState(float vel,
float pos)
Set the current state of this object. |
void |
setState(float vel,
float pos,
long time)
Set the current state of this object. |
void |
update()
Interface function responsible for evaluation of the current velocity and position. |
void |
update(long time)
Interface function responsible for evaluation of the current velocity and position. |
protected void |
updateState(long delta)
The base function responsible for actual evaluation of velocity and position for the current time step. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public FrictionSpringDynamix()
| Method Detail |
|---|
public void setState(float vel, float pos, long time)
vel
- current velocitypos
- current positiontime
- current timepublic void setState(float vel, float pos)
vel
- current velocitypos
- current positionpublic void setMinMax(float min, float max)
min
- the minimum possible value for position.max
- the maximum possible value for position.public float getVelocity()
public float getPosition()
public boolean isUnderRest(float vel_tol, float pos_tol)
vel_tol
- velocity tolerance. If current velocity is less than this tolerance,
then it is considered to be at rest.pos_tol
- position tolerance. tolerance to be added to the bounds to check for limits.public void update(long time)
time
- current time.public void update()
public void setParameters(float fric, float stiff, float damp)
fric
- friction co-efficientstiff
- stiffness of the stringdamping
- ratioprotected void updateState(long delta)
delta
- the delta time elapsed from the last update.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


一级菜单
>
二级菜单
二级菜单
二级菜单
二级菜单
二级菜单
一级菜单
>
二级菜单
二级菜单
二级菜单
二级菜单
二级菜单
一级菜单
>
二级菜单
二级菜单
二级菜单
二级菜单
二级菜单
一级菜单
>
二级菜单
二级菜单
二级菜单
二级菜单
二级菜单
一级菜单
>
二级菜单
二级菜单
二级菜单
二级菜单
二级菜单


//
Date Time Picker
For help go
here
.
Go back to
plugin selection
.
Date:
Time:
Date / Time:
Submit


{{ titleText }}
×
Success!
{{ restaurantToRemove.restaurantName }} {{ alertMessage }}
Restautant Name
Name is required.
Address
Phone
Phone number is required.
Invalid phone number.
Restaurant image
Menu
Item Name
Category
Sub-Category
Specification
Price
Action
Choose Category
{{subCategories}}
*
Please enter category
{{ menuItem.menuName }}
{{ menuItem.category}}
{{menuItem.subcategory}}
{{ menuItem.specification }}
{{ menuItem.price }}
Done
All Restaurants
Restaurant Name
Phone
Address
{{ restaurant.restaurantName }}
{{ restaurant.telephoneNo }}
{{ restaurant.address }}
Upload
×
Delete!
×
Are you sure want to delete {{ restaurantToRemove.restaurantName }} ?


Container
Class reference
| Class | Breakpoint | Properties |
|---|---|---|
| .container | None | width: 100%; |
| sm (576px) | max-width: 576px; | |
| md (768px) | max-width: 768px; | |
| lg (992px) | max-width: 992px; | |
| xl (1200px) | max-width: 1200px; |
Tailwind's .container
class sets the max-width
of an element to match the min-width
of the current breakpoint. This is useful if you'd prefer to design for a fixed set of sizes instead of trying to accommodate a fully fluid viewport.
Note that unlike containers you might have used in other frameworks, Tailwind's container does not center itself automatically and does not have any built-in horizontal padding.
To center a container, use the .mx-auto
utility:

To add horizontal padding, use the .px-{size}
utilities:

If you'd like to center your containers by default or include default horizontal padding, see the customization options below.
Customizing
Centering by default
To center containers by default, set the center
option to true
in the plugins section of your config file:
// ...
module.exports = {
// ...
plugins: [
require('tailwindcss/plugins/container')({
center: true,
})
],
}
Horizontal padding
To add horizontal padding by default, specify the amount of padding you'd like using the padding
option in the plugins section of your config file:
// ...
module.exports = {
// ...
plugins: [
require('tailwindcss/plugins/container')({
padding: '2rem',
})
],
}
Disabling
Unlike most of Tailwind's other styles, the container component is included as a built-in plugin rather than a traditional utility module. To disable it, remove the plugin from the plugins
section of your config file:


Before Change
for b, p in enumerate(read_positions):
for n, x in enumerate(list(p.data.cpu().numpy())):
usage[b, x] = relevant_usages[b, n]
return usage, I
After Change
u = (read_weights + write_weights > self.δ).float()
// usage before write
relevant_usages = usage.gather(1, read_positions)
// indicator of words with minimal memory usage
minusage = T.min(relevant_usages, -1)[0].unsqueeze(1)
minusage = minusage.expand(relevant_usages.size())
I = (relevant_usages == minusage).float().unsqueeze(1)
// usage after write
relevant_usages = (self.timestep - relevant_usages) * u.squeeze() + relevant_usages * (1 - u.squeeze())
usage.scatter_(1, read_positions, relevant_usages)
return usage, I
def read_from_sparse_memory(self, memory, indexes, keys, last_used_mem):


Across: 1. A 14, non-accepting of old nine? (5) 4. Rocks out with team, which helps getting the drinking started (9) 9. Fit insect right into belly (7) 10. "Benvenuto" old Italian goldsmith writing with flair, contributing to parcel lining (7) 11. A 14 for eight years in job, a master! (5) 12. Bad time to have the leader come around for group discussion! (9) 13. As quiet as viper? (3) 15. Best reggae elements, which can stir up the 8s as well (10) 18. Does leader come back? He abandons sinking ship (since odds down) and party (10) 21. A way of getting lots of info over phone lines, essential contribution to landslide (1 1 1) 22. Crappy path? If you get right in early, one of the ones some ride to success (9) 24. Part of Hebrew scripture regularly conveyed by mouth: saint returning! (5) 26. React in shock, horror, etc. and return to office (7) 27. Loved without limits, strategy gets too much application (7) 28. Treat wage explosion as major scandal? Complex, where 50 years ago, "8 25 17" broke into 18 1 down 12 for the 12 to 26 the 14! (9) 29.  (5) Down: 1. Not a true idea of nature, as legitimises leaders of country (8) 2. Back in Spain, explain Greek concept of hospitality (5) 3. Explain action of taking up nicotine & tar... rank stuff! (7) 4. She joked about the universe losing a second (5) 5. Lying about also being crooked? (9) 6. Star's lot is so tricky (7) 7. Had party scheduled to include one (9) 8. Embracing beat, we became "Bass Baritone Barry" (5) 14. Chaotic trip needs someone in charge (9) 16. Rabelaisian giant's tragic guarantee: age involves loss of all energy (9) 17. They sometimes do arrangements for tap dancing "Mr Blues", playing introduction first (8) 19. Last longer than a tour we organised (7) 20. Top of coat once having fringes of animal hide (7) 22,23. Something you might report to maintenance crews? (5 5) 23. see 22 25. Essentially, show utility team (5)


Dear Sir, I am Mr.Eric Madu, I got your contact through a friend who attended a trade mission in your country, but I did not disclose the nature of the business to him. I have urgent and very confidential business proposal for you. On June 6, 1999, an America Oil consultant/contractor, Mr. Charles Fredrick with the Nigerian National Petroleum Corporation, made a numbered time (fixed) deposit for twelve calendar months, valued at US$20,700,000.00(Twenty Million Seven Hundred Thousand Dollars )in my branch upon maturity. I sent a rountine notification to his forwarding address but got no reply.After a month,we sent a reminder and finally we discovered from his contract employers,the Nigerian National Petroleum Corporation that he died in the plane crash of 31 October 1999[with Egyptian 990] with other passengers aboaed as you can confirm it yourself via the website below: www.thestate.com/mld/state/4904572.htm on further investigation, i found out that he died without making a WILL,and attempts to trace his next of kin was fruitless.I therefore made further investigation and discovered that Mr. Charles Fredrick did not declare any next of kin or relations in all his official documents, including his bank deposit paperwork in my bank. This sum of US$20,700,000.00 is still in my bank and the interest isbeing rolled over with the pricipal sum at the end of each year.No one will ever come forward to claim it.According to Nigerian law, at the expiration of (five)years, the money will revert to the ownership of the Nigerian Government if nobody applies to claim the fund. Consequently,my proposal is that i will like you as a foreigner to stand as the next of kin to Mr. Charles Fredrick so that the fruit of this old man's labour will not get into the hands of some corrupt Government officials. This is simple,I will like you to provide immediately your fullname and address so that the Attorney will prepare the necessary documents and affidavits which will put you in place as the next of kin. We shall employ the service of two attorney for the drafting and notarization of the WILL and obtain the necessary documents and letter of probate/administration in your favour for the transfer. Any bank account in any part of the world which you will provide will then facilitate the transfer of this money to you as the beneficiary/next of kin. The money will be paid into your account for us to share in ratio of 60% for me and 40% for you. There is no risk at all, the paperwork for this transaction will be done by the attorney and my position as the Branch Manager guarantees the successful execution of ths transaction. If you are interested,please reply immediately via the private email address below,upon your responce,i shall provide you with more details and relevant documents that will help you understand the transaction. Please observe utmost confidentiality and be rest assured that this transaction would be most profitable for both of us because i shall require your assitance to invest my share in your country. Please upon the reciept of this mail message, send to me the following,to enable start the process of the fund into your bank account: 1. Your full Name and contact address. 2. Your private Telephone and fax numbers for prompt communication. Immediately I recieve a mail indicating your interest I shall send you more details. Thanks and Regards, Mr.Eric Madu. |


The contact module requires you to create two templates.
Success Page Template
Default Location: contact/success.html
Example:

Thank you for contacting Us. Someone will be in touch with you shortly!

Email Template
Default Location: mail/contact_form_submission.html
Successful contact form submissions will be emailed using the fusionbox send_markdown_email function to a list of recipients. The contact module will first look for CONTACT_FORM_RECIPIENTS in the settings file, and if not will use the values from the Recipients table.
Default Template:
---
subject: Someone has filled out the contact form
---
Someone has submitted the contact form.
- *Name:* {{ submission.name }}
- *Email:* {{ submission.email }}
- *Comment:* {{ submission.comment }}
Use the following link to view this submission.
[{{ host }}{{ submission.get_absolute_url }}]({{ host }}{{ submission.get_absolute_url }})


The age old question, but I think the answer is rather obvious! Dogs... AND Cats!!!
I should say that my real reason for filling this assignment up with dog and cat combo propaganda is because it's a life-long dream of mine.
Picture this: You go to a shelter, looking to take home an adorable pupper... You walk up and down the rows of cages, past the adorable stares and occascional choars of barks until you find the one. Storybook connection, maybe love at first sight is more appropriate?
You are getting all set to take this new family member home when suddenly, out of the corner of your eye you see a little kitty. Staring at you, and your new best friend, with big ole eyes (think Puss in Butts level). At that moment you realize, you need them in your life too. You take them home too, two brand new friends for you and for each other.
If you are as serious about making this happen (like I am) here are some things to consider. here is a list of things to keep in mind/prepare for.
LOOK AT THESE ADORABLE FRICKEN PICTURES?!?!? HOW CAN THIS NOT BE THE BEST THING EVER?!?!?
Not only do you get to experience the best of both worlds but all animals involved will have a life long friend!
If you still aren't convinced after this... it might be too late... your heart has been turned to stone...


This site just contains a few pages to help with integration testing of SiteMaster
Regular link
html5 encoded link
Regular link with a url as a parameter
html5 encoded with a param
Retina


What is your long term goal and or career pathway?
I want to gain the skills needed for entry level employment in software development. Ideally this would be with a company or organisation that I feel aligns with my personal values and is making a positive contribution to the world. In the long term, I would love to be able to work remotely so that I could incorporate some long-term travel into my life. At this time I see myself more interested in front-end development, but I am also open to follow wherever my curiosity leads me. I also think I would enjoy and have some aptitude in project management.
What skills (non-technical - human skills) would you like to see developed in yourself while at EDA?
I would like more practice on how to work well with others, especially in the context of completing shared projects. I’d also like to work on being a good support/mentor for others in my cohort. As an older student, I feel I might have something to offer in this area. To do this well, I’ll have to manage my own feelings of overwhelm and identify in what areas I can be a valuable resource to my peers.
A description of your own strengths and limitations
Limitations
Based on the above description, a commitment to how you will manage your workload in this programme. This should include - an explanation of how you will manage yourself to work productively and safely with other learners, facilitators and industry/community representatives.
I am committed to putting in the time and effort required to complete this program. I am an early riser and will use those hours productively. I will manage my stress through running, yoga, and meditation. If I am feeling overwhelmed, I will step away to take a walk. I will use the experiences I’ve had in the past while working with others under stressful situations and use strategies the I have found effective such as listening, empathy, and humour. I will respect and value the opinions and backgrounds of those I come into contact with and try and always remember that everyone has something to teach me.
A commitment as to how and where you will seek help in a timely way.
I am committed to seeking help when needed from the teaching faculty, my fellow cohort members, and friends outside of the program. I will do this through one-on-one interactions, messaging software, and phone calls.
A description of what you expect from the facilitation team
I expect teaching that will cater to the various different levels of knowledge and learning styles of my cohort. I expect timely feedback on my performance. I expect encouragement and honesty. I expect them to push me if they think I could be doing more.
Any scheduling information such as block-out times when you are committed to other things. For example, you might have whanau commitments such as school drop-offs. It’s important to plan these in.
Not at this time.


The 3rd IEEE International Workshop on High-Performance Big Data Computing
In conjunction with The 31st IEEE International Parallel and Distributed Processing Symposium (IPDPS 2017)
In Buena Vista Palace Hotel, Orlando, Florida USA, Monday, May 29th, 2017
Managing and processing large volumes of data, or “Big Data”, and gaining meaningful insights is a significant challenge facing the distributed computing community. This has significant impact on a wide range of domains including health care, bio-medical research, Internet search, finance and business informatics, and scientific computing. As data-gathering technologies and data-sources witness an explosion in the amount of input data, it is expected that in the future massive quantities of data in the order of hundreds or thousands of petabytes will need to be processed. Thus, it is critical that data-intensive computing middleware (such as Hadoop, HBase and Spark) to process such data are diligently designed, with high performance and scalability, in order to meet the growing demands of such Big Data applications.
The explosive growth of Big Data has caused many industrial firms to adopt High Performance Computing (HPC) technologies to meet the requirements of huge amount of data to be processed and stored. Modern HPC systems and the associated middleware (such as MPI and Parallel File systems) have been exploiting the advances in HPC technologies (multi/many-core architectures, accelerators, RDMA-enabled networking, NVRAMs and SSDs) during the last decade. However, Big Data middleware (such as Hadoop, HBase and Spark) have not embraced such technologies. These disparities are taking HPC and Big Data processing into ‘divergent trajectories’.
International Workshop on High-Performance Big Data Computing (HPBDC), aims to bring HPC and Big Data processing into a ‘convergent trajectory’. The workshop provides a forum for scientists and engineers in academia and industry to present their latest research findings on major and emerging topics in this field.
HPBDC 2017 will be held in conjunction with the 31st IEEE International Parallel and Distributed Processing Symposium (IPDPS 2017), Orlando, Florida USA, Monday, May 29th, 2017.
HPBDC 2017 welcomes original submissions in a range of areas, including but not limited to:
Papers should present original research. As Big Data spans many disciplines, papers should provide sufficient background material to make them accessible to the broader community. One outstanding paper will be selected for the Best Paper Award.
Cisco has generously offered to sponsor the Best Paper Award. This award will be given to the author(s) of the paper selected by the Technical Program Committee and the Program Chairs. The award will be determined from viewpoints of the technical and scientific merits, impact on the science and engineering of the research work and the clarity of presentation of the research contents in the paper.
Geoffrey C. Fox, Indiana University Bloomington
Satoshi Matsuoka, Tokyo Institute of Technology
D. K. Panda, The Ohio State University
Ren Wu, NovuMind
All submissions should follow the IEEE standard 8.5” x 11” two-column format. The workshop will accept traditional research papers (8-10 pages) for in-depth topics and short papers (4-8 pages) for works in progress on hot topics.
All the papers should be submitted through https://easychair.org/conferences/?conf=hpbdc2017.
All papers will be carefully reviewed by at least three reviewers. Papers should not be submitted in parallel to any other conference or journal.
The proceedings of this workshop will be published together with the proceedings of other IPDPS 2017 workshops by the IEEE Computer Society Press. Proceedings of the workshops are distributed at the conference and are submitted for inclusion in the IEEE Xplore Digital Library after the conference. At least one of the authors of each accepted paper must register as a participant of the workshop and present the paper at the workshop, in order to have the paper published in the proceedings.
Abstract submission (optional) deadline :
Paper submission deadline :
Acceptance notification :
Camera-Ready deadline :
Advance Registration deadline :
Workshop :
January 10th, 2017
January 17th, 2017 Anywhere on Earth
January 17th, 2017
January 24th, 2017 Anywhere on Earth
February 17th, 2017
February 25th, 2017
March 15th, 2017
March 27th, 2017
May 29th, 2017
The workshop does not have a separate registration. All attendees need to register with the main conference. Details about registration and hotel can be found on the main conference website.
Please check the main conference website.


We invite you, our special guest, to experience Moonshine Alley! As bootleggers, our club has to be a bit secretive , so we've taken a few precautions in getting you in the door. You'll go on a speakeasy adventure to uncover the secret location of our club and earn our trust. What lovely things await you behind Moonshine Alley's door! Besides adventure, there will be a live bluegrass band and a lecture on the art and science of distillation.
You and your guests will go on a speakeasy adventure to find Moonshine Alley. The ticket is your passport for this one of a kind adventure! This is a journey that encourages high heels, not hiking boots, and cocktail attire is encouraged.
Our limited addition flight of local whiskies is available for pre-purchase when you order your tickets. We also offer a flight of non-alcoholic cocktails that will delight you. A few boozy concotions will also be available for purchase at Moonshine Alley.
After immersing yourself in a speakeasy adventure to find Moonshine Alley you will be welcomed to an evening of live Bluegrass, and a lecture on the art & science of distillation. That's how bootleggers throw a hootenanny!
This is a pop-up venue that shines for one night only! Immerse yourself in a speakeasy adventure to find Moonshine Alley, and then relax in our speakeasy. Check us out on instagram @MoonshineAlleySF.
Wouldn't you like to know! As bootleggers, we must be a little secretive, but we assure you Moonshine Alley is in Dogpatch. Purchase a ticket and we will reveal the location of a special phone. Pickup the phone and listen; a voice will start you on your journey.
Heavens no! Our lead bootlegger, Emily, would never let someone get lost on their way to a good party. The speakeasy adventure does require about a 20 minute walking adventure. If you run into trouble along the way, your ticket will include our contact information.
Yes, 21 and over please and thank you.
Yes, one per guest please. Sold Out and pre-purchase local whisky flights or non-alcoholic cocktail flights.
Yes! That is how we roll. The band is Festival Speed Bluegrass and you can find out more about them on their Facebook page: https://www.facebook.com/Festival.Speed.Bluegrass/
There is plenty of free parking adjacent to the start of your adventure in Dogpatch, and the neighborhood is served by the T and the 22 MUNI lines.
No! Just your bad self, and be sure to remember your name.
Absolutely. Just let Emily know in advance so she can expect whomever is in charge of your ticket<EMAIL_ADDRESS>Moonshine is even better when shared, so we thought the evening would be even more fun with a lecture. One part California Academy of Sciences and the other park Dark Arts.
No refunds.
Our lead bootlegger and fixer Emily will be happy to help you!


This is your data. You'll be able to view your recent data trends on the app dashboard and download your measurements. Seeing your data may change how you feel. You may feel tired, sad, energized, or happy.


173. Coins
time limit per test: 2 sec.
memory limit per test: 1024
KB
input: standard
output: standard
There is a row consist of N coins.  There is also binary vector A with (K-1) dimensions.
We accomplish
M operations with our coins row: we select some consecutive K coins, and apply
to selected coins transformation X for Di times (i=1..M, where i is a number of
operation)
The transformation X for given row C with length K means:
1.
We shift the row C in one position to the left in a cyclic way.
2. Then we
scan the row C from the first (leftmost) coin to (K-1)-th coin: if coin Ci lies
tails up, and Ai=1, then we turn over coin Ck
Obviously, that for constant
coins row with length K transformation X is fully determined by vector A. But
vector A haven't given to you. You have results of transformation L rows with
length K (row of coins before transformation, and row after transformation). It
is guarantied that there is exactly one vector A satisfied all L conditions.
Your task is to reconstruct initial row by given row after all operations
being accomplished.
Input
There is four integer numbers in the first line of input: N, M,
K, L (2<=N<=50, 1<=M<=10, 1<=L<=200, 2<=K<=N).
Second line contains description of accomplished operations, M pairs of
positive integer numbers Si and Di. Si is a starting point of selected coins
subrow, Di is a number of iterations of transformation (Si <= N-K+1; Di <=
10^6).
There are the following L conditions determining transformation X, L
blocks by two lines each: first line of each block contains a row before
transformation, and the second line contains row after transformation. Each line
consists of K symbols, 1 denotes tails, 0 denotes heads.
The last line
contains N symbols - row of coins after all operations accomplished. i-th symbol
is 1 if i-th coin lies tails up, and 0 otherwise.
Output
Write N symbols in single line of output: i-th symbol must be 1
if i-th coin of initial row laid tails up, and 0 otherwise.
Sample test(s)
Input
4 2 3 2
2 1 1 1
010
101
101
011
1010
Output
0110
| Author: |
Dmitry Orlov |
| Resource: |
Saratov ST team Spring Contest #1 |
| Date: |
18.05.2003
|
| Server time: 2004-01-13 20:59:58 |
Online Contester Team © 2002 - 2003. All
rights
reserved. | | |


TimepixCam is able to record and time-stamp light flashes in excess of 1,000 photons with high quantum efficiency in the 400–1000nm wavelength range with 20ns timing resolution, corresponding to an effective rate of 50 Megaframes per second. This is accomplished by .. more
The TimepixCam is utilized at molecular photoionization experiments using the velocity map imaging technique. The timing resolution of the chip allows recording significantly more data within a given amount of beamtime and is .. more
We perform the timestamping of single photons with a time resolution of 20 ns, by coupling TimepixCam to a fast image-intensifier with a P47 phosphor screen. The fast emission time of the P47 allows us to preserve good time resolution while .. more
Tpx3Cam is equipped in a coincidence velocity map imaging apparatus. The high sensitivity and nanosecond timing resolution allow for simultaneous position and time-of-flight detection.
The detailed characterization of the camera .. more


If you select "Yes", this plugin will set the following content of CSP to allow access to HTML with JS or CSS.
sandbox allow-scripts; default-src *; style-src * http://* 'unsafe-inline' 'unsafe-eval'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'
Warning:
There is a security risk if you select "Yes".


{% extends 'base.html' %} {% block content %}
Create new hearing
The table below shows all scraped, imported, and manually entered hearings.


Error
[[job.exception]]
Running
Cancelled
[[job.cancel_reason]]
Queued
[[job.name]]
For [[job.user]]
created on [[createTime(job)]]
waiting time: [[queueDuration(job)]]
started on [[startTime(job)]]
running time: [[runDuration(job)]]
In queue: [[job.configuration]]
Job failed
Estimated Job Time
Similar jobs in the past have taken approximately [[historicMedian(job)]] ± [[historicStdDev(job)]] and [[historicP90(job)]] at the 90th percentile.
Currently there are [[queueAhead(job)]] jobs ahead of this one in the [[job.configuration]] queue. Expected waiting time is [[queueWaitingTime(job)]].


"CHIOS "mentioned in Acts 20:15, an island in the Aegean Sea, about 5 miles distant from the mainland, having a roadstead, in the shelter of which Paul and his companions anchored for a night when on his third missionary return journey. It is now called Scio.
"CHIOS "mentioned in Acts 20:15, an island in the Aegean Sea, about 5 miles distant from the mainland, having a roadstead, in the shelter of which Paul and his companions anchored for a night when on his third missionary return journey. It is now called Scio.


Home
Hi my name's Ash Sewell. I'm a C++/UE4 developer from Australia and I've been programming and making games since 2017. I enjoy writing game systems, shaders, tools and delving into engine code. I also enjoy playing games, like League of Legends, Magic the Gathering and Minecraft.
Skills
My main skills are C++, Unreal Engine 4 and GLSL. Additionally I have experience with C#, HLSL, and I created this website from scratch using HTLM, CSS, and little bit of JavaScript.


IHC summons DIGP in missing lawyer case
by Web DeskThe Islamabad High Court (IHC) summoned deputy inspector general of police (DIGP) Islamabad and directed him to appear in person to reply in a case regarding missing of a lawyer.
Chief Justice Athar Minallah conducted hearing on a petition seeking recovery of a lawyer who belong to Multan city.
During outset of hearing, the chief justice remarked that it was the responsibility of state to protect the lives and property of citizens. The chief justice asked the president of Multan Bar Association to assist the bench regarding the more options as the state institutions were already engage in search of the missing lawyer.
The counsel for the petitioner adopted the stance that the law enforcement agencies should update them regarding any progress into the matter.
Deputy Attorney General Tayyab Shah stated that a first information report (FIR) had been registered and a report of Defence Ministry had also been filed. He prayed the court to grant further time to progress in the matter.
The court adjourned hearing of the case till December 9, and summoned DIGP Islamabad in person on next hearing.


Toggle navigation
Quotsy
About
Swipe down to get a new quote
×
Quotsy
An offline capable PWA which serves design quotes.
Go to the repository
Copied.


Constructor
new TallyLabIdentityProvider()
Creates a new instance of TallyLabIdentityProvider. Not called directly but instead passed into OrbitDB. See Usage above.
Parameters:
| Name | Type | Description |
|---|---|---|
options.tlKeys |
Keypair | TallyLab keys |
options.nacl |
module | Output of |
- Source:
Returns:
TallyLabIdentityProvider
Members
(static) type
Set to the string 'TallyLab'
- Source:
Methods
(static) keygen() → {TallyLabIdentityProvider~TallyLabIdentity}
Generates four keys based on a seed string that is passed in from the security questions flow. This functiion verfies that the seed length is exactly 32 bytes and will generate a random seed if none is passed.
Inside of the returned keypair
object:
- A signing keypair
keypair.signing.signPk
andkeypair.signing.signSk
- An encryption keypair, kept as
publicKey
andkeypair.privateKey
for backwards compatibility.
Security versions have been set to 1.1 for a randomly generated key and 2.0 for seeded keys.
Returns:
See type definition below
(async, static) verifyIdentity()
Verifies the identity by checking that the public key in identity.id did, in fact, create the signature created in identity.signature.id
- Source:
getId() → {Uint8Array}
Returns the signing public key of TallyLab. Essentially the user's unique ID
- Source:
Returns:
TallyLab Signing Public Key
- Type
- Uint8Array
(async) signIdentity() → {Uint8Array}
After OrbitDB signs the TallyLab keys, it passed an identity back to TallyLab in the form of a string (publicKey + idSignature), which is then signed by TL
- Source:
Returns:
Signature as bytes
- Type
- Uint8Array
Type Definitions
TallyLabIdentity
The TallyLab Identity Object returned from a successful Identities.createIdentity call
Type:
- Object
Properties:
| Name | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
privateKey |
Uint8Array | Encryption private key |
|||||||||
publicKey |
Uint8Array | Encryption public key |
|||||||||
signing |
Object |
Properties
|
|||||||||
version |
Number | TallyLab security version (1.1 or 2.0) |
- Source:


CDN Containers¶
Note
This feature is only available to Rackspace users.
Setup¶
In order to interact with CDN containers, you first need to instantiate a CDN service object:
$cdnService = $service->getCdnService();
List CDN-enabled containers¶
To list CDN-only containers, follow the same operation for Storage which lists all containers. The only difference is which service object you execute the method on:
$cdnContainers = $cdnService->listContainers();
foreach ($cdnContainers as $cdnContainer) {
/** @var $cdnContainer OpenCloud\ObjectStore\Resource\CDNContainer */
}
CDN-enable a container¶
Before a container can be CDN-enabled, it must exist in the storage system. When a container is CDN-enabled, any objects stored in it are publicly accessible over the Content Delivery Network by combining the container’s CDN URL with the object name.
Any CDN-accessed objects are cached in the CDN for the specified amount of time called the TTL. The default TTL value is 259200 seconds, or 72 hours. Each time the object is accessed after the TTL expires, the CDN refetches and caches the object for the TTL period.
$container->enableCdn();
Operations on CDN-enabled containers¶
Once a container has been CDN-enabled, you can retrieve it like so:
$cdnContainer = $cdnService->cdnContainer('{containerName}');
Retrieve the SSL URL of a CDN container¶
$cdnContainer->getCdnSslUri();
Retrieve the streaming URL of a CDN container¶
$cdnContainer->getCdnStreamingUri();
Retrieve the iOS streaming URL of a CDN container¶
The Cloud Files CDN allows you to stream video to iOS devices without needing to convert your video. Once you CDN-enable your container, you have the tools necessary for streaming media to multiple devices.
$cdnContainer->getIosStreamingUri();
CDN logging¶
To enable and disable logging for your CDN-enabled container:
$cdnContainer->enableCdnLogging();
$cdnContainer->disableCdnLogging();
Purge CDN-enabled objects¶
To remove a CDN object from public access:
$object->purge();
You can also provide an optional e-mail address (or comma-delimeted list of e-mails), which the API will send a confirmation message to once the object has been completely purged:
$object->purge('jamie.hannaford@rackspace.com');
$object->purge('hello@example.com,hallo@example.com');