In Getting Started document, a new sample project is created named "Acme.PhoneBookDemo". This document is a complete guide while developing your project. We definitely suggest to read this document before starting to the development. Since ASP.NET Zero is built on ASP.NET Boilerplate application framework, this document highly refers it's documentation.
Before reading this document, it's suggested to run the application and explore the user interface. This will help you to have a better understanding of concepts defined here.
Following tools are needed in order to use ASP.NET Zero Core solution:
After you create and download your project, you have a solution structure as shown below for *.Web.sln:
There are two more solutions, *.Mobile.sln contains only Xamarin application development projects and *.All.sln contains both mobile and web development projects.
There are 12 projects in the solution:
ASP.NET Zero solution contains four applications:
Multi-tenancy is used to build SaaS (Software as a Service) applications easily. Wtih this technique, we can deploy single application to serve to multiple customers. Each Tenant will have it's own roles, users and settings.
ASP.NET Zero's all code-base is developed to be multi-tenant. But, it can be disabled with a single line of configuration if you are developing a single-tenant application. When you disable it, all multi-tenancy stuff will be hidden and not available. If multi-tenancy is disabled, there will be a single tenant named Default.
There are two types of perspective in multi-tenant applications:
Read multi tenant documentation if you are building multi-tenant applications.
appsettings.json in Web.Mvc project contains a setting, named "WebSiteRootAddress", which stores root URL of the web application:
"WebSiteRootAddress": "http://localhost:62114/"
It's used to calculate some URLs in the application. So, you need to change this on deployment. For multi-tenant applications, this URL can contain dynamic tenancy name. In that case, put {TENANCY_NAME} instead of tenancy name like:
"WebSiteRootAddress": "http://{TENANCY_NAME}.mydomain.com/"
Thus, ASP.NET Zero can automatically detect current tenant from URLs. If you configure it as above, you should also redirect all subdomains to your application. To do that;
There may be other ways of doing it but this is the simplest.
Similar to "WebSiteRootAddress", "ServerRootAddress" setting is also exists in appsettings.json in .Web.Host project. In addition, .Web.Host application contains "ClientRootAddress" which is used if this API is used by the Angular UI. If you are not using Angular UI, you can ignore it. Finally, "CorsOrigins" setting is used to allow some domains for cross origin requests. This is also useful when you are hosting your Angular UI in a seperated server/domain.
AccountController provides login, register, forgot password and email activation pages.
Account management pages have a seperated _Layout view under Views/Account folder:
Related Script and Style resources located under view-resources/Views/Account folder:
As similar, all views of the application have corresponding style and script files under wwwroot/view-resources folder.
Main view for AccountController is the Login page:
The tenant selection section above login section is only shown in a multi-tenant application and if "subdomain tenancy name detection" is not possible (See host settings section). When we click Change link, tenant change dialog appears and we can change the tenant. There is a single tenant named Default in the initial database (See Entity framework section for initial seed data). Leave tenancy name input as blank to login as host.
We can use admin user name and 123qwe password in first run the application. At first login, we should change admin password since 123qwe is not very secure:
After changing password we are redirected to the backend application.
ASP.NET Zero supports social media logins. To enable it, we should change the following settings in appsettings.json file.
"Authentication": {
"Facebook": {
"IsEnabled": "false",
"AppId": "",
"AppSecret": ""
},
"Google": {
"IsEnabled": "false",
"ClientId": "",
"ClientSecret": ""
},
"Twitter": {
"IsEnabled": "false",
"ConsumerKey": "",
"ConsumerSecret": ""
},
"Microsoft": {
"IsEnabled": "false",
"ConsumerKey": "",
"ConsumerSecret": ""
}
},
You can find many documents on the web to learn how to obtain authentication keys for social platforms. So, we will not go to details of creating apps on social medias. Once you get your keys, you can write them into appsettings.json. When you enable it, social media logos are automatically shown on the login page as shown below:
In addition to social logins, ASP.NET Zero includes OpenId Connect Login integrated. It's configuration can be changed in appsettings.json:
"OpenId": {
"IsEnabled": "false",
"Authority": "",
"ClientId": "",
"ClientSecret": ""
}
ASP.NET Zero is ready to provide two factor login, but it's disabled as default. You can easily enable it in host settings page (in Security tab):
Note: In a multi-tenant application, two factor authentication is available to tenants only if it's enabled in the host settings. Also, email verification and SMS verification settings are only available in the host side. This is by design.
When it's enabled, user is asked to select a verification provider after entering user name and password:
Then a confirmation code is sent to the selected provider and user enters the code in the next page:
This is available if user has a confirmed email address. Since email sending is disabled in debug mode, you can see the code in logs. In release mode, email will be sent (You can change this and make emailing available in also debug. See sending emails section).
This is available if user has a confirmed phone number. SMS sending is not implemented actually (because it requires an integration to an SMS vendor). Current implementation just writes security code to logs. You should complete SmsSender class in the solution to make it usable. Otherwise, disable SMS verification in the settings.
As seen in the previous section, you can configure user lockout settings. Users are lockout when they enter wrong password for a specified count and duration.
When we click the "Create Account" link in the login page, a registration form is shown:
A user can be register for a tenant, not for host if this is a multi-tenant application. If it's single-teant, there will be no tenancy name input here.
Recaptcha (security question) is optional. It uses Google's recaptcha service. Recaptcha service works per domain. So, to make it properly work, you should create your own private and public keys for your domain on https://www.google.com/recaptcha and replace keys in appsettings.json file.
When a user registers as shown above, an email confirmation code is sent to his email address. If user did not receive this email for some reason, he can click Email activation and re-send the confirmation code.
Again, Tenancy name input is not shown for a single-tenant application or tenant name is known via subdomain (like tenancyname.mydomain.com).
If a user forgots his password, he can click the "Forgot Password" link to get an email to reset the password.
This is the actual application which is entered by username and password. You will mostly work on this application to add your business requirements.
Backend application is built in a dedicated area, named "App" by default, but can be determined while you are creating the solution. So, all controllers, views and models are located under Areas/App folder. Also, related script and style files are located under wwwroot/view-resources/Areas/App folder, as shown below:
Application's main menu is defined in AppNavigationProvider class. See ABP's navigation documentation to have a deep understanding on creating menus. When you add a new menu item, it's automatically rendered in the layout.
Layout of the application is located under Areas/App/Views/Layout folder. It uses Components for header, footer and sidebar:
Main menu is rendered in menu component. Layout also highly uses bundling & minification (see the section below) system for script and style includes.
If you're not developing a multi-tenant application, you can skip this section.
Most SaaS (multi-tenant) applications have editions (packages) those have different features. Thus, they can provide different price and feature options to thier tenants (customers). Editions page (available in host login) is used to manage application's editions:
Editions are used to group feature values and assign to tenants. When we click Actions/Edit for an edition, we can see it's poperties:
An edition can be free or paid. If it's a paid edition then you should enter monthly and annual prices. You can allow tenants to use trial version of this edition for a specified days. Then you can determine an expire strategy: How many days to allow a tenant to use the application after subscription expires. And finally, you can deactivate tenant or assign to a free edition if they don't extend their subscription.
Features tab is used to determing features available for the edition:
See feature management and edition management documents for more information.
If you're not developing a multi-tenant application, you can skip this section.
If this is a multi-tenant application and you logged in as a host user, then tenants page is shown:
A tenant is represented by Tenant class. Tenant class can be extended by adding new properties. There is an only one tenant, named Default as initial. Tenancy Name (code name) is the unique name of a tenant. A tenant can be active or passive. If it's passive, no user of this tenant can login to the application.
When we click the "Create New Tenant" button, a dialog is shown:
Tenancy name should be unique and not contain spaces or other special chars since it may be used as subdomain name (like tenancyname.mydomain.com. See the section below). Name can be anything. Admin email is used as email address of the admin user of new tenant. Admin user is automatically created with the tenant. We can set a random password for admin and send activation email. When user first logins, he/she should change the password. We can uncheck this to enter a known password.
When we create a new tenant, we should select/create a database to store new tenant's data. We can select 'Use host database' to store tenant data in host database (can be used for single database approach) or we can specify a connection string to create/use a dedicated database for new tenant. ASP.NET Zero supports hybrid approach. That means you can use host database for some tenants and create dedicated databases for some other tenants. Even you can group some tenants in a separated database.
Once you assign an edition to the tenant, you can select an expiration date (see edition management section to know what happens after subscription expiration).
All tenant actions are handled by TenantAppService class. Example (deleting a tenant):
[AbpAuthorize(AppPermissions.Pages_Tenants_Delete)]
public async Task DeleteTenant(EntityRequestInput input)
{
var tenant = await TenantManager.GetByIdAsync(input.Id);
CheckErrors(await TenantManager.DeleteAsync(tenant));
}
TenantAppService mostly uses TenantManager domain service for tenant operations.
An edition can be assigned to a tenant (while creating or editing). Tenant will inherit all features of the assigned edition. But we can also override features and values for a tenant. Click actions/change features for a tenant to customize it's features:
As a host user, we may want to perform operations in behalf of a tenant. In this case, we can click the "Login as this tenant" button in the actions. When we click it, we see a modal to select a user of the tenant. We can select any user and perform operations allowed that user. See User Impersonation section in this document for more information.
A multi-tenant application generally uses subdomain to identify current tenant. tenant1.mydomain.com, tenant2.mydomain.com and so on. ASP.NET Zero automatically identify and get tenant name from subdomain (See host settings section).
Host dashboard is used to show some statistics about tenants, editions and income:
This is a fully implemented dashboard except two sample statistics (sample statistics 1 & 2) those are placeholders for your own statistics.
Organization units (OU) are used to hierarchically group user and entities. Then you can get user or entities based on their OUs. When we click Administration/Organization units, we enter the related page:
Here, we can manage OUs (create, edit, delele, move) and members (add/remove).
OrganizationUnitManager is used to manage OUs, UserManager is used to manage OU members in the code. OrganizationUnitAppService performs the application logic.
In the left OU tree, we can right click to an OU (or left click to arrow at the right) to open context menu for OU operations. When we try to add a member, a modal is shown to select the user:
This is actually a generic lookup modal and can be used to select any type of entity (see Areas/App/Views/Common/Modals/_LookupModal.cshtml and it's related script file). To select the users, we created FindUsers method in CommonLookupAppService then configured the modal to work with this method (see view-resources/Areas/App/Views/OrganizationUnits/index.js file for usage of lookupModal.open).
See organization unit management document for more information.
When we click Administration/Roles menu, we enter to the role management page:
Roles are used to group permissions. When a user has a role, then he/she will have all permissions of that role.
A role is represented by the Role class. Role class can be extended by adding new properties.
RoleManager performs domain logic, RoleAppService performs application logic for roles.
Roles can be dynamic or static:
One or more roles can be set as default. Default roles are assigned to new added/registered users as default. This is not a development time property and can be set or changed after deployment.
In startup project, we have static admin role for host (for multi-tenant apps). Also, we have static admin and user roles for tenants. Admin roles have all permissions granted by default. User role is the default role for new users and has no permission by default. These can be changed easily. See StaticRoleNames class for all static roles and AppRoleConfig for changing static roles.
Since roles are used to group permissions, we can set permissions of a role while creating or editing as shown below:
(not all permissions shown in the figure above)
Every tenant has it's own roles and any change in roles for a tenant does not effect other tenants. Also, host has also own isolated roles.
When we click Administration/Users menu, we enter to the user management page:
Users are people who can login to the application and perform some operations based on their permissions.
User class represents a user. User class can be extended by adding new properties.
UserManager is used to perform domain logic, UserAppService is used to perform application logic for users.
A user can have zero or more roles. If a user has more than one role, he inherits union of permissions of all these roles. Also, we can set user-specific permission. A user specific permission setting overrides role settings for this permission. A screenshot of user permission dialog:
(not all permissions shown in the figure above)
A dialog is used to create/edit a user:
We can change user's password, make her active/passive and so on... A user can have a profile picture. It can be changed by the user (See User Menu section). Admin user can not be deleted as a business rule. If you don't want to use admin, you can make it passive.
As admin (or any allowed user), we may want to login as a user and perform operations in behalf of that user, without knowing his password. When we click "Login as this user" icon in the actions of a user, we are automatically redirected and logged in as this user. This is called as "user impersonation". When we impersonate a user, a "back to my account" option is added to the user profile menu:
In an impersonated account, we can only perform operations allowed to that user. That means, everything exactly works as same as this user logged in himself. The only difference is shown in audit logs which indicates that operations are performed by somebody else. Notice that; Also a red 'back' icon shown near to the user name to indicate that you are in an impersonated account.
Impersonation is done in AccountController of the Web project.
Language management page is used to manage (add/edit/delete) application languages and change localized texts:
We can create new language, edit/delete an existing language and set a language as default. Note that; tenants can not edit/delete default languages, but host users can do.
When we click to Change text for any language, we are redirected to a new view to edit language texts:
We can select any language as a base (reference) and change target language's texts. Base language is just to help the translation progress. Since there maybe different localization sources, we select the source to translate. When we click the edit icon, we can see the edit modal for the selected text:
Host users (if allowed) can edit languages and localized texts. These languages will be default for all tenants for a multi-tenant application. Tenants inherit languages and localized texts and can override localized texts or can add new languages.
Both pages use LanguageAppService class as application service. It has methods to manage languages and localized texts. IApplicationLanguageManager and IApplicationLanguageTextManager interfaces are used to perform domain logic (as used by LanguageAppService).
See language management and localization documents for more information.
In audit logs page, we can see all user interactions with the application:
All application service methods and MVC controller actions are automatically logged and can be viewed here. See audit logs documentation to learn how to configure it. When we click the magnifier icon, we can see all details an audit log:
Audit log report is provided by AuditLogAppService class.
Tenants can manage (show, extend or upgrade) their edition/plan subscriptions using this page:
All payment records for extending/upgrading current licenses are kept in the system. These records can be seen on "Payment History" tab on subscription page.
Tenants can also create & print invoices for these payments by clicking the "Show Invoice" button. System will automatically generate an invoice number and show the generated invoice. In order to use this function, both Host & Tenant must set invoice informations on host setting/tenant setting page.
After all, invoices for payments related to subscription can be generated. You can see a sample invoice below:
ASP.NET Zero's look of UI can be modified in visual settings page. This page is used to modify look of UI both for system and personal user accounts. If a user doesn't have permission to see this page, then user will see an item named "Visual Settings" in his personal menu.
Users who have permission to see this page will see the same item in the application menu.
In this page, users can change visual settings for Layout, Header, Menu and Footer of the application.
Host settings page is used to configure some system settings:
Timezone is an important setting in this page. AspNet Zero can work in multiple zones. Each user can see dates and times in their own time zone. Timezone setting in this page allows you to set default time zone for the application including all tenants and users. Tenants and users can change time zone in their own settings. Timezone setting is available only if you are using UTC clock. See documentation to switch to UTC.
SAVE ALL button saves all settings in one click. HostSettingAppService is used to retrieve and save settings (See setting provider section for more information).
Security tab in host settings page contains password complexity and other security settings. Host can define system wide security settings in this tab. Each tenant can override this setting in tenant settings page. PasswordComplexityChecker class is responsible for checking if a password satisfies the password complexity settings.
In a multi-tenant application, tenant settings are shown as below:
If we disable multi-tenancy, some host settings are also shown in this page (since there is no host setting page). Tenants can also define password complexity settings for their users or they can use password complexity settings defined by host user.
TenantSettingAppService is used to get/set tenant settings.
LDAP (Active Directory) Authentication is disabled by default. To make it work, we should disable multi-tenancy since LDAP auth is not used in a multi-tenant system normally. In CoreModule class in .Core project, we should enable the following line:
Configuration.Modules.ZeroLdap().Enable(typeof(AppLdapAuthenticationSource));
Then, we can see LDAP settings section in settings page:
We can check "Enable LDAP Authentication" to enable it. If the server works in domain and application runs with a domain user or local system, then generally even no need to set Domain name, user and password. You can logout and then login with your domain user name and password. If not, you should set these credentials.
.Net Core Compability
LDAP Authentication is not supportted by .net core yet. Thus, it's designed to be conditional. If you are using .Net Framework (4.6+) then it will be available, otherwise it will be disabled.
Maintenance page is available to host side for multi tenant applications (for single tenant applications it's shown in tenant side) and shown as below:
In the Caches tab, we can clear some or all caches. Clearing caches may be needed if you manually change database and want to refresh application cache. CachingAppService is used to clear caches in the server side.
Website Logs tab is used to see and download logs:
WebLogAppService is used to get logs from server.
ASP.NET Zero startup project also includes a sample dashboard. It's just for demo purposes, you can make it as a start point for your actual dashboard:
Client gets all data from server, server generates random data.
Notification icon is located next to the language selection button. The number in the red circle shows unread notification count.
User can see 3 recent notifications by clicking this icon.
User can marks all notifications as read by clicking the "Set all as read" link or can mark a single notification by clicking the "set as read" link next to each notification.
Notifications are sent real-time using SignalR. In addition, a desktop push notification is shown when a notification is received.
"Settings" link opens notification settings dialog.
In this dialog there is a global setting for user to enable/disable receiving notifications. If this setting is enabled, then user can enable/disable each notification individually.
You can also define your custom notifications in AppNotificationProvider class. For example, new user registration notification is defined in the AppNotificationProvider as below.
context.Manager.Add(
new NotificationDefinition(
AppNotificationNames.NewUserRegistered,
displayName: L("NewUserRegisteredNotificationDefinition"),
permissionDependency: new SimplePermissionDependency(AppPermissions.Pages_Administration_Users)
)
);
See notification definitions section for detailed information.
AppNotifier class is used to publish notifications. NotificationAppService class is used to manage application logic for notifications. See notifications documentation for detailed information.
All notifications of user are listed in this page.
.Net Core Compability
Since SignalR is not ready yet for .net core, real time notifications will not work if you select .net core as your base framework.
Chat icon is located next to user's profile image on top right corner of the page. The number in the red circle shows total unread chat message count.
When user clicks this icon, chat panel appears on the right of page. This panel contains friends of user and list of blocked users.
User can add new friends by writing the username into username textbox above friend list. If "Chat with other tenants" feature is enabled for tenant, users of other tenants can be added as a friend by writing [tenancy name]\[user name] (ex: Default\admin). If "Chat with host users" feature is enabled, host users can be added as friend by writing .\[user name] in the same textbox.
While online friends/users have a green circle on their profile image, offline friends/users have a gray circle.
User can pin or unpin the chat panel by clicking the pin icon on top right corner of the chat panel. Application tries to remember last state of chat panel and restores it when user login to application.
When a friend/user is selected, conversation panel is opened.
Chat system also allows sending images, files and link of current page to friends
User can block or unblock friend/user in this area. There is a wrench icon right of the selected user's username. This icon opens an action menu and this menu contains block user or unblock user actions according to user's block status.
Chat messages are distrubited over ChatHub signalR hub class which uses ChatMessageManager domain class.
ChatUserStateWatcher class is responsible for watching online/offline state changes of chat users. When a user becomes online or offline, this class catches the state change and notifies friends of related user.
FriendshipAppService and FriendshipManager classes are responsible for managing friendship requests. Chat messages from blocked users are not delivered to target users.
Since chat is a real time operation, application caches friends of online users and unread message count from each friend. UserFriendsCache class manages these caching operations.
UserFriendCacheSyncronizer class is responsible for keeping user friends cache up to date. In order to do that, it watches some events of Friendship and ChatMessage entities.
.Net Core Compability
Since SignalR is not ready yet for .net core, chat feature will not work if you select .net core as your base framework.
There are three chat features in the system. These are "Chat", "Chat with host", "Chat with other tenants". These features can be enabled/disabled per edition/tenant. By using these features host can enable/disable chat with other tenant's users or host users.
A user can click his name at top right corner to open user menu:
Linked accounts are used to link multiple accounts to each other. In this way, a user can easily navigate through his/her accounts using this feature.
User can link new accounts or delete already linked accounts by clicking the "Manage accounts" link.
In order to link a new account, user must enter login credentials of related account.
UserLinkAppService class is used to manage application logic for account linking, UserLinkManager class is used to manage domain logic for account linking.
My settings is used to change user profile settings:
As shown here, admin user name can not be changed. It's considered a special user name since it's used in database migration seed. Other users can change their usernames. ProfileAppService is used to get/change settings.
All login attempts (success of failed) are logged in the application. A user can see last login attempts for his/her account. UserLoginAppService is used to get login attempts from server.
A user can change own profile picture. ProfileController is used to upload and get user profile pictures. Currently, jpg/jpeg, gif and png files are supported, you can extend it.
ProfileAppService is used to change password.
AccountController is used to logout the user and redirect to Login page.
ASP.NET Zero solution contains an extra project, Web.Host, which just exposes all application functionality as remote API. Thus, you can consume your application as API from any device. Actually, Web.Mvc project also does it, provides API for all application functionality. The difference is that Web.Mvc project has also MVC Controllers, Views, scripts and so on. If you just want to deploy API without UI, you can use Web.Host project. Otherwise, you can even delete it. We are using Web.Host project to provide server side API to Angular SPA.
A few notes on Web.Host project:
ASP.NET Zero includes a tool, Migrator.exe, to easily migrate your databases. You can run this application to create/migrate host and tenant databases.
This application gets host connection string from it's own appsettings.json file. It will be same as in the appsettings.json in .Web project at the beggining. Be sure that the connection string in config file is the database you want. After getting host connection sring, it first creates the host database or apply migrations if it does already exists. Then it gets connection strings of tenant databases and runs migrations for those databases. It skips a tenant if it has not a dedicated database or it's database is already migrated for another tenant (for shared databases between multiple tenants).
You can use this tool on development or on product environment to migrate databases on deployment, instead of EntityFramework's own Migrate.exe (which requires some configuration and can only work for single database in one run).
ASP.NET Zero contains a seperated application that can be a starting point for your public web site or a landing page for your application. Set Web.Public as Startup Project and run the application:
There are two pages here: Home Page and About. Contents of these pages are just placeholders and for demo purposes. You can completely remove content and build your page upon your needs. Also, you should change the logo with your Company's logo.
See metronic front-end theme for all possibilities and components to build a richer web site.
Menus are defined in FrontEndNavigationProvider class. When you add a new menu item here, it will be automatically shown in the menu. There is a Login link at the top right corner. This link takes us to the Login page to enter to the backend application.
Layout of front-end pages are located under Views/Layout folder:
_Layout is the main layout file that includes scripts and styles. Language flags and the menu is rendered in Header component which is located under Shared/Components. _PreFooter is not used but you can add it to the _Layout if you want.
When you click "New Tenant" link (at the top right area) you are redirected to the edition/plan selection page:
Actually, this UI is located in the main application. When you pick an edition, you are redirected to the payment or register form depending on the button you clicked. Register form is shown as below:
Public web site has a login integration to the main application. When you click to login button (at the top right area) you are redirected to the main application. If you are already logged then you automatically login in the public web site too. If not, you can enter your username and password to login. Then you are redirected back to the public web site and your username is shown at the top right:
To make this working, public web site and main application must know their URLs. There are two configuration for that:
Both configuration is properly set for the development environment. You should change them when you publish your project.
ASP.NET Zero application can be set-up using install page. This page is developed to create initial database, apply migrations and configure the application according to user's input on this page. Setup page can be accessed via http://yourwebsite.com/Install.
ASP.NET Core is initialized from the Startup class in the application. We configure all libraries (including ABP) in this class. We suggest you to start by checking this class. It is also integrated to OWIN. So, you can add OWIN middlewares here.
ASP.NET Zero solution uses npm package manager to obtain front end library dependencies (like bootstrap and jquery). So, you can easily add new packages or update existing packages on command line interface. You can see all installed npm packages in package.json of the .Web.Mvc project.
NPM installs dependencies into node_modules folder which will be placed in the root folder of MVC project. But, in ASP.NET Core, it is suggested to place client side libraries under wwwroot folder. Also, size of node_modules folder will be very big (more than 250 MB) and we don't want to send all of those files to production when we publish our application. In order to overcome this, we have used gulp to move necessary files from *.Web.Mvc/node_modules to *.Web.Mvc/wwwroot/lib. There are two related files in *.Web.Mvc project, bundle.config.js and gulpfile.js. bundle.config.js contains necessary mapping definitions from node_modules to lib folder and it also contains bundling & minification definitions. You can see respectively in below screenshots mapping and nundling/minification configurations from bundle.config.js.
ASP.NET Zero project highly use AJAX to provide a better user experience. UI calls application service methods via AJAX. So, it's needed to create MVC API controllers as adapters (A Client calls MVC API Controller action via AJAX, then it calls application service method). ABP framework automatically creates MVC API Controllers for all application services. So, no need to manually create MVC API Controllers for application services.See related documentation for more. While ABP dynamically create Web API Controllers, we can also create regular MVC API Controllers as we always do.
ASP.NET Zero User Interface is completely localized. ASP.NET Zero uses dynamic, database based, per-tenant localization (See the related section above).
XML files are used as base translation for desired languages:
PhoneBook will be your ProjectName. You can add more XML files by copying one XML file and translate to desired language. See valid culture codes.
When you are adding a new localizable text, add it to the XML file of the default language then use in your application (Also, add translated values to corresponding XML files). No need to add it to database migration code since value in the XML file will be used as default.
Application languages are defined in DefaultLanguagesCreator class. This is used as a seed data in Entity Framework Migration. So, if you want to add a new default language, just add it into DefaultLanguagesCreator class. Also, you should add a corresponding XML file as described above as default translation.
See localization and language management documentations for more information.
ASP.NET Zero template uses EntityFramework Core code-first and migrations. PhoneBookDbContext (YourProjectDbContext for your project) defines the DbContext class. Migrations folder contains EF migrations.
PhoneBookRepositoryBase class is the base class for your custom repositories. See entity framework integration documentation for more.
You can use Package Manager Console to add new migrations and update your database as you normally do. See EF Core's documentation for details.
ASP.NET Zero uses ABP's exception handling system. Thus, you don't need to handle & care about exceptions in most time.
ASP.NET Zero solution adds exception handling middlewares in the Startup class like that:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseStatusCodePagesWithRedirects("~/Error?statusCode={0}");
app.UseExceptionHandler("/Error");
}
So, you get a nicely formatted exception page in development and a more user friendly error page in production. See ErrorController and it's related views (Views\Error) for details.
ASP.NET Core introduced user secrets system to store sensitive data in development. ASP.NET Zero uses this system (it's configured properly for your solution). You may want to use a different connection string (or social media API keys) in development and do not want to add these secret data in your appsettings.json in the project (and do not want to commit these sensitive information to your source control system). Then use secret manager tool to store this sensitive information in your local computer and allow your application to read them from your local computer if available.
For example, you can use the following command, in Windows command prompt in the location of Core project, to change connection string for your local development environment:
dotnet user-secrets set ConnectionStrings:Default "Server=<IP_ADDRESS>;Database=MyProjectDevDb;User=sa;Password=12345678"
This user secret value overrides the value in the appsettings.json. See ASP.NET's own documentation for details about user secrets.
Authorization system is based on permissions. AppPermissions contains constants for permission names and AppAuthorizationProvider class defines all permissions in the system. We should define a permission here before using it in application layer.
See authorization documentation to learn how to configure permissions.
AppFeatureProvider class defines features of the application for multi-tenant applications. Feature names are defined in AppFeatures class as contants.
See feature management documentation to learn how to define and use features.
Every setting has a unique name. Setting names are defined in AppSettings class as constants. All settings and their default values are defined in AppSettingProvider class.
See setting documentation to learn how to create and use settings.
Menus are automatically generated using definitions in AppNavigationProvider class. We have two menus: Main (the main menu in the backend application) and FrontEnd (Main menu in front-end web site).
See navigation documentation for more information.
ASP.NET Zero uses in-memory caching but it's ready to use Redis as cache server. If you want to enable it, just uncomment the following line in your WebCoreModule (in your .Web.Core project):
Configuration.Caching.UseRedis(...);
Redis server should be up & running to be able to use it. See caching documentation for more information.
ABP framework contains a background job system with a default background job manager. If you want to use Hangfire as your background job manager, you can easily enable it;
Note: Hangfire creates it's own tables in the database on first run. See background job and hangfire integration documents for more information.
SignalR is properly configured and integrated to the startup template. Real time notification and chat systems use it. You can direcly use SignalR in your applications.
Notice that; As the time being, SignalR has not been released for ASP.NET Core yet. We integrated OWIN to ASP.NET Core pipeline in order to use SignalR in the application. See SignalR integration document for more information on SignalR.
.Net Core Compability
Since SignalR is not ready yet for .net core, SignalR integration is disabled if you select .net core as your base framework.
ASP.NET Zero uses Log4Net for logging as default. Configuration is defined in log4net.config file in the .Web project. It writes all logs to App_Data/Logs/Logs.txt folder of web site as default. When you publish your project, remember to configure write permission to Logs folder.
Check logging documentation to see how to inject ILogger and write logs.
ASP.NET Zero uses AutoMapper for DTO to Entity mappings (and other types of object-to-object mappings). We use Abp.AutoMapper library that makes usage of AutoMapper simpler and declarative.
For instance, see the DTO class that is used to transfer a tenant editing information:
[AutoMap(typeof (Tenant))]
public class TenantEditDto : EntityDto
{
[Required]
[StringLength(Tenant.MaxTenancyNameLength)]
public string TenancyName { get; set; }
[Required]
[StringLength(Tenant.MaxNameLength)]
public string Name { get; set; }
public bool IsActive { get; set; }
}
Here, AutoMap attribute automatically creates mapping between TenantEditDto and Tenant classes. Then we can automatically convert a Tenant object to TenantEditDto (and vice verse) object as shown below:
[AbpAuthorize(AppPermissions.Pages_Tenants_Edit)]
public async Task<TenantEditDto> GetTenantForEdit(EntityRequestInput input)
{
return ObjectMapper.Map<TenantEditDto>(await TenantManager.GetByIdAsync(input.Id));
}
ObjectMapper (this property comes from base class, but can be injected as IObjectMapper when you need somewhere else) is used to perform mappings.
Attribute based mapping may not be sufficient in some cases. If you need to directly use Automapper API to configure your mappings, you should do it in CustomDtoMapper class.
See Data Transfer Objects documentation for more information on DTOs.
ASP.NET Zero sends emails to users in some cases (like forgot password and email confirmation). Email template is defined in Emailing/EmailTemplates folder of .Core project (default.html). You can change default email template by editing this file.
Email sending is disabled in DEBUG mode. Because, development environment may not be configured properly to send emails. You can enable it if you want. It's enabled in RELEASE mode. Check YourProjectNameCoreModule class's PreInitialize method to change it if you like.
.Net Core Compability
Since .net core does not support smpt client, ASP.NET Zero uses MailKit to send emails.
User profile pictures are stored in database, instead of file system. But it's not stored in Users table for performance reasons (Users are frequently retrieved from database, but profile pictures are rarely needed).
A general-purpose binary saving mechanism built in ASP.NET Zero. BinaryObject entity can be used to save any type of binary objects (byte arrays). Since a profile picture can be converted to a byte array, user profile pictures are saved here.
IBinaryObjectManager interface defines methods to save, get and delete binary objects. DbBinaryObjectManager implementes it to save binary object in database. For example, ProfileController uses IBinaryObjectManager to get current user's profile picture from database.
You can create a different implementation of IBinaryObjectManager interface to store files in another destination.
It's common to use the soft-delete pattern which is used to not delete an entity from database but only mark it as 'deleted'. So, if an entity is soft-deleted, it should not be accidently retrieved into the application. ABP's data filters make this automatically.
In ASP.NET Zero, most entities are soft-deleted. See ABP's data filter documentation for more information about this topic.
ASP.NET Zero uses Bundler & Minifier Visual Studio extension for bundling & minifying script and style files. It should be installed in your Visual Studio. bundleconfig.json file defines all bundling configuration.
ASP.NET Zero also uses Web Compiler Visual Studio extension for compiling LESS files to CSS files. This extension also should be installed in your Visual Studio. compilerconfig.json defines all compiling configuration.
See documentation of these extensions to learn to use them.
There are some useful base classes used in the application:
It's strongly recommended to inherit one of these classes upon your needs since they really make Logging, Localization, Authorization... easier.
ABP framework simplifies and automates CSRF protection as much as possible. ASP.NET Zero template comes with pre-configured and working out of the box. For more information please see ABP's XSRF-CSRF-Protection documentation
AppVersionHelper class is used to define current version of the application in single place. Version and release date automatically shown bottom left corner in the backend application pages. This helps us to see running application version always.
Any application can authenticate and use any functionality in the application as API. For instance, you can create a mobile application consumes the same API. In this section, we'll demonstrate usage of the API from Postman (a Google Chrome extension).
We suggest you to disable two factor authentication for the user which will be used for remote authentication. Otherwise, two factor authentication flow should be implemented by the client. We assume that you have disabled two factor authentication for the admin user of default tenant since we will use it in this sample.
Following headers should be configured for all requests (Abp.TenantId is Id of the default tenant. This is not required for single tenant applications or if you want to work with host users):
Then we can send username and password as a POST request to http://localhost:62114/api/TokenAuth/Authenticate
In the returning response, accessToken will be used to authorize for the API.
After authenticate and get the access token, we can use it to call any authorized actions. All services are available to be used remotely. For example, we can use the User service to get a list of users:
We sent a GET request to http://localhost:62114/api/services/app/User/GetUsers and added Authorization to the header as "Bearer <accessToken>". Returning JSON contains the list of users.
Swagger UI is integrated to ASP.NET Zero but disabled by default. Swagger UI configuration is located in Startup class in the .Web project. You can enable it by just uncommenting the related lines:
In Startup.ConfigureServices method, enable the following line:
services.AddSwaggerGen();
And in Startup.Configure method, enable the following lines:
app.UseSwagger();
app.UseSwaggerUi();
You can browse swagger ui with this URL: "/swagger/ui".
Thus, anyone (or any application) can explore, test and use the API easily.
IdentityServer4 is an OpenID Connect and OAuth 2.0 framework for ASP.NET Core. ASP.NET Zero is integrated to IdentityServer4. It's enabled by default.
You can enable/disable or configure it from appsettings.json file
"IdentityServer": {
"IsEnabled": "true",
"Clients": [
{
"ClientId": "client",
"AllowedGrantTypes": [ "password" ],
"ClientSecrets": [
{
"Value": "def2edf7-5d42-4edc-a84a-30136c340e13"
}
],
"AllowedScopes": [ "default-api" ]
},
{
"ClientId": "demo",
"ClientName": "MVC Client Demo",
"AllowedGrantTypes": [ "hybrid", "client_credentials" ],
"RequireConsent": "true",
"ClientSecrets": [
{
"Value": "def2edf7-5d42-4edc-a84a-30136c340e13"
}
],
"RedirectUris": [ "http://openidclientdemo.com:8001/signin-oidc" ],
"PostLogoutRedirectUris": [ "http://openidclientdemo.com:8001/signout-callback-oidc" ],
"AllowedScopes": [ "openid", "profile", "email", "phone", "default-api" ],
"AllowOfflineAccess": "true"
}
]
}
ASP.NET Zero solution has a sample console application (ConsoleApiClient) that can connects to the application, authenticates through IdentityServer4 and calls an API.
Once IdentityServer4 integration is enabled Web.Mvc application becomes an OpenId Connect server. That means another web application can use standard OpenId Connect protocol to authenticate users with your application and get permission to share their information (a.k.a. consent screen).
See IdentityServer4's own documentation to understand and configure IdentityServer4.
ASP.NET Zero startup project contains unit and integration tests. Tests are developed using following tools:
Tests cover Domain (core) and Application layers of the project. Open Test Explorer (Test\Windows\Test Explorer in VS main menu) to run unit tests:
These unit tests will be a guide to understand the code. Also, they can be a model while writing your own unit tests for your application's functionalities.
All unit test classes (actually they are integration tests since they work integrated to ABP, EntityFramework, AutoMapper and other libraries used up to application layer) are derived from AppTestBase. It initializes ABP system, mocks database using Effort, creates initial test data and logins to the application for each tests. It also provides some useful common methods for all tests.
Here, a sample unit test in the application:
public class UserAppService_Delete_Tests : UserAppServiceTestBase
{
[Fact]
public async Task Should_Delete_User()
{
//Arrange
CreateTestUsers();
var user = await GetUserByUserNameOrNullAsync("artdent");
user.ShouldNotBe(null);
//Act
await UserAppService.DeleteUser(new IdInput<long>(user.Id));
//Assert
user = await GetUserByUserNameOrNullAsync("artdent");
user.IsDeleted.ShouldBe(true);
}
}
It creates some users to test and then verifies there is a user named "artdent". Then it calls DeleteUser method of the user application service (which is being tested). Finally, checks if user is deleted. Here, User is a Soft Delete entity, so it's IsDeleted property must be true if it's deleted.
You can read this article to understand unit testing better.
Email Settings
If you don't configure email settings, some functions may not work (Like new tenant registration).
Publishing ASP.NET Zero is not different than any other solution. You can use Visual Studio as normally you do.
ASP.NET Zero is properly configured for development. But when you want to publish your application to your test/production environment, you may need to change some configuration in order to make it properly work. Each section in this document describes it's own configuration, but we will provide a summary here.
Every application in the solution has it's own appsettings.json that should be independently configured.
Web.Public Application
Migrator Application
Web.Host Application
If you want to publish your solution to IIS, then check Microsoft's documentation.
ASP.NET Zero solution has a build folder which contains a Powershell script to build & publish your solution to the output folder. It also contains Docker files to run your application inside Docker containers. These files are very simple, you can improve them based on your needs.
Many open source frameworks and libraries are used to build ASP.NET Zero project. Here, a list of all libraries.


[exercises]
function callback(freq1, bw1, gn1, mcs1, bytes1, freq2, bw2, gn2, mcs2, bytes2, dt, userData, init) { }
The above function will be called once per seconds when this is checked: Running
Tx & Rx Bandwidth
Tx & Rx Frequency
Tx Gain (dB)
mod/err-corr scheme
Interferer Bandwidth
Interferer Frequency
Interferer Gain (dB)


Before Change
self.db.cur.execute("INSERT INTO %s values %s" % (self.obj.name, values[:-1]))
// Re-initialize trace
self._trace = zeros(shape(self._trace), self._trace.dtype)
def truncate(self, index):
After Change
except TypeError:
pass
try:
// I changed str(x) to "%f"%x to solve a bug appearing due to
// locale settings. In french for instance, str prints a comma
// instead of a colon to indicate the decimal, which confuses
// the database into thinking that there are more values than there
// is. A better solution would be to use another delimiter than the
// comma. -DH
valstring = ", ".join(["%f"%x for x in self._obj.value])
except:
valstring = str(self._obj.value)
// Add value to database
self.db.cur.execute("INSERT INTO %s (trace, %s) values (%s, %s)" % (self.name, " ,".join(["v%s" % (x+1) for x in range(size)]), self.current_trace, valstring))
class Database(pickle.Database):


Faculty members in the department are actively engaged in research in the areas listed below. There are many opportunities for both undergraduate and graduate students to participate in these activities toward thesis or project work and independent study.
Explorations into the pedagogy of Computer Science focusing on new methods and paradigms for the teaching of the CS curriculum.
Computer Graphics and Visualization
This area provides the technical foundations for studies in Computer Graphics. Areas for advanced study include Advanced Graphics Programming, Image Synthesis, Computer Animation, Virtual Reality, and Data Visualization.
Studies foundational data management and knowledge discovery challenges prevalent in design, analysis and organization of data. This area can be applied in a variety of domains including data management in resource constrained environments, enterprise and multimedia databases, active and secure databases and knowledge discovery algorithms.
This area studies systems formed from multiple cooperating computers. This includes the analysis, design, and implementation of distributed systems, distributed middleware, and computer networking protocols, including security.
Intelligent Systems encompasses the study of algorithms and architectures that enable effective decision making in complex environments. Researchers in this area include faculty, undergraduate and graduate students working on projects in computer vision, robotics, virtual theatre, sensor networks, data mining, document recognition, and the theoretical foundations of decision-making (e.g. Markov chains and the properties of voting protocols).
The Languages and Tools area studies language design and implementation together with architecture and use of software development tools.
The Security area spans topics from networking to cryptography to secure databases. By choosing different domains in which to study security students can gain a broad understanding of both theoretical and applied knowledge.
The Theory area studies the fundamentals of computation. These fundamentals include complexity theory to determine the inherent limits of computation and communication and cryptography and the design and analysis of algorithms to obtain optimal solutions within those limits.


About Piston
Piston is a user friendly open source game engine written in Rust, started by Sven Nilsen.
--- title : Piston Game Engine categories : [piston] ---
Piston is a user friendly open source game engine written in Rust, started by Sven Nilsen.


digital HD video, color, sound. 6'13". Tierpark Berlin (DE). 2019 - 2020 A Smartwatch and a Manatee-tank exchange their knowledge of time.Or are these the last hallucinations of the drowning Smartwatch?


Mini activity indicator - is contained in the spinner
and spinner-bounce-middle
class. The default activity indicator uses the accent
color, contained in the
spinner-accent
class.
An alternative activity indicator using the primary
color contained in the
spinner-primary
class has also been supplied.


Replace "XX" with the country code you have added in the Site Settings > Site Domains panel (see the "Country" column).
If you have multiple domains with different "Country" values you will find multiple order-receipt-XX files, one for each country. This way, with one layout for every country defined you can vary the contents of the layout to accomodate a multilingual website.


We're sorry but something went wrong; it's not you - it's us.
Our servers are currently on sabbatical, but will be back serving you with great course reviews soon.
Please try again later; if the problem resists contact us at<EMAIL_ADDRESS>Our servers are currently on sabbatical, but will be back serving you with great course reviews soon.
Please try again later; if the problem resists contact us at mesch.hmc@gmail.com


If anything was difficult to find or use please let us know.
Reported by {{reporter}}
{{path}}
{{comments}}
Only administrators may view site feedback.


{% extends "base.html" %} {% block content %}
Are you sure you want to delete {{ place.name }} from Nuevo México? If you do wish to delete the item, click the delete button below. Otherwise, click cancel.


Welcome to the website that tells you all about me. My name is Nicole, I am a Washingtonian, and I love music.
I graduated from the University of Southern California in 2018 with a degree in GeoDesign. From there, I worked as an Architecture Associate for two years while dancing professionally in the NFL. Currently, I am studying to become a web developer.
During my free time, you can find me enjoying long walks, reading, or drinking coffee while watching the sunrise. I am also an avid Netflix binger; my most recent of which is "Riverdale".


Virtual Execution Environments for Scientific Computing
Schedule
Fri, Sep 3
08:30
Breakfast
09:00
Welcome
09:15
Clifford A. Jacobs (NSF):
The Scientific Software Innovation Institute Program at the National Science Foundation
10:00
William Cleveland:
Divide and Recombine for the Analysis of Large Complex Datasets
10:30
Philippe Canal:
Interactive Development of C++ apps for High Energy Physics
11:00
Break
11:30
Lee E. Edlefsen:
Data Analytics and Dynamic Languages
12:00
Tyler Alumbaugh:
Dynamic languages for HPC at LLNL
12:30
Luke Tierney & Duncan Temple Lang:
Statistical computing in a dynamic language
13:00
Lunch
14:00
Dave Thomas: A Collaborative Analytics Research Environment
14:30
Herman Venter:
We need a new, common Virtual Execution Environment
15:00
Peng Wu:
Compilers are from Mars, Dynamic Scripting Languages are from Venus
15:30
Jose Amaral:
Compilers and VMs for Scientific Programming Environments
16:00
Break
16:30
Sumit Basu: Talking to Compiled Code, Clusters, and the Cloud from a Dynamic Language
17:00
Chandra Krintz:
Multi-language Applications and Systems
17:30
David Padua:
Parallel Computing for Dynamic Languages
18:00
Michael Hicks, Jeff Foster, U Maryland:
Static Types for Dynamic Languages
18:30
John Field:
The Thorn Perspective
19:00
Dinner at the
Domaso Trattoria Moderna
(in the hotel)
Sat, Sep 4
08:30
Breakfast
9:00 - 15:30
Discussions
~11:00
Break
13:00 - 14:00
Lunch
~15:30
Break


(Your C++ Partner)
Questions and Solutions
Data Structures and Algorithms
Hands-on Documentation
Made by students for students


new Validator(model, dataSource, byte_weights)
Parameters:
| Name | Type | Description |
|---|---|---|
model |
string | model layers |
dataSource |
DataSource | Object to pull validation data from |
byte_weights |
boolean | is model using byte_weights or not |
- Source:
Methods
validateWeights(weightsnullable, callbacknullable)
Validate weights
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
weights |
ArrayBuffer |
<nullable> |
Weights to validate |
callback |
validtionCallback |
<nullable> |
- Source:


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/Empty.20or.20not.20empty.html ---
How can I prove something by case splitting depending on whether or not a type is inhabited? I know about the inhabited
and nonempty
classes, but it looks like I can't do anything when I assume not (nonempty a)
or not (inhabited a)
. So what I do is by_cases H : ∃ x : α, true,
. Is that right?
You can prove a -> false
from h : not (nonempty a)
, it's just assume x, h ⟨x⟩
. Not sure what else you'd need apart from this.
Strange, I thought I tried that. Thanks!


public interface KBase
extends java.io.Serializable
Dataset
which consists of rating matrix and other information such as user profile, item profile and contextual information.
knowledge base
or KBase
in short.
ModelBasedRecommender
class applies KBase
into performing recommendation task.
In other words, KBase
provides both necessary information and inference mechanism to model-based recommender.
Ability of inference is the unique feature of KBase
.
KBase
.
For example, if model-based recommender uses frequent purchase pattern to make recommendation, its KBase
contains such pattern.
KBase
is a significant aspect of Hudup framework. Followings are essential methods of {code KBase}:
setConfig(DataConfig)
is responsible for setting configurations for {code KBase}.
These configurations are used by other methods. The typical configuration is uniform resource identifier (URI) indicating where to store KBase
,
which is used by methods load()
and save()
.
load()
and save()
are used to read/write KBase
from/to storage system, respectively. Storage system can be files, database, etc.
The methods load()
and save()
indicate that KBase
can be loaded from and saved to storage system. They do not specify how to load and store KBase
.
In other words, they are rules with which the infrastructure must comply.
learn(Dataset, Alg)
is responsible for creating KBase
from Dataset
which is the first input parameter.
Because every model-based recommender owns distinguished KBase
, the second parameter is such algorithm.
The association between model-based recommender and KBase
is tight.
The method learn(Dataset, Alg)
tells us that KBase
can be learned by any approaches: machine learning, data mining, artificial intelligence, statistics, etc.
clear()
and isEmpty()
are responsible for cleaning out KBase
and checking whether KBase
is empty or not, respectively.
KBase
are ModelBasedRecommender.setup()
, ModelBasedRecommender.createKB()
, ModelBasedRecommender.estimate(...)
and ModelBasedRecommender.recommend(...)
.
Especially, it is mandatory that setup()
method of model-based recommender calls method KBase.learn(...)
or KBase.load()
.
Conversely, the association between memory-based recommender represented by MemoryBasedRecommender
class and dataset indicates that all memory-based algorithms use dataset for recommendation task.| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
DATASOURCE_URI
In the configuration of KBase, there is an entry for indicating the URI of data source of KBase.
|
static java.lang.String |
KBASE_CONFIG
Every KBase always has a configuration represented by
DataConfig class. |
static java.lang.String |
KBASE_NAME
In the configuration of KBase, there is an entry for indicating the name of KBase.
|
| Modifier and Type | Method and Description |
|---|---|
void |
clear()
Cleaning out
KBase . |
void |
close()
Close this KBase.
|
void |
export(DataConfig storeConfig)
Getting the configuration of KBase by copying (exporting) the internal configuration to the specified configuration.
|
DataConfig |
getConfig()
Every KBase always has a configuration represented by
DataConfig class. |
Datasource |
getDatasource()
Data source represented by
Datasource class is a special class used to point to a dataset. |
java.lang.String |
getName()
Every KBase has a name.
|
boolean |
isEmpty()
Checking whether
KBase is empty or not. |
void |
learn(Dataset dataset,
Alg alg)
This method is responsible for creating
KBase or learning from specified dataset. |
void |
load()
This method is used to read
KBase from storage system. |
void |
save()
This method is used to write
KBase to storage system. |
void |
setConfig(DataConfig config)
This method is responsible for setting configurations for {code KBase} by specified configuration.
|
void |
view(java.awt.Component comp)
KBase (knowledge base) can be viewed in visual manner.
|
static final java.lang.String KBASE_CONFIG
DataConfig
class.
This constant defines the default file (archive) name of such configuration.static final java.lang.String DATASOURCE_URI
static final java.lang.String KBASE_NAME
void load()
KBase
from storage system. Storage system can be files, database, etc.void learn(Dataset dataset, Alg alg)
KBase
or learning from specified dataset.
Because every model-based recommender owns distinguished KBase
, the second parameter is such algorithm.
The association between model-based recommender and KBase
is tight.
This method tells us that KBase
can be learned by any approaches: machine learning, data mining, artificial intelligence, statistics, etc.dataset
- specified dataset.alg
- the algorithm that owns this KBase.void save()
KBase
to storage system. Storage system can be files, database, etc.void export(DataConfig storeConfig)
storeConfig
- specified configuration where the internal configuration is copied.boolean isEmpty()
KBase
is empty or not. If a KBase which is empty, it needs to re-learned by calling the method learn(Dataset, Alg)
again.void clear()
KBase
. After this method is called, KBase becomes empty, which means that method isEmpty()
returns true
but KBase can be re-learned by calling the method learn(Dataset, Alg)
again.void close()
java.lang.String getName()
DataConfig getConfig()
DataConfig
class.
This method returns the internal configuration of KBase.void setConfig(DataConfig config)
KBase
,
which is used by methods load()
and save()
.config
- specified configuration.Datasource getDatasource()
Datasource
class is a special class used to point to a dataset. Of course it contains a URI of such dataset. Note that URI, abbreviation of Uniform Resource Identifier, is the string of characters used to identify a resource on Internet.
As usual and for convenience, data source also contains dataset. We can considered data source as a wrapper of dataset with additional information about dataset.
This method returns the datasource of the dataset that KBase is learned or loaded.void view(java.awt.Component comp)
comp
- the component works as parent of the graphic user interface (GUI) to see and exploit KBase.


| deleteAllVisibleCookies |
|
|
| setTimeout |
100000 |
|
| open |
/vivo/ |
|
| assertTitle |
VIVO |
|
| clickAndWait |
link=Log in |
|
| assertTitle |
Log in to VIVO |
|
| type |
loginName |
<EMAIL_ADDRESS>|
| type |
loginPassword |
Password |
| clickAndWait |
loginForm |
|
| clickAndWait |
link=Site Admin |
|
| assertTitle |
VIVO Site Administration |
|
| clickAndWait |
link=Index |
|
| clickAndWait |
link=Book |
|
| assertTitle |
Book |
|
| clickAndWait |
link=Nintendo: Good or Bad for Kids? |
|
| assertTitle |
Nintendo: Good or Bad for Kids? |
|
| clickAndWait |
css=a.add-relatedBy > img.add-individual |
|
| assertTitle |
Edit |
|
| click |
showAddFormButton |
|
| type |
lastName |
Smith |
| type |
firstName |
Sally |
| clickAndWait |
submit |
|
| assertTitle |
Edit |
|
| clickAndWait |
link=Index |
|
| clickAndWait |
link=Academic Article |
|
| assertTitle |
Academic Article |
|
| clickAndWait |
link=Why Games Are Important to Child Growth |
|
| assertTitle |
Why Games Are Important to Child Growth |
|
| clickAndWait |
css=a.add-relatedBy > img.add-individual |
|
| assertTitle |
Edit |
|
| click |
id=showAddFormButton |
|
| assertTitle |
Edit |
|
| type |
lastName |
Johnson |
| type |
firstName |
Jane |
| clickAndWait |
submit |
|
| assertTitle |
Edit |
|
| clickAndWait |
id=returnLink |
|
| assertTitle |
Why Games Are Important to Child Growth |
|
| clickAndWait |
css=a.add-relatedBy > img.add-individual |
|
| assertTitle |
Edit |
|
| click |
id=showAddFormButton |
|
| click |
showAddFormButton |
|
| type |
lastName |
Zink |
| type |
firstName |
Zoe |
| clickAndWait |
submit |
|
| assertTitle |
Edit |
|
| clickAndWait |
link=Index |
|
| clickAndWait |
link=Faculty Member |
|
| assertTitle |
Faculty Member |
|
| clickAndWait |
link=Furter, Frank |
|
| pause |
5000 |
|
| assertTitle |
Furter, Frank |
|
| verifyTextPresent |
Publications in VIVO |
|
| verifyTextPresent |
2 in the last 10 full |
|
| verifyElementPresent |
link=Co-author Network |
|
| verifyElementPresent |
link=Map of Science |
|
| verifyElementNotPresent |
link=Co-Investigator Network |
|
| clickAndWait |
link=Co-author Network |
|
| pause |
5000 |
|
| assertTitle |
Furter, Frank - Person Level Visualization |
|
| verifyTextPresent |
Furter, Frank |
|
| verifyElementPresent |
id=ego_label |
|
| verifyTextPresent |
Co-author Network |
|
| verifyElementPresent |
link=GraphML file |
|
| verifyTextPresent |
VIVO profile |
|
| verifyElementPresent |
id=profileUrl |
|
| verifyTextPresent |
4 Publications through today's date |
|
| verifyTextPresent |
3 Co-author(s) |
|
| verifyTextPresent |
2001 First publication |
|
| verifyTextPresent |
2009 Last publication |
|
| verifyTextPresent |
4 publications |
|
| verifyTextPresent |
from 2001 - 2014 |
|
| verifyElementPresent |
link=(.CSV File) |
|
| verifyTextPresent |
3 co-authors |
|
| verifyTextPresent |
from 2001 - 2014 |
|
| verifyElementPresent |
css=a[title="csv File"] |
|
| verifyTextPresent |
Tables |
|
| verifyTextPresent |
Publications per year |
|
| verifyElementPresent |
css=caption > a |
|
| verifyTextPresent |
Year |
|
| verifyTextPresent |
Publications |
|
| verifyTextPresent |
2001 |
|
| verifyTextPresent |
1 |
|
| verifyTextPresent |
2003 |
|
| verifyTextPresent |
1 |
|
| verifyTextPresent |
2005 |
|
| verifyTextPresent |
1 |
|
| verifyTextPresent |
2009 |
|
| verifyTextPresent |
1 |
|
| verifyTextPresent |
Co-authors |
|
| verifyElementPresent |
css=#coauthorships_table > caption > a |
|
| verifyTextPresent |
Author |
|
| verifyTextPresent |
Publications with |
|
| verifyTextPresent |
Furter, Frank |
|
| verifyTextPresent |
Smith, Sally |
|
| verifyTextPresent |
1 |
|
| verifyTextPresent |
Zink, Zoe |
|
| verifyTextPresent |
1 |
|
| verifyTextPresent |
Johnson, Jane |
|
| verifyTextPresent |
1 |
|
| clickAndWait |
link=Home |
|
| clickAndWait |
link=Log out |
|
| assertTitle |
VIVO |
|


Toxic Code Explorer
Loading data... If this message does not go away, you might have an old browser. Check
caniuse.com
Or you've found a bug!


Ordr.in - Facebook App
Ordr.in is a food ordering API that was part of the TechStars 2011 Summer Program. They needed a white-label Facebook application to give to their delivery partners throughout the US. I was brought in to brainstorm on the timeline of the product, then build out the vision, UI/UX, and finally the visual design. When we showed it to Facebook, they said it was, "One of the best uses of the platform for commerce we've ever seen."
Roles
- Product Designer
- UI Designer
- Visual Designer


City sets Guinness record in CPR training
28,523 students trained in 8 hours to perform the procedure
by Staff ReporterA Guinness World Record was set in the city on Saturday, with 28,523 students being trained in eight hours to perform hands-only cardiopulmonary resuscitation (CPR).
The attempt broke two previous records of 9,000 and 28,015 people being trained in eight hours and 24 hours respectively. The attempt also set a record in the country and entered the ‘Best of India’ record book.
Students of classes 9 to 12 from around 350 schools in the district participated in the training program, ‘Heart Beats’, held at the CIAL convention centre at Nedumbassery.
As many as 4,000 students were trained every hour in 400 teams of 10 students each. Guidance in performing CPR on mannequins was provided by 400 skilled trainers from medical colleges in the district under the overall supervision of a four-member expert team. Over 1,000 doctors and 3,000 volunteers put the event together. Justice C.K. Abdul Rahim of the Kerala High Court and Anwar Sadath, MLA, inaugurated the event.
The session was conducted by the Kochi chapter of the Indian Medical Association, district administration, Angels International Foundation, and the District Legal Services Authority to create awareness among children on performing CPR.


Password Generator
Pick a preset or create one,hit on generate and boom ! Get a password generated
as per your needs within seconds.
{% for password in result %}
{% endfor %}


Creating Reports
You can easily create your own reports.
The add-on uses the Thymeleaf
templating engine, so see their documentation for details of the
templating syntax.
The built in reports are copied into the 'reports' directory
underneath the ZAP default
directory. Each report is in its own subdirectory. The easiest way to
create a new report is to copy and existing one into a new directory
at the same level.
Each report subdirectory must include:
template.yaml
A file containing:
name: # The display name for the report
format: # The format, eg one of HTML, XML, MD, JSON, PDF - this is used internally but not currently exposed in ZAP
mode: # The Thymeleaf template mode, one of HTML, RAW, TEXT, HTML
extension: # The extension to use when generating the report
sections: # An optional list of sections - parts of the report which may be included or excluded
themes: # An optional list of themes - different colours and styles which apply to the same content
report.ext
The Thymeleaf report template.
This should have the same extension that is specified in the
template.yaml file (e.g. 'report.md') except if it is a PDF report, in
which case "html" should be used (see below).
Messages.properties
The report subdirectory may also include a "Messages.properties"
language file for template specific strings localised to English as
well as "Message_
locale.property" files for localising the strings into other
languages.
The template specific strings should all start with '
report.template.
'
If the report included sections then they must be defined in
this file - the keys will automatically be prefixed by
report.template.section.
. Section names in the template.yaml file must just be alphanumeric
strings and not start with an integer.
If a report includes themes then they must be defined in this
file - the keys will automatically be prefixed by
report.template.theme.
. Theme names in the template.yaml file must just be alphanumeric
strings and not start with an integer.
The language files may also override the default translations
built into the reports add-on.
Resources
The report subdirectory may also include a "resources" directory. If
this is present then when a report is generated a subdirectory will be
created based on the report name and all of the files in the resources
directory will be copied into it.
You should reference the files in the "resources"
subdirectory in the following way so that they can be accessed both via
the template and by the report when the subdirectory is created:
<script th:src="${resources + '/script.js'}" src="resources/script.js"></script>
<link rel="stylesheet" th:href="${resources + '/style.css'}" href="resources/style.css">
<img th:src="${resources + '/image.png'}" src="resources/image.png">
The 'traditional-html-plus' template includes examples of JavaScript,
CSS and image resources.
Data Available
The following data items are available to all reports. These can be
accessed via the Thymeleaf Standard Dialect, e.g.
${reportTitle}
alertTree
A tree containing all of the alerts that should be included in the
report. This is a copy of the standard ZAP alert tree shown in the
Desktop 'Alerts' tab but pruned to remove any alerts that do not match
the criteria selected.
Every node in the tree is an AlertNode.
The top level node does not include any useful data.
There is one second level node for each type of alert found. These
nodes have a 'userObject' of type Alert
which gives you access to all of the alert data and the associated
request and response.
The 3rd and final level contains the alert instances - these are
all the same type as their parent node and give access to the alert
details in the same way.
reportTitle
The title of the report set by the user.
description
The description of the report set by the user.
helper
An instance of the
ReportHelper
class that provides useful methods, including:
getConfidenceString(int confidence)
Returns an
internationalised string for the associated confidence code
getRiskString(int risk)
Returns an
internationalised string for the associated risk code
getHttpStatusCode(int code)
Returns the meaning
of the specified HTTP status code
getHostForSite(String site)
Returns the hostname
for a given site URL
getPortForSite(String site)
Returns the port for
a given site URL
isSslSite(String site)
Returns true if the given
site URL is using SSL
getStatisticsString(String stat)
Returns the
meaning of the specific statistics key - currently only supported for
authentication stats
getSiteStats(String site, String prefix)
Returns
a Map of the statistics for the given site starting with the
(optional) prefix
hasSiteStats(String site, String prefix)
Returns
true if the given site has any statistics starting with the
(optional) prefix
alertCounts
A Map of risk levels to the number of unique alerts. This can be used
by reports, for example, to generate a summary table.
alertCountsByRule
A Map of scan rule IDs to the number of instances.
reportData
An instance of the
ReportData
class that defines the data to be included in the report. This can be
used, for example, to tell if there were no level alerts of a specific
level or if they were deliberately excluded.
Automation jobs can make additional data available to the
reports, in many cases even if the automation framework was not used.
See the help pages for the relevant jobs for more details.
reportData : paramsData
An instance of the
ParamsJobResultData
class that provides methods for querying the parameters used by sites.
This is included in the Automation add-on as a "data job" that does not
provide any additional functionality.
stats
A Map of the global statistics. The site based statistics are available
via the helper.
Testing Reports
ZAP does not cache the report templates, so it rereads them every time
you generate a report. This makes it much easier to test them. Just
make sure that the 'Template Directory' parameter is set to the top
level directory you are using for your reports, then when you create a
new report it will use the latest version of the template that you have
saved. You will not need to restart ZAP in order to pick up any changes
to existing reports that you have made.
PDF Reports
PDF reports are generated using the
Flying
Saucer library which converts HTML documents into PDF format. In order
to create a PDF report you need to design it in HTML, call the template
"report.html" but specify the format as "PDF".
Note that Flying Saucer requires that the HTML is well-formed
XML / XHTML. It will fail with an error if the template is not
well-formed so check the ZAP log file for details.


Flash Math
Settings
Close
Dark Theme:
Flash Math
Hi
Best Score
0
Best Streak
0
Addition
Subtraction
Multiplication
Mixed
Have fun doing maths...
Launch demo modal
Enter a Nickname
Type a nickname below:


James Calleja
Computer Science Student
Currently
I am attending a 12 week bootcamp with SoftStack Factory in designing hybrid mobile and web apps.
As of now, I am currently applying the MEAN stack development skills I learned through Soft Stack Factory
and in process of incorporating a backend to the Ride Sharing project.
Education
2005-2010
University of California, Riverside B.A. in English
Technical skills
- HTML and CSS
- Javascript
- MongoDB
- Express
- AngularJS
- Node
Projects
Rideshare! by SSF
I am working with SSF in developing a car pooling application. We expect to have this app fully functioning in 6 weeks. I am given on the job training, walking through the development process step by step. As a team, we formukated mockups to propose to investors and recieved feedback. I am assigned tasks in creating html templates with css styling, using AngularJS to make the app interactive, and using services to communicate with the backend (sending/retrieving information). As I work on this project, I am reinforcing the lessons I have learned through Soft Stack Factory.
D&D Character App
The D&D Character APP allows users to create their own character and roll dice. The key goals of this app is to aid the user by providing a simple and easy to use interface to facilitate a smoother gameplay experience. The user will be able to log into the app and obtain information in communication with MongoDB/Strongloop Loopback. The dice roller allows the user to use the type of die and modify the results as deemed necessary. The dice roller will be incorporated with the gameplay experience, modifying data by applying the roll results. It is currently in development.
Short Story
This pet project is currently in the planning stages. Short Story will be a website where authors can upload their short stories and users can read. This will be a creative space for experimentation and endless amount of entertainment for people who love to read.
Achievements
*Can find solutions to complex problems and improve upon them.
*Multidisciplinary and capable of working through tasks with successful results.
*Helped prevent damage to citrus produce by detecting the presence of HLB in local communities.
*Contributed to creating the county standard for trap reading and quality control protocols.
Experience
2011-2016
Citrus Research Board / Cooperative Agricultural Support Services Authority
Laboratory Aide
Responsibilities include:
* Detecting the presence of Asian Citrus Psylid and report findings to a supervisor.
* Sterilization and disposal of laboratory equipment and experiment samples on a demand basis.
* Provide assistance with laboratory experiments (PCR/DNA Extraction) through insect loading and plant sample preparation.
Hobbies
- Hiking
- Riding Bikes
- Cooking
- Tabletop Gaming
- Classic Gaming


HTMLVideoElement Test For The Global'src' Attribute
| Test Result |
Test Assertion |
| Manual Verification |
Test passes if a video loads but is not playing, since the default state is paused. |
http://dev.w3.org/html5/spec/video.html#video
Content attributes:
Global attributes
src
poster
preload
autoplay
loop
controls
width
height
DOM interface:
interface HTMLVideoElement : HTMLMediaElement {
attribute DOMString width;
attribute DOMString height;
readonly attribute unsigned long videoWidth;
readonly attribute unsigned long videoHeight;
attribute DOMString poster;
};
If you see this then you do not implement the HTMLVideoElement
Below is an image of how the above video element should render (all time cloks at zero).


|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object javax.swing.plaf.ComponentUI javax.swing.plaf.TextUI javax.swing.plaf.basic.BasicTextUI
public abstract class BasicTextUI
Basis of a text components look-and-feel. This provides the
basic editor view and controller services that may be useful
when creating a look-and-feel for an extension of
JTextComponent
.
Most state is held in the associated JTextComponent
as bound properties, and the UI installs default values for the
various properties. This default will install something for
all of the properties. Typically, a LAF implementation will
do more however. At a minimum, a LAF would generally install
key bindings.
This class also provides some concurrency support if the
Document
associated with the JTextComponent is a subclass of
AbstractDocument
. Access to the View (or View hierarchy) is
serialized between any thread mutating the model and the Swing
event thread (which is expected to render, do model/view coordinate
translation, etc). Any access to the root view should first
acquire a read-lock on the AbstractDocument and release that lock
in a finally block.
An important method to define is the getPropertyPrefix()
method
which is used as the basis of the keys used to fetch defaults
from the UIManager. The string should reflect the type of
TextUI (eg. TextField, TextArea, etc) without the particular
LAF part of the name (eg Metal, Motif, etc).
To build a view of the model, one of the following strategies can be employed.
create(javax.swing.text.Element)
method.
#createViewFactory
method should be reimplemented to
return some factory.
Warning:
Serialized objects of this class will not be compatible with
future Swing releases. The current serialization support is
appropriate for short term storage or RMI between applications running
the same version of Swing. As of 1.4, support for long term storage
of all JavaBeansTM
has been added to the java.beans
package.
Please see XMLEncoder
.
| Nested Class Summary | |
|---|---|
static class |
BasicTextUI.BasicCaret
|
static class |
BasicTextUI.BasicHighlighter
|
| Constructor Summary | |
|---|---|
BasicTextUI()
Creates a new UI. |
| Method Summary | |
|---|---|
View |
create(Element elem)
Creates a view for an element. |
View |
create(Element elem,
int p0,
int p1)
Creates a view for an element. |
protected Caret |
createCaret()
Creates the object to use for a caret. |
protected Highlighter |
createHighlighter()
Creates the object to use for adding highlights. |
protected Keymap |
createKeymap()
Creates the keymap to use for the text component, and installs any necessary bindings into it. |
void |
damageRange(JTextComponent tc,
int p0,
int p1)
Causes the portion of the view responsible for the given part of the model to be repainted. |
void |
damageRange(JTextComponent t,
int p0,
int p1,
Position.Bias p0Bias,
Position.Bias p1Bias)
Causes the portion of the view responsible for the given part of the model to be repainted. |
protected JTextComponent |
getComponent()
Fetches the text component associated with this UI implementation. |
EditorKit |
getEditorKit(JTextComponent tc)
Fetches the EditorKit for the UI. |
protected String |
getKeymapName()
Fetches the name of the keymap that will be installed/used by default for this UI. |
Dimension |
getMaximumSize(JComponent c)
Gets the maximum size for the editor component. |
Dimension |
getMinimumSize(JComponent c)
Gets the minimum size for the editor component. |
int |
getNextVisualPositionFrom(JTextComponent t,
int pos,
Position.Bias b,
int direction,
Position.Bias[] biasRet)
Provides a way to determine the next visually represented model location that one might place a caret. |
Dimension |
getPreferredSize(JComponent c)
Gets the preferred size for the editor component. |
protected abstract String |
getPropertyPrefix()
Gets the name used as a key to look up properties through the UIManager. |
View |
getRootView(JTextComponent tc)
Fetches a View with the allocation of the associated text component (i.e. |
String |
getToolTipText(JTextComponent t,
Point pt)
Returns the string to be used as the tooltip at the passed in location. |
protected Rectangle |
getVisibleEditorRect()
Gets the allocation to give the root View. |
protected void |
installDefaults()
Initializes component properties, e.g. |
protected void |
installKeyboardActions()
|
protected void |
installListeners()
Installs listeners for the UI. |
void |
installUI(JComponent c)
Installs the UI for a component. |
protected void |
modelChanged()
Flags model changes. |
Rectangle |
modelToView(JTextComponent tc,
int pos)
Converts the given location in the model to a place in the view coordinate system. |
Rectangle |
modelToView(JTextComponent tc,
int pos,
Position.Bias bias)
Converts the given location in the model to a place in the view coordinate system. |
void |
paint(Graphics g,
JComponent c)
Paints the interface. |
protected void |
paintBackground(Graphics g)
Paints a background for the view. |
protected void |
paintSafely(Graphics g)
Paints the interface safely with a guarantee that the model won't change from the view of this thread. |
protected void |
propertyChange(PropertyChangeEvent evt)
This method gets called when a bound property is changed on the associated JTextComponent. |
protected void |
setView(View v)
Sets the current root of the view hierarchy and calls invalidate(). |
protected void |
uninstallDefaults()
Sets the component properties that haven't been explicitly overridden to null. |
protected void |
uninstallKeyboardActions()
|
protected void |
uninstallListeners()
Uninstalls listeners for the UI. |
void |
uninstallUI(JComponent c)
Deinstalls the UI for a component. |
void |
update(Graphics g,
JComponent c)
Superclass paints background in an uncontrollable way (i.e. |
int |
viewToModel(JTextComponent tc,
Point pt)
Converts the given place in the view coordinate system to the nearest representative location in the model. |
int |
viewToModel(JTextComponent tc,
Point pt,
Position.Bias[] biasReturn)
Converts the given place in the view coordinate system to the nearest representative location in the model. |
| Methods inherited from class javax.swing.plaf.ComponentUI |
|---|
contains, createUI, getAccessibleChild, getAccessibleChildrenCount |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public BasicTextUI()
| Method Detail |
|---|
protected Caret createCaret()
protected Highlighter createHighlighter()
protected String getKeymapName()
protected Keymap createKeymap()
The set of bindings used to create the keymap is fetched
from the UIManager using a key formed by combining the
getPropertyPrefix()
method
and the string .keyBindings
. The type is expected
to be JTextComponent.KeyBinding[]
.
getKeymapName()
,
JTextComponent
protected void propertyChange(PropertyChangeEvent evt)
evt
- the property change eventprotected abstract String getPropertyPrefix()
protected void installDefaults()
uninstallDefaults()
,
installUI(javax.swing.JComponent)
protected void uninstallDefaults()
installDefaults()
,
uninstallUI(javax.swing.JComponent)
protected void installListeners()
protected void uninstallListeners()
protected void installKeyboardActions()
protected void uninstallKeyboardActions()
protected void paintBackground(Graphics g)
g
- the graphics contextprotected final JTextComponent getComponent()
protected void modelChanged()
protected final void setView(View v)
v
- the root viewprotected void paintSafely(Graphics g)
g
- the graphics contextpublic void installUI(JComponent c)
installUI
in class ComponentUI
c
- the editor componentComponentUI.installUI(javax.swing.JComponent)
public void uninstallUI(JComponent c)
uninstallUI
in class ComponentUI
c
- the editor componentComponentUI.uninstallUI(javax.swing.JComponent)
public void update(Graphics g, JComponent c)
NOTE: Superclass is also not thread-safe in it's rendering of the background, although that's not an issue with the default rendering.
update
in class ComponentUI
g
- the Graphics
context in which to paintc
- the component being painted;
this argument is often ignored,
but might be used if the UI object is stateless
and shared by multiple componentsComponentUI.paint(java.awt.Graphics, javax.swing.JComponent)
,
JComponent.paintComponent(java.awt.Graphics)
public final void paint(Graphics g, JComponent c)
paint
in class ComponentUI
g
- the graphics contextc
- the editor componentComponentUI.update(java.awt.Graphics, javax.swing.JComponent)
public Dimension getPreferredSize(JComponent c)
getPreferredSize
in class ComponentUI
c
- the editor component
JComponent.getPreferredSize()
,
LayoutManager.preferredLayoutSize(java.awt.Container)
public Dimension getMinimumSize(JComponent c)
getMinimumSize
in class ComponentUI
c
- the editor component
JComponent.getMinimumSize()
,
LayoutManager.minimumLayoutSize(java.awt.Container)
,
ComponentUI.getPreferredSize(javax.swing.JComponent)
public Dimension getMaximumSize(JComponent c)
getMaximumSize
in class ComponentUI
c
- the editor component
JComponent.getMaximumSize()
,
LayoutManager2.maximumLayoutSize(java.awt.Container)
protected Rectangle getVisibleEditorRect()
public Rectangle modelToView(JTextComponent tc, int pos) throws BadLocationException
modelToView
in class TextUI
tc
- the text component for which this UI is installedpos
- the local location in the model to translate >= 0
BadLocationException
- if the given position does not
represent a valid location in the associated documentTextUI.modelToView(javax.swing.text.JTextComponent, int)
public Rectangle modelToView(JTextComponent tc, int pos, Position.Bias bias) throws BadLocationException
modelToView
in class TextUI
tc
- the text component for which this UI is installedpos
- the local location in the model to translate >= 0
BadLocationException
- if the given position does not
represent a valid location in the associated documentTextUI.modelToView(javax.swing.text.JTextComponent, int)
public int viewToModel(JTextComponent tc, Point pt)
viewToModel
in class TextUI
tc
- the text component for which this UI is installedpt
- the location in the view to translate. This
should be in the same coordinate system as the mouse events.
TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)
public int viewToModel(JTextComponent tc, Point pt, Position.Bias[] biasReturn)
viewToModel
in class TextUI
tc
- the text component for which this UI is installedpt
- the location in the view to translate. This
should be in the same coordinate system as the mouse events.biasReturn
- filled in by this method to indicate whether
the point given is closer to the previous or the next
character in the model
TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)
public int getNextVisualPositionFrom(JTextComponent t, int pos, Position.Bias b, int direction, Position.Bias[] biasRet) throws BadLocationException
getNextVisualPositionFrom
in class TextUI
pos
- the position to convert >= 0a
- the allocated region to render intodirection
- the direction from the current position that can
be thought of as the arrow keys typically found on a keyboard.
This may be SwingConstants.WEST, SwingConstants.EAST,
SwingConstants.NORTH, or SwingConstants.SOUTH.
BadLocationException
IllegalArgumentException
- for an invalid directionpublic void damageRange(JTextComponent tc, int p0, int p1)
damageRange
in class TextUI
tc
- the text component for which this UI is installedp0
- the beginning of the range >= 0p1
- the end of the range >= p0TextUI.damageRange(javax.swing.text.JTextComponent, int, int)
public void damageRange(JTextComponent t, int p0, int p1, Position.Bias p0Bias, Position.Bias p1Bias)
damageRange
in class TextUI
p0
- the beginning of the range >= 0p1
- the end of the range >= p0public EditorKit getEditorKit(JTextComponent tc)
getEditorKit
in class TextUI
tc
- the text component for which this UI is installed
TextUI.getEditorKit(javax.swing.text.JTextComponent)
public View getRootView(JTextComponent tc)
NOTE:The View hierarchy can be traversed from the root view, and other things can be done as well. Things done in this way cannot be protected like simple method calls through the TextUI. Therefore, proper operation in the presence of concurrency must be arranged by any logic that calls this method!
getRootView
in class TextUI
tc
- the text component for which this UI is installed
TextUI.getRootView(javax.swing.text.JTextComponent)
public String getToolTipText(JTextComponent t, Point pt)
getToolTipText
in class TextUI
JTextComponent.getToolTipText(java.awt.event.MouseEvent)
,
View.getToolTipText(float, float, java.awt.Shape)
public View create(Element elem)
create
in interface ViewFactory
elem
- the element
View
public View create(Element elem, int p0, int p1)
elem
- the elementp0
- the starting offset >= 0p1
- the ending offset >= p0
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright © 2004, 2010 Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.


NEWS
Gardaí arrest four men following Tipperary pursuit
by Dylan WhiteGardaí have arrested four men and seized approximately €1,100 of suspected cannabis herb following a managed pursuit in Clonmel, County Tipperary.
Shortly after midnight on November 24, gardaí from the Clonmel district were carrying out an Operation Surround checkpoint on Davis Road when they attempted to stop a car. The car drove off in the direction of Clonmel and was pursued by gardaí, who activated blue lights and sirens.
The car was pursued for a short time until it drove into a cul de sac in the Rathkeevan area.
Gardaí then arrested the four men, who were in their late teens and early 20s, and following a search of the car seized approximately €1,100 of suspected cannabis herb, which will now be sent for analysis.
All four men were brought to Clonmel Garda Station and were later released.
A file will be prepared for the Director of Public Prosecutions.


Cluster analyses of the sorting task for World View conditions (Ward’s agglomerative algorithm based on co-occurrence matrices). Note that the upper left dendrogram is from the Audience control condition, repeated from Figure 2 to facilitate comparison.


Order No:
65874589
Shipped date:
10 Jul 2020
Status:
Awating Delivery
Order Amount:
$259.00
Order Item 3
-
Fresh Ukkio Pineapple
$80.00Weight: 2kg
Farm: Grocery Food Farm -
Fresh Ukkio Pineapple
$80.00Weight: 2kg
Farm: Grocery Food Farm -
Fresh Ukkio Pineapple
$80.00Weight: 2kg
Farm: Grocery Food Farm
Total Order
- Subtotal $140.00
- Tax $02.00
- Shipping $15.10
- Total $177.00
Shipping & Billing Details
Billing Address:
Montreal Market,
#144 Raccoon Run,
Mingsio, 548,
United States,
58475893
Shipping Address:
Montreal Market,
#144 Raccoon Run,
Mingsio, 548,
United States,
58475893
Shipping Method:
Standart Shipping
(5 - 7 days)
Payment Method:
Debit Mastercard


{% if current_user.is_authenticated %} Manage committee meeting alerts {% else %} Receive committee meeting alerts {% endif %} Committee Meeting Schedule Plenary Schedule Connect with your representatives and find out more about them.


★ To Do App
List1
Delete this list
Card title
DeleteCard
Add Comment
{{comm}}
Card title
DeleteCard
Add Comment
{{comm}}
Card title
DeleteCard
Add Comment
{{comm}}
Card title
DeleteCard
Add Comment
{{commn}}
Add new card..
List2
Delete this list
Card title
DeleteCard
Add Comment
{{comm}}
Card title
DeleteCard
Add Comment
{{comm}}
Card title
DeleteCard
Add Comment
{{comm}}
Add new card..
List3
Delete this list
Card title
DeleteCard
Add Comment
{{comm}}
Card title
DeleteCard
Add Comment
{{comm}}
Add new card..
Add new list..
List4
Delete this list
Card title
DeleteCard
Add Comment
{{comm}}
Card title
DeleteCard
Add Comment
{{comm}}
Add new card..


The R package contains different MCMC schemes to estimate the regression coefficients of a binomial (or binary) logit model within a Bayesian framework: a data-augmented independence MH-sampler, an auxiliary mixture sampler and a hybrid auxiliary mixture (HAM) sampler. All sampling procedures are based on algorithms using data augmentation, where the regression coefficients are estimated by rewriting the logit model as a latent variable model called difference random utility model (dRUM).
| Version: | 1.2 |
| Published: | 2014-03-12 |
| Author: | Agnes Fussl |
| Maintainer: | Agnes Fussl <avf at gmx.at> |
| License: | GPL-3 |
| NeedsCompilation: | no |
| CRAN checks: | binomlogit results |
| Reference manual: | binomlogit.pdf |
| Package source: | binomlogit_1.2.tar.gz |
| Windows binaries: | r-devel: binomlogit_1.2.zip, r-release: binomlogit_1.2.zip, r-oldrel: binomlogit_1.2.zip |
| OS X binaries: | r-release: binomlogit_1.2.tgz, r-oldrel: binomlogit_1.2.tgz |
| Old sources: | binomlogit archive |
Please use the canonical form https://CRAN.R-project.org/package=binomlogit to link to this page.