{% extends "base.html" %} {% load static from staticfiles %} {% block headers %} {% endblock %} {% block title %} {% if not user.is_authenticated %}
Welcome! This is a virtual gathering place for members of {{ HOUSE }} as well as a community outreach and general information site.
{% if not user.is_authenticated %}If you are a new member, you can request an account by clicking here or on the request profile link in the menu above. Once your request is submitted, an admin will contact you.
{% else %}This help page is quite lengthy and tries to be as exhaustive as possible about how to use this website. If you find that this page is lacking in information or clarity, please feel free to contact Karandeep. Or better yet, you can open up the source code and update this page yourself.
For quick links, please refer to the table of contents.
{% endif %}This website is an instance of a project called Farnsworth, planned and executed by Karandeep Singh Nagra and Nader Morshed. It was originally developed to encourage the use of new technologies in the Berkeley Student Cooperative and provide a better online presence for houses in the cooperative. The site is designed abstractly and easily set up for any other house with a few settings changes. Several example implementations of Farnsworth exist for you to mimic.
Farnsworth is free and open source software. The source code is freely available in this GitHub repository. You are encouraged to modify, expand, and share this software with others. The several branches of this repository represent different implementations of Farnsworth for different houses. If you would like to contribute to this project, see the roadmap for a list of features you can implement. Pull requests to the repository are welcomed.
You can add a user from the add user page. Usernames should be unique and a single word composed of alphanumeric characters or the underscore character. It is recommended that e-mails and phone numbers be kept hidden from other members when creating a user. A user can modify her/his own profile to reveal e-mail and phone number to other members.
The "is active" status is an indicator of whether the user can login. You can add inactive users, but you will probably be adding active users. Starting alumni as inactive users is advised, as this will result in a tighter security spec for your implementation of Farnsworth. Doing so is permissible as alumni are not very likely to log in. And if an alumnus does want to, s/he can e-mail you (via the e-mail listed at the bottom of this page to get her/his account activated. When an inactive user attempts to login, s/he is given a message saying her/his account is inactive.
The "is staff" status indicates whether a user can access the Django admin pages. Use of the Django admin pages is discouraged. If something really needs to be done at that level, it would be better if you wrote the page up yourself in the regular interface and shared it with everyone else using Farnsworth. Writing pages is very easy. Read the documentation at Karandeep's GitHub repo.
However, even if a user has staff status, s/he will not have any privileges without a superuser giving her/him those rights. This can be done from the Django admin pages. Read the Django docs to learn more.
The "is superuser" status toggles admin rights on the site. A user with superuser privileges will able to access admin pages written into this interface and have full privileges in the Django admin.
It can be useful to give users superadmin status and not give them staff status as all admin privileges in the custom admin are granted with superadmin status, but access to the Django admin is restricted. Effectively, superuser-not-staff status is a weak obfuscation-based security against users really messing things up by misusing the Django admin.
Groups are fully supported by Django but are not yet supported by the custom Farnsworth interface. They are provided in this page in case someone wants to do further development of Django which involves groups. You can CTRL-click and select multiple groups from this list.
You must provide a password. An option is not yet available to create users without passwords. This would be a neat feature if you care to implement it yourself. If you want to create a user that will probably not use the site for a while (alumni, for example), it is recommended that you toggle off the "is active" option for the user. You can toggle it back on later by modifying the user when the user wants access to the site.
A list of all users can be seen at the manage users page. This page will give you a quick run-down of users, their e-mail addresses, phone numbers, and active, staff and superuser statuses. The tables are sortable. You can click on any heading to sort the table by that column. You can also hold Shift and click multiple column headings to sort by all those columns successively. By default, the tables are sorted by last name and then first name. Clicking on an e-mail address will prompt you to send an e-mail to that address. You can click on any user's name from the manage users page to edit that user's profile.
From the modify user page, you can change a user's personal details, member status, etc., as well as change her/his password. To prevent permanent lockout, if you are the only superadmin, you will be prevented from changing your own superadmin status. Everything else will be saved when you try to change your own profile as the only admin.
It is highly recommended that users not be deleted. You should instead deactivate them. But if you really need to delete a user, you can do so from the modify user page for that user. Doing so will delete all threads and requests the user posted, all messages and responses the user posted, as well as all events and all announcements the user posted. This can mess up all manner of things. So it's recommended that you not do it.
You will be required to provide your password to delete a user.
To prevent someone from maliciously changing your password if you leave yourself logged in somewhere, you are prevented from changing your own password from the modify user page. You can instead change your password from the my profile page.
You cannot modify usernames from the custom admin pages, but you can do so from the Django admin pages. It doesn't seem productive to allow such a change as the user who owns the account will locked out of his/her account and unable even to know what happened.
You are also discouraged from modifying the anonymous user (username "{{ ANONYMOUS_USERNAME }}"). When you open this user's edit page, a warning will be displayed saying the same. More on the anonymous user is covered under the Anonymous User sub-section of the Admin: Miscellaneous section.
On every user profile page (a general user page accessed from various parts of the site, most notably the member directory), there will appear a yellow edit button in the top right corner if an admin is accessing the page. This button does not appear for non-superadmin users; so you don't need to worry about that. Clicking this button will redirect you to the modify user page (an admin page accessed usually through the manage users page).
The modify user page is almost identical to the add user page, with a few exceptions. First, the username, first name, and last name fields are missing. And second, there is a separate form at the bottom to change the password. You can update the profile or change the password for the user, but not both in one HTTP request. AJAX is not currently supported. This is another cool feature, if you care to implement it.
Sometimes - especially at the beginning of the semester - you will get requests for new profiles. These can be managed from the manage profile requests page. Profile requests contain most of the information affiliated with a prospective user profile. You can sort this table as well, in the same way described in the Modifying Users sub-section above. You can click on the e-mail link to write an e-mail to the user or click the user's proposed username to modify the request.
The form in the modify profile request page is almost identical to the one in the add user page (detailed above), with a few exceptions. First, the information the user provided in her/his profile request is used to fill some of the fields of the form. Second, there is a button next to the add user button that allows you to delete the request permanently. And third, there is no password field since the user provided her/his own password when submitting the request.
Please note that if a request is deleted, there is no way to retrieve it. The user will have to fill another request, or you can add the user manually (check the adding users section above for more info).
Farnsworth comes prepackaged with an anonymous user. This user (and profile) is autogenerated the first time you start an anonymous session. The default username is {{ ANONYMOUS_USERNAME }}. This can be changed from the settings file (/path/to/head/farnsworth/settings.py) before starting a first anonymous session. Don't change this setting if the anonymous user already exists. The autogenerated user is named Anonymous Coward. This is a bit trickier to change; contact Karandeep if you really want to change this.
The anonymous user is intended for logins on common space machines. Since users will want access to the site fairly quickly on common space machines and won't want to login and logout constantly to check minor things, the anonymous user can be used to fill the need. The anonymous user is prevented from up/down voting requests or RSVP-ing to events. But the account is permitted to start threads, post messages, make requests, post responses, and start events.
An anonymous session is started from the utilities page. Login on a common space machine and go to this page and start an anonymous session. When the anonymous user is logged in, the profile links are disabled and replaced by a login link. Users can temporarily login to assume identity. When a logged in user logs out, the anonymous user will be logged in and the anonymous session will resume. Anonymous sessions are easy to detect as the login/profile link (the second link in the menu) is red during an anonymous session.
Logout is disabled for the anonymous user. To logout the anonymous user and end the anonymous session, login as yourself in the anonymous session, go to the utilities page, and end the anonymous session. This will logout the anonymous user and end the anonymous session. Your session will resume. So make sure to logout yourself if you intend to leave the computer.
The anonymous user is also forbidden from modifying the anonymous user profile. An error message will be displayed if a user tries to modify the anonymous user profile from the my profile page. The member directory excludes the anonymous user and the profile for the anonymous user
To save processor power and increase efficiency, Farnsworth counts thread messages and request responses very infrequently. These fields are incremented whenever a new message or response is posted. However, if messages or responses are deleted (only through the Django admin interface), or users or user profiles are deleted (also only through the Django admin interface), these fields can fall out of sync. The fact that this can happen is one of the reasons you are discouraged from using the Django admin interface. To further the development of Farnsworth, you are encouraged to write your own interface for doing things not currently supported.
To correct for the possibility of the database entries for response and messages counts, a utitility is provided to recount these fields. The recount utility is accessed from the utilities page. When you recount responses and messages, Farnsworth iterates over the set of requests, checks if the number of responses in the database is different from the number present in the model instance of each request, and if it is different, Farnsworth changes the model field of the request to reflect the newly counted number of responses. Thread messages are counted in an identical fashion.
Since UPDATEs are heavier, resource-wise, than SELECTs, in database systems, this setup is more efficient than recounting responses or messages for and changing every instance of request and thread, since it reduces the number of UPDATEs while maintaining the number of SELECTs.
Even still, the recount process may still take a while. Avoid having to use this utility by not messing with the Django admin interface often.
If you absolutely must use the Django admin interface, here are a few quick tips on how to use it.
Django arranges its admin interface by application. There are several applications that make up the whole of Farnsworth. These include an application for threads, an application for requests and announcements, and an application for events. You can click on the header of each of the tables to see just that application or select one of the model types listed. By selecting one of the listed model types, you can get a list of all model instances of that type. Then you can delete or modify these models.
Certain fields have been disabled for models. You can change this aspect of the program with some effort. If you haven't worked with Django before, contact Karandeep for more details on how to do this.
There are also links form these pages to add new instances of models. You can use these to manually create models, though this is not a very likely scenario.
The Django auth application is used for handling user authentication. The auth package includes a user model and a group model. The user model contains the core set of fields for users on this site. But to augment this set, a user profile model with a one-to-one relationship was created in the threads application. This decision was made to make it easy to integrate Farnsworth with other Django applications or with other interfaces that are Django-compatible.
Note that deleting a user will delete all model instances dependent on that user instance. This means that all threads (including mesages associated with a thread started by the user), all messages, all requests (including all responses associated with a request posted by the user), etc. are deleted when a user is deleted. Do this only if you really really really need to delete a user. You will be prompted with the repercussions of deleting a model when you try to delete any model at all from the Django interface.
For most cases, though, simply deactivating users is sufficient and encouraged.
Django fully supports groups and permissions in case you ever need to implement a system that needs either or both of those features. For example, you can group users together by semester and then create a custom filter for the member directory or manage users page to see only users who are in that semester group. This feature is not currently on the roadmap for Farnsworth but would be a useful feature for the future, especially as the number of users grows linearly every semester.
Managing all models is identical through the Django admin interface. Please refer to Django's documentation for more on how to use the admin interface to manage model instances.
Managers are managed from the meta-manager page.
You can add a new manager by clicking the top right button on the meta-manager page or by going directly to the add manager page. A manager position can have only one incumbent. Keep this in mind.
Since houses allow multiple members to hold the same position, an "active" status is available for these scenarios. The recommended way to have multiple members hold the same position is to create multiple types of a singular position. So, for example, to have a Kitchen Manager position that can have more than one incumbent, create two (or three or four, depending on your house) instances of Kitchen Managers (Kitchen Manager 1, Kitchen Manager 2, ...) and then deactive the excess manager positions.
Though this may seem a shortcoming of the site, in practical terms, it's a decision between a clean end-user experience and a clean site admin experience. Having multiple incumbents for the same position makes sorting and searching more cumbersome for the user. A simple injective relation is optimal for understanding managers and incumbents.
Yes, this implementation does mean slightly more work for you. But it means significantly less combined mental work for end-users.
All fields in the form to add a new manager are optional except the manager title field. Farnsworth auto-generates the URL key for the manager from the title you provide by lower-casing all letters, replacing spaces with underscore, and a few other things that are covered in the documentation. "Kitchen Manager 1" → "kitchen_manager_1", "WRM" → "wrm", etc. These URLs are used to reference managers in the directory and the meta-manager. You will be thrown an error when adding a manager whose URL collides with a previous URL.
The "president" status gives the user rights to do President duties, which currently include managing managers and managing request types. Planned expansion of these duties include managing petitions, elections, and a few other things.
The "workshift manager" status is currently not used but is included in case a workshift package is rolled out in the future.
The "active" status indicates whether the manager is visible in the directory to the general membership
The e-mail form should be for official e-mails for that manager, not personal e-mails. Personal e-mails are under individual users' control. This field is optional as not all manager positions have dedicated e-mail addresses.
If there is a manager position without an e-mail address and the incumbent has set her/his e-mail to be visible to everyone, the incumbent's e-mail will be displayed in the manager directory and in individual manager descriptions, with a short snippet saying that the listed e-mail address is a personal e-mail address.
So you don't need to go get the incumbent's permission and then add her/his e-mail to the manager record, and then delete it again when the incumbent's e-mail or the incumbent herself changes. Besides succinctness, this implementation gives users better control over their own information and its visibility.
The incumbent field is optional and excludes all alumni. Effectively, only residents and boarders can hold manager positions. If an incumbent for the position doesn't exist, leave the option blank (displayed as a series of dashes) and the position will be created without an incumbent.
There is a catch in that when a user is changed from a resident or boarder to an alumnus, s/he continues to be the incumbent for the position. So, some maintenance on the site is required on your part at the beginning and end of each term, or whenever a manager position is vacated/refilled.
For this maintenance work, you will need to modify manager instances.
You can see a list of managers and links to their modification pages, incumbent user profile pages, and manager e-mails from the meta-manager (a manager of managers) page. This list will tell you most of the handy information about each manager, as well. Unlike the manager directory, this list does not show incumbents' personal e-mails. The meta-manager table is sortable, just like any other table in Farnsworth. You can hold down the Shift key and click multiple table headers to sort by all of the ones you select.
When you click on the title of each manager, you will be directed to a page to modify that manager instance. This form is identical to the add manager form; so details will not be covered here. The same conditions apply and the same tests apply when you try to modify a manager as when you add a manager. If you try to change a manager to have the same title as a different existing manager, you will be thrown an error. Similarly, if the URL name resolved from the title you gave collides with the URL of a different existing manager, you will be thrown an error.
Farnsworth abstracts manager requests so that request types can be created on the fly as needed. A request type is simple. It has a name, relevant managers, an enabled status, and an optional glyphicon. Names should be unique and resolve to unique URLs. URLs are resolved by lowercasing all letters, replacing space characters with underscores, replacing &'s with "and"s, and removing special characters such as *, $, !, and ?.
A request type's relevant managers are all the managers to whom requests of that type are made. The enabled status controls whether new requests of that type can be made. However, even if a request type is disabled, users will be able to post new responses to requests. Disabling request types can be useful when a manager position has been vacated, managers are being harassed on the site, etc.
When there are no existing or enabled request types, the Requests dropdown menu will disappear. The dropdown menu only appears when there is at least one enabled request type. When request types are enabled, they will automatically be added to the list in the dropdown menu. When request types are disabled, they will automatically be removed from the list.
You can see a list of request types from the manage request types page.
The Add Request Type button on the manage request types page will take you to the add request type page. Filling out and submitting this form will add a new request type.
It is recommended, for presentability, that request types be treated as titles (first letter of each word capitalized, unless an acronym). Request type names are converted to URLs in the same manner as the manager titles; so the same rules apply to request type names as manager titles.
Glyphicons are optional. If you leave the field blank, the default icon (the inbox icon used for the Requests dropdown menu) will be used for the request type. If you mistype the glyphicon, however, no icon will be displayed. There is a link in the form (which opens in a new tab) to all the currently available glyphicons. You can use any of them, but it might be better to steer clear of a few key ones used elsewhere in Farnsworth and others that serve as warning symbols.
Here is a list of some of the glyphicons and their recommended use:
There is no hard limitation preventing you from using the same glyphicon for multiple request types, but it will greatly enhance user experience if you use glyphicons intelligently.
When users access this site from a small screen (smart phones, etc. < 768px in width), text from certain buttons is not displayed, and only the glyphicon in those buttons is displayed. In these cases, it can help to have an intuitive glyphicon for users to know what request type they are accessing, to which page they are navigating, etc. Also in these cases, it is especially crucial to type the glyphicon correctly as the buttons will be empty (since there is no glyphicon) if the glyphicon is mistyped.
You can see a list of all the request types with links to modify them, relevant managers, and whether they are enabled from the manage request types page. From here, you can also see links to view relevant managers or their incumbents. When you click on the name of a request type, you will be taken to the modify request type page.
This form is identical to the add request type page.
All tables in Farnsworth are sortable. If you click on the header of a table, you will sort by the items in that column. You can hold down Shift and click multiple column headers to sort by each one successively.
Be careful of what you post on the site. If you post something on the site, it is a tedious process for the admin to delete your post. Admins may refuse to do so since the process can sometimes be dangerous to database integrity. Admins are discouraged from deleting posts in Farnsworth's documentation due to this risk.
The site collapses to a mobile version when the screen size reduces down to an extra small size (< 768px in width) or if the site is launched with a small screen size. Several things happen dynamically:
Learning to use the site is done best on large screens, as the mobile version is essentially reduced in visual aids, such as the text in container header buttons. Using the mobile version is not cumbersome, still.
The contents of containers will sometimes be too large for containment, especially on extra small screens. In these cases, the overflow contents of containers become horizontally scrollable. On mobile devices, you can tap and drag the contents of a table to scroll horizontally. Try this out on a small smart phone screen with the threads list on the homepage.
The site uses several third-party packages, like TinyMCE, Bootstrap Datetime-Picker, and Django-Haystack. Details on how to use these can be found in the miscellaneous section.
Control over your profile is handled through the my profile page. You can access this page from anywhere from the top menu. Links to this page are also sprinkled across the website - a link appears anywhere you posted an event, request, thread message, etc.
Please note, you cannot edit your first or last names, but you can request your site admin to do it for you.
By default, your first & last names and username are visible to all users, but your e-mail and phone number are only visible to the site admin and no one else.
However, you can allow others to see your e-mail address and phone number by toggling the e-mail visible and phone visible checkboxes in the update profile container. Doing so will display your phone and e-mail in the member directory and in your profile. Your e-mail will also become searchable when it is made visible; so that others can search for your profile by your e-mail.
Enabling phone visible will also display your phone number in the manager directory and the manager details for all manager positions you hold. Enabling e-mail visible will display your e-mail if a manager e-mail does not exist for a position you hold.
The current room, former rooms, and other houses fields are also indexed for search, meaning people can find you by your room or affiliation with other houses if you input this information.
Whenever you remove information, it is removed from the indexes.
You can change your password from the same page using the change password form at the bottom.
For your security, your password is hashed before storage. Hashing is a function that takes a regular value converts it to a value that is impossible to decrypt back to its original value using the current technology. Hashing makes your passwords safe and it's commonly done throughout the IT industry.
This means that admins cannot see your password. You and only you should know your own password. However, if you ever forget or lose your password, an admin can reset it for you.
You can see some parts of your profile history from the profile dropdown menu items in the top navbar. These include links to see all your requests and all the threads you have started. You cannot see all the messages you have posted, but you can search for threads you have posted to or search for the thread subject itself.
There are two views each of these two types of pages, but the ones that are linked in the menu are the concise ones. These will simply list your requests or threads with meta-data and some core details about them. The expanded views can be slow to load, but you ca load them from the simple views using the buttons in the container headers.
Threads in Farnsworth are designed like e-mail threads in most ways. You can start threads from various pages, including the homepage and the member forums page. The form is identical from any page. Both the subject and the body of the form are required. The subject will constitute a title for the thread and the body will constitute the first message in the thread.
After you have started a thread, anyone can add a message to that thread. Messages in threads are sorted by date. The old message (the one used to start the thread) is always listed first, and the most recent message is always listed last.
Threads are not deactivated and can be "revived" by simply posting another message in the thread. For reference, the homepage grabs the most recently modified threads to list. So if you add another message to a really old thread, it will be pushed to the top of the list on the homepage, grabbing attention for the thread from the entire membership.
You can add a message to a thread from a view with the thread. Generally this will be from the member forums or the thread view page. Messages require only a body and are fully editable and just like the body of a new thread.
New messages are added to the end of a thread and displayed below all prior messages. Threads are therefore designed completely linearly, rather than as trees - how some forums on the Internet are designed.
For the growth and spread of discussions, you are encouraged to branch threads by creating new ones similar subjects to steer the discussion is a different direction or to focus in on a specific issue in the parent discussion.
Doing so will keep threads clear and concise while allowing for full discussion.
If your House President adds and enables request types, you will see a requests dropdown menu appear in the navigation bar. From here, you can select a request type and add requests of that type for managers to address.
Each request type has a list of relevant managers. Active relevant managers and their incumbents will be displayed whenever you visit a request page. For example, for food requests, the relevant manager might be your Kitchen Manager or Food Manager or multiple Food Managers or Kitchen Managers.
When a relevant manager posts a response to a request, the body of the reponse will be colored a light blue and have hover text indicating that the response is a manager response.
Relevant managers also have the ability to mark requests closed or filled. A filled request will have a light green body and a closed request will have a light red body. Hovering over the body of a request will display hover text indicating the request's status (open, filled, or closed).
Requests also keep a running record of up votes. All user up votes are recorded and the number tabulated upon display of requests.
You can add a new request of a certain request type from that request type's request page. Requests contain just a body that is fully editable like the body of a thread or message.
After you have posted your request, you or anyone else can add a response to the request. Others can also up vote your request to express support for your request.
The vote count will be displayed next to the name of the person who originally posted the request. Clicking on this count will display a dropdown menu containing a list of up votes for that request. You can click on any of these names to see the up voter's profile.
If you are a manager, you can make an announcement that will be pinned to the home page and the manager announcements page until you unpin it. If you unpin an announcement and want it to be repinned, you can visit the all announcements page to repin it to the home page and the manager announcement page.
Announcements are meant to be high priority addresses to the entire house. You can use announcements to warn the house about emergencies or provide critial information.
Once you have posted an announcement, it will automatically be pinned to the home page and the manager announcement page. You can unpin the announcement by clicking the unpin link at the bottom right side of the announcement. Doing so will move your announcement to the archives, where it can still be seen.
If you accidentally unpin an announcement and want to repin it, you can go to the all announcements page and repin it from there.
You can edit an announcement by clicking the edit link at the bottom right side of the announcement. Once you edit an announcement and save it, you will be taken to a page that shows you the modified version of the announcement. From here, if you approve, you can navigate anywhere else. Your announcement is already updated and saved. If you disapprove, you can click edit again and modify the announcement again.
You cannot modify the announcement of a previous incumbent for a position you hold. However, you can copy paste it and start a new announcement. You can also ask the site admin to modify it or unpin/repin the announcement for you.
Events can be posted from the upcoming events page or the all events page. All fields except the RSVP and Mark Cancelled checkboxes are required in this form. By default, {{ HOUSE }} will set as the location of the event and the RSVP box will be checked.
For picking the date and time of the event, Farnsworth uses Bootstrap Date Time picker, details on which can be found in the Date-Time Picker sub-section of the Miscellaneous section.
Once you're posted an event, others can RSVP to it. The list of RSVPs will be displayed with every event. You are by default RSVP'd to the event you posted. You can un-RSVP to the event by clicking the Un-RSVP link at the bottom right of the event.
If you need to edit the event, you can do so by clicking the edit link at the bottom right of the event. Once you've modified and saved your event, you will be taken to a view of that event. Your event already updated and saved. You can edit it again or navigate anywhere you'd like.
Farnsworth includes a "what you see is what you get" (WYSIWYG) editor called TinyMCE used in several places in the site.
TinyMCE is feature rich and does extensive security checks on its own.
TinyMCE allows image and video inserts via iframe
s or URL links.
Both of these methods can be used through the buttons in the TinyMCE interface.
Using URLs is the more straightforward and approachable way to insert videos. TinyMCE will do the work for you in finding the video from the URL you enter and inserting it into your message. This may not work properly sometimes (e.g., when more than one video is on a page).
In these cases, you can use the iframe
option, which is slightly more work.
You will have to get the iframe
code from the video you are trying to insert
and then paste the code into the text field in the "Embed" tab of the insert/edit video popup of TinyMCE.
TinyMCE also supports inserting emoticons, special characters, links, ordered & unordered lists, and horizontal rules. These can all be accessed from the buttons in the interface.
Formatting can be done via keyboard as well as the buttons in the interface.
For example, you can press CTRL + B to bold, CTRL + I to italicize,
or CTRL + U to underline text.
The buttons available will allow you greater control over your formatting.
You can insert headings, change font size or font, strikethrough text - like this - and insert text to be rendered as code - like so:
python hello_world.py
TinyMCE also supports inline code, like so: print "Hello, world!"
, divs, paragraphs, and blockquotes:
Cogito ergo sum.
These options can be selected from the blocks sub-menu in the formats dropdown menu inside TinyMCE.
TinyMCE also supports keyboard shortcuts to copy (CTRL + C), cut (CTRL + X), or paste (CTRL + P) text from or to the text field, along with several other keyboard shortcuts.
However, please note that TinyMCE will preserve the formatting of text you paste into the editor, including background color. So, it is recommended that you paste input as plain text, an option offered by TinyMCE. You can click the paste as plaintext button, which render anything you paste as plaintext until you toggle the plaintext button to off.
You can also align your text however you please and undo/redo your changes.
However, a downside of using TinyMCE is that your input will not be preserved between attempts to submit forms. So it is crucial that you input all required fields to ensure that the form is submitted on the first try.
Bootstrap Datetime Picker is used in Farnsworth to pick date and time for events. It allows the selection of a date and then a time from a box that drops down when a datetime field is clicked. The widget allows you to quickly move through dates through several means.
You can click on the arrows at the top of the dropdown calendar to flip through the months. If you click on the month year field between the arrows, the widget will swith to a month view, with a year at the top and months listed below. From here, if you click the arrows, you can quickly flip through years, or you can click the year field, which will switch the widget to a year view. From here, you can quickly flip through decades via the arrows at the top.
If you click the clock icon at the bottom of the calendar, the widget will switch to a time view. From here you can select a time, in hours, minutes, and AM/PM. To switch back to the calendar view, click the calendar icon at the top of the widget. If you click on the hour button, the widget will switch to an hour selector, form where you can select an hour. If you click the minute button, the widget will switch to a minute selector, allowing you to select a minute field in 3 minutes increments.
Farnsworth uses Django-Haystack for search. Haystack serves as a wrapper around an engine of your setup's choosing. Most likely, your version of Farnsworth was deployed with Elasticsearch, an implementation of Lucene, a pure Java search engine.
You can search the entire site from any page via the search bar in the navigation bar. The indexes are updated live; so results should always be up to date.
Farnsworth's implementation is designed to use partial-word search. You can search for parts of a word and get effective results. Haystack matches 2-letter combinations for parts of the words you type with parts of all words in the database.
As a drawback to this implementation, you will often get results you aren't looking for. But most likely, if you are specific with your search, you will get results you are looking for.
Search results can be filtered by clicking the filter button at the top and selecting one of the filter choices, if any.
Results are paginated for presentability. Undoubtedly, as the database grows larger, more results will be returned. So, you can click through the pages at the bottom to look through the results for your query.


Getting stuck is certainly frustrating, and I feel particularly worked up when I can't see the smaller steps to resolving the challenge/issue. I feel antsy, feel like a victim because I think the task is unfair ("We never learned that!"), and then eventually lose interest. I need to take some time away, write out the problem and possible solution in regular English, maybe ask for help, before trying my hand at it again.
I also think that time - or the lack of it - is a trigger for me. The real course is starting soon, and the countdown is compounded by the fact that it also means I'm moving anyday now. When I first open a waffle task and it simply looks long, I shut down because I'm distressed about being able to do it, and how much time it'll take me (which means less time to spend IRL with friends, hobbies, and preparing for my move).
I like the idea of saying "I am experiencing x feeling". It helps to remove oneself from the emotion that's happening and then think more critically about it and what to do about it.


We are dedicated to producing the finest quality produce
ranging from crispy fresh cabbage to tasy uncut carrots.
We are dedicated to product quality, appearance and taste to meet our clients’ need for exceptional service standards. We aim to remain profitable through caring for the community and environment by providing our employees with a safe and happy working environment.
To provide our clients with high quality fresh produce when they need it. We adhere to stringent rules and regulations to ensure our products are delivered in peak condition and on time.
We always put our customers’ needs first and will endeavour to supply fresh produce and services that exceed expectations. We are able to achieve our objectives by constantly providing innovative product ranges and services.
Dantes remained confused and silent by this explanation of the
thoughts which had unconsciously
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commo
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commo
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commo
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commo
Tel :<PHONE_NUMBER>/<PHONE_NUMBER>


OMERO tutorial
German Bioimaging meeting
online meeting in Münster, July 2020
OME Team
Outline
- How does OME Team do trainings?
- How can you do OME trainings?
- How to set up a server for training?
- What should OME user know?
- Features to attract OME users?
OME trainings
- Public materials
- Available online during and after workshop
- All content is in omero-guides
- Public data on training server
- Training server set up in a transparent manner
Training server: public data
Prepare the training: 1
- Set a date
- Book a room
- Test internet connection inside the room
- Check that OMERO.insight imports an image from the training room
- Think about what setup you need, whether you ask users to bring their laptop
What should OME user know ?


This acceptable use policy covers the products, services, and technologies (collectively referred to as the “Products”) provided by Fast Expo Collective LLC under any ongoing agreement. It’s designed to protect us, our customers, and the general Internet community from unethical, irresponsible, and illegal activity.
Fast Expo Collective LLC customers found engaging in activities prohibited by this acceptable use policy can be liable for service suspension and account termination. In extreme cases, we may be legally obliged to report such customers to the relevant authorities.
This policy was last reviewed on 14 November 2021.
We provide our facilities with the assumption your use will be “business as usual”, as per our offer schedule. If your use is considered to be excessive, then additional fees may be charged, or capacity may be restricted.
We are opposed to all forms of abuse, discrimination, rights infringement, and/or any action that harms or disadvantages any group, individual, or resource. We expect our customers and, where applicable, their users (“end-users”) to likewise engage our Products with similar intent.
We regard our customers as being responsible for their own actions as well as for the actions of anyone using our Products with the customer’s permission. This responsibility also applies to anyone using our Products on an unauthorized basis as a result of the customer’s failure to put in place reasonable security measures.
By accepting Products from us, our customers agree to ensure adherence to this policy on behalf of anyone using the Products as their end users. Complaints regarding the actions of customers or their end-users will be forwarded to the nominated contact for the account in question.
If a customer — or their end-user or anyone using our Products as a result of the customer — violates our acceptable use policy, we reserve the right to terminate any Products associated with the offending account or the account itself or take any remedial or preventative action we deem appropriate, without notice. To the extent permitted by law, no credit will be available for interruptions of service resulting from any violation of our acceptable use policy.
Our Products must not be used to transmit, distribute or store any material in violation of any applicable law. This includes but isn’t limited to:
The customer is solely responsible for all material they input, upload, disseminate, transmit, create or publish through or on our Products, and for obtaining legal permission to use any works included in such material.
Our Products must not be used for the purpose of sending unsolicited bulk or commercial messages in violation of the laws and regulations applicable to your jurisdiction (“spam”). This includes but isn’t limited to sending spam, soliciting customers from spam sent from other service providers, and collecting replies to spam sent from other service providers.
Our Products must not be used for the purpose of running unconfirmed mailing lists or telephone number lists (“messaging lists”). This includes but isn’t limited to subscribing email addresses or telephone numbers to any messaging list without the permission of the email address or telephone number owner, and storing any email addresses or telephone numbers subscribed in this way. All messaging lists run on or hosted by our Products must be “confirmed opt-in”. Verification of the address or telephone number owner’s express permission must be available for the lifespan of the messaging list.
We prohibit the use of email lists, telephone number lists or databases purchased from third parties intended for spam or unconfirmed messaging list purposes on our Products.
This spam and unauthorized message activity policy applies to messages sent using our Products, or to messages sent from any network by the customer or any person on the customer’s behalf, that directly or indirectly refer the recipient to a site hosted via our Products.
Our Products must not be used for the purpose of advertising, transmitting, or otherwise making available any software, program, product, or service designed to violate this acceptable use policy, or the acceptable use policy of other service providers. This includes but isn’t limited to facilitating the means to send spam and the initiation of network sniffing, pinging, packet spoofing, flooding, mail-bombing, and denial-of-service attacks.
Our Products must not be used to access any account or electronic resource where the group or individual attempting to gain access does not own or is not authorized to access the resource (e.g. “hacking”, “cracking”, “phreaking”, etc.).
Our Products must not be used for the purpose of intentionally or recklessly introducing viruses or malicious code into our Products and systems.
Our Products must not be used for purposely engaging in activities designed to harass another group or individual. Our definition of harassment includes but is not limited to denial-of-service attacks, hate-speech, advocacy of racial or ethnic intolerance, and any activity intended to threaten, abuse, infringe upon the rights of, or discriminate against any group or individual.
Other activities considered unethical, exploitative, and malicious include:
Our Products may not be used by any person or entity, which is involved with or suspected of involvement in activities or causes relating to illegal gambling; terrorism; narcotics trafficking; arms trafficking or the proliferation, development, design, manufacture, production, stockpiling, or use of nuclear, chemical or biological weapons, weapons of mass destruction, or missiles; in each case including any affiliation with others whatsoever who support the above such activities or causes.
We prohibit the impersonation of Fast Expo Collective LLC, the representation of a significant business relationship with Fast Expo Collective LLC, or ownership of any Fast Expo Collective LLC property (including our Products and brand) for the purpose of fraudulently gaining service, custom, patronage, or user trust.
This policy outlines a non-exclusive list of activities and intent we deem unacceptable and incompatible with our brand.
We reserve the right to modify this policy at any time by publishing the revised version on our website. The revised version will be effective from the earlier of:


Evaluation graphics that depict the current and historic state of municipalities websites.
Request new evalutions.
Learn more about security and HTTPS. If necessary you may contact us for more information.
List of SSL and TLS deployment best practices.
It is possible to see all results for all websites on a specific date.
The tests run fast because optimization mechanisms have been implemented, including a caching system
List of available evaluation methods.
Checks for the existence of the HTTPS protocol.
Checks the correctness of the certificates, the certification chain and theirs validity.
Check the coherence between contents of the HTTP and HTTPS sites.
Checks the redirection between HTTP to HTTPS.
Checks for the existence of HTTP resources within a HTTPS webpage.
Checks for the existence of HTTP Strict Transport Security (HSTS).
The results of the municipalities were resumed in a high- level, overall quality indicator with four classification levels:


This tab contains information and statistics about the model and the
statements it is built from. Find model description, the date when it
was updated and the links to model’s external accounts on NDEx and
Twitter (if available). Click one of the buttons in the upper right
corner to subscribe to model updates (if you are logged in) or start
a chat with a model. Scroll further to download the model in one of
the available models and browse the statistics about the distribution
of statement types, top model entities, knowledge sources (reading
systems and curated databases), statements with a large number of
supporting evidence, statements added in the last update cycle and
change in number of statements over time. Click on any statement to
view its evidence.
{% set logged_in, subscribe, url = subscription %}
{% if logged_in %}


Across: 1. Luigi’s terrier gets a shake-up for things done wrongly! (14) 9. Exhausted adder slithers around at home (7) 10. Ask for treatment of colitis (7) 11. Missile levels UK island! (5) 12. Try a nude over streaking (9) 13. Turned up drug under crumpled trousers (9) 14. Old people have diamonds back at home (5) 15. Shout about extreme characters being mad! (5) 17. Paying for returning to hospital, perhaps (9) 20. Gets the attention of common woman attending home matches (9) 22. In damaged hob I find washer (5) 23. Case for outfit at court? (7) 24. Stop troublesome youth going outside in Netherlands (7) 25. Everyone merry in this schooner? (8 6) Down: 1. Unsecured, but credit lines can become permanent (14) 2. Let back in to study with German (7) 3. Doctors egg on Yale to find family connexions (9) 4. Hands around guitarist’s small books (7) 5. Rest outside in Paris street (7) 6. US city is held back in time as Luton grows (5) 7. Half open top of case – then misplace pen! (7) 8. Looking around West End with Shakespearean beginner, you might say (8 6) 14. Tired aria fails to enlighten (9) 16. A wit ran organisation for peace (7) 17. Sort tie out for old composer (7) 18. Spooner’s rubbish comedian may need to be taken on holiday (7) 19. These indicate pressure as Rob is working out (7) 21. Nero fiddled around university city (5)


Also, wouldn't be surprised if there are wrong stuff here... But as far as it was empirically tested, it should be really the optimal.
I hope.
Given a set of scenes, each with it's own "score", find the subset of non-overlapping scenes these that maximizes sum of the "score"
(psst.. "score" is our favourite word here)
also, when the sum is the same (tie), we should pick the one that starts the earliest
Given a set of weighted-intervals, find the optimal subset without overlapping intervals which maximizes the sum of their weights
Again, in case of ties, pick the subset with earliest start
$$[start, end] \Rightarrow weight$$
$$ \{ [1,2]\Rightarrow 1,[4,10]\Rightarrow 6\} $$
How large is the search space?
$$ {}^{10}\!C_{10} \times {}^{10}\!C_{9} \times ... \times {}^{10}\!C_{1}$$
$$ = \sum_{0 \leq k \leq n} {}^{10}\!C_{k} = 2^{10}$$
..but how does it scale as $n$ grows..?
How large is the search space?
| $n$ | Combinations ($2^n$) | Computable useful time? |
|---|---|---|
| 10 | 1024 | Y |
| 15 | 32768 | Y |
| 17 | 131072 | Y... Kind off |
| 19 | 524288 | Nope... Many minutes |
| 25 | 33554432 | Good luck capt'n (+ no memory) |
Bruteforcing is rarely the solution, as seen here.
..and don't forget that each set is not trivial to compute!!! (overlaps + sum)
Given $ S_n = \{I_1, ..., I_n\}\\$
$$f(S_n) = \begin{cases} \emptyset, & |S| = \emptyset \\ I_1, & |S| = 1 \\ S , & |S| > 1 \land (\forall_{A,B} \in S \land A \neq B : \neg intersects(A,B) \\ max \left(\begin{aligned} f(S \setminus \{A\}) ,\\ f(S \setminus \{B\})) \end{aligned}\right) , & |S| > 1 \land (\exists_{A,B} \in S \land A \neq B : intersects(A,B) \\ \end{cases} $$
But there are some issues with the divide-and-conquer approach..
This is a tiny example! But almost half of the states are duplicated.
Solution: Store the sub-solutions for each sub-problem and only compute it not previously computed.
This category of optimisations is known as memoization (i.e.: "caching")
Which was straight-forward with Google Commons
val cache: Cache< Set < Interval >, Set < Interval > > = CacheBuilder
.newBuilder()
.recordStats()
.build()
Roughly 25% performance gain ${}^{\mbox{citation needed}}$
"intersection between $n$ elements is quadratic" (plus bonus cut)
Even though the numbers for intervals are quite low, $30^2$ is still 900. As such, the complexity from this step can add up for each nested sub-problem attempted.
Plus, everytime we remove an overlapping interval and test a subset, we are re-testing intersections again which shouldn't be needed
Also, caching results from $intersects(A, B)$ is pointless since it's faster to recalculate than to check cache
There is a way of calculating this faster, with some interesting side-effects we can use, if we model this problem as a graph problem.
Let $G$ be a graph with nodes $I_n$ , in which node $I_i$ is connected to node $I_j$ $\iff$ they intersect each other.
Any interesting properties you can identify?
disconnected components
Nodes that are isolated $=>$ automatically part of the solution
connected components
Connected nodes $=>$ at least one of them cannot be part of the solution
So we have to test all permutations of one removal
How to find all connected/disconnected components?
A data-structure called "union-find" allows us to do exactly this.
It is used in Tarjan's algorithm used to find strongly-connected components (we don't need this) and in Kruskal's algorithm (MST).
With this knowledge we can perfect our solution further
Given $$ \begin{aligned} S_n = \{I_1, ..., I_n\}\\ S_{DC} = \mbox{intervals in disconnected components}\\ S_{CC} = \mbox{set of intervals in connected components}\\ \end{aligned} $$
$$f(S_n) = \begin{cases} \emptyset, & |S| = \emptyset \\ I_1, & |S| = 1 \\ S , & S \cap S_{DC} = S \\ \bigcup\limits_{i \in S_{DC}} ({S_{DC}}_{i}) \cup \bigcup\limits_{j \in S_{CC}} max \left(\begin{aligned} {\displaystyle\mathop{{{{\forall}}}}_{I \in {S_{CC}}_{j}}} f({S_{CC}}_{j} \setminus \{I\}) \end{aligned}\right) , & S_{CC} \neq \emptyset \\ \end{cases} $$
Roughly 75% performance gain ${}^{\mbox{citation needed}}$
Still too many damn permutations!
(also, blatently stackoverflow'd from wikipedia at https://en.wikipedia.org/wiki/Dynamic_programming)
There are two key attributes that a problem must have in order for dynamic programming to be applicable: optimal substructure and overlapping sub-problems.
If a problem can be solved by combining optimal solutions to non-overlapping sub-problems, the strategy is called "divide and conquer" instead. This is why merge sort and quick sort are not classified as dynamic programming problems.
Optimal substructure means that the solution to a given optimization problem can be obtained by the combination of optimal solutions to its sub-problems.
Overlapping sub-problems* means that the space of sub-problems must be small, that is, any recursive algorithm solving the problem should solve the same sub-problems over and over, rather than generating new sub-problems. Dynamic programming takes account of this fact and tries solves each sub-problem only once.
When we have over 20~30 overlapping segments in the $S_{CC}$, there are still too many states (mostly repeated ones) to explore that will take too much time.
We need to model the problem differently.
Instead of generating the possible permutations for removal in $S_{CC}$, we going to transform it into a binary choice: either take the first interval or drop it.
Given $$ \begin{aligned} S_n = \{I_1, ..., I_n\}\\ S_{DC} = \mbox{intervals in disconnected components}\\ S_{CC} = \mbox{set of intervals in connected components}\\ {S_{CC}}_{I_1} = \mbox{first interval in a set of intervals in the connected components}\\ \end{aligned} $$
$$f(S_n) = \begin{cases} \emptyset, & |S| = \emptyset \\ I_1, & |S| = 1 \\ S , & S \cap S_{DC} = S \\ \bigcup\limits_{w \in S_{DC}} ({S_{DC}}_{w}) \cup \bigcup\limits_{j \in S_{CC}} max \left(\begin{aligned} &f({S_{CC}}_{j} \setminus \{I_1\}) ,\\ I_1 \cup &f({S_{CC}}_{j} \setminus \{I_x \in {S_{CC}}_{j}, intersects(I_1, I_x)\} ) \end{aligned}\right) , & S_{CC} \neq \emptyset \\ \end{cases} $$
Roughly 'very many big' performance gain ${}^{\mbox{citation needed}}$
from Scala*: https://www.linkedin.com/in/orium/
*not tested or benchmarked, but cool to see.


HTML5 & CSS3
Transitions, Transforms & Animations
Created by Jane Dimeski / @janedimeski
© 2020/2021 Seavus Education & Development Center
Lesson Overview
- Introduction
- Transitions
- Transforms
- Animations
Introduction
- One evolution with CSS3 was the ability to write behaviors for transitions and animations.
- With CSS3 transitions you have the potential to alter the appearance and behavior of an element whenever a state change occurs, such as when it is hovered over, focused on or active
Introduction (2)
- Animations within CSS3 allow the appearance and behavior of an element to be altered in multiple keyframes.
- Transitions provide a change from one state to another, while animations can set multiple points of transition upon different keyframes.
Transitions
- As mentioned, for a transition to take place, an element must have a change in state, and different styles must be identified for each state.
- The easiest way for determining styles for different states is by using the :hover, :focus, and :active pseudo-classes.
Transitions (2)
- There are four transition related properties in total, including transition-property, transition-duration, transition-timing-function, and transition-delay.
- Not all of these are required to build a transition.
HTML

Box

CSS
.box {
background: #2db34a;
border-radius: 6px;
height: 95px;
width: 95px;
line-height: 95px;
text-align: center;
/* Transition properties */
transition-property: background;
transition-duration: 1s;
transition-timing-function: linear;
}
.box:hover {
background: #ff7b29;
}
transition-property
- The transition-property property determines exactly what properties will be altered in conjunction with the other transitional properties.
*By default, all of the properties within an element’s different states will be altered upon change.
However, only the properties identified within the transition-property value will be affected by any transitions.
transition-property (2)
- If multiple properties need to be transitioned they may be comma separated within the transition-property value.
- Additionally, the keyword value all may be used to transition all properties of an element.
HTML

Box

CSS
.box2 {
color: #fff;
background: #2db34a;
border-radius: 6px;
height: 95px;
width: 95px;
line-height: 95px;
text-align: center;
/* Transition properties */
transition-property: background, border-radius;
transition-duration: .5s;
transition-timing-function: linear;
}
.box2:hover {
background: #ff7b29;
border-radius: 50%;
}
Transition Properties
- It is important to note, not all properties may be transitioned, only properties that have an identifiable halfway point.
*Colors, font sizes, and the alike may be transitioned from one value to another as they have recognizable values in-between one another.
*The display property, for example, may not be transitioned as it does not have any midpoint.
Transition Properties (2)
- background-color, background-position
- border-color, border-width, border-spacing
- left, rigth, top, bottom
- color, opacity
- font-size, font-weight, letter-spacing, word-spacing, line-height, text-indent
- width, height, max-width, max-heaight, min-width, min-height
- padding, margin
- text-shadow
- visibility
- z-index
- vertical-align
- outline-color, outline-offset, outline-width
transition-duration
- The duration in which a transition takes place is set using the transition-duration property.
- The value of this property can be set using general timing values, including seconds (s) and milliseconds (ms).
- These timing values may also come in fractional measurements, .2s for example.
transition-duration (2)
- When transitioning multiple properties you can set multiple durations, one for each property using comma separated values.
- The order of these values when identifying individual properties and durations does matter.
- For example, the first property identified within the transition-property property will match up with the first time identified within the transition-duration property, and so forth.
transition-timing-function
- The transition-timing-function property is used to set the speed in which a transition will move.
- Knowing the duration from the transition-duration property a transition can have multiple speeds within a single duration.
- A few of the more popular keyword values for the transition-timing-function property include linear, ease-in, ease-out, and ease-in-out.
transition-timing-function (2)
- ease - specifies a transition effect with a slow start, then fast, then end slowly (this is default)
- linear - specifies a transition effect with the same speed from start to end
- ease-in - specifies a transition effect with a slow start
- ease-out - specifies a transition effect with a slow end
- ease-in-out - specifspecifies a transition effect with a slow start and end
- cubic-bezier(n,n,n,n) - lets you define your own values in a cubic-bezier function See here
CSS
/* Keyword values */
transition-timing-function: ease;
transition-timing-function: ease-in;
transition-timing-function: ease-out;
transition-timing-function: ease-in-out;
transition-timing-function: linear;
transition-timing-function: step-start;
transition-timing-function: step-end;
/* Function values */
transition-timing-function: steps(4, jump-end);
transition-timing-function: cubic-bezier(0.1, 0.7, 1.0, 0.1);
/* Steps Function keywords */
transition-timing-function: steps(4, jump-start);
transition-timing-function: steps(10, jump-end);
transition-timing-function: steps(20, jump-none);
transition-timing-function: steps(5, jump-both);
transition-timing-function: steps(6, start);
transition-timing-function: steps(8, end);
/* Multiple timing functions */
transition-timing-function: ease, step-start, cubic-bezier(0.1, 0.7, 1.0, 0.1);
transition-delay
- On top of declaring the transition property, duration, and timing function, you can also set a delay with the transition-delay property.
- The delay sets a time value, seconds or milliseconds, that determines how long a transition should be stalled before executing.
- As with all other transition properties, to delay numerous transitions, each delay can be declared as comma separated values.
Shorthand Transitions
- Declaring every transition property individually can become quite intensive, especially with vendor prefixes.
- Fortunately there is a shorthand property, transition, capable of supporting all of these different properties and values.
- Using the transition value alone, you can set every transition value in the order of transition-property, transition-duration, transition-timing-function, and lastly transition-delay.
*Do not use commas with these values unless you are identifying numerous transitions.
CSS
.box {
color: #fff;
background: #2db34a;
border-radius: 6px;
height: 95px;
line-height: 95px;
text-align: center;
/* Shorthand Transition properties */
transition: background .2s linear .5s, border-radius 1s ease-in 1s;
}
.box:hover {
color: #ff7b29;
border-radius: 50%;
}
Transforms
- With CSS3 came new ways to position and alter elements.
- Now general layout techniques can be revisited with alternative ways to size, position, and change elements.
- All of these new techniques are made possible by the transform property.
Transforms (2)
- The transform property comes in two different settings, two-dimensional and three-dimensional.
- Each of these come with their own individual properties and values.
Transform Syntax
- The actual syntax for the transform
property is quite simple, including the transform property followed by the value.
- The complex part is that there are multiple transform values that you can use.
div {
transform: scale(1.5, 1.5);
}
Transform Values
- translate(x,y), translate3d(x,y,z), translateX(x), translateY(y), translateZ(z)
- scale(x,y), scale3d(x,y,z), scaleX(x), scaleY(y), scaleZ(z)
- rotate(angle), rotate3d(x,y,z,angle), rotateX(angle), rotateY(angle), rotateZ(angle)
- skew(x-angle,y-angle), skewX(angle), skewY(angle)
- perspective(n)
- initial, inherit
transform-origin
The transform-origin CSS property sets the origin for an element's transformations.
*The transformation origin is the point around which a transformation is applied. For example, the transformation origin of the rotate() function is the center of rotation.
*This property is applied by first translating the element by the value of the property, then applying the element's transform, then translating by the negated property value.
CSS
/* One-value syntax */
transform-origin: 2px;
transform-origin: bottom;
/* x-offset | y-offset */
transform-origin: 3cm 2px;
/* x-offset-keyword | y-offset */
transform-origin: left 2px;
/* x-offset-keyword | y-offset-keyword */
transform-origin: right top;
/* y-offset-keyword | x-offset-keyword */
transform-origin: top right;
/* x-offset | y-offset | z-offset */
transform-origin: 2px 30% 10px;
/* x-offset-keyword | y-offset | z-offset */
transform-origin: left 5px -3px;
/* x-offset-keyword | y-offset-keyword | z-offset */
transform-origin: right bottom 2cm;
/* y-offset-keyword | x-offset-keyword | z-offset */
transform-origin: bottom right 2cm;
Animations
- Transitions do a great job of building out visual interactions from one state to another, and are perfect for these kinds of single state changes.
- However, when more control is required, transitions need to have multiple states.
- In return, this is where animations pick up where transitions leave off.
Animation Keyframes
- To set multiple points at which an element should undergo a transition, use the @keyframes rule.
- The @keyframes rule includes the animation name, any animation breakpoints, and the properties intended to be animated.
Animation
@keyframes slide {
0% {
left: 0;
top: 0;
}
50% {
left: 244px;
top: 100px;
}
100% {
left: 488px;
top: 0;
}
}
animation-name
- Once the keyframes for an animation have been declared they need to be assigned to an element.
- To do so, the animation-name property is used with the animation name, identified from the @keyframes rule, as the property value.
- The animation-name declaration is applied to the element in which the animation is to be applied to.
.stage:hover .ball {
animation-name: slide;
}
Using the animation-name property alone isn’t enough though. You also need to declare an animation-duration property and value so that the browser knows how long an animation should take to complete.
animation-duration
- Once you have declared the animation-name property on an element, animations behave similarly to transitions.
- They include animation-duration, animation-timing-function, and animation-delay if desired.
- To start, animations need a duration declared using the animation-duration property.
- As with transitions, the duration may be set in seconds or milliseconds.
.stage:hover .ball {
animation-name: slide;
animation-duration: 2s;
}
animation-timing-function, & animation-delay
- A timing function and delay can be declared using the animation-timing-function and animation-delay properties respectively.
- The values for these properties mimic and behave just as they do with transitions.
.stage:hover .ball {
animation-name: slide;
animation-duration: 2s;
animation-timing-function: ease-in-out;
animation-delay: .5s;
}
Customizing Animations
Animations also provide the ability to further customize an element’s behavior, including the ability to declare the number of times an animation runs, as well as the direction in which an animation completes.
- animation-iteration-count
- animation-direction
- animation-play-state
- animation-fill-mode
Animation Iteration
- By default, animations run their cycle once from beginning to end and then stop.
- To have an animation repeat itself numerous times the animation-iteration-count property may be used.
- Values for the animation-iteration-count property include either an integer or the infinite keyword.
.stage:hover .ball {
animation-name: slide;
animation-duration: 2s;
animation-timing-function: ease-in-out;
animation-delay: .5s;
animation-iteration-count: infinite;
}
Animation Direction
- On top of being able to set the number of times an animation repeats, you may also declare the direction an animation completes using the animation-direction property.
- Values for the animation-direction property include normal, reverse, alternate, and alternate-reverse.
.stage:hover .ball {
animation-name: slide;
animation-duration: 2s;
animation-timing-function: ease-in-out;
animation-delay: .5s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
Animation Play State
- The animation-play-state property allows an animation to be played or paused using the running and paused keyword values respectively.
*When you play a paused animation, it will resume running from its current state rather than starting from the very beginning again.
.stage:hover .ball {
animation-name: slide;
animation-duration: 2s;
animation-timing-function: ease-in-out;
animation-delay: .5s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
.stage:active .ball {
animation-play-state: paused;
}
Animation Fill Mode
- The animation-fill-mode property identifies how an element should be styled either before, after, or before and after an animation is run.
- The animation-fill-mode property accepts four keyword values, including none, forwards, backwards, and both.
.stage:hover .ball {
animation-name: slide;
animation-duration: 2s;
animation-timing-function: ease-in-out;
animation-delay: .5s;
animation-fill-mode: forwards;
}
.stage:active .ball {
animation-play-state: paused;
}
Shorthand Animations
- Fortunately animations, just like transitions, can be written out in a shorthand format.
- This is accomplished with one animation property, rather than multiple declarations.
- The order of values within the animation property should be animation-name, animation-duration, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, animation-fill-mode, and lastly animation-play-state.
.stage:hover .ball {
animation: slide 2s ease-in-out .5s infinite alternate;
}
.stage:active .ball {
animation-play-state: paused;
}
Homework #7
Title: Working with CSS transition, transform and animation
Description: Recreate the gif on the next slide using HTML and CSS


Insert a title for your post.
Upload a picture, if you'd like.
Select the dates you'll need a roommate for.
Start Date:
End Date:
Tell us your maximum preferred rent price.
Insert a description for your post.


Let's send you a text
Please enter your phone number without any special characters or spaces.
Phone number:
Submit


THE HIGH COURT OF MADHYA PRADESH MCRC-27551-2017 (M/S. KANTI BEVERAGES PVT. LTD. Vs MADHYA PRADESH POLLUTION CONTROL BOARD) 2 Jabalpur, Dated : 16-01-2018 Mr.Sankalp Kochar, learned counsel for the petitioners. The respondent is yet to be noticed.
Learned counsel for the petitioners submits that petitioner No.2 is the Managing Director of the petitioner No.1/company. The M.P.
sh Pollution Control Board through its Regional Officerr has initiated e complaint against the petitioner No.2/Director of the company ad whereas the petitioner No.1/company has informed the M.P. Pollution Pr Control Board about the nomination of Mukesh Pancholi (Factory Manager) appointed as person responsible for day to day operations of a hy the factory including dealing with with Government Departments. Copy of the same has been served to M.P. Pollution Control Board on ad 05.8.2014.
M Keeping in view the above circumstances and the legal position of section 47(1) & (2) of the Water Act, the Managing Director does of not fall within the term "every person". Therefore, the proceeding rt initiated by the respondent before the learned Judicial Magistrate First ou Class, Raisen in Complaint Case No.1400509/2016 is stayed till next date of hearing.
C Let notice be issued to the respondent on payment of process fee h within 3 working days by registered post with acknowledgement due ig as well as ordinary mode. Notices be made returnable within four H weeks.
List the case after four weeks.
(SUSHIL KUMAR PALO) JUDGE Digitally signed by RAJESH T MAMTANI Date: 2018.02.21 16:14:08 +05'30' RM


Notice: Due to the lack of a .cgi bin from my server I am unable to to do trivia through a form that you can fill out and submit. So you will have to email me with your answers for now.
Please include in your email:
Your Name:
Your Email Address:
There are ten short answer questions. Good Luck!
Name the correct year that corresponds with the event:
Name the artist or group (these are all very easy):


LXShadow somehow get's his hands on a copy of the Spyro The Dragon beta and provides a whole playthrough of it. Sadly a beta hasn't been leaked to the publics hands but at least we get this. You'll see so many diffrences to the finished game, such an interesting watch. Go watch this now.


{% extends "security/panel.html" %} {% block panel_image %}
{{ _('Enter the email address for the user account you wish to recover the password for:') }}


| I l@ve RuBoard |
try/except. Our version of the oops function follows. As for the noncoding questions, changing oops to raise KeyError instead of IndexError means that the exception won't be caught by our try handler (it "percolates" to the top level and triggers Python's default error message). The names KeyError and IndexError come from the outermost built-in names scope. If you don't believe us, import _ _builtin__ and pass it as an argument to the dir function to see for yourself.
% cat oops.py def oops(): raise IndexError def doomed(): try: oops() except IndexError: print 'caught an index error!' else: print 'no error caught...' if __name__ == '__main__': doomed() % python oops.py caught an index error!
Exception lists. Here's the way we extended this module for an exception of our own:
% cat oops.py MyError = 'hello' def oops(): raise MyError, 'world' def doomed(): try: oops() except IndexError: print 'caught an index error!' except MyError, data: print 'caught error:', MyError, data else: print 'no error caught...' if __name__ == '__main__': doomed() % python oops.py caught error: hello world
Error handling. Finally, here's one way to solve this one; we decided to do our tests in a file, rather than interactively, but the results are about the same.
% cat safe2.py import sys, traceback def safe(entry, *args): try: apply(entry, args) # catch everything else except: traceback.print_exc() print 'Got', sys.exc_type, sys.exc_value import oops safe(oops.oops) % python safe2.py Traceback (innermost last): File "safe2.py", line 5, in safe apply(entry, args) # catch everything else File "oops.py", line 4, in oops raise MyError, 'world' hello: world Got hello world
| I l@ve RuBoard |


Satisfiability (SAT) has been hot research topic, since SAT has shown high potential in verifying large systems [31]. SAT solvers work using satisfiability procedures in the core for propositional logic [14]. Propositional logic is predicate in which formula contains Boolean variables, known as atoms, and variables are connected using logical directives like conjunction, disjunction and negation. If is Boolean variable and, and are expressions built from Boolean variables, then we can define following formulas.
from fig:example:statemachine, is an example for formula constructed from above rules. And the formula can be evaluated to 0 or 1 based the values of all the variables. For example with , and assignment formula is evaluated to 0, and and assignment formula is evaluated to 1. This example illustrates, variables can be constrained through operators, for instance for formula to be 1, must be 1. Boolean Satisfiability of a formula is a process of finding an assignment which evaluates it to 1. In this example and assignment will make the formula to be evaluated to 1 and satisfy it. The formulas which cannot be satisfied with any possible assignment are called unsatisfiable. For example, cannot be satisfied with any assignments and hence unsatisfiable.
The SAT problem is NP-Complete [29]. Most SAT solvers use restricted representation of formulas in Conjunctive Normal Formula (CNF). A formula in Conjunctive Normal Form (CNF) is a congestion of clauses. A clause is disjunction of literals. A literal is a Boolean variable, or negation of Boolean variable. For example, , here is a clause with set of variables with or without negation. The approach for finding satisfiability differs in different tools. One of the commonly used approachs is DPLL [13]. In DPLL, given a CNF formula, the algorithm heuristically chooses an unassigned variable and assigns it a value, 0 or 1, this step is known as branching step. Then solver tries to simplify the consequences based on deduction rule. In deduction it tries to deduce if any of clause become 0. If one of the assignments leads 0, the algorithm back tracks since it will not lead to any satisfiability. Once it assigns a combination of values to all the variables which can be 1, the formula is said to be satisfiable.
ash 2012-09-13


Dear user, please go to this link:
${URL}
to change your password for Awesome service. If the link above is not clickable, then copy and paste it in your browser address bar.


Hosted by Firebase webservices
NX cloud database example
Open Hosting Documentation
Firebase SDK2 Loading…
Sign Out
Submit


Terminal AutoComplete
An autocomplete model can be also provided for the terminal, which will enable the autocompletion feature on the component.
Autocompletion can be triggered using the TAB key. In case there are more alternatives for arguments, these can be clicked to override the current input.


[gecode-users] Which version of MSVC on Windows?
Christian Schulte
cschulte at kth.se
Wed Feb 16 09:21:08 CET 2011
Actually, when I tried to compile Gecode with MSVC 2005 there were way more
errors than that (even central parts of the kernel would have to be
rewritten in order to compile as there seems to be a quirk with friend
declarations).
So the difference is between _compiling_ and _using_ Gecode with MSVC 2005.
If you send me a patch I could add that to the trunk of Gecode but I would
still not say that 2005 is supported (actually, we just added a check in
Gecode's configure script that makes it barf if it does not find MSVC 2008
or better).
Cheers
Christian
--
Christian Schulte, web.ict.kth.se/~cschulte/
-----Original Message-----
From: users-bounces at gecode.org [mailto:users-bounces at gecode.org] On Behalf
Of Alin
Sent: Tuesday, February 15, 2011 11:08 PM
To: users at gecode.org
Subject: Re: [gecode-users] Which version of MSVC on Windows?
Alin <alin_pt at ...> writes:
>
> This error is a known bug in MSVC 2005
>
>
http://connect.microsoft.com/VisualStudio/feedback/details/101942/error-c266
6-3-overloads-have-similar-conversions
>
> and has a workaround, but I don't think it's worth it
>
>
http://connect.microsoft.com/VisualStudio/feedback/details/99178/the-compile
r-declares-an-invalid-built-in-operator#details
>
> Thanks for all the info, now I can continue,
> knowing that It's that compiler that does something wrong
> and not me :D
>
Well actually i still need to stick with MSVC 2005, so I modified the code
to
compile with MSVC 2005, it's not that much work, only had to help the
compiler
in deciding what type to use:
so what I did was to modify the files at the coresponding line
gecode\gist\gist.hpp(163)
gecode\gist\gist.hpp(167)
gecode\gist\gist.hpp(171)
gecode\gist\gist.hpp(175)
gecode\driver\options.hpp(362)
gecode\driver\options.hpp(366)
gecode\driver\options.hpp(370)
gecode\driver\options.hpp(374)
and do a static cast to int for the parameter of the
call: someobject[mustcast]
like this example:
from: _click[n_click++]
to: _click[static_cast<int>(n_click++)]
I imagine that there is no use in doing this for the new releases yourself,
but
if you want I can provide the modified source code to work with MSVC 2005 or
even the already compiled binary files (I compiled it only without gist
because
of configuration problems with qt, but this should be fixed soon)
Alin Gherman
_______________________________________________
Gecode users mailing list
users at gecode.org
https://www.gecode.org/mailman/listinfo/gecode-users
More information about the users
mailing list


BitPay.KeyUtils
Summary↑
| compressed_public_key(pem) | retrieves the compressed public key from a pem file |
| generate_pem() | generates a pem file |
| get_sin_from_pem(pem) | creates a base58 encoded SIN from a pem file |
| private_key(pem) | retrieves the private key as a base16 string from the pem file |
| sign(payload, pem) | signs the input with the key retrieved from the pem file |
Functions
retrieves the compressed public key from a pem file
generates a pem file
creates a base58 encoded SIN from a pem file
retrieves the private key as a base16 string from the pem file
signs the input with the key retrieved from the pem file


| Properties' Summary |
string
GraphicURL |
This is an url to the source bitmap for this graphic shape.
|
string
GraphicStreamURL |
This is an url to the stream ('in document' or linked graphic) for this graphic shape.
|
::com::sun::star::awt::XBitmap
GraphicObjectFillBitmap |
[ OPTIONAL ]
Deprecated. Use graphic property instead!
This is the bitmap that represents this graphic shape.
|
short
AdjustLuminance |
If this property is set, the luminance of this graphic shape is adjusted
by the given signed percent value.
|
short
AdjustContrast |
If this property is set, the contrast of this graphic shape is adjusted
by the given signed percent value.
|
short
AdjustRed |
If this property is set, the red channel of this graphic shape is
adjusted by the given signed percent value.
|
short
AdjustGreen |
If this property is set, the green channel of this graphic shape is
adjusted by the given signed percent value.
|
short
AdjustBlue |
If this property is set, the blue channel of this graphic shape is
adjusted by the given signed percent value.
|
double
Gamma |
If this property is set, the gama value of this graphic shape is
adjusted by the given value.
|
short
Transparency |
If this property is set, the transparency value of this graphic shape is
adjusted by the given unsigned percent value.
100% is fully transparent, 0 % is fully opaque.
|
ColorMode
GraphicColorMode |
This property selects the color mode that is used for rendering.
|
::com::sun::star::container::XIndexContainer
ImageMap |
[ OPTIONAL ]
This property contains a image map for this graphic.
|
::com::sun::star::graphic::XGraphic
Graphic |
[ OPTIONAL ]
This is the graphic that represents this graphic shape
|
| Properties' Details |
GraphicURL
string GraphicURL;
- Description
- This is an url to the source bitmap for this graphic shape.
|
|
GraphicStreamURL
string GraphicStreamURL;
- Description
- This is an url to the stream ('in document' or linked graphic) for this graphic shape.
|
|
GraphicObjectFillBitmap
::com::sun::star::awt::XBitmap GraphicObjectFillBitmap;
- Usage Restrictions
- optional
- Description
- Deprecated. Use graphic property instead!
This is the bitmap that represents this graphic shape.
|
|
AdjustLuminance
short AdjustLuminance;
- Description
- If this property is set, the luminance of this graphic shape is adjusted
by the given signed percent value.
|
|
AdjustContrast
short AdjustContrast;
- Description
- If this property is set, the contrast of this graphic shape is adjusted
by the given signed percent value.
|
|
AdjustRed
short AdjustRed;
- Description
- If this property is set, the red channel of this graphic shape is
adjusted by the given signed percent value.
|
|
AdjustGreen
short AdjustGreen;
- Description
- If this property is set, the green channel of this graphic shape is
adjusted by the given signed percent value.
|
|
AdjustBlue
short AdjustBlue;
- Description
- If this property is set, the blue channel of this graphic shape is
adjusted by the given signed percent value.
|
|
Gamma
double Gamma;
- Description
- If this property is set, the gama value of this graphic shape is
adjusted by the given value.
|
|
Transparency
short Transparency;
- Description
- If this property is set, the transparency value of this graphic shape is
adjusted by the given unsigned percent value.
100% is fully transparent, 0 % is fully opaque.
|
|
GraphicColorMode
ColorMode GraphicColorMode;
- Description
- This property selects the color mode that is used for rendering.
|
|
ImageMap
::com::sun::star::container::XIndexContainer ImageMap;
- Usage Restrictions
- optional
- Description
- This property contains a image map for this graphic.
- See also
- ::com::sun::star::image::ImageMap
|
|
Graphic
::com::sun::star::graphic::XGraphic Graphic;
- Usage Restrictions
- optional
- Description
- This is the graphic that represents this graphic shape
|
|
Copyright © 2013, The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.


--- title: Visa-friendly countries for conferences ---
Average ranking. Coming soon: ranking specific to countries of participants.
Fork this repo


--- layout: example categories: example/v1.0.0 version: v1.0.0 title: Leaflet layers control description: Use Leaflet's default layer switcher in Mapbox.js. tags: - layers ---


Before Change
f"{repr(field_set.address)}, so it must have exactly one source, but it has "
f"{len(binary_source_paths.files)}"
)
entry_point_path = binary_source_paths.files[0]
source_root = await Get(
SourceRoot,
SourceRootRequest,
SourceRootRequest.for_file(entry_point_path),
)
entry_point = PexBinarySources.translate_source_file_to_entry_point(
os.path.relpath(entry_point_path, source_root.path)
)
transitive_targets = await Get(TransitiveTargets, TransitiveTargetsRequest([field_set.address]))
After Change
pex_binary_defaults: PexBinaryDefaults,
pex_env: PexEnvironment,
) -> RunRequest:
entry_point, transitive_targets = await MultiGet(
Get(
ResolvedPexEntryPoint,
ResolvePexEntryPointRequest(field_set.entry_point, field_set.sources),


|
SetHashTable
v1.0
Store_management_with_set
|
#include <Store.hpp>
Public Member Functions | |
| Store ()=default | |
| Default constructor. | |
| Store (string n, string a, size_t c) | |
| Constructor. More... | |
| Store (Store &store) | |
| Constructor. More... | |
| ~Store () | |
| Destructor. | |
| string | getName () const |
| Gets name of this. More... | |
| void | setName (string n) |
| Sets name of this. More... | |
| string | getAddress () const |
| Gets address of this. More... | |
| void | setAddress (string a) |
| Sets address of this. More... | |
| size_t | getAnnualRevenue () const |
| Gets annual revenue of this. More... | |
| void | setAnnualRevenue (size_t r) |
| Sets annual revenue of this. More... | |
| string | sprintItems () |
| Prints information on a string. More... | |
| string | sprintAll () |
| Prints information on a string. More... | |
| string | sprintItemsOf () |
| Prints information on a string with selection. More... | |
| size_t | getItemsNumber () const |
| Gets size of this. More... | |
| string | sprintCategoryStock () |
| Prints stock information on a string. More... | |
| void | addItem (size_t k, Item *item) |
| Adds an item to the store. More... | |
| Item * | removeItem (size_t k) |
| Removes an item from the store. More... | |
| Item * | findItem (size_t k) |
| Finds an item in the store. More... | |
| void | updateItem (size_t k, string b, string m, float new_price, bool on_discount, size_t new_stock) |
| Updates an item in the store. More... | |
| size_t | totalStock () |
| Gets stock number of this. More... | |
Class representing a Store
| Store::Store | ( | string | n, |
| string | a, | ||
| size_t | c | ||
| ) |
Constructor.
Constructor with all fields
| [in] | n | store name |
| [in] | a | store address |
| [in] | c | store capacity |
| Store::Store | ( | Store & | store | ) |
| void Store::addItem | ( | size_t | k, |
| Item * | item | ||
| ) |
Adds an item to the store.
A new item with its key is added to the store.
| [in] | k | key |
| [in] | item | pointer to Item to insert with the given key |
| Item * Store::findItem | ( | size_t | k | ) |
Finds an item in the store.
The item with given key is searched in the store.
| [in] | k | key to search |
| string Store::getAddress | ( | ) | const |
Gets address of this.
Getter method for field _address
| size_t Store::getAnnualRevenue | ( | ) | const |
Gets annual revenue of this.
Getter method for field _annual_revenue
| size_t Store::getItemsNumber | ( | ) | const |
Gets size of this.
Total number of items of the store is calculated.
| string Store::getName | ( | ) | const |
Gets name of this.
Getter method for field _name
| Item * Store::removeItem | ( | size_t | k | ) |
Removes an item from the store.
The item with given key is removed from the store.
| [in] | k | key |
| void Store::setAddress | ( | string | a | ) |
Sets address of this.
Setter method for field _address
| [in] | a | store address |
| void Store::setAnnualRevenue | ( | size_t | r | ) |
Sets annual revenue of this.
Setter method for field _annual_revenue
| [in] | r | store annual revenue |
| void Store::setName | ( | string | n | ) |
Sets name of this.
Setter method for field _name
| [in] | n | store name |
| string Store::sprintAll | ( | ) |
Prints information on a string.
A string with information of all items of the store is built.
| string Store::sprintCategoryStock | ( | ) |
Prints stock information on a string.
A string with stock number information for all category of product is built.
| string Store::sprintItems | ( | ) |
Prints information on a string.
A string with information of all items of the store is built.
| string Store::sprintItemsOf | ( | ) |
Prints information on a string with selection.
A string with information of all items of the store is built. The string is divided by category.
| size_t Store::totalStock | ( | ) |
Gets stock number of this.
Total number of stocked items of the store is calculated.
| void Store::updateItem | ( | size_t | k, |
| string | b, | ||
| string | m, | ||
| float | new_price, | ||
| bool | on_discount, | ||
| size_t | new_stock | ||
| ) |
Updates an item in the store.
The item with given key in the store is updated with new parameters values.
| [in] | k | item key to update |
| [in] | b | item brand |
| [in] | m | item model |
| [in] | new_price | item price |
| [in] | on_discount | item on discount flag |
| [in] | new_stock | item stock number |


Press n or j to go to the next uncovered block, b, p or k for the previous block.
| File | Statements | Branches | Functions | Lines | |||||
|---|---|---|---|---|---|---|---|---|---|
| src |
|
100% | 3/3 | 100% | 0/0 | 100% | 0/0 | 100% | 3/3 |
| src/app/adminDashboard |
|
100% | 41/41 | 50% | 3/6 | 100% | 15/15 | 100% | 27/27 |
| src/app/catalog |
|
100% | 22/22 | 100% | 0/0 | 100% | 10/10 | 100% | 18/18 |
| src/app/catalog/catalog-product |
|
81.82% | 171/209 | 68.18% | 30/44 | 73.81% | 31/42 | 78.24% | 133/170 |
| src/app/dialogs |
|
83.9% | 99/118 | 57.14% | 24/42 | 90.91% | 20/22 | 84.4% | 92/109 |
| src/app/dialogs/add-card-dialog |
|
100% | 11/11 | 100% | 0/0 | 100% | 5/5 | 100% | 10/10 |
| src/app/dialogs/card-select-dialog copy |
|
96.15% | 50/52 | 50% | 2/4 | 100% | 15/15 | 94.87% | 37/39 |
| src/app/dialogs/confirmation-dialog |
|
100% | 20/20 | 50% | 2/4 | 100% | 6/6 | 100% | 18/18 |
| src/app/userDashboard |
|
100% | 62/62 | 62.5% | 5/8 | 100% | 19/19 | 100% | 45/45 |
| src/app/userProfile |
|
100% | 57/57 | 70% | 7/10 | 100% | 17/17 | 100% | 46/46 |
| src/testing |
|
100% | 19/19 | 100% | 2/2 | 100% | 8/8 | 100% | 19/19 |


{% extends 'layout.html' %} {% block head %} {{ head|raw }} {% endblock %} {% block content %}
Embed with:
Or in Markdown:
Some people don't really appreciate too much bling, so here's compact=true
:
https://nodei.co/npm/through.png?compact=true
Really don't like clutter but don't want to be left out? Try mini=true
:
https://nodei.co/npm/readable-stream.png?mini=true
Add downloads=true
to the image URL query string:
https://nodei.co/npm/moment.png?downloads=true
Add stars=true
to the image URL query string:
https://nodei.co/npm/ecstatic.png?stars=true
Or both stars and downloads:
https://nodei.co/npm/async.png?downloads=true&stars=true
So, we have the download data per-day so why not do something interesting with it?
Embed with: <a href="https://nodei.co/npm/<package>/"><img src="https://nodei.co/npm-dl/<package>.png">
Or in Markdown: [![NPM](https://nodei.co/npm/<package>.png)](https://nodei.co/npm-dl/<package>/)
https://nodei.co/npm-dl/xtend.png
By adding months=X
to the query string where X
is a number between 1 and 12, you can change the range:
https://nodei.co/npm-dl/xtend.png?months=9
https://nodei.co/npm-dl/xtend.png?months=6
{% endblock %}


DraftJS Plugin Editor
A Plugin Architecture on top of DraftJS.
Available Plugins
Stickers
Hashtags
Linkify
@mentions (coming soon…)


{% extends 'base.html' %}
{% block content %}
Feel free to send us an E-mail or contact us by phone regarding false informations, errors, or requests.
We will do our best to respond within 24 hours.
Call us now
052-205-6270 📱


Overview
SEAM (Simple Extensible Abstract Machine) is a
virtual machine architecture and library. SEAM is designed to be
language- and platform-independent, to be simple
and based on few principled services.
- Uniform data representation and memory management.
All datastructures used to represent computations, including code and
threads, reside in an abstract store, which represents
an abstract graph of data nodes.
Language specific datastructures are modelled on top of the
language-independent store structures. The store manages the allocation
of nodes and their efficient layout in memory.
- Platform-independent external representation.
Store values are converted to a portable representation during
export (pickling), and converted back during
import (unpickling). A language-independent
transfer language is defined
to describe values independent from platform.
Unpickling operates with respect to runtime-pluggable
language-dependent transformation. For example, language specific code
can be instantiated either to byte code or to native code.
- Abstract execution model.
Computations are defined by a generic evaluator interface.
SEAM supports arbitrarily many codes and
evaluators to be used at the same time and interact freely. In particular,
common virtual machine services like foreign
function interfaces are easily expressible.
SEAM is used successfully to implement the new virtual machine underlying
the Alice Programming System.
News
- 2004/10/04: preliminary "SEAM" home page online
- 2002/03/20: first version of "SEAM" VM is working
Funding
The SEAM Project is partially funded by the DFG (SFB
378, Project MI
6 - NEP).


Current search:
Value of parameter 'test':
Value of parameter 'test2':
Value of parameter 'test3':
Links without hash:
URL with single query parameter.
URL with two query parameters.
URL with single parameter but no value.
URL with two parameters but no values.
URL with two parameters one with and one without value.
Same links with hashes:
URL only with hash.
URL with no parameters, and with hash.
URL with single query parameter.
URL with two query parameters.
URL with single parameter but no value.
URL with two parameters but no values.
URL with two parameters one with and one without value.
Links generated from url:
test changed to 11
test2 changed to 22
test3 changed to 33
test changed to no value
test2 changed to no value
test3 changed to no value
test removed
test2 removed
test3 removed
Trimming slashes:
Trimming leading in '///test///':
Trimming trailing in '///test///':
Trimming all in '///test///':


Photostash Browser
This is a simple browser to view the photographs stored in the Photostash. Use this as an example of how to use the underlying API.
This is a simple browser to view the photographs stored in the Photostash. Use this as an example of how to use the underlying API.


This is a simple example to integrate Framework7 into Meteor routing. Click the link below...
List
Great, now try to swipe back the page to go back, like you would on iOS.
Home


Thank you for participating in our study. Please watch the video carefully before moving onto the study.


| Building | Person |
|---|---|
| Center Elementary | Gabrielle Argie |
| Gates Mills Elementary | Patricia Stephens |
| Lander Elementary | Chris D'Alessandro |
| Millridge Elementary | Sue Lyskowski |
| Middle School | Judy Marrotte |
| High School | Heather Wellendorf |
If you like, you can print the issue ticket below to fill out and bring to the Building Point Person.
Updated August 2019


Formats a button so that it appears either normal or depressed into the screen.
Syntax
PRESS.TOOL(bar_id, position, down)
Bar_id specifies the number or name of the toolbar in which you want to change the button appearance. For detailed information about bar_id, see ADD.TOOL.
Position specifies the position of the button within the toolbar. Position starts with 1 at the left side (if horizontal) or at the top (if vertical).
Down is a logical value specifying the appearance of the button. If down is TRUE, the button appears depressed into the screen; if FALSE or omitted, it appears normal (up).
Remarks
This function applies only to custom buttons to which macros have already been assigned. An error occurs if you try to process any other type of button.
Example
The following macro formula sets the third button image on Toolbar4 to normal (up).
PRESS.TOOL("Toolbar4", 3, FALSE)
Related Functions
ADD.TOOL Adds one or more buttons to a toolbar
DELETE.TOOL Deletes a button from a toolbar
Return to index


Property ReceivedBytes ReceivedBytes The number of bytes received. Declaration public int ReceivedBytes { get; set; } Property Value Type Description System.Int32