I’ve been thinking about an import/export API for PickyWiki; I want something that’s sensible, and works well enough that it can be the basic for things like creating restorable snapshots, integration with version control systems, and being good at self-hosting documentation.
So far I’ve made a simple import/export system based on Atom. You can export the entire site as an Atom feed, and you can import Atom feeds. But whole-site import/export isn’t enough for the tools I’d like to write on top of the API.
WebDAV would seem like a logical choice, as it lets you get and put resources. But it’s not a great choice for a few reasons:
- It’s really hard to implement on the server.
- Even clients are hard to implement.
- It uses GET to get resources. This is probably its most fatal flaw. There is no CMS that I know of (except maybe one) where the thing you view the browser is the thing that you’d actually edit. To work around this CMSes use User-Agent sniffing or an alternate URL space.
- WebDAV is worried about "collections" (i.e., directories). The web basically doesn’t know what "collections" are, it only knows paths, and paths are strings.
- (In summary) WebDAV uses HTTP, but it is not of the web.
I don’t want to invent something new though. So I started thinking of Atom some more, and Atompub.
The first thought is how to fix the GET problem in WebDAV. A web page isn’t an editable representation, but it’s pretty reasonable to put an editable representation into an Atom entry. Clients won’t necessarily understand extensions and properties you might add to those entries, but I don’t see any way around that. An entry might look like:
<entry>
<content type="html">QUOTED HTML</content>
... other normal metadata (title etc) ...
<privateprop:myproperty xmlns:privateprop="URL" name="foo" value="bar" />
</entry>
While there is special support for HTML, XHTML, and plain text in Atom, you can put any type of content in <content>, encoded in base64.
To find the editable representation, the browser page can point to it. I imagine something like this:
<link rel="alternate" type="application/atom+xml; type=entry"
href="this-url?format=atom">
The actual URL (in this example this-url?format=atom) can be pretty much anything. My one worry is that this could be confused with feed detection, which looks like:
<link rel="alternate" type="application/atom+xml"
href="/atom.xml">
The only difference is "; type=entry", which I’m betting a lot of clients don’t pay attention to.
The Atom entries then can have an element:
<link rel="edit" href="this-url" />
This is a location where you can PUT a new entry to update the resource. You could allow the client to PUT directly over the old page, or use this-url?format=atom or whatever is convenient on the server-side. Additionally, DELETE to the same URL would delete.
This handles updates and deletes, and single-page reads. The next issue is creating pages.
Atompub makes creation fairly simple. First you have to get the Atompub service document. This is a document with the type application/atomsvc+xml and it gives the collection URL. It’s suggested you make this document discoverable like:
<link rel="service" type="application/atomsvc+xml"
href="/atomsvc.xml">
This document then points to the "collection" URL, which for our purposes is where you create documents. The service document would look like:
<service xmlns="http://www.w3.org/2007/app"
xmlns:atom="http://www.w3.org/2005/Atom">
<workspace>
<atom:title>SITE TITLE</atom:title>
<collection href="/atomapi">
<atom:title>SITE TITLE</atom:title>
<accept>*/*</accept>
<accept>application/atom+xml;type=entry</accept>
</collection>
</workspace>
</service>
Basically this indicates that you can POST any media to /atomapi (both Atom entries, and things like images).
To create a page, a client then does a POST like:
POST /atomapi
Content-Type: application/atom+xml; type=entry
Slug: /page/path
<entry xmlns="...">...</entry>
There’s an awkwardness here, that you can suggest (via the Slug header) what the URL for the new page is. The client can find the actual URL of the new page from the Location header in the response. But the client can’t demand that the slug be respected (getting an error back if it is not), and there’s lots of use cases where the client doesn’t just want to suggest a path (for instance, other documents that are being created might rely on that path for links).
Also, "slug" implies… well, a slug. That is, some path segment probably derived from the title. There’s nothing stopping the client from putting a complete path in there, but it’s very likely to be misinterpreted (e.g. translating /page/path to /2009/01/pagepath).
Bug I digress. Anyway, you can post every resource as an entry, base64-encoding the resource body, but Atompub also allows POSTing media directly. When you do that, the server puts the media somewhere and creates a simple Atom entry for the media. If you wanted to add properties to that entry, you’d edit the entry after creating it.
The last missing piece is how to get a list of all the pages on a site.  But this doesn’t seem like a good solution to me. GData specifies a useful set of queries to for feeds, but I’m not sure that this is very useful here; the kind of queries a client needs to do for this use case aren’t things GData was designed for.
The queries that seem most important to me are queries by page path (which allows some sense of "collections" without being formal) and by content type. Also to allow incremental updates on the client side, filtering these queries by last-modified time (i.e., all pages created since I last looked). Reporting queries (date of creation, update, author, last editor, and custom properties) of course could be useful, but don’t seem as directly applicable.
Also, often the client won’t want the complete Atom entry for the pages, but only a list of pages (maybe with minimal metadata). I’m unsure about the validity of abbreviated Atom entries, but it seems like one solution. Any Atom entry can have something like:
<link rel="self" type="application/atom+xml; type=entry"
href="url?format=atom" />
This indicates where the entry exists, though it doesn’t suggest very forcefully that the actual entry is abbreviated. Anyway, I could then imagine a feed like:
<feed>
<entry>
<content type="some/content-type" />
<link rel="self" href="..." />
<updated>YYYYMMDDTHH:MM:SSZ</updated>
<entry>
...
</feed>
This isn’t entirely valid, however — you can’t just have an empty <content> tag. You can use a src attribute to use indirection for the content, and then add Yet Another URL for each page that points to its raw content. But that’s just jumping through hoops. This also seems like an opportunity to suggest that the entry is incomplete.
To actually construct these feeds, you need some way of getting the feed. I suggest that another entry be added to the Atompub service document, something like:
<cmsapi:feed href="URI-TEMPLATE" />
That would be a URI Template that accepted several known variables (though frustratingly, URI Templates aren’t properly standardized yet). Things like:
- content-type: the content type of the resource (allowing wildcards like image/*)
- container: a path to a container, i.e., /2007 would match all pages in /2007/...
- path-regex: some regular expression to match the paths
- last-modified: return all pages modified at the given date or later
All parameters would be ANDed together.
So, open issues:
- How to strongly suggest a path when creating a resource (better than Slug)
- How to rename (move) or copy a page (it’s easy enough to punt on copy, but I’d rather move by a little more formal than just recreating a resource in a new location and deleting the original)
- How to represent abbreviated Atom entries
With these resolved I think it’d be possible to create a much simpler API than WebDAV, and one that can be applied to existing applications much more easily. (If you think there’s more missing, please comment.)
Automatically generated list of related posts:
- Atompub & OpenID One of the thinmgs I would like to do is...
- Atom Publishing Protocol: Atompub Doing stuff with the Atom Publishing Protocol, I’ve noticed that...
- Hypertext-driven URLs Roy T. Fielding, author of the REST thesis wrote an...
- Throw out your frameworks! (forms included) No, I should say forms particularly. I have lots of...
- Avoiding Silos: “link” as a first-class object One of the constant annoyances to me in web applications...
Useful thinking, it seems. Why don’t you go ahead and build something and report on what experience teaches you? That’d be even more useful.
Hi,
interesting, but I really have to say that I find your statements about WebDAV hard to accept…
I do not believe this is the case. And, as a matter of fact, you don’t need to implement all of it; there are lots of libraries out there that help.
Using GET to get a representation of a resource is a feature, not a problem.
It’s correct that this becomes problematic when the representation to be edited is not the same as the one served by default. One way around that is a different URI space (this is what AtomPub allows, but so does WebDAV). The other way is to use Content-Negotation, although I wouldn’t recommend it (this is supported in all Microsoft clients/servers, using the “Translate” header).
Well, paths are strings, but they do have hierarchy. See RFC3986. WebDAV maps these hierachies to WebDAV collections, but that doesn’t mean that any use case for WebDAV actually needs to use them.
Obviously, as I disagree with the statements made before, I disagree with that one as well :-)
Best regards, Julian
> It uses GET to get resources. This is probably its most fatal flaw. There is no CMS that I know of (except maybe one) where the thing you view the browser is the thing that you’d actually edit. To work around this CMSes use User-Agent sniffing or an alternate URL space.
> It’s correct that this becomes problematic when the representation to be edited is not the same as the one served by default. One way around that is a different URI space (this is what AtomPub allows, but so does WebDAV).
Ian, your proposal also uses GET to get the editable form of the resource, doesn’t it? And it uses a different URL space (in this case, URLs appended with “this-url?format=atom”), doesn’t it? So I don’t see how your proposal is any different than WebDAV in terms of meeting your objection to the way that GET is used to get source resources.
Incidentally, perhaps all of the discussion participants are already aware of this, but in case any readers are not, the old spec for WebDAV (http://www.ietf.org/rfc/rfc2518.txt) included a DAV:source property that would be attached to the “processed” URL and which would point to the “source” URL (i.e., DAV:source is analogous to Ian’s ). DAV:source was removed from the current spec (http://www.ietf.org/rfc/rfc4918.txt) due to “lack of implementation experience” — but presumably no one would complain if you used DAV:source as originally intended.
My proposal uses an explicit
<link>
, which I think satisfies this problem. I suppose this is similar to DAV:source, though the specification for DAV:source seems very vague to me, and not at all reassuring. Also, I think it requires fetching properties on a page, and just involves a lot of chasing links around (thus you can’t determine the presence of that link automatically), compared to putting in the HTML explicitly.Of course, it would be even better if you could not just label the source for an entire page, but if you could label a fragment of a page with its source. Heck, maybe you could start to mark up not just the underlying data sources, but also the underlying templates. Simply by marking up fragments of data, you could start building up a Javascript layer that would read these links and do inline editing on the client side.
> How to rename (move) or copy a page (it’s easy enough to punt on copy, but I’d rather move by a little more formal than just recreating a resource in a new location and deleting the original).
Please forgive me that I have to point out that this becomes a non-issue if you use WebDAV.
Best regards, Julian
Writing a WebDAV server isn’t hard, especially if you rely on the premade libraries. Perl has Net::DAV::Server, which I’ve used to serve a custom file system within 10 minutes of work and I’m confident that Python also has a mostly premade WebDAV server to which you just need to provide the proper backend.
I also don’t see the problem of having to access things via a different URI when wanting to download/edit them – in fact, I don’t see what’s wrong with an appended ?action=edit or /webdav/foo to edit the resource /foo.
WebDAV clients are different between OSes and unfortunately, Microsoft managed to make the “Web Folders” unusable with XP SP2 , but again, I think that Python should also have a WebDAV client library.
For what’s worth, Nanoki, a simple wiki engine implemented in Lua, does provide a WebDAV interface… so one can ‘mount’ the entire wiki directly on a file system… check the online demo for an illustration:
http://svr225.stepx.com:3388/nanoki
dav://svr225.stepx.com:3388/
As far as WebDAV being ‘hard’ and/or ‘a misfit’, such characterization seems to be more related to, hmmm, ‘unfamiliarity’ than anything else :)
> How to strongly suggest a path when creating a resource (better than Slug)
Wouldn’t the obvious answer be using PUT? It would be more forcing than strongly suggesting, but I would assume that for a wiki, explicitly stating the URI would indeed be what you want.
I know it’s strictly speaking not part of Atompub, but otoh, it is definitely consistent with HTTP, and could be seen as a compatible extension to Atompub. Everything else, including creating via POST (with slug) would still work. PUT on a non-existing URI would return
201 Created
if this method of creating is supported,404 Not Found
if the service is restricted to standard Atompub. PUT on an existing URI would remain as it is.Agreed, except that I think something other than 404 would be better choice in case the server doesn’t allow that particular URI (such as 403 or 409).
It occurred to me too, but I still went for 404. It would perhaps be nice to know whether the server supports it or not, but servers that don’t allow/support this would probably return 404 anyway. It seems a bad idea to implement a non-standard atompub extension by requiring that non-supporting servers do special-case handling.
Furthermore:
what if you’re actually doing PUT-for-update as in standard atompub, would you want to get anything else than 404 if the entry doesn’t exist?
what if it already exists, but you are really forbidden to update (403), or there is a conflict (409)?
If needed, indicating support for this seems to belong in the service document. But I’m not sure 404 actually poses a problem, because the client will presumably know it is trying to create the entry (and will hence understand what the 404 means)
[Someone else suggested the same thing](http://blog.mozilla.com/rob-sayre/2009/01/11/ian-bicking-on-atompub-vs-webdav/) and as I first thought about it PUT seemed reasonable, but after a bit more thought I’m not that happy with it. The parts of the protocol I’ve mapped out so far don’t require changes to existing CMS URLs and controllers except for the introduction of the
<link>
tags. With PUT, all pages have to accept and properly respond to those requests. Note that when editing a resource, the PUT location is the URL from<link rel="edit">
, not the resource URL itself.Ian, why are you saying that supporting PUT in one part of the namespace requires doing so everywhere?
Well, you need PUT everywhere that’s editable. With the indirection otherwise available, you could have something like
<link rel="edit" href="/atompubapi.php?path=/path/to/page" />
in the Atom entry.Hmmm, hadn’t thought about the edit uri and its implications for PUT/create… It could be made to work with the resource uri: create (and return in Content-Location) a new edit uri (but that seems to introduce other problems)
Another idea maybe: from the http spec: “The meaning of the Content-Location header in PUT or POST requests is undefined; servers are free to ignore it in those cases.” More “undefined custom stuff”, I know… But I would expect Content-Location in POST to have the effect of forcing the path of the newly created resource. (problem: you couldn’t count on the server respecting it…)
I think I’d just use PUT on a non-existing URI from the edit uri-space, and expect this to result in an equivalent resource uri (wiki-like uris ignore uri-opacity anyway, and you’d probably want edit uri’s to have a similar path as well). And then ignore the problems only if/until you actually hit the wall ;-)
Maybe a way to make it specific would be an extension to the atompub service document. Something like:
Then the client can know for sure that the server supports this feature. Maybe the PUT functionality people suggest could be allowed for, like:
Ian,
> There’s an awkwardness here, that you can suggest (via the Slug header) what the URL for the new page is. The client can find the actual URL of the new page from the Location header in the response. But the client can’t demand that the slug be respected (getting an error back if it is not), and there’s lots of use cases where the client doesn’t just want to suggest a path (for instance, other documents that are being created might rely on that path for links).
To be fair since the server can do what it sees best, you can write your server to always respect the Slug header. It’s an implementation detail which isn’t formally advertised but I don’t think that’ is really an issue here.
> (…) you can put any type of content in , encoded in base64.
While being true, media types terminating with /xml or +xml don’t require base64 encoding. Nor do those starting with text/
> This indicates where the entry exists, though it doesn’t suggest very forcefully that the actual entry is abbreviated.
You could define a specific rel attribute value to indicate that or perhaps use an atom:category for that. Alternatively you might even be able to use the app:control element for that sort of meta-data.
If it’s already overloading Slug with atypical functionality, I wonder if it would be best just to use a different header entirely?
Readying the [section on app:control](http://bitworking.org/projects/atom/rfc5023.html#rfc.section.13.1) it appears that it’s only intended to be used by clients to indicate something to the server. I suppose just a custom element would be best, as there’s nothing already in Atom that really fits. A category would be a misrepresentation of the original entry, I think.
Regarding Slug overloading, I think it depends if you’re talking about Slug in your particular application or in a more general way. Slug is rather loosely defined and it would seem rather fair to make it more clearly specified in your application as long as it wasn’t going against the spirit of the spec.
About app:control, I guess you’re right, since it’s more a way for the client to pass information, it is probably not the right tool here. Your remark on the category element is fair only because AtomPub has decided to consider posting an Atom entry has a specific case where the returned member entry was generated from the POSTed entry. I’ve often thought it would lead to confusion not to consider an Atom entry has any other media-type, in other words so that you distinguish what had been sent from had been generated. That’s the way it is and due to that the category element is indeed probably the wrong idea here.
I don’t see what webdav offers that SVN does not.
SVN is WebDAV with versioning extensions. So yes, WebDAV doesn’t offer anything SVN does not…? Despite that, I don’t think it was ever a useful basis for Subversion (e.g., [this post](http://blog.red-bean.com/sussman/?p=139))
That post really is about DeltaV (the WebDAV versioning extensions defined in RFC 3253), not WebDAV itself. As far as I can tell, nobody is questioning the value value of WebDAV (GET/PUPT/PROPFIND/PROPPATCH/REPORT) itself as Subversion transport protocol.
A few years ago I was wondering about the relationship between WebDAV and Atom. Here is a wiki page in which I recorded notes on what I found:
http://intertwingly.net/wiki/pie/WebDav
Summary for the busy:
Seems that Sam Ruby and Greg Stein, at least, worked on WebDAV before working on Atom, and Sam made a comment that may imply that he thinks of Atom as a lightweight replacement WebDAV, at least for some tasks (but I haven’t actually asked Sam Ruby if I’m interpreting him correctly).
Hmm, I think asking every little blog and wiki to implement queries limited by “path-regex” is too much. I think this proposal clarifies which which operations wikis need:
http://www.jspwiki.org/Wiki.jsp?page=WikiRPCInterface2
I think if you develop a standard that forces wiki servers to do more than that, people won’t implement it. In fact, even that proposal is more than what will be tolerated by most wiki programmers. I think the most you could really get all people to do is:
(1) Get HTML version of page (2) Get editable wiki text version of page (3) Get RecentChanges (4) Submit edited page (5) Identify which version/level/services of the standard is/are being provided (in a very easy-to-implement way, i.e. the server might return a number or a string or two, and maybe a list of strings (“list of services provided”), and maybe even a hardcoded XML document).
Other things that you might be able to get a substantial number of implementors to do (in my opinion): * Present RecentChanges in an Atom feed * Hardcode a service discovery document (I doubt you would convince everyone to add service discovery links to each wiki page though) * A minority might even deign to allow a “later than date X” query to limit RecentChanges. * A minority might support getting page histories and past page versions.
> I think the most you could really get all people to do is:
oh, and i forgot
(6) a list of all of the pages on the wiki
oh and i should note — even though i’m pointing out things that i think won’t be universally implemented, i do believe that sometimes it’s a good idea to do something in your own implementation, or even to suggest something in a spec, even if you don’t think “everyone will implement it”.
You may also be interested in posting to http://www.wikisym.org/cgi-bin/mailman/listinfo/wiki-standards, in fact, maybe I’ll post there directing people to this article. Before wiki-standards existed, some similar topics used to be aired on https://lists.sourceforge.net/lists/listinfo/interwiki-discuss.
Also, I worked on a project awhile ago that might be slightly related, called WikiGateway (http://interwiki.sourceforge.net/cgi-bin/wiki.pl?WikiGateway), the goal of which was to provide a standard API for interacting programmatically with various different types of wiki (WikiGateway included a commandline wikiclient, a Perl library and a Python library for clients, and also gateway servers that exposed foreign wikis via WebDAV and via Atom and via XMLRPC). The project only ever worked with a handful of wiki types, and it is now a couple of years out of date (maybe in a few more years I’ll update it again..). I don’t know what similar things have been done since.
I hope that someday the various wiki implementors rally around a single standard for programmatic interaction with wikis. There was some discussion of this around 2005, but I haven’t heard much about it recently; then again, I haven’t been looking.


[1] Menus very cheap to work with computer out it might be amazing nice and size optical stabilisation Battery life poor would be nice to coontrol ISO in photo mode.
[2] when i am very cheap to work with computer out it might be amazing nice and size optical stabilisation Battery life poor would be nice to coontrol ISO in photo mode.


Digital Dingos
Welcome to our 201 project page! This project is an interactive piano interface where anyone can come and learn the basics of playing the piano- from individual notes to basic chords. Come on in, have fun, and learn a thing or two! Try different sounds, record yourself and make some music!


We have been serving Nashville for
over 30 years. Founded in 1985, Pastry Factory
began as a small, family-owned business.
Meet the team.
David is the son of Pastry Factory's founder. His father, John, taught David everything he knew about pastries and the process that is involved to make them.
Sara is David's daughter. She is currently in culinary school working on becoming a head chef and enjoys working at Pastry Factory as a full-time job.
Michael helps the team with designing the different assorted pastries and goods we serve.


AgeTacular Support
Add an event: Tap the add button…
In the main view nav bar at the top, tap the + sign in the top right to add your first event. Where are the settings? In the main view, tap the icon that looks like a gear, or cogwheel, located to the left of the + sign at the top.
Tap the event that you want to share in the main view to go into the detail view. In the top right of the nav bar in the detail view, tap the share icon.
Need to delete an event? There are two ways:
Need to change the name or date of an event? Two ways: 1) swipe left on the row you want to edit from within the main screen view, Edit and Delete buttons will appear, tap Edit, or 2) simply add a new event with any desired changes, go back to the main screen to verify the new details, then delete the original event with the old information.
Yes, the end date of the date calculation (today) is counted, but the event date is not (e.g., yesterday’s event would be calculated as 1 day, not 2 or 0 days).
Please head over to the Issue Tracker to file a bug, report an issue, request an enhancement, comment on or track development. This is the fastest and preferred way to get support. For anything else, please contact us at<EMAIL_ADDRESS>Apple, the Apple logo, iPhone, and iPad are trademarks of Apple Inc., registered in the U.S. and other countries and regions. App Store is a service mark of Apple Inc.


| handle {curl} | R Documentation |
Handles are the work horses of libcurl. A handle is used to configure a
request with custom options, headers and payload. Once the handle has been
set up, it can be passed to any of the download functions such as curl
,curl_download
or curl_fetch_memory
. The handle will maintain
state in between requests, including keep-alive connections, cookies and
settings.
new_handle(...) handle_setopt(handle, ..., .list = list()) handle_setheaders(handle, ..., .list = list()) handle_getheaders(handle) handle_getcustom(handle) handle_setform(handle, ..., .list = list()) handle_reset(handle) handle_data(handle)
... |
named options / headers to be set in the handle.
To send a file, see |
handle |
Handle to modify |
.list |
A named list of options. This is useful if you've created
a list of options elsewhere, avoiding the use of |
Use new_handle()
to create a new clean curl handle that can be
configured with custom options and headers. Note that handle_setopt
appends or overrides options in the handle, whereas handle_setheaders
replaces the entire set of headers with the new ones. The handle_reset
function resets only options/headers/forms in the handle. It does not affect
active connections, cookies or response data from previous requests. The safest
way to perform multiple independent requests is by using a separate handle for
each request. There is very little performance overhead in creating handles.
A handle object (external pointer to the underlying curl handle). All functions modify the handle in place but also return the handle so you can create a pipeline of operations.
Other handles:
handle_cookies()
h <- new_handle() handle_setopt(h, customrequest = "PUT") handle_setform(h, a = "1", b = "2") r <- curl_fetch_memory("http://httpbin.org/put", h) cat(rawToChar(r$content)) # Or use the list form h <- new_handle() handle_setopt(h, .list = list(customrequest = "PUT")) handle_setform(h, .list = list(a = "1", b = "2")) r <- curl_fetch_memory("http://httpbin.org/put", h) cat(rawToChar(r$content))


It looks like you have a fresh install of PieCrust. Thanks for downloading it and trying it out! You're almost ready to start writing your own stuff:
- Create a
_content
directory at the root of your website (probably next to the_piecrust
directory). - Inside it, create the following:
- A
config.yml
text file (this will contain your website's global settings, like its title). - A
templates
directory (this will contain things like HTML layouts). - A
pages
directory (this will contain the contents of your pages).
- A
- Create a default template, appropriately called
default.html
. Use the{{content|raw}}
tag to indicate where the page contents should go. - Create your main page, called
_index.html
and put whatever you want in it. - Refresh your browser!
For more information, be sure to check out the documentation.


HoloJs Overview
What is HoloJs
HoloJS is an execution host for Augmented and Virtual Reality applications written in JavaScript and rendered with WebGL. It provides implementations for WebGL, WebVR, WebAudio, Gamepad APIs, Canvas, XmlHttpRequest, Image such that existing WebGL web apps run in HoloJs with little to no modifications.
Note: HoloJs implements a minimal DOM, just enough to fully implement WebGL.
Most
DOM operations, like creating elements, CSS, etc. will fail. DOM support is restricted to the following
elements: window, canvas, image.
HoloJs extends the web standards with interfaces that abstract the underlying hardware and make it easier to
create experiences for various form factors and headsets:
- CanvasVR represents the rendering surface of the currently attached device. An attached device can be a HoloLens, Windows Mixed Reality headset, or in the absence of these a 2D desktop window. The script application does not need to manage this canvas element. Obtaining a CanvasVR element is done through the standard document.createElement(...).
- Spatial Mapping. HoloLens only. To be documented.
- Voice commands. To be documented.
- Spatial anchors. Currently HoloLens only. To be documented.
How to use HoloJs
Depending on goals, HoloJs can be used in a variety of ways:- Build from scratch and embedd in your C++ project. This approach is
suitable
if the existing HoloJs implementation does not meet
requirements and modifying the underlying C++ code can achieve your goals. An example would be
adding
support for additional headsets (Oculus, HTC Vive, etc.), platforms (Android, Linux, etc.) or
exposing
more platform features to the script app.
Clone the code from https://github.com/Microsoft/HoloJS and follow the build instructions - Use the HoloJs Nuget package in your C++ code. This approach is suitable if you want to create a standalone JavaScript AR/VR that you can publish as a Win32 or UWP app.
- Use Spin to create AR and VR experiences in minutes that others can view using the Spin View app for Windows and HoloLens. This method is suitable if your experience does not require any additional platform capabilities beyond those already provided by HoloJs. This method does not require C++ knowledge; all coding is done in JavaScript/Visual Studio Code and no compilation is required.
Under the hood
Internally, HoloJs uses a variety of open source components to create the hosting environment:- ChakraCore provides the JavaScript runtime.
- ANGLE provides the WebGL implementation for the Win32 platform.
- Microsoft ANGLE provides the WebGL implementation for the UWP and HoloLens platform.
- LabSound provides the WebAudio implementation, including spatial audio rendering.
- ChakraCore debugger provides the debugger protocol implementation that enables editing and debugging HoloJs apps using Visual Studio Code.
- Win2D provides the implementation for canvas's 2D context on the Windows platform.
- ZipLib provides cross platform archive decompression.


title=My Post on Spring at China Scale date=2013-03-06 type=post tags=blog status=published ~~~~~~
Hey guys I put up a post on the SpringSource blog, Spring at China Scale: Alibaba Group (Alipay, Taobao, and Tmall) which details some of the stuff I learned when I visited TaoBao, TMall, Alipay, etc., under the Alibaba group in December, in China. Check it out! |


Welcome to Manager Account
Logout
ID
Firstname
Lastname
Email
Role
Menu
View All Reimbursement
View Past Reimbursement
View Pending Reimbursement
ReimbID
Status
PENDING
APPROVE
DENY
Submit
Confirm
Reimb ID
Submitted On
Amount
Author ID
Type
Description
Status
Resolver ID
Resolved on


:8080/test
0){
// accept new client
$newsocket = socket_accept($host_socket);
// Read from socket
$input = socket_read($newsocket, 1024);
if($input){
unset($client_header);
// Read headers; Split into safe lines
$line=explode("\n",preg_replace('/[^A-Za-z0-9\-+\n :;=%*?.,\/_]/','',
substr($input,0,2000)));
// Split request line into its parts
list($client_header["method"],$client_header["url"],$client_header[
"protocol"])=explode(" ",$line[0]);
// Remove the request line again.
unset($line[0]);
// Make key=value array of headers
foreach($line as $l){
list($key,$val)=explode(": ",$l);
if($key) $client_header[strtolower($key)]=$val;
}
// Get IP of client
socket_getpeername($newsocket, $client_header['ip']);
// Decode url
$client_header+=(array)parse_url($client_header['url']);
parse_str($client_header['query'],$client_header['arg']);
print_r($client_header);
// Serve file
if(strpos($client_header['path'],".html") && file_exists(__DIR__.
$client_header['path'])){
echo "Sending a HTML page to client\n";
socket_write($newsocket,"$client_header[protocol] 200 OK\r\n");
socket_write($newsocket,"Content-type: text/html; charset=utf-8\r\n\r
\n");
socket_write($newsocket,file_get_contents(__DIR__.$client_header[
'path'])."\r\n\r\n");
socket_close($newsocket);
}elseif($client_header['path']=="/test"){
echo "Sending test HTML page to client\n";
socket_write($newsocket,"
Its working!
Have fun\r\n");
socket_write($newsocket,"Request header: ". print_r(
$client_header,true) . "
\r\n");
socket_write($newsocket,"\r\n\r\n");
socket_close($newsocket);
}else{
echo "$client_header[protocol] 404 Not Found\r\n";
socket_write($newsocket,"$client_header[protocol] 404 Not Found\r\n\r
\n");
socket_close($newsocket);
}
}
}
}
socket_close($host_socket);
?>
===============================================================================
Another solution to the problem of keys not being preserved is to have an
additional array for looking up sockets that uses their resource identifiers as
keys. This can be obtained using array_flip() in some cases, but is
particularly useful if each socket is associated with an object. In this case,
you can make the object's constructor add a pointer to itself to the lookup
array with its socket resource identifier as a key and use the following code
to execute a read method for the object associated with each socket returned by
socket_select():
read();
}
?>
===============================================================================
Just noticed that you have to loop socket_select () when using UDP to get all
queued packets:
0) {
foreach ($aReadUdp as $oSocket) {
$this->clientReadUdp ($oSocket);
}
}
?>
That's important because every call of socket_select () on UDP brings you only
one result. But there could be 10.000 results queued and if your turnarround
time is to slow (server busy, other sleeps etc.), you'll never progress all
results in near realtime.
===============================================================================
Just to add to this. Since the information contained in the notes is somewhat
old. It appears keys are being preserved now.
So, if you rely on knowing which keys need to be worked with and were like me
and thought that it didnot preserve. Well it does.
===============================================================================
If you want to use a simple fractional value for timeout:
===============================================================================
Regarding the comment below, No, it does not, it's a system call and I believe
it's rather hard to preserve keys.
Additionally, socket_select should be used like it was a user-inputted array,
that you don't know what you sent in to.
===============================================================================
Note that the resulting arrays do NOT maintain keys (PHP 4.3.2) after being run
through this function:
Before:
Array
(
[Client_Socket] => Resource id #6
[Server_Socket] => Resource id #9
)
After:
Array
(
[0] => Resource id #6
[1] => Resource id #9
)
It would have been nice to have the keys stay to figure out which stream you
need to receive from, but you'll have to use some fancy foreach loop to figure
out which sockets to check.
===============================================================================
The continuation of my my previous post on 28-Apr-2005 10:19 at
http://ca3.php.net/manual/en/function.socket-select.php
Here it is: (Link is broken into 2 parts)
'http://gtkphp.org/php_socket_select_hangs
_explanation_and_solution.html'
===============================================================================
It is probably a bad idea to watch an array of sockets for input with
socket_select, and then socket_read() using PHP_NORMAL_READ.
Although this seems desirable, you can end up with a permanently blocked
program, if someone sends you malformed input which is missing a trailing \n \
r. Guess how I found that out.
===============================================================================
Please note that the timeout parameter has important side-effects on the CPU
usage of your script.
Setting the timeout to 0 will make your CPU looping without any time to have
some rest and handle other running processes on your system, causing the system
load to increase heavily while your script is running.
Personnaly, I use a value of 15 ms for this parameter. this ensures a good
listening frequency while letting your system load clear.
Example :
$read = array($ListeningSocket);
$num_changed_sockets = socket_select($read, $write = NULL, $except = NULL, 0,
10);
Hope this helps.
===============================================================================
hello,
i just made a class which acts similiar to Perl's IO::Select in order to make
socket selecting very easy
your script should look something like that:
can_read(0) as $socket) {
if ($socket == $client->socket) {
// New Client Socket
$select->add(socket_accept($client->socket));
}
else {
//there's something to read on $socket
}
}
}
?>
you should of course implement some routines to detect broken sockets and
remove them from the select object.
you can also do output buffering and check in the main-loop for sockets that
are ready to write
sockets = array();
foreach ($sockets as $socket) {
$this->add($socket);
}
}
function add($add_socket) {
array_push($this->sockets,$add_socket);
}
function remove($remove_socket) {
$sockets = array();
foreach ($this->sockets as $socket) {
if($remove_socket != $socket)
$sockets[] = $socket;
}
$this->sockets = $sockets;
}
function can_read($timeout) {
$read = $this->sockets;
socket_select($read,$write = NULL,$except = NULL,$timeout);
return $read;
}
function can_write($timeout) {
$write = $this->sockets;
socket_select($read = NULL,$write,$except = NULL,$timeout);
return $write;
}
}
?>
===============================================================================
If you haven't done any network programming before, PHP's socket_select() might
appear a bit strange to you. I've written a simple php "partyline" script to
demonstrate the multi-socket use of select'ing at http://dave.dapond.com/
socketselect.php.txt
===============================================================================
socket_select() can also serve as a more granular sleep():


---
title: Data - Fabricator
layout: 2-column
section: Documentation
---
{{#markdown}}
# Data
> How to feed data into your toolkit materials and prototypes
Sometimes it is helpful to decouple page data from materials and layouts.
## src/data
Data can be stored in JSON or YML files in the `src/data` directory.
Data within these files is accessed using dot notation. For example, given `home.yml`:
```yml
links:
About Us:
- About Us
- Careers
- Media Center
- Legal
```
Data could be used in a view as:
```markup
{{{{raw}}}}{{#each home.links}}
{{#each this}}
{{this}}
{{/each}}
{{/each}}{{{{/raw}}}}
```
And would output:
```markup
About UsCareersMedia CenterLegal
```
## Material Front-matter
Data can also be stored as front-matter in a view or material.
Example material `src/materials/components/welcome.html`:
```markup
---
greeting: Hello
---
{{{{raw}}}}{{greeting}}{{{{/raw}}}}, World!
```
Output:
```markup
Hello, World!
```
## Context
Each view is templated with a unique context (data model) assembled from material data, front-matter, and `src/data`. Fabricator scrapes the files in your toolkit and builds theses data models on the fly. They only exist within the `fabricator-assemble` task; views are templated using these data models, but the data is never written to disk.
Here's an example scheme:
```javascript
{
// page front-matter
"title": "Home",
// built-in props
"baseurl": "..",
// src/data
"home": {
"greeting": "Hello",
"action": "Click"
},
"user": {
"user": {
"name": "Luke"
}
},
// material data
"materials": {
"components": {
"name": "Components",
"items": {
"alerts": {
"name": "Alerts",
"items": {
"alerts.primary": {
"name": "Primary",
"notes": ""
}
}
},
"button": {
"name": "Button",
"notes": "
\n"
}
}
}
```
You can iterate over the properties in this data model when [customizing](/advanced/customization.html) your Fabricator pages.
## Reserved words
There are a handful of predefined context properties. You should avoid over-riding these properties.
### {{{{raw}}}}{{baseurl}}{{{{/raw}}}}
Used when building links in nested views:
```markup
```
{{/markdown}}


Image Placeholder
Placeholder image backgrounds for
or

tags. Default images are from unsplash.
image-fpo

FPO placeholder image is defined in the _evo_variables.scss file. Combine the image-fpo
class with evo-image
, and the image-size-[number]
or image-ratio-[number]
class. The default image file is named fpo.jpg
and may be located at../../image/fpo.jpg
.
image-random

Generates a random square placeholder image pulled from unsplash.com, that loads with each browser refresh. Combine the image-random
class with evo-image
, and the image-size-[number]
or image-ratio-[number]
class. The default randomizer URL is https://unsplash.it/1024/963?random


--- date: "2019-09-03T10:14:46+02:00" title: Importing Data weight: 12 ---
here()
functionThe templates use the function here()
in conjunction with import()
to locate and import local files.
import()
functionThe function import()
from the package rio makes it easy to import many types of files.
It uses the file’s extension (e.g. .xlsx, .csv, .dta, etc.) to appropriately read the file. You can read more about import()
on this page. If importing an Excel file, the templates use import()
’s argument which=
to specify the sheet to import.
However, import()
needs to be told where to look on your computer to find the file. Therefore, we have wrapped import()
around the function here()
. Normally, import()
accepts a filepath in quotes, but it is easy to make mistakes that way.
here()
functionThe function here()
from the package Here makes it easy to locate local files.
here()
works well within R projects. When the package is first loaded, it automatically considers the top-level folder of your R project as “here” - as a benchmark for all other files in the Project. In your script, if you want to import or reference a file saved in your R project’s folders, you use the function here()
to tell R where the file is in relation to that benchmark.
If you are unsure where “here” is set to, run this command:
# This command tells you the folder path that "here" is set to
here()
import()
and here()
togetherBelow is an example of importing the file “linelist.xlsx”. If the file you want is in the folder designated as “here”, all you have to do is provide the name of the file in quotes (with the appropriate ending).
linelist_raw <- rio::import(here("linelist.xlsx"), which = "Sheet1")
{{% notice tip %}}
After the closing parenthes of here()
the import()
function continues. There is a comma and import()
’s optional argument which =
, specifying which sheet of the Excel file to import.
{{% /notice %}}
If however, your file is within subfolders of the folder designated as “here” - let’s say it is in the subfolder “data” and then the sub-subfolder “linelists” - you write these folder names before the file name, in quotes, and separated by commas, as below:
linelist_raw <- rio::import(here("data", "linelists", "linelist.xlsx"), which = "Sheet1")
You can read more about Here and here()
in this overview and this documentation
{{% notice tip %}}
By using the Here package and here()
function with R projects, it is not necessary to worry about your “working directory”, setwd()
, or getwd()
commands.
{{% /notice %}}


Donald Trump is now being blocked. Want to get rid of anyone else while we're at it?
Looking for images of a trumpet, or socks in Swedish? Right-click / Control-click the page then choose "Make Trump Trump Again :(" to undo the replacements.
credit to Tom Royal for Make America Kittens Again-- donate below


| Interface | Description |
|---|---|
| WizardPanelModel |
In order to use the Wizard class you need to implement this interface.
|
| Class | Description |
|---|---|
| AddHeaderFooterToPDFPages | |
| CropPDFPages | |
| DeletePDFPages | |
| DownloadProgress | |
| EncryptPDFDocument | |
| ErrorDialog |
popup an error message to show user what message JPedal generated
|
| ExtractPDFPagesNup | |
| FileDownload | |
| InsertBlankPDFPage | |
| PrintPanel | |
| RotatePDFPages | |
| Save |
allow user to select page range and values to save
|
| SaveBitmap |
specific code for Bitmap save function
|
| SaveImage | |
| SavePDF | |
| SaveText | |
| SignWizardModel |
This class implements the WizardPanelModel and in this
case contains the JPanels to be drawn as inner classes.
|
| StampImageToPDFPages | |
| StampTextToPDFPages | |
| SwingProperties | |
| TipOfTheDay | |
| UpdateDialog | |
| Wizard |
JPedal 5.06b01 ACCCCA


Competition¶
Starting 24.08.2020 we are hosting a Kaggle competition about predicting future movements of other traffic participants. This page serves as introduction point for it and gives additional information.
Scoring¶
When taking part in the competition, you will be asked to submit predictions for a private test set (no ground truth is available), and your solutions will be scored by Kaggle. Overall 30.000 USD as prizes are available! As traffic scenes can contain a large amount of ambiguity and uncertainty, we encourage the submission of multi-modal predictions. For scoring, we calculate the negative log-likelihood of the ground truth data given these multi-modal predictions. Let us take a closer look at this. Assume, ground truth positions of a sample trajectory are
,
and we predict K hypotheses, represented by means
.
In addition, we predict confidences c of these K hypotheses. We assume the ground truth positions to be modelled by a mixture of multi-dimensional independent Normal distributions over time, yielding the likelihood
yielding the loss
You can find our implementation here, which uses error as placeholder for the exponent
and for numeral stability further applies the log-sum-exp trick: Assume, we need to calculate the logarithm of a sum of exponentials:
Then, we rewrite this by substracting the maximum value x* from each exponent, resulting in much increased numerical stability:
Coordinates System for the competition¶
Please refer to this doc for a full description of the different coordinate systems used in L5Kit.
The ground truth coordinates for the competition are stored as positional displacements in the world coordinate system. However, you will likely predict relative displacements for the agent of interest either in the agent coordinate system or in the image coordinate system. Before using our utils to write a CSV file for you predictions convert them into the world coordinate system using the appropriate transformation matrix available as part of the input data and subtract the centroid.
Yaw is not required/used for this competition.
Additional Metrics¶
Scoring multi-modal prediction models is a highly complex task, and while we chose the metric described above due to its elegance and support for multi-modality, we encourage participants to also employ other metrics for assessing their models. Examples of such other metrics, commonly used in literature, are Average Displacement Error (ADE) and Final Displacement Error (FDE) (see our dataset paper or SophieGAN): ADE is the average displacement error (L2 distance between prediction and ground truth averaged over all timesteps), while FDE reports the final displacement error (L2 distance between prediction and ground truth, evaluated only at the last timestep). As we consider multiple predictions, we offer implementations for both these metrics either averaging over all hypotheses or using the best hypothesis (oracle variant) - ignoring generated confidence scores in both cases.


DELIVERY INFORMATION
Latest Recommended Christmas Order Dates
Please allow plenty of time for Christmas delivery this year. We recommend ordering items and gifts for Christmas as early as possible as Royal Mail are experiencing exceptionally high volumes, impacting delivery times.
Standard Delivery (Royal Mail First Class) - Friday 18th December
Next Day Delivery (Royal Mail Special Delivery) - Wednesday 23rd December (2pm)
Coronavirus Update
Our website is still working as usual and we are still providing our customers with the best service possible from a safe environment.
The safety of both our customers and staff remains our highest priority at this time. Our distribution centre is following strict social distancing measures in order to despatch orders reliably and safely during this period. Royal Mail continues to follow procedures for safe handling of mail and parcels with contact free delivery.
Delivery Charges
The charge for UK standard postage and packing is £3.95. Our standard delivery time is usually 48-72 hours. If we receive an order on our website before 2pm we aim to despatch the order the same day.
Please be advised that during busier periods such as sale or Christmas, some parcels may take slightly longer to be delivered.
Please note that all orders are delivered by Royal Mail.
If you require a Next Day delivery service this can be selected at the confirm and pay stage of our checkout. For this service we charge £7.95 and orders must be placed before 2pm to qualify.
Next Day orders placed on a Friday are delivered on a Monday and Next Day orders placed on Saturday or Sunday are delivered on the following Tuesday. Next day orders placed on a Bank Holiday Monday will be delivered the following Wednesday. Please note that all Next Day orders require a signature upon delivery.
Unfortunately we cannot offer Next Day Delivery to postcodes beginning with GY, HS2, IM, JE, KW16-KW17, PA61-PA75, PA78, PH30, PH41-PH44 and ZE2-ZE3.
Please note that we do offer an International Delivery Service; delivery to Europe will cost £12.00, America will cost £15, the Rest of the World will cost £20.00.
Overseas orders are sent by airmail. Approximate delivery times are:
- Eire 10 days
- Europe 10 days
- USA/Canada 14 days
- Elsewhere 14 days
We are unable to deliver to PO box addresses.


Toggle navigation
A-Frame Workshop
View on Github
Examples
Basic
Loading Primitives
Loading Models
Model Animation
Particles
Character Movement
Checkpoint Controls
Level of Detail (LOD)
Augmented Reality
Realtime Shadows
Spatial Audio
Cardboard Environment
Advanced
Custom Shaders
Cross-Device Controls
Physics
Multiplayer Block Game


When your computer device connects with the internet by sending or receiving information, this is communicated in the language of Hypertext Transfer Protocols ("HTTP.") Essentially, these protocols perform either "get" or "post" requests. The get requests are used when the user is trying to use their web browser and access a domain, whereas the post request is when the user sends information (like search requests for example) back to the server.
Without proper security, webpages may be susceptible to internet "hackers" stealing data and information. However, if you are on a website with the HTTPS protocols (Hypertext Transfer Protocols Secure) then the website utilizes Transport Layer Security that verifies the safety of the website for information transfer. It is an extra layer of protection so that information including passwords, social security numbers and financial information is secure if transferred on the web.
The lock icon on your URL will indicate that the website you are accessing uses secure protocols.


|
ElfPSP_AntColony
Protein Structure Prediction using Ant Colony Optimization
|
Functions | |
| __global__ void | HostToDevice::ant_develop_solution (double *pheromone, int nMovElems, int3 *solutions, int3 *moreSolutions, int nCoords, char *relDirections, char *moreRelDirections, int *contacts, char *hpChain, int lsFreq, double alpha, double beta) |
| Launches threads such that each thread executes the work of an ant. More... | |
| __global__ void | HostToDevice::find_best_solution (int *contacts, int nContacts, char *directions, int nMovElems, char *outDirections, int *outBestContact) |
Finds the best solution among those produced by ant_develop_solution . More... | |
| __global__ void | HostToDevice::evaporate_pheromones (double *pheromones, int nMovElems, double evapRate) |
| Evaporates pheromones in the pheromone matrix. More... | |
| __global__ void | HostToDevice::deposit_pheromones (double *pheromones, int nMovElems, char *directions, int *contacts, int hCount) |
| Deposits pheromones in the pheromone matrix, according the each protein's quality. More... | |
| __global__ void HostToDevice::ant_develop_solution | ( | double * | pheromone, |
| int | nMovElems, | ||
| int3 * | solutions, | ||
| int3 * | moreSolutions, | ||
| int | nCoords, | ||
| char * | relDirections, | ||
| char * | moreRelDirections, | ||
| int * | contacts, | ||
| char * | hpChain, | ||
| int | lsFreq, | ||
| double | alpha, | ||
| double | beta | ||
| ) |
Launches threads such that each thread executes the work of an ant.
An ant develops a solution by deciding relative directions, using the pheromone matrix as a guide. The ant is also in charge of performing local search by generating small perturbations on the developed protein, and checking if the perturbed one is better.
| pheromone | Matrix of pheromones. | |
| nMovElems | Number of relative movements per protein conformation (probably equal the number of aminoacids minus 2). | |
| solutions | Memory region that can hold all protein solutions of all threads. | |
| moreSolutions | Memory region with same size as solutions . Will be used as temporary storage. | |
| nCoords | Number of coordinates that a protein has (probably equal the number of aminoacids). | |
| relDirections | Memory region that can hold all arrays of relative directions, one for each launched thread. | |
| moreRelDirections | Memory region with same size as relDirections . Will be used as temporary storage. | |
| [out] | contacts | Memory region to which we can store the number of contacts for each protein developed by each thread. |
| hpChain | The HP chain of the protein being predicted. | |
| lsFreq | Local Search Frequency, determines the number of protein perturbations to generate after the ant develops the first protein using the pheromones. | |
| alpha | Alpha parameter of the ACO algorithm. | |
| beta | Beta parameter of the ACO algortihm. |
| __global__ void HostToDevice::deposit_pheromones | ( | double * | pheromones, |
| int | nMovElems, | ||
| char * | directions, | ||
| int * | contacts, | ||
| int | hCount | ||
| ) |
Deposits pheromones in the pheromone matrix, according the each protein's quality.
| pheromones | Pheromone matrix. |
| nMovElems | Number of relative directions per protein. |
| directions | Array containing relative directions for all proteins produced by ant_develop_solution . |
| contacts | Array of contacts produced by ant_develop_solution . |
| hCount | Number of H beads within the HP chain of the protein being predicted. |
| __global__ void HostToDevice::evaporate_pheromones | ( | double * | pheromones, |
| int | nMovElems, | ||
| double | evapRate | ||
| ) |
Evaporates pheromones in the pheromone matrix.
| [in,out] | pheromones | Pheromone matrix. |
| nMovElems | Number of relative directions per protein. | |
| evapRate | Rate of evaporation of pheromones. Each pheromone is multiplied by (1-evapRate). |
| __global__ void HostToDevice::find_best_solution | ( | int * | contacts, |
| int | nContacts, | ||
| char * | directions, | ||
| int | nMovElems, | ||
| char * | outDirections, | ||
| int * | outBestContact | ||
| ) |
Finds the best solution among those produced by ant_develop_solution
.
| contacts | Array of contacts produced by ant_develop_solution . | |
| nContacts | number of contacts in contacts . | |
| directions | Array containing relative directions for all proteins produced by ant_develop_solution . | |
| nMovElems | Number of relative directions per protein. | |
| [out] | outDirections | Memory region where we can store the relative directions of the best protein identified. |
| [out] | outBestContact | Memory region (an integer) to which we can store the number of contacts of the best protein identified. |


|
libARSAL
1.0
|
Files | |
| file | ARSAL.h [code] |
| Library global header for libARSAL. | |
| file | ARSAL_BLEManager.h [code] |
| private headers of BLE manager allow to use Bluetooth low energy api's | |
| file | ARSAL_CentralManager.h [code] |
| file | ARSAL_Endianness.h [code] |
| This file contains headers about endianness abstraction layer. | |
| file | ARSAL_Error.h [code] |
| file | ARSAL_Ftw.h [code] |
| libARSAL Ftw header file. | |
| file | ARSAL_MD5_Manager.h [code] |
| file | ARSAL_Mutex.h [code] |
| This file contains headers about mutex abstraction layer. | |
| file | ARSAL_Print.h [code] |
| This file contains headers about debug print abstraction layer. | |
| file | ARSAL_Sem.h [code] |
| This file contains headers about semaphore abstraction layer. | |
| file | ARSAL_Singleton.h [code] |
| headers to define singletons. | |
| file | ARSAL_Socket.h [code] |
| This file contains headers about socket abstraction layer. | |
| file | ARSAL_Thread.h [code] |
| This file contains headers about thread abstraction layer. | |
| file | ARSAL_Time.h [code] |
| This file contains headers about time abstraction layer. | |


F5 Community Training & Labs Source | Edit on
Welcome¶
Welcome to the Identity & Access Management lab series at Agility 2020.
The following labs and exercises will instruct you on how to configure and troubleshoot federation use cases based on the experience of field engineers, support engineers and clients. This guide is intended to complement lecture material provided during the course as well as a reference guide that can be referred to after the class as a basis for configuring federation relationships in your own environment.
The content contained here leverages a full DevOps CI/CD pipeline and is sourced from the GitHub repository at https://github.com/osantiago774/f5-agility-labs-iam. Bugs and Requests for enhancements can be made by opening an Issue within the repository.
- Class 1: SAML Federation with F5
- Class 2: OAuth Federation with F5
- Class 3: SWG - Securing Outbound Internet Access
- Lab Environment
- Lab 1: SWG iApp – Explicit Proxy for HTTP and HTTPS
- Lab 2: URL Category-based Decryption Bypass
- Lab 3: Explicit Proxy Authentication – NTLM
- Lab 4: SWG Reporting with BIG-IQ
- Lab 5: SWG iApp - Transparent Proxy for HTTP and HTTPS
- Lab 6: Captive Portal Authentication
- Lab 7: SSL Visibility for DLP (ICAP)
- Conclusion
- Class 4: SAML Identity Provider (IdP) Lab
- Class 5: AD FS Proxy Lab
- Class 6: Federating Common Services
- Class 7: Introduction to Universal Access
- Class 8: Troubleshooting Universal Access
- Class 9: Multi-Factor Auth for Cloud Applications
- Class 10: Privileged User Access


PERIGIENE- chloroxylenol soap
Dermarite Industries LLC
Disclaimer: Most OTC drugs are not reviewed and approved by FDA, however they may be marketed if they comply with applicable regulations and policies. FDA has not evaluated whether this product complies.
Active Ingredient
Chloroxylenol 0.5%
Uses:
- For handwashing to decrease bacteria on the skin. Recommended for repeated use.
Warnings:
- For external use only.
-
Avoid contact with eyes. In case of contact, flush thoroughly with water.
-
Ask a doctor before use if you have , deep of puncture wounds, animal bites, serious burns
-
When using this product, do not apply to areas of raw or blistered skin in large quantities, do not use in or near the eyes
-
Stop use and ask a doctor if, condition worsens, symptoms last for more than 7 days or clear up and recur within a few days
Warnings:
Keep out of reach of children. In case of accidental ingestion contact a physician or Poison Control Center right away
Directions:
Apply to soiled and/or odorous areas. Wipe gently with soft cloth. Repeat as necessary until all soils are removed and skin is clean. Pat dry. No need to rinse.
Other information:
Store at room temperature (59°-86°F)
Inactive Ingredients:
Aloe Barbadensis Leaf Juice, Citric Acid, Cocamide MEA, Cocamidopropyl Betaine, Disodium EDTA,DMDM Hydantoin, Lemon Oil, Methychloroisothiazoline, Methyliisothiazoline, Methylparaben, Polysorbate 20, Propylene Glycol, PropylParaben, Sodium Chloride, Sodium Isostearoyl Lactylate, Sodium Hydroxide, Sodium Laureth Sulfate, Sodium Lauryl Sulfate, Water
Question?
Call 1-800-337-6296


-
Symantec Appoints Michael Brown as CEO | SecurityWeek.Com
www.securityweek.com
Symantec on Thursday announced that Michael A. Brown has been appointed as the company’s CEO, effective immediately.
-
Feedback Friday: 'Shellshock' Vulnerability - Industry Reactions | ...
www.securityweek.com
Industry reactions to the recently disclosed "Shellshock" vulnerability affecting the GNU Bourne Again Shell (Bash)
-
What We Know About Shellshock So Far, and Why the Bash Bug Matters | ...
www.securityweek.com
Attackers are already targeting the bug, which has been nicknamed Shellshock, and security experts warned organizations to prepare for more attacks ...
-
Dyre Malware Takes Inventory of Software on Infected Systems | ...
www.securityweek.com
The "browsersnapshot" feature of the Dyre Malware enables attackers to collect cookies, client-side certificates and private keys from the infected ...
-
Video: Watch The Shellshock Vulnerability Being Exploited in Action | ...
www.securityweek.com
This video demonstrates the Shellshock vulnerability in action and answers many important questions.
-
Malvertising Could Replace Exploit Kits: Researchers | SecurityWeek.Com
www.securityweek.com
Because of the opportunities offered by Flash, cybercriminals could launch attacks directly from online advertising banners, without the need for ...
-
DDoS Attacks Shorter, Repeated Frequently in 1H 2014: Report | ...
www.securityweek.com
According to a DDoS attack trend report report released Sept. 23, a majority of attacks analyzed (more than 90%) lasted less than 30 minutes, but ...
-
Massive Malvertising Network is 9 Times Bigger Than Originally Thought: ...
www.securityweek.com
A security researcher at Cisco says the company has now isolated nearly 6,500 domains sharing the same infrastructure.
-
New gTLDs, same attacks
securelist.com
Cybercriminals around the world have already started to point their guns and attacks at the new gTLDs, the 'generic Top Level Domains' approved by ...
-
OWASP Releases New Testing Guide | SecurityWeek.Com
www.securityweek.com
The Open Web Application Security Project (OWASP) released version 4 of the OWASP Testing Guide.
-
CVE-ID Vulnerability Numbering Format Change Could Challenge Vendors Who ...
www.securityweek.com
Previously, the four-digit restriction on the CVE-IDs only allowed up to 9,999 a year - a number that could be eclipsed by the end of the year, ...
-
ICS Cyber Security Conference Agenda Updates
www.infosecisland.com
ICS Cyber Security Conference Agenda Updates The SecurityWeek Events Team is busy putting together the best ICS Cyber Security conference to date. As ...
-
How choosing your own device CYOD can help empower your workforce
www.scmagazineuk.com
Choosing a mobile device to rollout to employees can be difficult. With all of the features, functions and designs of mobile devices it can become a ...
-
Apple now the most frequently phished brand in the world
www.scmagazineuk.com
Apple is the most popular brand in the world when it comes to phishing campaigns.
-
ICYMI Shellshock attacks, cyber Armageddon and unpredictable hackers
www.scmagazineuk.com
This weeks In Case You Missed It column looks at the first attacks resulting from the Bash/Shellshock bug.
-
19 million Windows PCs still vulnerable to Stuxnet zeroday
www.scmagazineuk.com
Ongoing research by Kaspersky Lab has concluded that the zeroday vulnerability exploited by Stuxnet is still threatening as many as 19 million ...
-
Hackers caught exploiting Shellshock Bash vulnerability
www.v3.co.uk
Nginx and Apache web servers among first victims
-
EU regulators fire warning shots across Googles bow on data privacy
www.scmagazineuk.com
Google appears to be skating on thin ice once again with EU regulators, after it apparently failed to act on a draft privacy specification presented ...
-
UK government contractors must comply with Cyber Essentials
www.scmagazineuk.com
The British government will demand that all its suppliers comply with the Cyber Essentials scheme from October 1.
-
In Cyberspace, Anonymity and Privacy are Not the Same | SecurityWeek.Com
www.securityweek.com
The popular misconception that Internet privacy equals anonymity must be dispelled if cyberspace is to be a secure and safe place.
-
Zero Day Weekly: Bash bug Shellshock, jQuery, Amazon's messy EC2 reboot | ...
www.zdnet.com
A collection of notable security news items for the week ending September 26, 2014. Covers enterprise, controversies, reports and more.
-
Security Weekly Podcasts
securityweekly.com
Security Weekly features Security Podcasts for security professionals, by security professionals. The latest information security news and hacking.
-
Confidence plummets, both internally and externally, for breached companies
www.scmagazineuk.com
Consumers and company executives demonstrate a substantial lack of confidence in data breach response planning, studies reveal.
-
Bash “Shellshock” vulnerability – what you need to know
nakedsecurity.sophos.com
Shellshock is the media-friendly name for a remote code execution hole in Bash, a command shell commonly used on Linux and UNIX systems. Paul Ducklin ...
-
Shock Treatment
www.infosecisland.com
Shock Treatment As many are explaining, one of the biggest problems with this #shellshock vulnerability is that it's in part of the Unix and Linux ...
-
New Bash Bug Could Wreak Havoc on Linux and OS X Systems
www.infosecisland.com
New Bash Bug Could Wreak Havoc on Linux and OS X Systems It would have been hard to imagine anything as bad as the HeartBleed bug was going to happen ...
-
System admins targeted in jQuery hack
www.scmagazineuk.com
Users of the JQuery website development tool are being warned they could have been served with the RIG credentialsstealing malware.
-
The Internet Braces for the Crazy Shellshock Worm | WIRED
www.wired.com
A nasty bug in many of the world’s Linux and Unix operating systems could allow malicious hackers to create a computer worm that wreaks havoc on ...
-
Bash flaw threatens hundreds of millions of servers
www.scmagazineuk.com
Systems admins are being warned of a decadesold bug that means hundreds of millions of systems can be easily hijacked.


Fall Detection Demo
You can find below a stream of the robot's camera, along with extra information regarding the perception algorithms
and state.
The data are streamed online either from the actual robot or from the simulation environment (according to
the employed setup).
Video Stream
This project has received funding from the European Union’s Horizon 2020 research and innovation programme under
grant agreement No 871449 (OpenDR).


Colin Kaepernick delivers warning to "scared" NFL owners after open workout
Former San Francisco 49ers quarterback Colin Kaepernick is on the comeback trail and warned scouts who attended his private workout on Saturday
by Darren Wells, https://www.mirror.co.uk/authors/darren-wells/Colin Kaepernick has warned NFL owners to "stop being scared" after his open workout on Saturday.
Controversial quarterback Kaepernick, formerly of the San Francisco 49ers, has not featured in the NFL since 2016.
He has been without a team since leaving the 49ers having hit the headlines for leading the protest which saw him and other players kneel for the national anthem before games to take a stand against racism.
He held an open workout on Saturday, but it was not without drama as he abandoned an NFL-arranged private workout at the last minute to stage his own session at a nearby high school.
He claimed NFL denied media access so he took matters into his own hands, with representatives from the New York Jets, Kansas City Chiefs, Philadelphia Eagles, Tennessee Titans, Buffalo Bills, San Francisco 49ers, Washington Redskins and Detroit Lions all in attendence.
After the workout, he warned scouts: “When you go back, tell your owners to stop being scared.”
Kaepernick filed a grievance against the NFL in November 2017, accusing the league and it's owners of collusion to keep him out of the league.
The grievance was withdrawn in February 2019 after he reached a confidential settlement with the NFL and he is now on the comeback trail.
The NFL claimed they were "disappointing" with the 32-year-old for his late venue switch, stating on Twitter: “Kaepernick was a no-show for 25 NFL teams at Falcons facility waiting at 3pm.”
After completing his workout, in which anonymous scouts reportedly claimed he was "average" but at the level of back-up quarterbacks in the league, he discussed his decision.
Kaepernick told reporters: "Our biggest thing was making sure we had transparency in what went on.
"We weren't getting that elsewhere, so we came out here. It's important you're all here [the media]. You've all been attacked for the last three years, you continue to be attacked. We appreciate what you all do.
"I've been ready for three years - I've been denied for three years.
"We have nothing to hide. So we're waiting for the 32 owners, the 32 teams, [NFL commissioner] Roger Goodell, to stop running. Stop running from the truth, stop running from the people.
"My agent is ready to talk to any team; I'll continue to be ready.
"We'll let you know if we hear from them. The ball is in their court. We're ready to go."


Some say that Antonio Lucio Vivaldi was a pretty bitching Italian Baroque-ian composer, violinist, teacher, and cleric. For the record that is not the Vivaldi we will be discussing today.
I will go into more details about the Vivaldi browser in a future post but what I want to touch on today is how to setup full media codec support for it. Out of the box when running vivaldi on linux depending on your distro of choice you won’t be able to watch h.
This is a small addendum to the my original Cutting the cord article. If you haven’t read that article pop over there than come on back here. Okay now that we are caught up below are the quick vital links / stats for Sling:
Sling TV Plans: Orange - $20/mo (Stream to one device at a time) Blue - $25/mo (Stream to three devices simultaneously) Orange + Blue - $35/mo (Stream to four devices simultaneously) Channel Lineup Supported Devices A question that people keep asking me about my original article is how they can get Hallmark and Hallmark Movies & Mysteries channels if they cut the cord.
A good friend of mine, Jim, asked me to put this article together some time ago. I finally have what I need in place to make that happen. Cutting the cord is such a buzz wordy phrase these days. This relatively simple task seems to be surrounded by confusion and sometimes misinformation. In simplest terms cutting the cord means using other internet-based services or means to watch live television. Now that we understand what cutting the cord means, let’s take a look at three services that can provide you internet-based TV.


{% extends "global/Page.html" %} {% load staticfiles otree %} {% block title %} {{ Constants.product_name }} - Period {{ player.round_number }} {% endblock %} {% block content %}
{% if player.round_number == 1 %} The chart gives an overview of the sales history and past model forecast.
{% else %} The chart gives an overview of sales history, past model forecast and your past final forecast.
{% endif %}
The model forecast for this period is now available. Please enter your final forecast in the box.
| Model Forecast | {{ forecasted }} |
|---|---|
| Your Final Forecast | {% formfield player.forecast_amount %} |


Magicka
Arrowhead Game Studios
Paradox Interactive
$9.99
Action/Adventure, Indie
In this innovative adventure, you play as a wizard and team up with up to three friends to cooperate and take down an evil sorcerer. Master 8 schools of magic and learn powerful combos to defeat your foes and save the world.


First Name:
Last Name:
New
Existing
Position:
None
Developer
Software Engineer
Software Developer
I agree to the terms and conditions