referenced
by Christina Chortaria at 2021-03-17 12:44:57.merged
by Christina Chortaria at 2021-03-17 12:44:57.closed
by Christina Chortaria at 2021-03-17 12:44:57.head_ref_deleted
by Christina Chortaria at 2021-03-17 12:44:58.labeled
by Christina Chortaria at 2021-03-17 13:20:14.if avail.empty? 12 | render plain: "Record(s): #{ids_param} not found.", status: 404 13 | else
check for .blank?
renamed
by None at 2021-03-17 15:58:38.NetIDs have been manually added for only a few staff: https://github.com/pulibrary/bibdata/issues/932#issuecomment-763957859 NetIDs will be added for other users when the patron feed is updated (currently scheduled for March).
@pmgreen that's true but this happened with my account, which works fine with the netid directly to alma. It's something in the ruby code I think.
labeled
by None at 2021-03-17 14:04:28.labeled
by None at 2021-03-17 14:04:35.mentioned
by Peter Green at 2021-03-17 17:49:46.subscribed
by Peter Green at 2021-03-17 17:49:46.labeled
by None at 2021-03-17 15:58:13.assigned
by Hector Correa at 2021-03-17 17:53:30.head_ref_force_pushed
by None at 2021-03-17 12:20:47.ready_for_review
by None at 2021-03-17 12:36:05.deployed
by Trey Pendragon at 2021-03-17 19:53:17.deployed
by Trey Pendragon at 2021-03-17 14:08:07.Removes the duplicate label from the holding libraries when the library name and the location name are the same.
I noticed that the code 'warf' is not included in Alma::Location. Based on the previous template it refers to 'Western Americana: Reference Collection (WARF)'. @kevinreiss @mzelesky does this code need to be added in Alma? Or has it been replaced with another location code?
head_ref_force_pushed
by Christina Chortaria at 2021-03-18 00:36:28.mentioned
by Kevin Reiss at 2021-03-18 00:45:37.subscribed
by Kevin Reiss at 2021-03-18 00:45:38.mentioned
by None at 2021-03-18 00:45:38.subscribed
by None at 2021-03-18 00:45:38.labeled
by Christina Chortaria at 2021-03-18 01:42:09.head_ref_force_pushed
by Eliot Jordan at 2021-03-17 18:04:23.review_requested
by None at 2021-03-17 18:58:36.head_ref_force_pushed
by Eliot Jordan at 2021-03-17 19:22:59.referenced
by Eliot Jordan at 2021-03-17 21:44:24.merged
by Eliot Jordan at 2021-03-17 21:44:24.closed
by Eliot Jordan at 2021-03-17 21:44:24.head_ref_deleted
by Eliot Jordan at 2021-03-17 21:44:25.assigned
by Francis Kayiwa at 2021-03-17 17:28:59.These 32 items have been ingested into Figgy and added to the pudl0137 and Western Americana collections: https://figgy.princeton.edu/?f%5Bmember_of_collection_titles_ssim%5D%5B%5D=pudl0137
closed
by Esmé Cowles at 2021-03-17 12:53:07.head_ref_force_pushed
by Cliff Wulfman at 2021-03-17 16:43:45.review_requested
by Cliff Wulfman at 2021-03-17 22:38:27.I am not able to reproduce the failures for https://app.circleci.com/pipelines/github/pulibrary/lib_jobs/252/workflows/61cef521-4f0c-44e3-b65b-a013aae76275/jobs/735 locally. I will attempt to fix these on CircleCI.
The AddBatchRefToAbsoluteIds
migration looks to be running slightly differently on the CircleCI environment, and not creating the necessary batch_id
attribute for the AbsoluteId
Model.
Deprecating this by using these same commits in https://github.com/pulibrary/lib_jobs/pull/90
renamed
by James R. Griffin III at 2021-03-17 06:07:10.closed
by James R. Griffin III at 2021-03-17 16:36:27.https://github.com/pulibrary/lib_jobs/pull/90/commits/1878509fbee2b8692f9c2618f01972c136a71d0f and https://github.com/pulibrary/lib_jobs/pull/90/commits/30a6be4fe058d7db99090d268f7a6136b06a683f resolved this. I still could not reproduce this locally, and should note that I am using the same Ruby version, as well as SQLite in both environments.
Perhaps the version of SQLite is the problem with this? For my MacBook, I am using release SQLite version 3.32.3
, while on CircleCI, the release SQLite version 3.27.2
is being used.
head_ref_force_pushed
by James R. Griffin III at 2021-03-17 16:34:57.base_ref_changed
by James R. Griffin III at 2021-03-17 16:35:24.ready_for_review
by James R. Griffin III at 2021-03-17 16:37:27.referenced
by Trey Pendragon at 2021-03-17 17:00:18.merged
by Trey Pendragon at 2021-03-17 17:00:18.closed
by Trey Pendragon at 2021-03-17 17:00:18.head_ref_deleted
by Trey Pendragon at 2021-03-17 17:00:41.referenced
by James R. Griffin III at 2021-03-17 17:24:20.merged
by James R. Griffin III at 2021-03-17 17:24:20.closed
by James R. Griffin III at 2021-03-17 17:24:20.head_ref_deleted
by James R. Griffin III at 2021-03-17 17:24:23.Any particular reason this is a TSV instead of a CSV @kelynch? Most of our stuff generates CSVs.
mentioned
by Kate Lynch at 2021-03-17 17:42:08.subscribed
by Kate Lynch at 2021-03-17 17:42:08.base_ref_force_pushed
by James R. Griffin III at 2021-03-17 16:34:57.automatic_base_change_succeeded
by Trey Pendragon at 2021-03-17 17:00:40.head_ref_force_pushed
by James R. Griffin III at 2021-03-17 17:39:10.ready_for_review
by James R. Griffin III at 2021-03-17 17:43:33.closed
by James R. Griffin III at 2021-03-17 17:47:41.closed
by James R. Griffin III at 2021-03-17 17:47:44.base_ref_force_pushed
by James R. Griffin III at 2021-03-17 17:39:10.head_ref_force_pushed
by James R. Griffin III at 2021-03-17 17:47:19.head_ref_force_pushed
by James R. Griffin III at 2021-03-17 17:55:48.labeled
by James R. Griffin III at 2021-03-17 17:57:20.labeled
by James R. Griffin III at 2021-03-17 18:00:16.https://github.com/pulibrary/princeton_ansible/compare/jrgriffiniii-lib_jobs-staging-redis is what I had introduced on to the Ansible Role.
What I am finding on the server is that, in spite of working off of this branch in Ansible, I do not see the Rails ENV variables being parsed:
https://github.com/pulibrary/princeton_ansible/compare/jrgriffiniii-lib_jobs-staging-redis#diff-327b1d1f31381f2168cc20f12aeb9aa098ed43f1e4a8cfc3dd1bb4cf8b25fa46 has
rails_app_vars:
- name: ASPACE_URL
value: '{{ vault_lib_jobs_staging_aspace_url }}'
- name: ASPACE_USER
value: '{{ vault_lib_jobs_staging_aspace_user }}'
- name: ASPACE_PASSWORD
value: '{{ vault_lib_jobs_staging_aspace_password }}'
- name: PULMAP_REDIS_URL
value: 'localhost'
- name: PULMAP_REDIS_DB
value: '0'
And on the server, this is set with:
deploy@lib-jobs-staging1:/opt/lib-jobs$ printenv | grep ASPACE
ASPACE_URL=https://aspace-staging.princeton.edu/staff/api
ASPACE_PASSWORD=$SECRET
ASPACE_USER=$USER
I just kicked the workers and it seems fine. Closing.
assigned
by James R. Griffin III at 2021-03-17 17:34:29.unassigned
by James R. Griffin III at 2021-03-17 17:49:03.assigned
by Trey Pendragon at 2021-03-17 17:49:33.closed
by Trey Pendragon at 2021-03-17 18:15:08.Perhaps #89 and #90 should be merged before this is? Doing so would permit me to restore the branch protections for this.
I'm going to rebase this on #90 and set this to a draft PR.
convert_to_draft
by James R. Griffin III at 2021-03-17 16:39:50.head_ref_force_pushed
by James R. Griffin III at 2021-03-17 16:40:28.head_ref_force_pushed
by James R. Griffin III at 2021-03-17 18:14:41.ready_for_review
by James R. Griffin III at 2021-03-17 18:15:59.labeled
by James R. Griffin III at 2021-03-17 18:08:11.assigned
by James R. Griffin III at 2021-03-17 18:19:58.assigned
by Trey Pendragon at 2021-03-17 18:50:44.convert_to_draft
by Trey Pendragon at 2021-03-17 19:10:17.head_ref_force_pushed
by Trey Pendragon at 2021-03-17 19:12:22.ready_for_review
by Trey Pendragon at 2021-03-17 19:16:01.referenced
by James R. Griffin III at 2021-03-17 21:47:30.merged
by James R. Griffin III at 2021-03-17 21:47:30.closed
by James R. Griffin III at 2021-03-17 21:47:30.head_ref_deleted
by James R. Griffin III at 2021-03-17 21:47:33.Coverage remained the same at 96.584% when pulling 71268487eda8204b82d65aadd44446bba413e627 on close-recap into b8521b42aa2f4afa5bca809f068ec323d46410a1 on main.
deployed
by Trey Pendragon at 2021-03-17 19:15:46.convert_to_draft
by None at 2021-03-17 19:28:47.Coverage remained the same at 96.584% when pulling d9cf6a5fd38ac8e20cf7c19727426bcf129d36d6 on clancy into b8521b42aa2f4afa5bca809f068ec323d46410a1 on main.
head_ref_force_pushed
by None at 2021-03-17 19:42:38.Coverage increased (+0.03%) to 96.613% when pulling 6fad94ebafd60b0e8009a135c6d94ddcec04291d on 2273-electronic-alma into b8521b42aa2f4afa5bca809f068ec323d46410a1 on main.
@christinach I added some fixture data and a test to show how embargoed dates are displayed. However, the logic that calculates the embargoed date is in bibdata.
head_ref_force_pushed
by Eliot Jordan at 2021-03-17 15:27:05.head_ref_force_pushed
by Eliot Jordan at 2021-03-17 15:27:22.review_requested
by Eliot Jordan at 2021-03-17 15:28:02.head_ref_force_pushed
by Eliot Jordan at 2021-03-17 18:51:45.head_ref_force_pushed
by Eliot Jordan at 2021-03-17 19:01:37.review_requested
by Eliot Jordan at 2021-03-17 19:02:25.mentioned
by Christina Chortaria at 2021-03-17 19:03:55.subscribed
by Christina Chortaria at 2021-03-17 19:03:55.head_ref_force_pushed
by Francis Kayiwa at 2021-03-17 13:18:57.referenced
by Francis Kayiwa at 2021-03-17 13:24:26.head_ref_force_pushed
by Francis Kayiwa at 2021-03-17 13:24:26.referenced
by Francis Kayiwa at 2021-03-17 13:27:37.closed
by Francis Kayiwa at 2021-03-17 13:28:16.head_ref_deleted
by Francis Kayiwa at 2021-03-17 13:28:20.referenced
by None at 2021-03-17 13:38:21.referenced
by None at 2021-03-17 13:38:20.merged
by None at 2021-03-17 13:38:20.closed
by None at 2021-03-17 13:38:21.head_ref_deleted
by None at 2021-03-17 13:38:21.happened again https://app.honeybadger.io/projects/54399/faults/52176374. Looked into this with @hectorcorrea
mentioned
by Hector Correa at 2021-03-17 13:53:39.subscribed
by Hector Correa at 2021-03-17 13:53:39.This is updated now as :ol_staging_solr_url: 'http://lib-solr8-staging.princeton.edu:8983/solr/catalog-staging'
closed
by Christina Chortaria at 2021-03-17 14:38:08.head_ref_force_pushed
by Francis Kayiwa at 2021-03-17 15:41:59.head_ref_force_pushed
by None at 2021-03-17 13:40:12.referenced
by None at 2021-03-17 17:33:53.merged
by None at 2021-03-17 17:33:53.closed
by None at 2021-03-17 17:33:53.head_ref_deleted
by None at 2021-03-17 17:33:53.head_ref_force_pushed
by None at 2021-03-17 13:41:10.review_requested
by None at 2021-03-17 17:34:22.referenced
by Axa Mei Liauw at 2021-03-17 17:56:49.merged
by Axa Mei Liauw at 2021-03-17 17:56:49.closed
by Axa Mei Liauw at 2021-03-17 17:56:49.head_ref_deleted
by Axa Mei Liauw at 2021-03-17 17:56:50.head_ref_force_pushed
by None at 2021-03-17 12:40:51.head_ref_force_pushed
by None at 2021-03-17 13:38:48.review_requested
by None at 2021-03-17 17:35:05.referenced
by Kevin Reiss at 2021-03-17 18:14:29.merged
by Kevin Reiss at 2021-03-17 18:14:29.closed
by Kevin Reiss at 2021-03-17 18:14:29.head_ref_deleted
by Kevin Reiss at 2021-03-17 18:14:29.head_ref_force_pushed
by None at 2021-03-17 13:39:46.review_requested
by None at 2021-03-17 17:34:49.referenced
by Kevin Reiss at 2021-03-17 18:14:45.merged
by Kevin Reiss at 2021-03-17 18:14:45.closed
by Kevin Reiss at 2021-03-17 18:14:45.head_ref_deleted
by Kevin Reiss at 2021-03-17 18:14:46.renamed
by None at 2021-03-17 19:58:07.review_requested
by None at 2021-03-17 19:58:14.closed
by Bess Sadler at 2021-03-17 20:30:46.head_ref_force_pushed
by Francis Kayiwa at 2021-03-17 15:39:24.referenced
by Bess Sadler at 2021-03-17 20:30:46.merged
by Bess Sadler at 2021-03-17 20:30:46.closed
by Bess Sadler at 2021-03-17 20:30:47.head_ref_deleted
by Bess Sadler at 2021-03-17 20:30:47.convert_to_draft
by Trey Pendragon at 2021-03-17 16:57:49.milestoned
by Christa Cleeton at 2021-03-17 15:21:41.mentioned
by Trey Pendragon at 2021-03-17 15:21:41.subscribed
by Trey Pendragon at 2021-03-17 15:21:41.labeled
by Trey Pendragon at 2021-03-17 16:50:49.assigned
by Trey Pendragon at 2021-03-17 16:50:50.referenced
by Trey Pendragon at 2021-03-17 16:51:10.referenced
by Trey Pendragon at 2021-03-17 16:54:52.milestoned
by Christa Cleeton at 2021-03-17 19:20:30.Discussed with PS. They use the request notes per transaction for staff use. Lets roll it out in the current model where it applies to every TN in the cart. (We might have to come back to this and have it apply to each transaction separately/possibly offer the option to apply to all or just one?) Can those options be investigated in the meantime?
The only other thing to roll this out in production would be to add a explanation/description to the note. Maybe a hover over bubble?
@ccleeton Hover bubbles don't work for mobile users, but maybe we can keep it short and keep it in the input field hint. What would the explanation/description say? Something like "Notes to Special Collections staff"?
The sense I got was that we want users to know it will apply to all things in the cart. But I like the notes to staff part.
mentioned
by Christa Cleeton at 2021-03-17 19:35:35.subscribed
by Christa Cleeton at 2021-03-17 19:35:35.closed
by Shaun Ellis at 2021-03-17 20:04:51.It does display in pulfa2: https://pulfa.princeton.edu/collections/C1165. We most often used @ role ="cre" twice rather than using "cre" and/or "col" since "creator" and "collector" really can be used interchangeably/ are kind of the same thing. One entity created the collection, one created the materials. Does that makes sense? Sorry, not being super articulate here. So yes, please display both/all.
That example is exactly what I needed, thanks!
milestoned
by None at 2021-03-17 21:48:15.Public Services discussed this in our meeting today. We have a few staff related reasons we would want the top container notes to display in the finding aid. We discussed the security concerns and have felt they are not an issue. Mainly we write the location on the call slips, the locations don't mean anything to the regular user. Public Maps do not display zone information. @faithc Could you bring this to ADAPT and make sure you all agree.
Thanks, @ccleeton. This may already be known, but the issue is that location info that had previously been public (like folder, cabinet, etc.) as well as location info that had been internal (like compartment letters and sections within compartments)--the data were in separate sections of EADs-- were both added to the same notes field in ASpace since that is seemingly the only place these text notes could go. I'll check in with ADAPT, but if PS is ok with this info displaying on the site, then it's probably fine?  All of this info will be automatically routed to Aeon/call slips, right?
mentioned
by None at 2021-03-17 19:10:14.subscribed
by None at 2021-03-17 19:10:14.mentioned
by Christa Cleeton at 2021-03-17 22:01:28.subscribed
by Christa Cleeton at 2021-03-17 22:01:28.labeled
by Trey Pendragon at 2021-03-17 22:22:30.milestoned
by Trey Pendragon at 2021-03-17 22:22:30.mentioned
by None at 2021-03-17 22:22:30.subscribed
by None at 2021-03-17 22:22:30.unsubscribed
by None at 2021-03-17 22:22:49.assigned
by Eliot Jordan at 2021-03-17 22:40:14.Coverage remained the same at 100.0% when pulling b02bc6bf83876880fd829c545fde58a525874c21 on 917-gbl-3.3 into 5809f77d8827f494d032040cdf576b19a78d4378 on main.
deployed
by Trey Pendragon at 2021-03-17 23:37:50.referenced
by None at 2021-03-17 19:03:52.merged
by None at 2021-03-17 19:03:52.closed
by None at 2021-03-17 19:03:52.head_ref_deleted
by None at 2021-03-17 19:03:55.head_ref_force_pushed
by None at 2021-03-17 17:23:08.head_ref_force_pushed
by None at 2021-03-17 19:10:11.head_ref_force_pushed
by None at 2021-03-17 19:11:41.convert_to_draft
by None at 2021-03-17 19:30:59.


Meet Now on Skype makes it easy to invite anyone to a Skype call
Now, anyone can jump into a Skype call with ease.
by Sean EndicottSource: Windows Central
What you need to know
- The latest Skype Insider build has a new feature called "Meet Now."
- The feature allows you to easily invite anyone to a Skype call, including people who don't have Skype accounts.
- The recent update also allows you to edit and view videos and photos before sending them.
The latest Skype Insider build has a new feature called "Meet Now" that makes it easy to invite anyone to a Skype call. With the feature, you can create a link to a call that can be shared with anyone, including people who don't have a Skype account. As pointed out by OnMSFT, Meet Now also creates a group chat for anyone that has a Skype account.
Bundle Disney+, Hulu, and ESPN+ for just $13/month
A post from Microsoft breaks down all of the new features in the latest build,
Meet Now on Skype: With this new feature you will be able easily set up a call on Skype and share a link to friends, family or colleagues. They don't even need to have a Skype account to join the call! Improved photo sharing experience on Android: There are now new options for editing and reviewing photos and videos before sharing them on Skype.
All of Microsoft's iOS and Android beta programs, and how to sign up
In addition to the Meet Now feature, the latest preview build also adds the ability to edit and review photos and videos before sending them through Skype.
Skype Insider Preview
Skype allows you to message, call, and video call millions of people around the world.
We may earn a commission for purchases using our links. Learn more.


Types
Content
An element can specify popup content to appear
Title
An element can specify popup content with a title
HTML
An element can specify html for a popup
Pre-Existing
An element can display a popup that is already included in the page
Variations
Basic
A popup can provide more basic formatting
Width
A popup can be extra wide to allow for longer content
Fluid
A fluid popup will take up the entire width of its offset container
Size
A popup can vary in size
Flowing
A popup can have no maximum width and continue to flow to fit its content
Basic Plan
2 projects, $10 a month
Business Plan
5 projects, $20 a month
Premium Plan
8 projects, $25 a month
Inverted
A popup can have its colors inverted
Usage
Initializing A Popup
A popup is initialized on an activating element
Using a Pre-existing Popup
Using a pre-existing popup allows for you to include complex html inside your popup.
If you include your popup on page load as an adjacent sibling element to your activating element it can be found automatically.
To instruct popup to look inline for your popup element you can initialize it with the inline
parameter
Using a Pre-existing Popup Anywhere
If you cannot include your popup element as a sibling element, you can specify a custom selector to retrieve your popup
Specifying Content In Metadata
Frequently used settings like, title, content, html, or offset or variation, can be included in html metadata
Specifying Content In Javascript
Behavior
All the following behaviors can be called using the syntax:
| Behavior | Description |
|---|---|
| show | Shows popup |
| hide | Hides popup |
| hide all | Hides all visible pop ups on the page |
| toggle | Toggles visibility of popup |
| is visible | Returns whether popup is visible |
| is hidden | Returns whether popup is hidden |
| exists | Returns whether popup is created and inserted into the page |
| reposition | Adjusts popup when content size changes (only necessary for centered popups) |
| set position(position) | Repositions a popup |
| destroy | Removes popup from the page and removes all events |
| remove popup | Removes popup from the page |
Examples
Wide Popup Menu
An easier way to display complex content, like a wide popup menu is to have the popup content as a pre- existing part of your page's html.
Using the setting inline: true
will let Semantic know to display the next sibling ui popup
element after the activator.
Tweaking settings like the delay for show, and hide, and making the menu hoverable will help it function more like a dropdown menu
Specifying a selector for a popup
If its not possible to include the popup content as the next sibling, you can also specify a custom selector to help link the popup contents to its activator.
Specifying a trigger event
A popup trigger event can be specified
Target Element
A popup can specify a different target element than itself to show a popup
Inline or relative to page
A popup can either be inserted directly after an element, or added as a child element to the page's body
.
Positioning
A popup can be positioned to any side of an element. If space is not available, it will automatically search for a similar alternative position to use.
Specifying an offset
A popup position can be adjusted manually by specifying an offset property using data-offset="value"
Transitions
A popup can use any named ui transition.
Home
Popup Settings
Settings to configure popup behavior
| Setting | Default | Description |
|---|---|---|
| context | body | Selector or jquery object specifying where the popup should be created |
| position | top center | Position that the popup should appear |
| inline | false | If a popup is inline it will be created next to current element, allowing for local css rules to apply. It will not be removed from the DOM after being hidden. Otherwise popups will appended to body and removed after being hidden. |
| prefer | adjacent | Can be set to adjacent or opposite to prefer adjacent or opposite position if popup cannot fit on screen |
| lastResort | false | When set to default value false, a popup will not appear and produce an error message if it cannot entirely fit on page. Setting this to a position like, right center forces the popup to use this position as a last resort even if it is partially offstage. |
| preserve | true | Whether popup contents should be preserved in the page after being hidden, allowing it to re-appear slightly faster on subsequent loads. |
| on | hover | Event used to trigger popup. Can be either focus, click, hover, or manual. Manul popups must be triggered with $('.element').popup('show'); |
| delay |
delay: {
show: 50,
hide: 0
}
|
Delay in milliseconds before showing or hiding a popup on hover or focus |
| transition | slide down | Named transition to use when animating menu in and out. Fade and slide down are available without including ui transitions |
| duration | 200 | Duration of animation events |
| hideOnScroll | auto | Whether popup should hide on scroll and touchmove, auto only hides for popups withohut on:click |
| setFluidWidth | true | Whether popup should set fluid popup variation width on load to avoid width: 100% including padding |
| hoverable | false | Whether popup should not close on hover (useful for popup navigation menus) |
| closable | true | When using on: 'click' specifies whether clicking the page should close the popup |
| target | false | If a selector or jQuery object is specified this allows the popup to be positioned relative to that element. |
| distanceAway | 0 | Offset for distance of popup from element |
| offset | 0 | Offset in pixels from calculated position |
| maxSearchDepth | 10 | Number of iterations before giving up search for popup position when a popup cannot fit on screen |
Callbacks
Callbacks specify a function to occur after a specific behavior.
| Parameters | Context | Description | |
|---|---|---|---|
| onCreate | $module | $popup | Callback on popup element creation, with created popup |
| onRemove | $module | $popup | Callback immediately before Popup is removed from DOM |
| onShow | $module | $popup | Callback before popup is shown |
| onVisible | $module | $popup | Callback after popup is shown |
| onHide | $module | $popup | Callback before popup is hidden |
| onHidden | $module | $popup | Callback after popup is hidden |
Content Settings
Settings to specify popup contents
| Setting | Description |
|---|---|
| variation | Popup variation to use, can use multiple variations with a space delimiter |
| content | Content to display |
| title | Title to display alongside content |
| html | HTML content to display instead of preformatted title and content |
DOM Settings
DOM settings specify how this module should interface with the DOM
| Setting | Default | Description |
|---|---|---|
| namespace | popup | Event namespace. Makes sure module teardown does not effect other events attached to an element. |
| selector |
selector : {
popup : '.ui.popup'
}
|
DOM Selectors used internally |
| metadata |
metadata: {
content : 'content',
html : 'html',
offset : 'offset',
position : 'position',
title : 'title',
variation : 'variation'
}
|
HTML Data attributes used to store data |
| className |
className : {
loading : 'loading',
popup : 'ui popup',
position : 'top left center bottom right',
visible : 'visible'
}
|
Class names used to attach style to state |
Debug Settings
Debug settings controls debug output to the console
| Setting | Default | Description |
|---|---|---|
| name | Popup | Name used in debug logs |
| debug | False | Provides standard debug output to console |
| performance | True | Provides standard debug output to console |
| verbose | True | Provides ancillary debug output to console |
| errors |
error: {
content : 'Your popup has no content specified',
method : 'The method you called is not defined.',
recursion : 'Popup attempted to reposition element to fit, but could not find an adequate position.'
}
|


Name Bob Carolgees
You can contact them in the following ways:
Telephone calls 0768 432 4532
Emails<EMAIL_ADDRESS>Letters McDonalds Big Posh Office That There London LW3 7YT
Edit employer contact details


Poaching is when humans kill wild animals for their skins,tusks and horns for valiable things
Humans use animals skins,horns and trunks for valiable stuff and they sell it for alot of money.
When people kill animals.We are reducing the amount of animals and tourist to come to our country and we do not get foreign exchange.
Examples of animals been poached.
Rhinos are getting exstint(not left in the world) very fast.People use the rhino horns for chines traditional medicine.
Leopards are wild cats.People poach jaguars for their skin.The skin is used for making clothes and carpets.
Elephant tusks are used for jewelry,pianokeys and other more
© All Rights Reserved by Webublogoverflow.blogspot -(with all love)
© All Rights Reserved by Earlycamp


NFL Legends, Fans Erupt After Myles Garrett's Vicious Helmet Attack on Mason Rudolph
by Warner Todd HustonNear the end of Thursday night’s game between the Cleveland Browns and the Pittsburgh Steelers, a brief melee erupted where Browns lineman Myles Garrett swung a helmet at the exposed head of Steelers quarterback Mason Rudolph.
Reactions have been swift with few standing up for Garrett. The Browns player has seen near universal condemnation for his actions. Reactions range from believing Garrett should be suspended for using a helmet like a weapon, to others who believe the Browns defender should be arrested and prosecuted for the attack.
Follow Warner Todd Huston on facebook.com/Warner.Todd.Huston.


Dependencies
Reflexiv is written in Java
and built on top of the Apache Spark platform. To use Reflexiv, make sure you have a Java-1.7
or higher version installed in your operating system. The Spark framework is also required to be pre-installed (Reflexiv can all install a pre-built Spark for you). A Spark cluster should be properly configured before running Reflexiv in the cluster mode.
Spark installation
There are different ways to install Spark on your computer. Please visit the Spark Download web page and choose a download method of your preference. If you would like to build Spark from source, please visit the Building Spark web page.
You can directly jump to Reflexiv installation, where Reflexiv will download a pre-built Spark package (version 2.0.0) for you.
Here is a simple way to download the Spark pre-built package (version 2.0.0) by using command:
$ wget http://archive.apache.org/dist/spark/spark-2.0.0/spark-2.0.0-bin-hadoop2.6.tgz
After downloading, untar the package:
$ tar zxvf spark-2.0.0-bin-hadoop2.6.tgz
Go to the unpacked Spark directory. Under the ./bin
folder, you should see an executable file spark-submit
:
$ cd ./spark-2.0.0-bin-hadoop2.6
$ ./bin/spark-submit
Options: --master MASTER_URL spark://host:port, mesos://host:port, yarn, or local. --deploy-mode DEPLOY_MODE Whether to launch the driver program locally ("client") or on one of the worker machines inside the cluster ("cluster") (Default: client). --class CLASS_NAME Your application's main class (for Java / Scala apps). --name NAME A name of your application. --jars JARS Comma-separated list of local jars to include on the driver and executor classpaths. --packages Comma-separated list of maven coordinates of jars to include on the driver and executor classpaths. Will search the local maven repo, then maven central and any additional remote repositories given by --repositories. The format for the coordinates should be groupId:artifactId:version. --exclude-packages Comma-separated list of groupId:artifactId, to exclude while resolving the dependencies provided in --packages to avoid dependency conflicts. --repositories Comma-separated list of additional remote repositories to search for the maven coordinates given with --packages. --py-files PY_FILES Comma-separated list of .zip, .egg, or .py files to place on the PYTHONPATH for Python apps. --files FILES Comma-separated list of files to be placed in the working directory of each executor. --conf PROP=VALUE Arbitrary Spark configuration property. --properties-file FILE Path to a file from which to load extra properties. If not specified, this will look for conf/spark-defaults.conf. --driver-memory MEM Memory for driver (e.g. 1000M, 2G) (Default: 1024M). --driver-java-options Extra Java options to pass to the driver. --driver-library-path Extra library path entries to pass to the driver. --driver-class-path Extra class path entries to pass to the driver. Note that jars added with --jars are automatically included in the classpath. --executor-memory MEM Memory per executor (e.g. 1000M, 2G) (Default: 1G). --proxy-user NAME User to impersonate when submitting the application. This argument does not work with --principal / --keytab. --help, -h Show this help message and exit. --verbose, -v Print additional debug output. --version, Print the version of current Spark. Spark standalone with cluster deploy mode only: --driver-cores NUM Cores for driver (Default: 1). Spark standalone or Mesos with cluster deploy mode only: --supervise If given, restarts the driver on failure. --kill SUBMISSION_ID If given, kills the driver specified. --status SUBMISSION_ID If given, requests the status of the driver specified. Spark standalone and Mesos only: --total-executor-cores NUM Total cores for all executors. Spark standalone and YARN only: --executor-cores NUM Number of cores per executor. (Default: 1 in YARN mode, or all available cores on the worker in standalone mode) YARN-only: --driver-cores NUM Number of cores used by the driver, only in cluster mode (Default: 1). --queue QUEUE_NAME The YARN queue to submit to (Default: "default"). --num-executors NUM Number of executors to launch (Default: 2). If dynamic allocation is enabled, the initial number of executors will be at least NUM. --archives ARCHIVES Comma separated list of archives to be extracted into the working directory of each executor. --principal PRINCIPAL Principal to be used to login to KDC, while running on secure HDFS. --keytab KEYTAB The full path to the file that contains the keytab for the principal specified above. This keytab will be copied to the node running the Application Master via the Secure Distributed Cache, for renewing the login tickets and the delegation tokens periodically.
Set the environment variable (ENV) SPARK_HOME to your unpacked Spark directory:
$ pwd
Then, copy the listed full path.
Set the environment variable in your bash profile by:
$ vi /home/ec2-user/.bash_profile
or $ vi /home/ec2-user/.profile
Where ec2-user refers to your own user name. Paste the full path in the file and set as ENV SPARK_HOME.
# bash_profile export SPARK_HOME="/vol/ec2-user/spark-2.0.0-bin-hadoop2.6"
Reload changes in the file:
$ source /home/ec2-user/.bash_profile
Now Reflexiv should be able to use the Spark framework.
-
If you do not have
wget
installed, use thecurl
command instead:curl http://archive.apache.org/dist/spark/spark-2.0.0/spark-2.0.0-bin-hadoop2.6.tgz -o spark-2.0.0-bin-hadoop2.6.tgz
-
Reflexiv uses the
spark-submit
executable to submit Reflexiv applications to the Spark cluster. As long as Reflexiv finds the full path ofspark-submit
, Reflexiv will work properly.
Reflexiv installation
Download the Reflexiv package from github in zipball:
$ wget https://github.com/rhinempi/Reflexiv/archive/latest.zip -O ./Reflexiv.zip
If you do not have wget
installed:
$ curl -fsSL https://github.com/rhinempi/Reflexiv/archive/latest.zip -o ./Reflexiv.zip
Or in tarball:
$ wget https://github.com/rhinempi/Reflexiv/archive/latest.tar.gz -O ./Reflexiv.tar.gz
Alternatively:
$ curl -fsSL https://github.com/rhinempi/Reflexiv/archive/latest.tar.gz -o ./Reflexiv.tar.gz
Or press the download buttom on the top or click Download.
Once downloaded, unzip or untar the package:
$ unzip ./Reflexiv.zip
$ tar zxvf ./Reflexiv.tar.gz
Go to the Reflexiv directory, you should see an executable file reflexiv
in the ./bin
folder. Set its permission to:
$ cd ./Reflexiv-latest
$ chmod 755 ./bin/reflexiv
Now, you should be able to run Reflexiv:
$ ./bin/reflexiv
Reflexiv - on the cloud. Version: 0.3 Commands: run Run the entire assembly pipeline counter counting Kmer frequency reassembler re-assemble and extend genome fragments Type each command to view its options, eg. Usage: ./reflexiv run Spark cluster configuration: --spark-conf Spark cluster configuration file or spark input parameters --spark-param Spark cluster parameters in quotation marks "--driver-memory 4G --executor-memory 16G" --spark-help View spark-submit options. You can include spark`s options directly. Usage: reflexiv [commands] --spark-conf spark_cluster_default.conf [option...] reflexiv [commands] --spark-param "--driver-memory 4G --executor-memory 16G" [option...] reflexiv [commands] --driver-memory 4G --executor-memory 16G --executor-cores 2 [option...] For detailed cluster submission, please refer to scripts located in: ./sbin
-
The executable file
Reflexiv
is a shell script that wraps thespark-sumbit
executable with the Reflexiv jar file. Examples of full commands to submit Reflexiv applications can be found in the./sbin
folder.
-
The input parameters for Reflexiv consist of options for both the Spark framework and the correspond Reflexiv applications. The Spark options start with two dashes
--
---> to configure the Spark cluster, whereas the Reflexiv options start with one dash-
---> to set the correspond parameters for each Reflexiv application.
Test run
To test run Reflexiv, we prepared a small sequencing data from the Human Microbiome Project (HMP). We will try to assemble a part of the E. coli. genome:
Run Reflexiv
with a specific command to print out its help information:
$ ./bin/reflexiv run
Reflexiv 15:42:12 Reflexiv main initiating ... Reflexiv 15:42:12 interpreting parameters. Name: Reflexiv Main Options: -fastq <input fastq file> Input NGS data, fastq file format, four line per unit -fasta <input fasta file> Also input NGS data, but in fasta file format, two line per unit -outfile <output file> Output assembly result -kmer <kmer size> Kmer length for reads mapping -overlap <kmer overlap> Overlap size between two adjacent kmers -miniter <minimum iterations> Minimum iterations for contig construction -maxiter <maximum iterations> Maximum iterations for contig construction -clipf <clip front nt> Clip N number of nucleotides from the beginning of the reads -clipe <clip end nt> Clip N number of nucleotides from the end of the reads -cover <minimal kmer coverage> Minimal coverage to filter low freq kmers -maxcov <maximal kmer coverage> Maximal coverage to filter high freq kmers -minlength <minimal read length> Minimal read length required for assembly -mincontig <minimal contig length> Minimal contig length to be reported -partition <re-partition number> re generate N number of partitions -bubble Set to NOT remove bubbles. -cache weather to store data in memory or not -version show version information -h -help print and show this information Usage: run de novo genome assembly : spark-submit [spark parameter] --class uni.bielefeld.cmg.reflexiv.main.Main reflexiv.jar [parameters] -fastq input.fq -kmer 63 -outfile output_file spark-submit [spark parameter] --class uni.bielefeld.cmg.reflexiv.main.Main reflexiv.jar [parameters] -fasta input.txt -kmer 63 -outfile output_file reflexiv run [spark parameter] [parameters] -fastq input.fq -kmer 63 -outfile output_file"
Follow the instruction, set the input sequencing data and the K-mer length accordingly:
$ ./bin/reflexiv run --driver-memory 3G --executor-memory 3G -fastq './example/paired_dat*.fq.gz' -outfile ./example/result -kmer 31 -cover 3
Reflexiv 13:58:38 Reflexiv main initiating ... Reflexiv 13:58:38 interpreting parameters. Reflexiv 13:58:38 Initiating Spark context ... Reflexiv 13:58:38 Start Spark framework Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 18/01/09 13:58:39 INFO SparkContext: Running Spark version 2.0.0 18/01/09 13:58:39 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
After it finishes, you can check the result in the folder ./example/result
:
$ ls -al ./example/result
drwxr-xr-x 2 ec2-user users 179 Jan 9 14:00 . drwxr-xr-x 25 ec2-user users 2146 Jan 9 14:00 .. -rw-r--r-- 1 ec2-user users 4619 Jan 9 14:00 part-00000 -rw-r--r-- 1 ec2-user users 48 Jan 9 14:00 .part-00000.crc -rw-r--r-- 1 ec2-user users 4619 Jan 9 14:00 part-00001 -rw-r--r-- 1 ec2-user users 48 Jan 9 14:00 .part-00001.crc -rw-r--r-- 1 ec2-user users 0 Jan 9 14:00 _SUCCESS -rw-r--r-- 1 ec2-user users 8 Jan 9 14:00 ._SUCCESS.crc
To view the result:
$ less -S ./example/result/part-00000
>Contig-4558-0 CTGAAAGGGGCGAAAGCCCCTCTGATTATCGGGTTTAGCGCGCTATTGCCTGGCTACCGCTGAGCTCCAGATTTTGAGGTGAAAACAATGAAAATGAATA AAAGTCTCATCGTCCTCTGTTTATCAGCAGGGTTACTGGCAAGCGCGCCTGGAATTAGCCTTGCCGATGTTAACTACGTACCGCAAAACACCAGCGACGC GCCAGCCATTCCATCTGCTGCGCTGCAACAACTCACCTGGACACCGGTCGATCAATCTAAAACCCAGACCACCCAACTGGCGACCGGCGGCCAACAACTG AACGTTCCCGGCATCAGTGGTCCGGTTGCTGCGTACAGCGTCCCGGCAAACATTGGCGAACTGACCCTGACGCTGACCAGCGAAGTGAACAAACAAACCA GCGTTTTTGCGCCGAACGTGCTGATTCTTGATCAGAACATGACCCCATCAGCCTTCTTCCCCAGCAGTTATTTCACCTACCAGGAACCAGGCGTGATGAG TGCAGATCGGCTGGAAGGCGTTATGCGCCTGACACCGGCGTTGGGGCAGCAAAAACTTTATGTTCTGGTCTTTACCACGGAAAAAGATCTCCAGCAGACG ACCCAACTGCTCGACCCGGCTAAAGCCTATGCCAAGGGCGTCGGTAACTCGATCCCGGATATCCCCGATCCGGTTGCTCGTCATACCACCGATGGCTTAC TGAAACTGAAAGTGAAAACGAACTCCAGCTCCAGCGTGTTGGTAGGACCTTTATTTGGTTCTTCCGCTCCAGCTCCGGTTACGGTAGGTAACACGGCGGC ACCAGCTGTGGCTGCACCCGCTCCGGCACCGGTGAAGAAAAGCGAGCCGATGCTCAACGACACGGAAAGTTATTTTAATACCGCGATCAAAAACGCTGTC GCGAAAGGTGATGTTGATAAGGCGTTAAAACTGCTTGATGAAGCTGAACGCCTGGGATCGACATCTGCCCGTTCCACCTTTATCAGCAGTGTAAAAGGCA AGGGGTAATTACGCCCCACAGTGCTGATTTTGCAACAACTGGTGCGTCTCCTGGCGCACCTTTTTTTATGCTTCCTTCCTGGGATATGAGCGATTTTTTA TAGTAACTCACTTCTTCTTCACTAAGAATATCCATTATCTCAATGCCTTATCAGAGATTCTTTTCCTTTCGCCGGTAGTGTCTGGACATTCAGGCTACTT
-
In case you want to do a test run with a larger dataset, increase the memory configuration by setting
--driver-memory
and--executor-memory
to higher amounts.
Where to go from here
Want to know how to use each module of Reflexiv?
Read the user manual to see the specific options of each function.
Want to use Reflexiv on a local cluster?
Try setting up a Spark cluster on the Sun Grid Engine (SGE). >>>>>
Want to use Reflexiv on the Amazon Elastic Computer Cloud (EC2)?
Try setting up a Spark cluster on the Amazon AWS cloud. >>>>>
Or check out some examples on how to use different modules for varies analyses.


About NSYSU
Internationalization has always been one of the main directions of the university's development.
The Office of International Affairs is responsible for handling university –level international
affairs and assisting colleges and departments in organizing international activities.


Containerization has become a major trend in software development, it acts as an alternative to virtualization. The concept of containerization is to package up software code and its dependencies so it can run smoothly on any type of infrastructure. Containerization is defined as a form of operating system virtualization, where applications are run in isolated spaces called contained and use the same shared operating system. A container is packaged with everything you need for an application to run (libraries, binaries, config files, and dependencies), and the container itself is away from the host operating system. This results in containerized applications that can be run on various infrastructures like bare metal, within virtual machines, and in the cloud, without needing for each environment to be refactored. The basics of containerization can be summarized to “written once and run anywhere”.
To describe containerization in more depth and to understand how it truly works you should think of each
container as an executable package of software that runs on top of a host operating system. A host
operating system can support tons of containers concurrently. This is an ideal set up because all
containers run minimal and resource isolated processes that others cannot access. The best way to
visualize a containerized application is like the top layer of a multi-layered cake. The bottommost
layer would be hardware infrastructure like a CPU and the network interfaces. Above that layer would be
the host operating system and its kernel, the kernel acts as a bridge between the software operating
system and the physical hardware of the system. On top of this would be the container engine and its
guest operating system (this would be where something like Docker sits). At the very top are the
libraries and bins for each application and the application themselves, running in their isolated spaces
(containers).


11-year-old boy found with machete, bear spray while shoplifting at Saskatoon grocery store: police
by Dave Deibert, Saskatoon StarPhoenixA loss prevention officer reported seeing three boys shoplifting. When they were confronted, an 11 year old was found with bear spray and a machete, police said.
Saskatoon police issued warnings to an 11-year-old boy and two 12-year-old boys after they were caught shoplifting and in possession of bear spray and a machete.
Patrol officers responded Monday around 9:15 p.m. to a grocery store in the 300 block of Confederation Drive. According to a police news release, a loss prevention officer reported seeing three boys shoplifting. When the boys were confronted, an 11-year-old was found with bear spray and a machete, police said.
Patrol officers issued warnings to all three before returning them to their homes, police said.
Under Canadian law, no child under the age of 12 can be charged with a criminal offence.


I may not be a full fledged UI designer, but I care deeply enough of the quality of the solutions I develop.
The guideline I like to follow starts making low level wireframes, then, using MarvelApp, generate mockups & interactive prototypes, once the design is approved I start iterating the mobile MVP, doing what I love the most, creating functional, beautiful & scalable apps, with Java or Kotlin, I can work on the backend be it on Spring, Node, or Laravel.
I'm an Android Developer with a tendency and passion for backend APIs, especially Java & Node. Avid learner, and self taught, really like to tackle new challenges that make me go headphones with loud music till late!
3 years of experience, 1 of them working with HTML5, PHP, & JS, and 2 years developing Android Solutions to businesses, as well creating enterprise software in Java, I put lots emphasis on having a clean code throught the project, using the correct architecture & design patterns.
In the past few years I've been taking a liking to share my knowledge in every way possible, and decided to take it to a new level by sharing what I know at Medium, starting slow but safe, also I'm preparing myself to be a speaker in my community, have great talk ideas written down.
…The size does matter… at least in the PlayStore… Punchline aside, the size of the APK does matter for numerous reasons, one of them being whats called Mobile Constraints, we live with them… limited bandwidth, disk space, smaller screen sizes, shorter battery life, less available memory, etc… Data is quite expensive, so to acquire and retain data-sensitive users you need to optimize every KB possible.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Non sed sequi rerumar quasi repellat eum earum praesentium totam! Quia, voluptas eaque anim uis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore pariatur.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Non sed sequi rerumar quasi repellat eum earum praesentium totam! Quia, voluptas eaque anim uis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore pariatur.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Non sed sequi rerumar quasi repellat eum earum praesentium totam! Quia, voluptas eaque anim uis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore pariatur.


Customer name:
Telephone:
E-mail address:
Small
Medium
Large
Bacon
Extra Cheese
Onion
Mushroom
Preferred delivery time:
Delivery instructions:
Select unit types to enable on this map: Miner Puffer Snipey Max Firebot
If you have any comments, please let us know: You rock!
Submit order
A part number is a digit followed by three uppercase letters.


Start managing your Smart Metering Framework
Managing the device pool.
Special support for gateways.
Meter overview
Show a list of all devices online now and their data throughput in realtime.
All registered targets and their data throughput in realtime.
See connections and manage leased lines.


Add a collaborator to your project.
Working with others is one of the best things about GitHub because it is easier to work from any place or timezone with someone else.
Collaborators are other GitHub users who are given permission to make edits to a repository owned by someone else. You may also hear the term contributor, this describes another GitHub user who has made contributions, through a Fork and Pull Request, to a project.
@reporobot is a robot from outer space that loves collaborating on repos.To add collaborators to one of your projects, visit the repository's page on your GitHub account and click the 'Settings' tab in the menu in the upper part of the page. Then select the 'Collaborators' option. Type the username into the text box add and click 'Add'.
Go to your forked Patchwork repository's page on GitHub and add 'reporobot' as a collaborator. The URL should look like this, but with your username.
github.com/YOURUSERNAME/patchwork/settings/collaboration


--- layout: post title: If Facebook Closed Your Account Today, What Would You lose? thumbnail: /img/chris.jpg ---
I probe that question after reading the story of Chris Stout-Hazard, whose Facebook account was recently closed, and then subsequently reopened after his story went viral.
When Chris’s account was closed, he was provided the following reason: “Your account was removed from Facebook because we found it’s pretending to be someone else”.
In losing his account, Chris lost access to a lot more than just a few friends and photos.
He lost access to the advertising portal that sustains his business.
He lost access to his company’s popular Facebook page, to his chats with customers.
He lost access to the dozens of websites he had created accounts on using Facebook’s Connect-auth tool.
And all because Facebook, in its infinite wisdom, decided that Chris wasn’t real.
Chris’s identity isn’t easy to fake. He’s a pretty socially-active person online.
The Person he's married to is the star of a television show. Over the years he had provided Facebook addresses, phone numbers, and even credit card numbers, in his name. He consistently logged in from his home address, and Facebook knew that (Facebook allows you to download and examine your data, and that data includes more information about you than you knew existed).
And yet somehow Facebook got the idea that Chris was, as George Orwell put it in his intrepid novel 1984, an “unperson”.
They claimed that the friends he’d connected with, the posts he’d written, and the life he had so actively lived on Facebook was a lie, despite significant evidence to the contrary. That’s scary.
One company has so much control over some of our lives, and wields that power so carelessly.
This is precisely what Orwell warned against.
If I lost my Facebook account, I wouldn’t be hit as hard as Chris was, but I would certainly be devastated.
Thousands of messages, photos, friends, and business connections would be gone. Access to dozens of apps and websites would be gone.
Facebook pages with thousands of likes, and groups with hundreds (or even thousands) of members would be gone. My ad campaigns, my data, and my family photos (if I hadn’t backed them up) would all be gone.
What would you lose? Fill in the blank, and tweet me back
I would lose ____ if #Facebook closed my account today --> http://t.co/Dh8UcydNT5
— Michael Sitver (@msitver) June 11, 2015


--- layout: paper title: Publications --- Accurate Statistical Spoken Language Understanding From Limited Development Resources, , Proceedings of 2008 IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP) 2008 [pdf]
@inproceedings{mezaruiz08accurate, pages={5021--5024}, year={2008}, author={Ivan Vladimir Meza-Ruiz and Sebastian Riedel and Oliver Lemon}, bdsk-url-1={http://alchemy.cs.washington.edu/papers/meza-ruiz08b/meza-ruiz08b.pdf}, booktitle={Proceedings of 2008 IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP)}, title={Accurate Statistical Spoken Language Understanding From Limited Development Resources}, }


I'm playing my first indoor soccer match in many many years today. Since my last indoor soccer league, 4+ years ago, I've discovered that I have a heart condition and have had a bout with the gout.
No. I'm not joking. Both conditions are under control. My last visit with the cardiologist was encouraging and I got a cautious "OK" to play sports like soccer in moderation. It took months to get over the gout in my right big toe (on my "kicking foot"). I've never experienced pain like that before. I've been playing volleyball for over a year now and I *was* going to the gym regularly to play racquet ball and do cardio workouts. Somehow I fell out of that routine though. Starting up soccer is not the best way to work back into a cardio routine and I'll have to be careful. If I push it too hard I could pass out or induce other complications. It'll also be interesting to see how my toe holds up to constant beating against a soccer ball. I find it very difficult to go to a gym to lift weights or run in circle, but I love to compete and to play sports. There are very few things in life that make me feel so alive than when I'm pushing my self physically, or mentally, towards a goal. Wish me luck!


Project
Halare is a physical rehabilitation center focused on post-operative patients in need of specific care. As the name is a latin word that means ‘breath’ the logo inspiration came from the shape of algaes: they are responsible for more than half of the oxygen we breath.
The vibrant palette comes from the variety of colourful algaes found in nature. It also brings energy and happiness to the brand, important aspects for the emotional recovery of patients. To balance the joyful element the lettering appear in a neutral colour and in a modern typography.


psychosis patients SARS people COVID- health Weak mental psychiatric reported risk psychotic associated review services symptoms impact {border-style px;} studies #ffffff;} Moderate control included infection pandemic schizophrenia Strong cases social study MERS treatment case data evidence outbreak virus acute incident influenza measures physical use Health Hong likely psychosocial rapid service clinical coronavirus distancing swine epidemic identified increase increased number psychosis, Ebola did exposure following papers potential psychosis. research search Maguire Psychiatry clinicians pandemics protective px; related reports staff support {font-family (), Kong chart compared completed diagnosis disease dose examined flu font-size given individuals inpatient low participants public report single Clinical Mak Table adherence adults anxiety association attending community controls disorder doses double; effect experience experienced experiencing factors group higher infected inpatients limited outbreak. particularly perception population quarantine received schizophrenia, seemingly symptoms. â€" Cross-sectional Quality Sheng available border-color border-width developed effects emerging epi- evaluation example, exposed history hospital important including management media medical need new novel observational patient perceived previous rates reduction respiratory severe solid; steroids stress survey willingness {font-style {font-weight (). .Is Case Chang Data Disease Elsevier January Lee Pang Psychosis Respiratory SARS, Sierra admitted aimed assessment bold care centre comply considered content courier; databases development disorders em; existing extracted form global infection, levels major measures. medication onset outbreak, place potentially presented previously psychological pt;} published quality rating recent-onset relevant reporting resource responded significantly spread steroid steroids. suggest suicide survivors time used using vulnerability weak willing working


[gecode-users] Controlling memory use
Christian Schulte
cschulte at kth.se
Mon Mar 31 11:15:19 CEST 2008
What contributes to memory consumption are:
- How many variables and how big their domain (where size is roughly
the number of disjoint non-overlapping intervals it is composed of
for both integer and set variables). For variables it matters
whether they are referenced from the space itself (that is, the
variables that constitute the solution). Better keep it small:
if a variable is not any longer referenced it will go away.
- How many propagators and how many variables it each propagator
has. Then also: do you have propagators written in Java or just
in C++ (Java propagators take much much more memory). The
capability to add propagators in Java to Gecode/J is just for
educational purposes.
- How deep is the search tree.
- Which recomputation distance are you using. In particular in
your case, not having any failures, you should increase the
recomputation distance for search.
As you don't say how many propagators you use we can't really say whether it
is an awful lot of memory or not.
Hope that helps
Christian
On 3/31/08 2:51 AM, "Malcolm Ryan" <malcolmr at cse.unsw.edu.au> wrote:
> In general, the memory use in my search problem seems to be quite a
> lot larger than I expected. I have a system with about 250 IntVars. I
> did a search and found a solution with the following statistics:
>
> Clones: 23
> Commits: 178
> Fails: 0
> Propagates: 276937
> Memory: 62.4 Mb (65477136 bytes)
>
> That seems like an awfully large amount of memory for a relatively
> small problem. How do I work out what is causing this? In general,
> what are the factors that contribute towards memory usage and how do I
> control them?
>
> Malcolm
>
> On 30/03/2008, at 4:53 PM, Malcolm Ryan wrote:
>> My searches in Gecode/J are crashing when with messages like:
>>
>> java(221,0xb0801000) malloc: *** mmap(size=65536) failed (error
>> code=12)
>> *** error: can't allocate region
>> *** set a breakpoint in malloc_error_break to debug
>> terminate called after throwing an instance of
>> 'Gecode::MemoryExhausted'
>> what(): Memory: Heap memory exhausted
>>
>> Is there any way to avoid these, or at least to make the search fail
>> more gracefully?
>>
>> Malcolm
>>
>> _______________________________________________
>> Gecode users mailing list
>> users at gecode.org
>> https://www.gecode.org/mailman/listinfo/gecode-users
>
>
> _______________________________________________
> Gecode users mailing list
> users at gecode.org
> https://www.gecode.org/mailman/listinfo/gecode-users
--
Christian Schulte, web.ict.kth.se/~cschulte/
More information about the gecode-users
mailing list


Become a patron for the conference and get associated with a global community of tens of thousands of users and developers. Sponsors also get 5 complimentary passes for the full conference!


Module ncache
Normalization cache (many-to-1 cache)
Use case: storing values by a specific key, except that the same key can have many different representations.
For example IPv6 addresses, where [::1]
, [::0:1]
, and
[::0001]
all refer to the same address. To cache values you need normalization of the
key to a single, unique value for all the variants the key can have.
Since you need the normalization on every cache lookup, this can become too expensive. Hence this library not only caches the values, but also the normalization results. Which means that every key-variant only needs to be normalized once.
When creating a new cache you provide a normalization function, and the optionally the cache instances for the two internal caches:
- key_cache : the cache that links the key variant to the normalized key.
- value_cache : the cache that holds the values, indexed by the normalized key.
You can either provide an OpenResty LRU cache, or not provide one, in which case it will get a simple Lua table based cache. In the latter case you have to watch memory usage, as it might grow uncontrollable.
When to use what caches for the new call:
key_cache = nil, value_cache = nil
In this case any data in there will only be removed when explicitly calling delete. So only use this when the number of normalized-keys and their variants are limited. Otherwise both caches can grow uncontrolled.
key_cache = nil, value_cache = resty-lru
This will protect against too many values. But not against too many variants of a single key. Since the key_cache can still grow uncontrolled. In case a value gets evicted from the value-cache, then all its key-variants will also be removed from the key-cache based on weak-table references.
key_cache = lru, value_cache = nil
Use this if the number of normalized-keys is limited, but the variants are not. Whenever a value gets deleted, its key-variants are 'abandoned', meaning they will not be immediately removed from memory, but since they are in an lru cache, they will slowly be evicted there.
key_cache = lru, value_cache = lru
This protects against both types of memory usage. Here also, if a value get deleted, the key-variants will be abandoned, waiting for the lru-mechanism to evict them.
Example 1:
A cache of versioned items based on Semantic Versioning. Many input versions, in different formats
will lead to a limited number of compatible versions of objects to return.
Since the versions will (most likely) be defined in code, they will be limited. Both
the requested versions, as well as the returned versions.
In this case use the Lua-table based caches by providing nil
for both of them, since there
is no risk of memory exhaustion in this case.
Example 2:
Matching incoming requested IPv6 addresses to a limited number of upstream servers. Since we know the upstream servers before hand, or through some configuration directive they will be limited.
But the incoming IPv6 addresses are user provided, and hence one can expect every possible representation of that address to appear sometime (which are a lot!). Hence for the value_cache (with a limited number of normalized addresses for the upstream services) we can use the Lua-table based cache. But for the key-cache storing the combination of every raw-key to normalized key, we must protect for overruns, and hence we use lru-cache.
NOTE: besides the above on cache types, it is important to realize that even if there is no value in the cache, looking it up, will still normalize the key. It will store the raw key, the normalized key, and the fact that there is no value for that key. So repeatedly looking for a non-existing key will only normalize the key once. The cost of this optimization is that it will still use memory to store the non-existing entry, and hence grow memory usage. Keep this in mind when picking the proper cache types.
Info:
- Copyright: 2018 Thijs Schreijer
- License: MIT
- Author: Thijs Schreijer
Functions
| delete (key) | Deletes a key/value from the cache. |
| flush_all () | Clears the cache. |
| get (key) | Gets a value from the cache. |
| new (normalizer, key_cache, value_cache, value_cache_non_evicting) | Creates a new instance of the normalization cache. |
| raw_set (raw_key, value) | Sets a value in the cache, under its raw key. |
| set (key, value) | Sets a value in the cache. |
Functions
- delete (key)
-
Deletes a key/value from the cache.
The accompanying value will also be deleted, and all other variants of
key
will be evicted. To keep the normalization cache of all the key-variants use set to set the value tonil
.Parameters:
- key the raw key in a normalizable format
Returns:
true
, ornil + error
Usage:
local cache = ncache.new(tonumber) cache:set(5, "value 5") print(cache:get(5)) -- "value 5" cache:set(5, nil) print(cache:get(5)) -- nil cache:delete(5) print(cache:get(5)) -- nil, "key not found"
- flush_all ()
-
Clears the cache.
Removes all values as well as all variants of normalized keys.
Returns:
true
- get (key)
-
Gets a value from the cache.
Note: if there is no value, then still the normalization results will be stored
so even if nothing is in the cache, memory usage may increase when only getting.
To undo this, explicitly delete a key.
Parameters:
- key the raw key in a normalizable format
Returns:
-
the value, or
nil + error
. Note thatnil
is a valid value, and that the error will be "key not found" if the (normalized) key wasn't found.Usage:
local cache = ncache.new(tonumber) cache:set(5, "value 5") print(cache:get(5)) -- "value 5" print(cache:get("5")) -- "value 5" print(cache:get(6)) -- nil, "key not found" cache:set(6, nil) print(cache:get(6)) -- nil
- new (normalizer, key_cache, value_cache, value_cache_non_evicting)
-
Creates a new instance of the normalization cache.
The cache objects are optional, and are API compatible with the OpenResty lru-cache. If not
provided then simple table based caches will be created, without an lru safety mechanism.
The
value_cache_non_evicting
parameter provides a small performance gain if the providedvalue_cache
does never evict any valuesParameters:
- normalizer (function) a function that normalizes a key value to a common, unique, non-nil representation
- key_cache (optional) cache object (get, set, delete, flush_all) where the relation between the raw keys and values will be stored.
- value_cache (optional) cache object (get, set, delete, flush_all) where the relation between the normalized key and values is stored.
- value_cache_non_evicting
(boolean, optional) set to
true
if thevalue_cache
provided will never evict data by itself.
Returns:
-
normalization cache
Usage:
-- sample
normalizer
function local normalizer = function(key) -- normalize everything to a proper number local key = tonumber(key) if key then return key end return nil, "key was not coercable to a number" end local cache = ncache.new(normalizer) - raw_set (raw_key, value)
-
Sets a value in the cache, under its raw key.
When storing the value, the
normalizer
function will not be invoked.Parameters:
- raw_key the normalized/raw key
- value
the value to store (can be
nil
)
Returns:
true
Usage:
local cache = ncache.new(tonumber) cache:raw_set(5, "value 5") cache:raw_set("5", "why 5?") print(cache:get(5)) -- "value 5" print(cache:get("5")) -- "why 5?"
- set (key, value)
-
Sets a value in the cache.
Note:
nil
is a valid value to set, use delete to remove an entry.Parameters:
- key the raw key in a normalizable format
- value
the value to store (can be
nil
)
Returns:
true
on success,nil + error
on errorUsage:
local cache = ncache.new(tonumber) cache:set(5, "value 5") cache:set("5", "why 5?") print(cache:get(5)) -- "why 5?" print(cache:get("5")) -- "why 5?"


Dem Counsel in Impeachment Hearing Begins with 'My Young Son' Story
by Kristina WongHouse Judiciary Committee Democrat counsel Barry Berke invoked his young son as he began his opening statement in the House Judiciary Committee’s second impeachment inquiry hearing.
“Before I had the great honor of being a counsel for this committee, my young son asked me a question. He said, ‘Dad, does the president have to be a good person? Like many questions by young children, it had a certain clarity, but it was hard to answer,” he began.
“I said, ‘Son, it is not a requirement that the president be a good person, but that is the hope,'” he continued.
He then launched into a 30-minute diatribe against President Trump, accusing him of putting his personal political interest ahead of the country.
The moment did not escape mocking on social media.
Conservative journalist Jason Howerton mocked Berke’s invocation of his son:
Berke was the Democrats’ first witness at the hearing, where both Democrat and Republican counsels for the House’s impeachment inquiry were scheduled to present their findings. He later invoked his son at least one more time.
Follow Breitbart News’ @Kristina_Wong.


Partials support passing data from the posts plugin
This partial supports the following keys: myName, myEmail and myURL.
{% if data.myName %}My Name is {{ data.myName }}
{% endif %} {% if data.myEmail %}My email address is {{ data.myEmail }}
{% endif %} {% if data.myUrl %}My website address is {{ data.myUrl }}
{% endif %}


acl acl2012 acl2012-163 acl2012-163-reference knowledge-graph by maker-knowledge-mining
Source: pdf
Author: Prasanth Kolachina ; Nicola Cancedda ; Marc Dymetman ; Sriram Venkatapathy
Abstract: Parallel data in the domain of interest is the key resource when training a statistical machine translation (SMT) system for a specific purpose. Since ad-hoc manual translation can represent a significant investment in time and money, a prior assesment of the amount of training data required to achieve a satisfactory accuracy level can be very useful. In this work, we show how to predict what the learning curve would look like if we were to manually translate increasing amounts of data. We consider two scenarios, 1) Monolingual samples in the source and target languages are available and 2) An additional small amount of parallel corpus is also available. We propose methods for predicting learning curves in both these scenarios.


- Open: 6am-8pm
-<PHONE_NUMBER>
- 7000 NE Airport Way
- Portland, OR 97218
Our Cookies
That we can tuck in our children at night and know that they are fed and clothed and safe from harm. I get it. It was a peaceful and determined insistence upon the ideals at the center of America's founding.
Our universities and our culture are the envy of the world, but that's not what keeps the world coming to our shores. The question is whether we spend that time focused on what pushes us apart, or whether we commit ourselves to an effort - a sustained effort - to find common ground, to focus on the future we seek for our children, and to respect the dignity of all human beings.
Now let me be clear. "We cannot walk alone," the preacher cried. And despite the costs involved, America's commitment will not weaken.
Our History
That we can tuck in our children at night and know that they are fed and clothed and safe from harm. And when the Civil War was fought and our country dedicated itself to a new birth of freedom, they took on the problems of an industrializing nation - fighting the crimes against society and the sins against God that they felt were being committed in our factories and in our slums. No single speech can eradicate years of mistrust, nor can I answer in the time that I have all the complex questions that brought us to this point.
We can pounce on some gaffe by a Hillary supporter as evidence that she's playing the race card, or we can speculate on whether white men will all flock to John McCain in the general election regardless of his policies. They have not served a Red America or a Blue America - they have served the United States of America. We have the most powerful military on Earth, but that's not what makes us strong. And I am hopeful that all countries in the region can share in this goal.
- Open: 6am-8pm
-<PHONE_NUMBER>
- 701 SW 6th Ave
- Portland, OR 97205
- Open: 6am-8pm
-<PHONE_NUMBER>
- 1005 W Burnside St
- Portland, OR 97209
- Open: 6am-8pm
-<PHONE_NUMBER>
- 7304 N Leavitt Ave
- Portland, OR 97203
- Open: 6am-8pm
-<PHONE_NUMBER>
- 7000 NE Airport Way
- Portland, OR 97218


Preparation time
less than 30 mins
Cooking time
30 mins to 1 hour
Serves
Serves 4-6
This delicious curry has a lot of ingredients but very few stages - the paste also makes enough for two curries.
For the massaman curry paste, heat a small frying pan over a medium heat. When the pan is hot, add the cardamom seeds, cumin seeds and cloves and dry-fry for 1-2 minutes, or until fragrant.
Transfer the spices to a spice grinder or pestle and mortar and grind to a powder.
Blend the ground spices with all of the remaining massaman curry paste ingredients in a food processor, until smooth and well combined. (Alternatively, pound the paste until smooth in a pestle and mortar.) Chill until needed, covered.
To make the chicken curry, heat the oil in a medium-sized, flameproof, lidded casserole. Add the onions and fry for 8-10 minutes, or until softened and light golden-brown.
Increase the heat, push the onions to one side of the casserole, then add the chicken strips to the other side and fry for 2-3 minutes on all sides, or until sealed all over.
Add half of the massaman curry paste to the casserole (see tip). Stir well to coat the chicken and onions in the paste. Fry the mixture for 1-2 minutes, or until fragrant.
Add the potatoes, chillies, chicken stock, coconut milk, tomatoes, lime leaves, fish sauce, palm sugar and soy sauce to the casserole. Stir well and bring the mixture to the boil, then cover the casserole with the lid and reduce the heat until the mixture is simmering. Continue to simmer for 12-15 minutes, or until the chicken is cooked through (do not overcook the chicken as it will become dry). Season, to taste, with a little more fish sauce or some lime juice.
Just before serving, stir in the basil leaves and half of the peanuts.
To serve, spoon the Thai massaman curry into bowls and garnish with the extra Thai basil leaves, the sliced red chilli, and the remaining peanuts. Serve with steamed sticky rice.


social species behavioural model Figure SIN data interaction <; flies OpenUrl observed phylogenetic environmental .*[PC] effects male mean female Equation models two-way Drosophila (Equation leg distance measure ANOVA). predicts significantly combined drosophilid sex climate signal CrossRef groups variables length .). Significant [[#x]] SINs interactions betweeness Table relative species. time angle using centrality species’ body differences indicates number phylogeny (male), Science acquired (female); compared networks videos Web elements indicate likelihood measures regression variation .*[movement] .*[number clustering organization ratio spacing used blue coordinates global level network significant species-specific duration] evolution evolutionary prediction Behavioural Social calculated different drosophilids environment influence line minimum pairwise red single size species, temperature test). trait value (BIO), (Combined .*[interaction AICc AICc; S). bars behaviour coefficient efficiency estimated flies. function geographic group interact study test tests <;sup>;-<;/sup>;, .*[PC]. S-Related assortativity comparative criteria dataset distribution map movement pilot pressures specific (Figure (level .), Drosophila. algorithm defined distance, fit maximum measured past precipitation quarter represents stock values vary video (Table (see Biol View behaviours climatic confidence conserved generated interval measures, parameter parameters predict principal stocks total (R<;sup>;<;/sup>; (phytools Download FREE Figures Phylogenetic Text coloured correlate effects; extended fly following generate graphs improve improves interactions] interactions]. listed log melanogaster models, selective stepwise structure tracked Abstract Interaction S-S best common components considered criterion data, datasets does duration, figure food form formed group-level legs new patterns reported socially statistically .*[angle] .*[social SINs, complex did distance] duration error females individual interacting investigate left lengths linear lists males measurements point pooled properties reciprocation regions represent respectively. results right sample y-axis <;sup>;-<;/sup>; Ecology Evolution However, Levine, Open Proc S-S). Sci Taxodros according active analysis animals assay centrality, collective combination communication correlation dashed data-hide-link-title=""> data-icon-position="" display elements. given heat high individuals influenced influences information intraspecific labeled lines mapping measure, measurement mechanisms melanogaster. model. mojavensis origin points, predictive predictors previously range regressions, scale sex-specific shown shown). sizes solid space speculate standard study, suggest suggesting suggests tab tested this, trend virtual x-axis yakuba, ‘contMap’ (Experiment (data (movement, *[reciprocation]. .*[reciprocation]. .*[time] .-. .[PC] ;<;div ANOVA Animal Error Here, J.C. J.D L.J. MATLAB Overall, Sophophora Species Thus, Variation [[#x]]contMap[[#x]] ability acquisition analyses applied assortativity, based behavior better box coefficient, coldest collected communicate comprise computed control definitions described determine displays distributions divergence duration: effect example, expressed figures genus health heritable hypothesized indicating insect interactions: known large mean. measures. model, month movement, observed. organize package) package), percentage phylogeny, populations predicted presence present produced provide published randomly refer refers relationship relationships. sedentary selection served similar simple sites species-wide specific, strong structures studied. tree trials unique utilized variance wettest world xmlns=";http://www.w.org//xhtml";>;<;span


Introduction to the rest of the page.
A second paragraph. Splits up chunks of text.
Text can be bold, and it can also be italic like this. Superscript as well as subscript.
New paragraph. Another way to break lines is with a line break br:
Broken line element. Alos, can place horizontal rules, as seen here (or below).
Text below the hr line. Can expand abbreviations by hovering over them. Hover over the following abbreviation: Prof Stephen Hawking.
Ordered lists are created with the ol element:
Use the a element. To link google.com, do: href="http://www.google.com">click this link When you want to link to pages on the same website, use the shorthand known as a relative url. click to go to localfile.html
Can also make it so clicking link opens a new window:Click me to new window google.
To add an image, need to use the img element, like so: Note that the size of the image is usually best specified using CSS rather than HTML. The align attribute has been removed from HTML5 and new websites should use CSS to control alignment of images.
In HTML5, can use figure element to contain images and their caption so the two are associated, like so:
| Headingof second col | |
|---|---|
| table row 1, table data | table row 1, next table data |
| table row 2, table data | table row 2, next table data |


Flask is a micro web framework written in Python.
Applications that use the Flask framework include Pinterest, LinkedIn, and the community web page for Flask itself.
Enter Calendar Date:
Enter Julian Date:
{% else %}Enter Calendar Date:
Enter Julian Date:
{% endif %}


You must read these terms and conditions and accept them by ticking the box at the end
of the page.
You must read these terms and conditions and accept them by ticking the box at the end of the page. Your
application cannot be submitted until all partners have read and accepted the terms.
View partners' acceptance


|
Hi, {{userName}}
Here is your activity for this week:
Friday, January 19 – Friday, January 26
|
Post
"{{Post}} Lorem ipsum dolor sit amet,
consectetur adipisicing elit. Quibusdam, quos..."
+124 20 Shares
|
|
Comment
"{{Post}} Lorem ipsum dolor sit amet,
consectetur adipisicing elit. Quibusdam, quos..."
+14 comments
|
|
Total contribution
+124 20 points
|
Profile views
12 views
|
Perk$coins
50 $coins
|
Thank you for, CannaSOS Team
P.S. Get more interactions on your content by sharing it on other resources like Facebook and other :)
|


This is a standard paragraph tag <p>, which is the most common tag in HTML.
The <span> tag is very similar to the paragraph tag. The key difference is that a span tag doesn't create a new line.Used for showing code.
"We must accept finite disappointment but never lose infinite hope." - Martin Luther King Jr.Just use a slightly smaller font size with the
small
tag.
x2 = 9, made using sup
tag
H2SO4 is Sulfuric Acid. Subscript written using sub
tag.


Your companion for the day got you covered!
This level of detail at 3-hour intervals will help you to get through the day.
Just enter the city name and get the weather at your destination.
Just toggle the switch to change between imperial and metric units.


TEAM
Project team.
Project team.
Contact.
Rewards.
How to quickly install and setup Apache RocketMQ.
At early stages, we constructed our distributed messaging middleware based on ActiveMQ 5.x(prior to 5.3). Our multinational business uses it for asynchronou...
RocketMQ provides a CLI admin tool belt to query, manage and diagnose various issues.
Prerequisite
This page guides you through Git setup and contribution process.
Apache RocketMQ Coding Guidelines
Apache RocketMQ Documentation
The following questions are frequently asked with regard to the RocketMQ project in general. General 1. Why did we create rocketmq project instead of select...
Apache RocketMQ Release Manual
Today, more than 100 companies are using the open source version of RocketMQ in their business. Compatibility Guide The table below shows the supported jre...
4.1.0~4.3.0-incubating RoadMap:
How to use batch in Rocketmq
How to send broadcast messages in Apache RocketMQ.
How to deploy the Apache RocketMQ.
How to send and receive ordered messages in Apache RocketMQ.
The main Architecture of Apache RocketMQ.
How to use schedule component to reduce pull in RocketMQ.
How to send simple message to reduce pull in RocketMQ.
How to filter messages by SQL92 in Apache RocketMQ.
How to use logappender in RocketMQ.
How to use OpenMessaging in RocketMQ.
This is an introduction for configuring RocketMQ broker JVM/OS parameters. It points out certain specified configurations that should be thinking about befor...
Apache RocketMQ is developed by an open and friendly community. Everybody is cordially welcome to join the community and contribute to Apache RocketMQ. There...
How to use transactional component to implement eventual consistency in RocketMQ.
Some useful tips for users.
Some useful tips for users.
This page guides you through the pull request creation process.
In Apache RocketMQ, name servers are designed to coordinate each component of the distributed system and the coordination is mainly achieved through managing...
Some useful tips for users.


{% extends "base.html" %} {% block content %}
PH Sensor
Water Temperature
Humidity
Room Temperature
98% of Time Turn Water Motor On.


Reports
Reports are pages of statistics. They are generated automatically, using the defined SQL query. There are 4 types of reports: Table, PieChart, BarChart and LineChart.
Table is a page of interactive data. It can be sorted and filtered dynamically.
PieChart generates the table + a pie chart.
BarChart shows the table + a bar chart.
LineChart shows the table + a line chart.
Mandatory fields: ID, Type, SQLQuery. Optional fields: SQLQueryTotal.
Fields
Fields are choices for the user. There are 2 types: UserSelect and UserText.
UserSelect is a list of pre-defined values, selected from the database, using a defined SQL query.
UserText is just free text. It can be used to manually type aditional sorts or filters.
Mandatory fields: ID, Type. For UserSelect fields, the SQLQuery is also mandatory. Optional fields: Label.
Redirects
Redirects are just links to other pages.
Redirects can be used to forward to other static, or generated HTML pages.
For example, a redirect can be: a link to PhpMyAdmin for the current database, or a user defined report made in PHP.
Mandatory fields: ID and Path.


Plug and play sensor nodes
At the moment to get a system up and running you need to do quite a bit of manual firmware configuration, setting unique node-id's selecting different emontx sketches for different functionality, hard coding the emonglcd to get different screens. To add a second emontx you need to add several lines of code to the emonbase and the basestation needs to know the data structure of the sensor nodes.
What if you could upload a standard sketch to each of these nodes, plug your base station into your router, power up an emontx and see emontx 1 appear in a node list in emoncms. Then as you add more nodes they automatically appear in emoncms, no additional base station configuration needed. In time the software could develop to allow remote configuration of nodes such as emontx config and emonGLCD pages: beginning with page template functions as described in the last blog post: emonglcd template based displays
There are several people I know of that are developing these ideas including Mark Campbell who I have been in contact with by email and is developing base station based auto ID assignment (similar to IP addresses) , eeprom storage of auto ID's, MAC address type unique ID's on the nodes.
Pcunha has also developed as part of his larger 1-3 phase sketch remote ID assignment, emontx config including setting calibration variables.
I put together a MultiNode NanodeRF sketch a couple of weeks back that works with the new version of emoncms, its on github here: https://github.com/openenergymonitor/NanodeRF/tree/master/NanodeRF_multinode
So I think we're making some good progress on these ideas.
The following is a barebones concept that demonstrates auto id assignment and receiving data from multiple nodes.
The main idea is that commands and data packets are sent in a variable width char array.
The first character in the array details what kind of packet it is:
d - 2 byte integer data i.e int power1, power2, power3, voltage.. i - set node id
this packet type character determines the packet deconstructor to use.
Effort is made to keep the packets as lightweight as possible, for example sending a set node id command only uses 3 bytes:
1st byte is the packet type 'i' for set node id. 2nd byte is the target node id, 3rd byte is the new id.
char data[] = {'i',1,autoid};
Decoding the 2 byte integer data also allows for different packet lengths, which makes it possible to add a variable to be sent on the sensor node without chaning the basestation.
Here's the full code:
Concept 1: Auto ID's and Multiple nodes sketch.
TX code
#include <JeeLib.h> int mynode = 1; #define freq RF12_868MHZ #define group 1 typedef struct { char type; int power1, power2, power3, battery; } PayloadTX; PayloadTX emontx; unsigned long timer; void setup() { Serial.begin(9600); Serial.println("tx"); rf12_initialize(mynode, freq, group); } void loop() { //------------------------------------------------------------------ // RX data //------------------------------------------------------------------ if (rf12_recvDone()) { if (rf12_crc == 0 && (rf12_hdr & RF12_HDR_CTL) == 0) // and no rf errors { int node_id = (rf12_hdr & 0x1F); char type = rf12_data[0]; if (type=='i') { int target = rf12_data[1]; int newid = rf12_data[2]; if (target==mynode) mynode = newid; rf12_initialize(mynode, freq, group); } } } //------------------------------------------------------------------ // Transmit data //------------------------------------------------------------------ emontx.type = 'd'; emontx.power1 = 520; emontx.power2 = 1209; emontx.power3 = 1000; emontx.battery = 3300; if ((millis()-timer)>1000) { timer = millis(); int i = 0; while (!rf12_canSend() && i<10) {rf12_recvDone(); i++;} rf12_sendStart(0, &emontx, sizeof emontx); rf12_sendWait(0); } }
Base station code
#include <JeeLib.h> #define MYNODE 20 #define freq RF12_868MHZ #define group 1 typedef struct { char type; int power1, power2, power3, battery; } PayloadTX; PayloadTX emontx; unsigned long timer; //int idmap[30][1]; int autoid = 1; char instr[30]; int pos = 0; void setup() { Serial.begin(9600); Serial.println("Base"); rf12_initialize(MYNODE, freq, group); } void loop() { //------------------------------------------------------------------ // RX data //------------------------------------------------------------------ if (rf12_recvDone()) { if (rf12_crc == 0 && (rf12_hdr & RF12_HDR_CTL) == 0) // and no rf errors { int node_id = (rf12_hdr & 0x1F); char type = rf12_data[0]; if (node_id==1) { autoid ++; char data[] = {'i',1,autoid}; int i = 0; while (!rf12_canSend() && i<10) {rf12_recvDone(); i++;} rf12_sendStart(0, data, sizeof data); rf12_sendWait(0); } if (type=='d') { Serial.print("DATA: "); Serial.print(node_id); Serial.print(" "); byte n = rf12_len; for (byte i=1; i<n; i+=2) { int num = ((unsigned char)rf12_data[i+1] << 8 | (unsigned char)rf12_data[i]); if (i>1) Serial.print(","); Serial.print(num); } Serial.println(); } } } }
It can be downloaded from github here:
https://github.com/openenergymonitor/FirmwareDev/tree/master/01
If your interested in the development of these features, would be great to hear what you think
Re: Dev: Plug and play sensor nodes
Looks like a good idea. The main issue I can see at the moment is there is no way of defining what each datavalue is according to the above. So you either have to have fixed entries based on hardware type or guess. You also have the potential to increase the number of transmissions when you have multiple datatypes since I think you'd need one transmission for type d and another for type i.
How about expanding on this along the same lines so you have 3 entries per datapoint: TYPE, NAME, VALUE.
Then you send packets like this:
{'i',1,autoid,'d',235,'Vrms','d',397,'Power1'}
A slight increase on bytes but allows this to be passed directly through to emoncms with input names.
Expanding a little further on this. Since a power saving is acheived by not transmitting floats temperatures are multiplied by 100 we could use a more detailed data type, either as a charactor or better as a series of defines in emonlib: For example:
EMON_TEMP: Temperature*100 (divide by 100 to get true value). Type: Int (-32,768 to 32,760). 32,761-32,767 are reserved for sensor error reporting (eg. 32767 = no reading from sensor). Maximum reading 320C (you might define a temperature with type long for things that must go higher like wood stoves).
EMON_POWER_KW: Power(KW)*100 (divide by 100 to get true value). Type unsigned Int (0-65528). 65529-65535 are reserved for sensor error reporting (eg. 65535 = no reading from sensor). Maximum reading 655.28KW.
EMON_VOLTAGE: Voltage (V)*100 (divide by 100 to get true value). Type unsigned Int (0-65528). 65529-65535 are reserved for sensor error reporting (eg. 65535 = no reading from sensor). Maximum reading 655.28V.
You then specify your RFM12 string:
{EMON_VOLTAGE, 235, 'Vrms', EMON_POWER_KW, 397, 'Power1'}
This way any receiving device and emoncms has all the information it needs to use the data and if you include a node id in the string where it has come from too.
Re: Dev: Plug and play sensor nodes
Yes, That's exactly what i have in mind.
I Have some points to consider:
- I Think we have to deal with ACK's. In my code i use them to reply status and pass returns back. I have read all the jeelabs documents about it, and i can say that the rfm code can be extended a little to provide a better solution (but thats not the point here)
- I like "Keep it simple" but like "keep it single" more. I dont like multiple small packages when we can pass one large package.
in my case i pass all the variables to the Emonbase using almost all bytes that the rfm can transmit. It can be a big battery problem (or not) i'm not shure, but it can be a problem with EU regulations too ( is that correct?). so it can be optimized. The EmonTX can have 2 methods of sending data: 1. All data collected (As in my case) or 2. Selective data (just total power by example).
- I Like Computer Browser Interfaces, so it's possible to use the emonbase as a bridge and use a Java/Javascript application to drive and configure all the stuff on the nodes. ( That's evil ).
-Compatibility for extensions: My main concern is be possible to do modifications without to brake all the software. Ex: i want to add a gas meter emonTx. I Can create a new code that will use all the features of the network without major problems, or i need to add a cummulative KWH variable (as i do) on the Emontx, without breaking all the comunications and CMS, etc.
Thanks a lot,
Re: Dev: Plug and play sensor nodes
Didn't I suggest doing something similar to this back in June?
http://openenergymonitor.org/emon/node/722
As the previous posts above, I think this would only be a good move if you also include the type of measurement and its unit of measurement - this way GLCD can automatically know that its a PV energy reading or a hot water temperature probe etc.
The GLCD would also need to combine several readings into potentially several screens/groups, you could have a couple of emonTx units sending data which are related to each other - do we need timestamps or a time sync broadcast message from the GLCD once in a while ?
As someone who has personally designed and worked with these sorts of protocols in the past, please also include a version number in the packet somewhere to allow you to expand the format without breaking all the existing code!
Re: Dev: Plug and play sensor nodes
Thanks guys, so datatype definition needs to be a key feature. I wasnt sure weather datatypes should be sent each time or if there could be a way to send it the first time and not repeatedly, thinking that if we could avoid sending datatype and dataname data then we could keep packet size to a minimum.
But thinking about it, provoked by your ideas there with defines mattwire and I think its exactly what your proposing in the linked post stuart - sorry I didnt catch that earlier!, I can see that datatypes could be sent with each transmission with only a very small bit of extra weight.
If we used a definition list as you suggest stuart:
Then the datatype could be a single byte giving us 255 possible datatypes and that single byte could define everything we need to know such as:
the variable name in emoncms could be constructed from this such as node1.ct1.realpower
If the datatype was a single byte that came before its data bytes such as:
1 byte (datatype), data bytes, 1 byte (datatype), databytes...
Then the datatype byte can tell the deconstructor how many of the following bytes belong to the data..
..
Ok so as Im writing this I can see that the datatype byte is or can be the same as the packet type character I was suggesting above. But instead of only being the first one it can be as stacked as you suggest.
So a section of our 255 available datatypes could be commands such as set node id.. and another section may be actual datatypes such as Voltage..
Nice!
Can you see any problems with referring too all data and command type defenition in a single byte..?
Re: Dev: Plug and play sensor nodes
I've had a go at writing a packet constructor and deconstructor for the 1 byte (datatype), data bytes, 1 byte (datatype), databytes packet format idea, I think its looking good so far, I have put the code up on github here: https://github.com/openenergymonitor/FirmwareDev/blob/master/packet_builder/packet_builder.ino
Would be great to hear your thoughts.
Re: Dev: Plug and play sensor nodes
A single byte might be limiting in the long run, but I also agree that keeping the packets small is important.
How about "reserving" a bit on the byte to indicate that this is a 2 byte data type and then the receiver can use that ?
You could also have some sort of broadcast "here I am" message when a node is first powered up (and perhaps every 100 packets or 10 mins) with this data in it if you didn't want to send this all the time - this might be a better way of doing things.
Additionally, I think you many need to include a description/definition of what you are trying to send back to base.
Its no good sending 10 temperature measurements from varios devices if you have no idea where the sensors are or what they are measuring !!
For instance:
Does the RFM12 device do hardware level checksum calculations? Do we need to bother with that ?
Think security/encryption of the data has also been mentioned in the past.
Re: Dev: Plug and play sensor nodes
The RFM12packets include CRC checksum, no need to handle this additionally.
Encryption may be an overkill, but it is already available for those who need it, see examples here:
https://github.com/jcw/jeelib/blob/master/examples/RF12/crypSend/crypSend.ino
https://github.com/jcw/jeelib/blob/master/examples/RF12/crypRecv/crypRecv.ino
Re: Dev: Plug and play sensor nodes
I also wanted to share some ideas for the auto node id assignment:
1. The NanodeRF sends out a time packet every time it receives incoming one (this is so that the EmonGLCD is updated)
Re: Dev: Plug and play sensor nodes
mharizanov, think you might be taking a slightly different approach to what I was originally suggesting.
Thoughts so far:
1. Why does a node id matter at all ? Why not broadcast every packet ?
2. You could have several devices transmitting data for a grouped set of readings (e.g. solar pv, current, temperature, voltage, power levels etc.) so don't think that a single node will be sending all those readings together in a single packet or even same time span!
3. If the data packets are self describing then no changes are needed to GLCD or emonCMS to handle the packet
4. Not everybody want's or uses emonCMS - its an extra expense to host/power that some people won't want
Re: Dev: Plug and play sensor nodes
How about not only making the EmonTX nodes plug and play, but also the inputs. Auto detect if a CT, pulse or temperature probe has been connected to the EmonTX and automatically start sending data.
I'm going to have a try to combine above with the FirmwareDev packet routines.
Re: Dev: Plug and play sensor nodes
Probably worth doing this on startup only to avoid the overhead. Add the new sensor and simply reset the emonTx and it discovers it.
Re: Dev: Plug and play sensor nodes
You could have several devices transmitting data for a grouped set of readings (e.g. solar pv, current, temperature, voltage, power levels etc.) so don't think that a single node will be sending all those readings together in a single packet or even same time span! http://gurjeetguri.blogspot.com
Re: Dev: Plug and play sensor nodes
Any progress with this?
Did you see JeeLabs recent thoughts on the same issue?
http://jeelabs.org/2013/01/14/remote-node-discovery/
http://jeelabs.org/2013/01/15/remote-node-discovery-part-2/
http://jeelabs.org/2013/01/16/remote-node-discovery-code/


subject
ARCHIVE MUTKNTFNPORXYL
DURWARD CUMMINGS
Total documents: 449 files
Recent share at: October 21, 2016
subject
View eBooks Catalog QAKGCFCQWAYKBO
JEROME DICKENS II 1
Total documents: 462 files
Recent share at: December 22, 2016
subject
View eBooks Directory O3LPEOF7
JENNYFER HAYES 1
Total documents: 445 files
Recent share at: January 03, 2017
subject
View Catalog 9DLVKVYVFL5MGQ
SHANNY SPENCER
Total documents: 488 files
Recent share at: August 19, 2016
subject
View ePubs Archive AAALCBTNL
GAETANO LANGOSH IV
Total documents: 390 files
Recent share at: December 14, 2016
subject
View eBooks Directory GPRXVVKNAR8232
PROF ANABEL RIPPIN IV
Total documents: 476 files
Recent share at: September 06, 2016
subject
View eBooks Directory A08BJBJEUPKJY
DAYANA HERMANN 1
Total documents: 407 files
Recent share at: November 05, 2016
subject
View ePubs Catalog C9ZTXEW79VS
JESSYCA SCHADEN 1
Total documents: 451 files
Recent share at: August 22, 2016
subject
View eBooks Catalog J64PLK6HTH
MS AUBREY SCHUPPE JR
Total documents: 484 files
Recent share at: November 20, 2016
subject
View Books Catalog MDKCATT8HHLFR
PERRY SCHMITT
Total documents: 381 files
Recent share at: December 21, 2016
subject
View eBooks Archive F38CSUT2DC69B
DR JOHNATHAN KRIS III 1
Total documents: 403 files
Recent share at: September 15, 2016
subject
View Books Directory ERWWXWAS
DR SHANIYA CUMMINGS DDS
Total documents: 378 files
Recent share at: November 26, 2016
subject
View Repository 2PRFPV5FJ
LONZO MAYERT I
Total documents: 392 files
Recent share at: November 15, 2016
subject
View ePubs Catalog L03GG0JHLDQ4R2
FRANCISCA GREENHOLT 3
Total documents: 388 files
Recent share at: September 01, 2016
subject
View Catalog UKBNXHMAGF3RGU
GRANT BAILEY DDS
Total documents: 383 files
Recent share at: September 17, 2016
subject
View ePubs Directory S709ENFU9NM
BRENNAN AUER IV
Total documents: 405 files
Recent share at: October 04, 2016
subject
View Directory 4D0UKGTUQF
KRAIG ULLRICH
Total documents: 415 files
Recent share at: November 04, 2016
subject
View Docs Archive OYG51IROWY0HAR
AHMAD VON IV 2
Total documents: 282 files
Recent share at: October 28, 2016
subject
View Docs Repository Z8YJW45ID629MN
KAMRYN KULAS
Total documents: 1 files
Recent share at: September 21, 2016
subject
View Books Archive GKHMRPZ0YKRGFT0


BARCELONA - CommerceGate, leading European billing solutions provider, today announced the launch of their new corporate image and completely revamped website at www.commercegate.com. The new launch marks a milestone in the development of the new and improved CommerceGate online payment processing service.
Along with substantial improvements to navigation and content, the website also boasts improved service for both Merchants and End Users.
The site introduces the new image of the CommerceGate brand to mark a new chapter in Commerce Gate’s continued development to become the payment service provider of choice for European Online Merchants.


{% extends "base.html" %} {% block title %} Bad Request {% endblock %} {% block content %} {% autoescape off %} Your request has been very, very naughty. {% endautoescape %} {% endblock %}


{% extends "layout.html" %} {% block page_title %} GOV.UK prototyping kit {% endblock %} {% block content %} BETAThis is a new service – your feedback will help us to improve it. What is your data about? Which types of waste do you transport regularly? Landfill Pollution inventory Combustion {% endblock %}
BETAThis is a new service – your feedback will help us to improve it.


TypingMania NEO is a song lyrics typing game. It is a spiritual successor to SightSeekerStudio's TypingMania Odyssey. Check GitHub repository for more information.
JavaScript is required to play.


{% load crispy_forms_tags %}
Add first the text of the question. In the next step you will be able to add the possible answers.