@import data._
@import helper._
@import play.Environment
@import data.viewModel.PageStatus
@import helpers.CallHelper.relative
@import org.webjars.play.WebJarsUtil
@(reportForm: Form[ShortFormatPreSentenceReportData], encrypter: String => String)(implicit pageStatuses: Map[Int, PageStatus], webJarsUtil: WebJarsUtil, environment: Environment)
@implicitField = @{ FieldConstructor(govukElements.f) }
@proposalHint = {
Awareness of the sentencing guidelines and relevant legislation.
All possible sentencing options, and if the offender is past the custody threshold or suitable for a community order.
Aggravating or mitigating factors.
If relevant, specific needs such as gender, maturity, diversity.
How your proposals will manage risk.
What will the impact of the sentence be on the offender.
How the proposed sentence would affect the offender’s family and any dependents.
If relevant, what is not suitable?
Any relevant alternative requirements that the offender may have been eligible for, but circumstances have made them unsuitable for participation.
}
@main("Conclusion - Short Format Pre Sentence Report") {
Conclusion
@navigation(9)
@helper.form(action = relative(routes.ShortFormatPreSentenceReportController.wizardPost()), 'id -> "ndForm", 'novalidate -> "") {
@CSRF.formField
@inputHidden(reportForm("onBehalfOfUser"), encrypter)
@inputHidden(reportForm("entityId"), encrypter)
@inputHidden(reportForm("documentId"), encrypter)
@inputHidden(reportForm("name"), encrypter)
@inputHidden(reportForm("dateOfBirth"), encrypter)
@inputHidden(reportForm("age"), encrypter)
@inputHidden(reportForm("address"), encrypter)
@inputHidden(reportForm("crn"), encrypter)
@inputHidden(reportForm("pnc"), encrypter)
@inputHidden(reportForm("pncSupplied"))
@inputHidden(reportForm("addressSupplied"))
@inputHidden(reportForm("court"), encrypter)
@inputHidden(reportForm("dateOfHearing"), encrypter)
@inputHidden(reportForm("localJusticeArea"), encrypter)
@inputHidden(reportForm("interviewInformationSource"))
@inputHidden(reportForm("serviceRecordsInformationSource"))
@inputHidden(reportForm("cpsSummaryInformationSource"))
@inputHidden(reportForm("oasysAssessmentsInformationSource"))
@inputHidden(reportForm("previousConvictionsInformationSource"))
@inputHidden(reportForm("victimStatementInformationSource"))
@inputHidden(reportForm("childrenServicesInformationSource"))
@inputHidden(reportForm("policeInformationSource"))
@inputHidden(reportForm("otherInformationSource"))
@inputHidden(reportForm("otherInformationDetails"))
@inputHidden(reportForm("mainOffence"))
@inputHidden(reportForm("otherOffences"))
@inputHidden(reportForm("offenceSummary"))
@inputHidden(reportForm("offenceAnalysis"))
@inputHidden(reportForm("patternOfOffending"))
@inputHidden(reportForm("issueAccommodation"))
@inputHidden(reportForm("issueEmployment"))
@inputHidden(reportForm("issueFinance"))
@inputHidden(reportForm("issueDrugs"))
@inputHidden(reportForm("issueAlcohol"))
@inputHidden(reportForm("issueHealth"))
@inputHidden(reportForm("issueBehaviour"))
@inputHidden(reportForm("offenderAssessment"))
@inputHidden(reportForm("previousSupervisionResponse"))
@inputHidden(reportForm("additionalPreviousSupervision"))
@inputHidden(reportForm("likelihoodOfReOffending"))
@inputHidden(reportForm("riskOfSeriousHarm"))
@textarea(reportForm("proposal"), '_label -> "Enter a proposed sentence", '_hint -> proposalHint, 'class -> "wide", Symbol("data-limit") -> "4000", 'required -> "true", '_error -> "Enter your conclusion")
@inputHidden(reportForm("reportAuthor"))
@inputHidden(reportForm("office"))
@inputHidden(reportForm("reportDate"))
@pageNumber(9)
}
}


Back in the late 1990’s I found myself starting to acquire a considerable volume of code from various personal projects that I had been working on in my spare time. Having been brought up to use a Version Control System (VCS) to manage my source code assets at work it seemed eminently sensible to do the same thing at home. Unsure about exactly which product to choose I naturally fell into using the one that came bundled with the compiler – Visual SourceSafe (VSS). Given that it was also the VCS product I had been using at my client back then I got training & experience as a nice by-product of work.
Fast forward 15 years and I still find myself using the same VSS repo I set up all those years ago! Despite a considerable number of excellent free and open source alternatives springing up in the intervening years that were far superior, I found myself clinging on. This wasn’t because of any killer feature, but mostly because I didn’t want to lose easy access to my ever growing archive of version history when switching to another product. Mainstream support ended for SourceSafe last year so I don’t even have that to prop me up any longer either.
This article then is my journey on how I finally shook off the shackles of SourceSafe whilst maintaining as much history as possible. It also goes into some of the questions I asked myself about source code structure of shared components in the face of online repositories like GitHub. Eventually I’ll get to the mechanics of how to migrate source code and some of the problems I encountered along the way.
My lengthy procrastination has had the pleasant side-effect of letting the VCS ecosystem settle down quite a lot. I really didn’t fancy going through all this again every time The Next Big Thing came along. The two clear choices for me were Subversion and Git, with the former being what I had been working with for the last few years, while the latter was just too big to ignore. I was also aware of the Git/Subversion integration so felt that there was a clear migration path in sight either way after finally putting VSS to rest.
If you’re wondering whether I looked at any paid-for products, then, no. Remember that this was my own personal codebase and so I’m happy to live with whatever support I can get off the Internet these days. I might have shelled out for a migration tool if the freely available options didn’t come up to scratch – they didn’t with VSS2SVN, but fortunately they did with VSS2Git.
Despite the Distributed Version Control System (DVCS) being a relatively modern invention compared to their Centralised (CVCS) counterparts, I’ve been (ab)using SourceSafe over the last decade in such a way that I’ve got a clunky similar model anyway.
Essentially I have a trusty old Network Attached Storage (NAS) box that contains the “master” copy of my VSS repo and then on my desktop and laptop(s) I hold a copy. This gives me the full access to the history, which I want when developing, along with a repo to store my “work in progress”. The downside of course is that I have to do a “formal” check-in to the master some time later and re-sync the repo (think ROBOCOPY) to bring in changes made via other routes. Like I said, it’s clunky.
Aside from the day-to-day development chores I also publish the source code along with the binaries on my web site to allow anyone foolish enough to tinker themselves. This has the nice added bonus of being an off-site backup. OK, so the .zip files don’t have the full history but it was better than nothing until the arrival of cheap, cloud based backup services.
This neatly brings me to the final piece of my migration puzzle – the introduction of an online source code repository. Given that I’d already discovered Git was the best choice for migrating my history, another brief investigation also led me to GitHub as a suitable online provider. Once again the fact that all my source code is published (even the dross) means the public-only nature of the free repos happily suits my needs.
That said I still feel uneasy about relying solely on a service like GitHub as the canonical source for my code and so I still have bare Git repos on my NAS box to act as the central point for collaboration across my own devices. Bare repos only store revisions so you cannot use them for merging or development, which is essentially what GitHub provides anyway.
This leads to a workflow where the laptop(s) and desktop are the clones where I do my main development. I then pull & push to the repos on my NAS to synchronise (should the need arise) with a final push from the NAS to GitHub to publish (backup) my work in progress. When I want to formally release a new version I can build, package and publish to my web site as before. I’ll also include the source code as a snapshot like always just to make it easier for someone else to pick it up.
As you’ve probably guessed there isn’t exactly a lot of “collaboration” going on, which is a major selling point for tools like Git and GitHub, but that’s not the point really; for me it’s as much about creating and dealing with a legacy codebase as a learning tool.
The biggest decision I had to make when deciding to move from VSS to another product was whether to keep using a single monolithic repo. My codebase contains around 50,000 SLOC of C, C++, SQL and PowerShell code distributed across 50 or so separate “components”; these consist of scripts, libraries and applications. This way of working (one repo) has always suited me, but with a desire to publish via a more collaborative service too, I felt it might be a good time to see if it would be better to split it up into smaller components; perhaps with a separate repo for each one. Another eventual driver was the difference in the way VSS, Git and Subversion handle labels – in short, they don’t; at least not in the same way that VSS does (on a per-file basis).
For projects with no dependencies the decision was easy as everything would be self-contained. For my C++ codebase however, where I have a number of different static libraries (Lib-1, Lib-2, etc. below) that are reused across many different applications (App-1, App-2, etc. below) the choice was harder. If I created one repo per application (option 1) I’d have to share copies of the libraries and then find a way to synchronise changes across them all. Doing this without just manually copy-and-pasting the changes is probably doable in Git but would likely require the kind of Git fu that is well beyond my current n00b skillz.
├───App-1
(repo)
│ ├───Lib-1
│ │ └───Lib-1 Tests
│ ├───Lib-2
│ │ └───Lib-2 Tests
│ └───App-1 Tests
└───App-2
(repo)
├───Lib-1
│ └───Lib-1
Tests
├───Lib-2
│ └───Lib-2
Tests
└───App-2 Tests
The opposite choice (option 2) was to have one repo per shared component (i.e. static library) and then another separate repo for each of the application-level components (i.e. executable, COM server, etc.). My existing folder structure naturally lent itself to this approach because each component was already self-contained:-
├───App-1
(repo)
│ └───App-1 Tests
├───App-2
(repo)
│ └───App-2 Tests
└───Lib
├───Lib-1 (repo)
│
└───Lib-1 Tests
└───Lib-2 (repo)
└───Lib-2 Tests
Then there was the half-way house (option 3) which would see separate repos for each application-level component, but just a single repo for all the shared static libraries.
├───App-1
(repo)
│ └───App-1 Tests
├───App-2
(repo)
│ └───App-2 Tests
└───Lib
(repo)
├───Lib-1
│
└───Lib-1 Tests
└───Lib-2
└───Lib-2 Tests
The one exception to all this was my build scripts because they lived in the root of the tree. They aren’t essential for building any single application as they’re more for command-line batch-building of the entire estate. I decided they could live with the libraries or go in another separate repo.
So many choices! In the end I opted to split out the applications and all the shared libraries into separate components and repos (i.e. option 2 above). My rationale was that a 3rd party should only need to clone the bare minimum to get the application to build – the waters should not be muddied by any of my really old nasty legacy library code that is of no importance to the application in question. I also elected to create a separate repo for my build scripts as they are optional too.
From a Git migration perspective I was somewhat concerned about how much work this was going to be. The worst case seemed to be migrating the whole thing once and then trimming it down manually to just the tree of interest, along with moving all the files up into the root of the repo. Some VCS repos are immutable by default and Git is no exception, but it did appear that some advanced Git magic [1] might make it possible to physically remove the unwanted sub-trees afterwards to conceal the initial mess.
Once again lady luck shined on me and
whilst I was investigating how other developers have solved the problem of
shared components in project-focused repos I stumbled upon a recent addition to
the Git toolset – git subtree split
[2]. As we
shall see later this command can rebase (in the file-system sense) a sub-folder
right back up to the root of a repo.
The investigation also lead me to the concept of “submodules” [3] in Git, which are akin to “svn:externals” in Subversion, and it raised an important difference in the way that I, as owner and fundamentally the main developer of this entire codebase work differently to how another collaborator would. Essentially I am interested in developing the libraries with one eye on the changes that affect all dependents, whereas a collaborator is likely to be only concerned in the effects on the application that directly interests them. Naturally I decided to optimise for the common case (me as the sole developer) and keep the libraries parallel to the applications rather than move them “under” and then treat them as sub-modules. I can of course change my mind later as the hard work has already been done.
Finally, after all that philosophical waffle we come to the mechanics of creating one or more Git repositories from a SourceSafe one.
The first step is to read up on how Git
handles line-endings as this will likely affect your code. GitHub have a
splendid document that covers the practical aspects of this issue [4]. If you
think it’s all rather convoluted you can read up on how the different settings
evolved over time to cater for the different scenarios as they cropped up [5]. Suffice
to say that after opening a shell with the Git toolkit on your
C:
\>
git config --global core.autocrlf true
Next up create a folder under which you’re going to create your migrated Git repository(s):-
C:
\>
mkdir D:\Git\vss2git
The tool I chose to use for the migration
was VSS2Git [6]. This is a GUI-based application that relies on another Git
installation being installed, and being accessible via the
C:
\>
"c:\Program Files\Vss2Git\Vss2Git.exe"
Before starting I sync’ed my local VSS repo to match the one on my NAS box to ensure I was working with the latest stuff; this also gave me a separate copy which I could mess around with and see what happens when I migrate sub-folders instead of the root, e.g. my build scripts.
As an example when I migrated my Core C++ library, which lives under $/Win32/Lib/Core, I used the following (non-default) settings:-
VSS
Directory: D:\VSS\Git
VSS Project:
$/Win32/Lib/Core
Git
Directory: D:\Git\vss2git\Win32\Lib\Core
Email
domain: chrisoldwood.com
These should be fairly obvious. What might
be less obvious are the two settings at the bottom (
Personally I’m pretty fastidious about providing check-in comments and so I dialled down the setting that works off empty comments to a mere 15 seconds as I know any commit without a check-in comment is rare and almost certainly unimportant. In contrast I upped the other setting that matches comments to 600 seconds as I always tried to reuse the same check-in comment where possible; the only reason for a delay would have been getting temporarily distracted.
With everything configured it’s time to hit “Go!” and wait for VSS2Git to weave its magic. Depending on the repo size this could take some time as it has to build and replay the commits into the Git repo.
If you’re migrating your entire VSS repo to a single Git repo then you’re almost there, but if like me you want to split it up you have more work to do.
The VSS2Git tool converts files and folders exactly as they are in the source repo. This means that the file $/Win32/Lib/Core/ReadMe.txt will appear in the Git repo under the same relative path (\Win32\Lib\Core\ReadMe.txt) even if you only intend to migrate the $/Win32/Lib/Core project. What I wanted was for all the paths to be shifted up so that \Win32\Lib\Core is now the root of the Git repo, e.g. ReadMe.txt moves from \Win32\Lib\Core\ReadMe.txt to just \ReadMe.txt, and for all the superfluous parent folders to disappear.
As mentioned earlier Git has a separate command
for this – subtree
split
– although it appears to be a
very recent addition at the time of writing. When I was originally
investigating, some Git builds supported it (msysgit)
and others didn’t (GitHub for Windows). Both of these now do, but it’s another
thing to catch out the unwary.
The way I used this command was to create a new branch in the VSS2Git generated repo based on master (a.k.a trunk), but with the paths munged to strip off the leading $/Folder/Folder parents:-
D:\Repo>
git subtree split --prefix=Win32/Lib/Core -b split
When describing my current workflow earlier I suggested my point of collaboration was still going to be a central repo on my NAS box. Whilst the point of a DVCS like Git is that I can use it in a peer-2-peer like manner, it also gave me an opportunity to create a bare repo and see what the differences were in practice. The folder structure on my NAS box reflected the way I was going to clone them for use during development.
For the Core library I created the bare repo like so:-
C:
\>
git init //ziggy/Git/Win32/Lib/Core --bare
…and then pushed the cleaned-up branch from the VSS2Git generated repo to it:-
C:
\>
git push //ziggy/Git/Win32/Lib/Core split:master
–tags
This has the added effect of moving the changes from the “split” branch back onto the “master” branch where they belong going forward.
Once again this extra step is somewhat contrived because I’m using GitHub more as a backup than a point of collaboration. After creating a new repo on my GitHub account, called “Core”, I can then link it to the bare repo on my NAS box and push the migrated source like this:-
C:
\>
pushd \\Ziggy\Git\Win32\Lib\Core
Z:
\>
git remote add github https://github.com/chrisoldwood/Core.git
Z:
\>
git push -u github master --tags
When cloning a Git repo the source is normally referred to by the name “origin”. I chose to name it “github” instead to signify its status as just another clone rather than being the canonical source.
If you read the article(s) listed at the beginning about line endings you’ll have noticed there is now a per-repo setting for handling the line endings issue in a way that allows developers to configure their machine how they like it whilst letting the repo decide what its own policy should be.
Of course there is a chicken-and-egg
problem here because you need a repo to add the .gitattributes
file to, but trying to do this earlier means you can run into other
problems because you’ve tainted the repo you want to push your migrated
revisions to. This is not a major problem when you’re used to Git, but it’s a
head-scratcher when you’re new to it. Consequently I left this step to be the
first new commit following the migration.
At a minimum you want to add a .gitattributes
file in the root of the repo that has this at the top:-
# Set
default behaviour, in case users don't have core.autocrlf
set.
* text=auto
If you read up on what goes into this file
you’ll probably come across the .gitignore
file too and so I ended up committing them as a pair. If you’re using the
GitHub for Windows UI you’ll find this is a key part of the Git repo configuration.
Here is a tiny example of the kinds of files you normally avoid checking into
any VCS repository and therefore get included in your .gitignore
file:-
# Build
artefacts
*.dll
*.exe
*.lib
*.obj
If your projects are based around Visual Studio then you’ll probably have enabled the VSS integration. The GUI friendly way to untie your solutions from VSS is to use the “File | Source Control | Change Source Control…” option and unbind the projects. You’ll still be left with some detritus in your repo and in a couple of cases I had manually prise the bindings from Visual Studio to stop it complaining every time I opened the solution. There is a blog post from Brian Carroll [8] that describes how to manually strip the bindings, but it basically boils down to the following steps:-
*.vspscc
and *.vssscc
filesGlobalSection
(SourceCodeControl)
= preSolution
” fragment
from the .sln
fileScc
* = SAK
” lines
from the .vcproj
file preambleIf, like me, you’re going to split out many
libraries and projects this all becomes very tedious if done manually and so a
little dash of automation goes a long way. By sticking to one simple convention
– the local Git repo folder names and GitHub repo name match – you can apply
the Swiss-Army knife of DOS programming (the FOR
loop) and run the
same commands across every repo.
In my case I had a whole bunch of repos generated by VSS2Git at the same level in the file-system, except for the Lib folder, which itself contained another bunch of repos:-
├───App-1
├───App-2
├───Lib
└───App-N
The following one-liner (ahem) will navigate into a repo folder, do the path normalisation, create the bare master repo, push the migrated changes, attach it to GitHub and push the changes to that too. And do it for every folder that appears to be a Git repo (i.e. has a hidden .git subfolder at its root):-
for
/d %d in (*) do @(
if exist
"%d\.git" (
pushd
%d
git subtree split
--prefix=Win32/%d -b split
git init //ziggy/Git/Win32/%d --bare
git push //ziggy/Git/Win32/%d split:master
--tags
pushd \\ziggy\Git\Win32\%d
git remote add github
https://github.com/chrisoldwood/%d.git
git push -u github master --tags
popd
popd
)
)
The most laborious part of the process now just becomes driving VSS2Git. There is a request open to suggest automating it via the command line [9] but I don’t know if there has been any progress on it at the time of writing.
Whilst Git is superior to SourceSafe in most of the ways that truly matter there are a couple of features of SourceSafe I had used that do not translate well to Git. The problems I’ve run into largely stem from the use of a single repo to store multiple projects.
In VSS you can attach a label to any file at any version, whereas in Git labels are called tags and they are attached to commits. Because my VSS repo contains multiple independent applications I have multiple “v1.0” labels on different projects that are unrelated to one another. In contrast, Git tags are global and therefore you don’t appear to be able to mirror the concept. This became another driver for me to split my monolithic repo up as I often use the labels to see what’s changed between releases.
If I had chosen to maintain a monolithic repo under Git I could always have adopted a new convention whereby I prefix the version number with the application name, e.g. “ProductX v1.0” and “ProductY v1.0”. Of course the shared libraries ended up adopting this scheme anyway, even under VSS, as you can’t label two versions of the same file with the same physical label!
The second problem with the way Git handles tags is more tooling related, but is a result of the indirect way that tags are associated with commits – you can’t easily see what tags are attached to what versions of a file. Hence if you have a bug in one version of a file it’s not easy to see what other releases might also be affected. Hopefully the tooling will eventually catch up in this area.
Git is efficient in the way that it stores content because it only ever stores one physical copy for any file with the same content. However that’s an implementation detail and two files cannot be linked in different places in the repo so that a change to one automatically affects the other. SourceSafe on the other hand does support this feature; in fact this is exactly how moving files in SourceSafe is implemented – share & then delete.
Whilst in some scenarios this feature can prove dangerous it also has its uses, such as sharing scripts and common non-code assets across applications.
When migrating projects from SourceSafe that had later been moved to another folder (e.g. a “deprecated” folder), VSS2Git only imported any file revisions that existed at the point the project had been moved, or after. I’m not sure if this is a limitation of VSS2Git or a side-effect of the way files and folders are moved in SourceSafe. I have raised an issue on VSS2Git [10] to see if the problem could be investigated further.
This article was about making the transition from the propriety world of Microsoft’s Visual SourceSafe version control product to the modern, open-source world of Git. Along the way I discussed some of the more fundamental questions about how I wanted to re-organise my repository of projects, both to maintain as much history as possible, such as the labels, but also to allow easier collaboration in the future using an online repository like GitHub.
With the rationale explained I then showed how I migrated and split up my monolithic VSS repo with the help of VSS2Git and some command-line driving of the Git toolset. Finally I described the major features in VSS that couldn’t be directly mapped onto Git and the effects they had on the migration.
Once again the ever watchful eyes of
[1] https://help.github.com/articles/remove-sensitive-data
[2] http://log.pardus.de/2012/08/modular-git-with-git-subtree.html
[3] http://git-scm.com/book/en/Git-Tools-Submodules
[4] https://help.github.com/articles/dealing-with-line-endings
[5] http://adaptivepatchwork.com/2012/03/01/mind-the-end-of-your-line/
[6] https://code.google.com/p/vss2git/
[7] http://windows.github.com/
[8] http://weblogs.asp.net/bkcarroll/archive/2004/03/08/86059.aspx
[9] https://code.google.com/p/vss2git/issues/detail?id=2
[10] https://code.google.com/p/vss2git/issues/detail?id=8
10 November 2013
Bio
Chris is a freelance developer who started out as a bedroom coder in the 80’s writing assembler on 8-bit micros; these days it’s C++ and C#. He also commentates on the Godmanchester duck race and can be contacted via<EMAIL_ADDRESS>or @chrisoldwood.


A Place For All Things Dev Academy
Blog and Reflections
Index
Sprint 1 Reflections
Sprint 2 Reflections
Sprint 2 Technical
Core 1 - Identity, Values, & Strengths Exploration
Core 2 - Learning Plan
Sprint 3 Cultural
Sprint 3 Technical
Sprint 4 Cultural


--- ---
Department of Mathematics
Indian Institute of Science
Bangalore 560 012
SEMINAR
|
Speaker |
: |
Dr. Eli Lebow |
| Affiliation | : | NCBS, Bangalore |
|
Subject Area |
: |
Mathematics
|
|
Venue |
: |
Lecture Hall - III, Dept of Mathematics
|
|
Time |
: |
4.00 pm
|
|
Date |
: |
April 11,2008 (Friday) |
|
Title |
: |
Embedded Contact Homology II, and Rounding corners of polygonal paths |
| Abstract | : |
This talk consists of two
parts, one a wrap-up of last week's talk, andone nearly independent. |


Basic defold module
Modules
| eva_const | Defold-Eva const module. |
| eva | Custom Eva header setup Copy this file to your project, comment/uncomment required libraries and dynamic libraries and use it You can use eva.eva module to use all eva modules (all modules will be included in your build) |
| event | Event system for Defold. |
| log | Defold Eva log module You can require this file and make logger as |
| luax | Defold Lua extended module |


{% extends 'canvas_admin/base.html' %} {% block admin_content %}
Highlight to zoom!
As of , refresh in
As of


Bank Forms
NCB
SAMBA
SAMBA Bank Form
Company:
Branch:
IATA No.:
Period:
Account Number:
Depositor's Name
Amount:
Amount in Words:
IBAN:
Print PDF
Page Size: B4(JIS)


{% from "activity/helpers.html" import activity with context %} {% for obj in activities -%} {{ activity(obj, show_meta) }} {% endfor -%}


A Tamworth mum's come up with a money-saving goal for football families
The idea is simple. You grow out of your football boots and, if they’re in a good, clean, usable condition, you can donate them and in return take another pair home in your new required size.
by Eleanor Barraclough, https://www.birminghammail.co.uk/authors/eleanor-barraclough/A Tamworth football mum has come up with a great idea to reuse and recycle your little ones’ football boots whilst saving the cost of growing feet!
Mum-of-four Emily Cole came up with the idea ‘Boot Buddies Swap Shop’ to give outgrown football boots a new lease of life.
According to Emily, the idea is simple. You grow out of your football boots and, if they’re in a good, clean, usable condition, you can donate them to ‘Boot Buddies’ and in return you can take another pair home in your new required size.
The not-for-profit service is completely free, with Emily saying: “My boys have been playing football for years so we went through a lot of boots.
“When my kids outgrow them sometimes they’re like brand new and I always think, ‘what can I do with them?’ Throwing them out is a waste when someone else could benefit from them.
“So I came up with Boot Buddies to help other football families and reduce waste.
“Just in our club there are so many teams. Our kids’ feet grow so quick they only wear them for a little while and when boots are £50 a pair it can get very expensive.
“There are parents who can’t afford new boots, so we’re thinking of those families too.
“There’s no cost and as long as you bring in a pair in good, reusable condition you can take another pair home.”
Currently, Emily is looking for donations before she holds the first swap shop event.
She said: “At the moment I’m looking for as many people to donate as possible. I want there to be a good choice for people to choose from.
“If people donate now they will get a redeemable voucher to use at the first swap shop event.
“Thank you to everyone who has donated so far, your generosity has not gone unnoticed.”
The best way to donate any old boots to the scheme is to message Emily on the ‘Boot Buddies Swap Shop’ Facebook page.
When a date for the first swap shop event is announced people can turn up on the day with boots to swap as long as they are clean and in good reuseable condition.
Ultimately, Emily hopes the scheme will save money, cut down on waste and help the football community by giving a little back.
For more information visit ‘Boot Buddies Swap Shop’ Facebook page to get involved.


play
pause
download
forward
reverse
FullScreen
exitFullScreen
swapVideoQuality
mute
unMute
Volume
volumeUpdate


Various information about connecting device. Referenced in RegisterAppInterface
Convenience init. Object will contain all information about the connected device automatically.
+ (nonnull instancetype)currentDevice;
class func currentDevice() -> Self
An SDLDeviceInfo object
Device model
Optional
@property (nonatomic, strong, nullable) NSString *hardware;
var hardware: String? { get set }
Device firmware version
Optional
@property (nonatomic, strong, nullable) NSString *firmwareRev;
var firmwareRev: String? { get set }
Device OS
Optional
@property (nonatomic, strong, nullable) NSString *os;
var os: String? { get set }
Device OS version
Optional
@property (nonatomic, strong, nullable) NSString *osVersion;
var osVersion: String? { get set }
Device mobile carrier
Optional
@property (nonatomic, strong, nullable) NSString *carrier;
var carrier: String? { get set }
Number of bluetooth RFCOMM ports available.
Omitted if not connected via BT or on iOS
Optional
@property (nonatomic, strong, nullable) NSNumber<SDLInt> *maxNumberRFCOMMPorts;
var maxNumberRFCOMMPorts: (NSNumber & SDLInt)? { get set }


Reports: Mauricio Pochettino makes management decision amidst Bayern Munich interest
by HarigovindAccording to reports, former Tottenham Hotspur manager Mauricio Pochettino has decided that he will not return to management immediately, after the Premier League club sacked him earlier last week.
Daily Star claims that the Argentine has been left “heartbroken” by Spurs Chairman Daniel Levy’s decision to sack him as manager, thereby bringing his five-and-a-half-year spell at the North London outfit to an abrupt end in the middle of the ongoing 2019-20 season.\
The English news agency further adds that the 47-year-old always had a close relationship with Levy, and hence, he never expected to be shown the door mid-season.
It has also been just five months after he led the club to their first-ever Champions League final, which makes matters worse.
Daily Star also says that although Pochettino has since been linked to Bundesliga giants Bayern Munich, the ex-Southampton and Espanyol coach is “unlikely to rush into a new job” any time soon.
In case you missed it, Bayern Munich recently sacked their own manager Niko Kovac due to a poor start to the season – and also replaced him with interim boss Hans-Dieter Flick.
The German giants are currently at third place in the Bundesliga standings with 24 points from 12 matches – one point behind leaders Borussia Monchengladbach.


[%settitle Resource Index%]
| [%wgt fhir%]Work Group | Maturity Level: 1 | Ballot Status:Draft |
| EHR Work Group | Maturity Level: 1 | Ballot Status:Trial Use |
This implementation guide describes the expected capabilities for an Electronic Health Record System (EHR-S) that intends to adhere to the ISO/HL7 10781 Electronic Health Record System Functional Model Release 2 which covers the logging of record lifecycle events. This implementation guide consists of three parts:
For the purposes of this implementation guide, "must support" means that the system must be capable of capturing and recording those data elements which are so-marked.
This Implementation Guide offers a methodology to support trusted electronic health record (EHR) management using HL7 Fast Health Interoperable Resources (FHIR). This approach is based on the Record Infrastructure Section of ISO/HL7 10781 Electronic Health Record System Functional Model (EHR-S FM) Release 2 and ISO 21089 Trusted End-to-End Information Flows. ISO 10781 was published in 2014 and contains 24 lifecycle events, matching the first 24 in this IG. ISO 21089 has passed ISO Technical Specification ballot and is to be published in 2017 and contains 27 lifecycle events, matching all those in this IG. (This IG also intended applicable to upcoming ISO/HL7 16527 Personal Health Record System Functional Model (PHR-S FM) Release 2, which will incorporate the Record Infrastructure Section.)
From EHR-S FM, Record Infrastructure, Section RI.1, Record Lifecycle and Lifespan:
"Actions are taken to support patient health. Actions are taken in provision of healthcare to individuals. Actions are taken as the result of rules-based EHR System algorithms. Actors (i.e., patients, providers, users, systems) take Actions. (Actions broadly encompass tasks, acts, procedures or services performed or provided.)
"The EHR System captures Actions taken and creates corresponding Record Entries. Record Entries provide persistent evidence of Action occurrence, context, disposition, facts, findings and observations. From the point of Record Entry origination to the end of its lifespan, the EHR System manages each Entry consistent with and according to scope of practice, organizational policy, and jurisdictional law. In support of individual health and in provision of healthcare to individuals, Actors perform Actions and Actions have corresponding Entries in the EHR Record, (i.e., Action instances are documented by Record Entry instances). Record Entries may be captured during the course of the Action or sometime thereafter. The Actor (author/source) of the Record Entry may be the same as an Actor performing the Action or not...
"Actions have associated metadata (e.g., who, what, when, where, why, how, under what conditions, in what context). The corresponding Record Entry captures this metadata along with other Action and Record Entry related information.
"Each Record Entry also includes its own provenance metadata such as who (authoring Actor) and when (documented). Record Entries may be encapsulated to bind Actor (individual, organization, and/or system) signatures to data and metadata content and data/time of occurrence. Actions and related Record Entries capture a chronology of patient health and healthcare and also a chronology of operations and services provided in/by a healthcare enterprise. Record Entries reflect changes in health information from the time it was created, to the time it was amended, sent, received, etc. In this manner, each Record Entry serves as persistent evidence of an Action taken, enabling providers to maintain comprehensive information that may be needed for legal, [clinical,] business, and disclosure purposes. To satisfy these purposes, Record Entries must also be retained and persisted without alteration. Record Entries have both a lifecycle and a lifespan. Lifecycle Events include originate, retain, amend, verify, attest, access/view, de-identify, transmit/receive, and more. Lifecycle Events occur at various points in a Record Entry lifespan, always starting with a point of origination and retention (i.e., when the Entry is first created and stored).
"A Record Entry may have a pre and post Event state if content is modified. In this case, the original Record Entry is preserved (with signature binding) and a new Entry is created (with new signature binding). A Record Entry contains data and metadata, in multiple formats, following various conventions and standards. Included data may be tagged, and/or delimited, structured (concise, encoded, computable), or unstructured (free form, non-computable). Data may be encoded as text, document, images, audio, waveforms, in ASCII, binary or other encoding."
EHR, PHR and other Systems, designed to follow ISO/HL7 10781 and ISO 21089 record management methodology and incorporate FHIR resources natively, will create Record Entries with one or more FHIR resource instances. These FHIR resources will be bound to an AuditEvent resource instance and, in the case where content is new or updated, a Provenance resource instance in the Record Entry.
As described above, Record Entries have a lifespan and may have lifecycle events (RLEs) occurring during that lifespan. Following is the current list of RLEs:
| Sec RI.1.1.x | Record Entry Lifecycle Event |
From ISO/HL7 10781 EHR-S Functional Model R2 Occurs when an Agent... |
| 1 | Originate/Retain | Causes the system to: a) initiate capture of potential record content, and b) incorporate that content into the storage considered a permanent part of the health record |
| 2 | Update/Amend | Makes any change to record entry content currently residing in storage considered permanent (persistent) |
| 3 | Transform/Translate | Causes the system to change the form, language or code system used to represent record entry content |
| 4 | Attest | Causes the system to capture the agent’s digital signature (or equivalent indication) during formal validation of record entry content |
| 5 | Access/View | Causes the system to obtain and open a record entry for inspection or review |
| 6 | Output/Report | Causes the system to produce and deliver record entry content in a particular form and manner |
| 7 | Disclose | Causes the system to release, transfer, provision access to, or otherwise divulge record entry content |
| 8 | Transmit | Causes the system to send record entry content from one (EHR/PHR/other) system to another |
| 9 | Receive/Retain | Causes the system to: a) initiate capture of data content from elsewhere, and b) incorporate that content into the storage considered a permanent part of the health record |
| 10 | De-Identify | Causes the system to scrub record entry content to reduce the association between a set of identifying data and the data subject in a way that might or might not be reversible |
| 11 | Pseudonymize | v |
| 12 | Re-Identify | Causes the system to restore information to data that allows identification of information source and/or information subject |
| 13 | Extract | Causes the system to selectively pull out a subset of record entry content, based on explicit criteria |
| 14 | Archive | Causes the system to create and move archive artifacts containing record entry content, typically to long-term offline storage |
| 15 | Restore | Causes the system to recreate record entries and their content from a previous created archive artifact |
| 16 | Destroy/Delete | Causes the system to permanently erase record entry content from the system |
| 17 | Deprecate | Causes the system to tag record entry(ies) as obsolete, erroneous or untrustworthy, to warn against its future use |
| 18 | Re-Activate | Causes the system to recreate or restore full status to record entries previously deleted or deprecated |
| 19 | Merge | Causes the system to combine or join content from two or more record entries, resulting in a single logical record entry |
| 20 | Unmerge | Causes the system to reverse a previous record entry merge operation, rendering them separate again |
| 21 | Link | Causes the system to connect related record entries |
| 22 | Unlink | Causes the system to disconnect two or more record entries previously connected, rendering them separate (disconnected) again |
| 23 | Add Legal Hold | Causes the system to tag or otherwise indicate special access management and suspension of record entry deletion/destruction, if deemed relevant to a lawsuit or which are reasonably anticipated to be relevant or to fulfill organizational policy under the legal doctrine of "duty to preserve" |
| 24 | Remove Legal Hold | Causes the system to remove a tag or other cues for special access management had required to fulfill organizational policy under the legal doctrine of "duty to preserve" |
| 25 | Verify | Causes the system to confirm compliance of data or data objects with regulations, requirements, specifications, or other imposed conditions based on organizational policy |
| 26 | Encrypt | Causes the system to encode record entry content in a cipher |
| 27 | Decrypt | Causes the system to decode record entry content from a cipher |
CRUDE = Create, Read, Update, Delete, Execute. Record Lifecycle Events (RLEs) are specializations of basic CRUDE events for purposes of health data/record management end-to-end. End-to-end means: 1) for the duration of data/record lifespan within the source EHR, PHR or other system, and 2) following the path of data/record exchange system by system downstream to the ultimate point of access/use.
FHIR resources – when captured natively in the source EHR, PHR or other system Record Entries – include resources resulting from the Action taken (e.g., register patient, order medication, take progress note). Plus, all RLEs depend on the AuditEvent resource to capture basic metadata. Plus, all RLEs which Create or Update resource content depend on the Provenance resource to capture content-related metadata. The following table shows how RLEs relate to CRUDE events. Some RLEs create separate new artifacts as shown.
RLEs in blue are included in FHIR Connectathon Tracks and are currently limited to basic C, R, and U events.
| Sec RI.1.1.x | Record Lifecycle Event |
FHIR Resources
in Record Entry |
CRUDE - At each RLE, per Record Entry instance C - Create R - Read U - Update D - Delete E - Execute |
New Artifacts Created at RLE |
||
|
Audit Event |
Prove- nance |
Action Related | ||||
| 1 | Originate/Retain | 1..1 | 1..1 | 1..* | C New Instance(s) | --- |
| 2 | Update/Amend | 1..1 | 1..1 | 1..* | C or U Instance(s) | --- |
| 3 | Transform/Translate | 1..1 | 1..1a | 1..* | --- | C New transformed/ translated artifact |
| 4 | Attest | 1..1 | 1..1 | 1..* |
C or U Instance(s) (Provenance incl. Signature) |
--- |
| 5 | Access/View | 1..1 | 1..1a | 1..* | R Instance(s) | C New extract artifact |
| 6 | Output/Report | 1..1 | 1..1a | 1..* | --- | C New output/report artifact |
| 7 | Disclose | 1..1 | 1..1a | 1..* | --- | C New disclosure artifact |
| 8 | Transmit | 1..1 | 1..1a | 1..* | --- | C New transmittal artifact |
| 9 | Receive/Retain | 1..1 | 1..1 | 1..* | C New Instance(s) | --- |
| 10 | De-Identify | 1..1 | 1..1a | 1..* | --- | C New de-identified artifact |
| 11 | Pseudonymize | 1..1 | 1..1a | 1..* | --- | C New pseudomynized artifact |
| 12 | Re-Identify | 1..1 | 1..1b | 1..* | C or U Instance(s) Note b | --- |
| 13 | Extract | 1..1 | 1..1a | 1..* | --- | C New extract artifact |
| 14 | Archive | 1..1 | 1..1a | 1..* | --- | C New archive artifact |
| 15 | Restore | 1..1 | 1..1b | 1..* | C or U Instance(s) - Note b | --- |
| 16 | Destroy/Delete | 1..1 | 0..0 | 1..* | D Instance(s) | --- |
| 17 | Deprecate | 1..1 | 1..1b | 1..* | C or U Instance(s) - Note b | --- |
| 18 | Re-Activate | 1..1 | 1..1b | 1..* | C or U Instance(s) - Note b | --- |
| 19 | Merge | 1..1 | 1..1b | 1..* | C or U Instance(s) - Note b | --- |
| 20 | Unmerge | 1..1 | 1..1b | 1..* | C or U Instance(s) - Note b | --- |
| 21 | Link | 1..1 | 1..1b | 1..* | C or U Instance(s) - Note b | --- |
| 22 | Unlink | 1..1 | 1..1b | 1..* | C or U Instance(s) - Note b | --- |
| 23 | Add Legal Hold | 1..1 | 1..1b | 1..* | C or U Instance(s) - Note b | --- |
| 24 | Remove Legal Hold | 1..1 | 1..1b | 1..* | C or U Instance(s) - Note b | --- |
| 25 | Verify | 1..1 | 1..1b | 1..* | C or U Instance(s) - Note b | --- |
| 26 | Encrypt | 1..1 | 1..1a | 1..* | --- | C New encrypted artifact |
| 27 | Decrypt | 1..1 | 1..1b | 1..* | C or U Instance(s) - Note b | --- |
a: RLE typically Creates a new artifact (see last column) and the (one) Provenance Resource is bound to this artifact (not Record Entry instance(s)).
b: Depending on system design, RLE may Create or Update Record Entry instance(s) and thus the (one) Provenance Resource is bound to these
instance(s).
The following table shows the FHIR Resources and applicable Attributes captured - event, provenance and evidentiary metadata - at each occurrence of a Record Lifecycle Event. W5 metadata includes who, what, when, where, why attributes as shown below. W5 metadata elements are required.
| Record Lifecycle Event Metadata | FHIR Resource | Resource Element(s) |
| WHO | ||
| Organization | Provenance | signature : Signature 0..* |
| Provenance.agent : 0..* |
role : Coding 1..1 « ProvenanceAgentRole+ » actor : Reference(Organization) 0..1 userId : Identifier 0..1 |
|
| AuditEvent.agent : 1..* |
role : CodeableConcept 0..* « ActiveParticipantRoleCode » reference : Reference(Organization) 0..1 userId : Identifier 0..1 |
|
| Patient | Provenance | signature : Signature 0..* |
| Provenance.agent : 0..* |
role : Coding 1..1 « ProvenanceAgentRole+ » actor : Reference(Patient) 0..1 userId : Identifier 0..1 |
|
| AuditEvent.agent : 1..* |
role : CodeableConcept 0..* « ActiveParticipantRoleCode » reference : Reference(Patient) 0..1 userId : Identifier 0..1 |
|
|
Action - Performer Record - Author/User |
Provenance | signature : Signature 0..* |
| Provenance.agent : 0..* |
role : Coding 1..1 « ProvenanceAgentRole+ » actor : Reference (Organization|Practitioner| Patient|Device|RelatedPerson) 0..1 userId : Identifier 0..1 |
|
| AuditEvent.agent : 1..* |
role : CodeableConcept 0..* « ActiveParticipantRoleCode » reference : Reference(Organization|Practitioner| Patient|Device|RelatedPerson) 0..1 userId : Identifier 0..1 |
|
| Record - System/Device | Provenance | signature : Signature 0..* |
| Provenance.agent : 0..* |
role : Coding 1..1 « ProvenanceAgentRole+ » actor :Reference(Device) 0..1 userId : Identifier 0..1 |
|
| AuditEvent.agent : 1..* |
role : CodeableConcept 0..* « ActiveParticipantRoleCode » reference : Reference(Device) 0..1 userId : Identifier 0..1 |
|
| WHAT | ||
| Action - Taken | Provenance | Activity : Coding 0..1 « ProvenanceActivity » |
| AuditEvent | Event : BackboneElement 1..1 | |
| Record - Lifecyle Event | AuditEvent |
type : Coding 1..1 « AuditEventType+ » subtype : Coding 0..1 « AuditEventSubType+ » action : code 0..1 « AuditEventAction» |
| AuditEvent.entity : 0..* |
identifier : Identifier 0..1 reference : Reference(Any) 0..1 type : Coding 0..1 « AuditEventEventType » role : Coding 0..1 « AuditEventEventRole » lifecycle : Coding 0..1 |
|
| WHEN | ||
| Action - Date/Time | Provenance | period : Period 0..1 |
| AuditEvent | recorded : instant 1..1 | |
| Record - Date/Time | Provenance | recorded : instant 1..1 |
| AuditEvent | recorded : instant 1..1 | |
| WHERE | ||
| Action - Physical Location | Provenance | location : Reference(Location) 0..1 |
| AuditEvent.source : 1..1 |
site : BackboneElement 0..1 identifier : string 1..1 type : Coding 0..* « AuditEventSourceType » |
|
| Record - Network Address | Provenance | location : Reference(Location) 0..1 |
| AuditEvent.agent.network |
address : BackboneElement 0..1 type : code 0..1 « AuditEventAgentNetworkType » |
|
| WHY | ||
| Action - Reason, Rationale, Purpose | Provenance | reason : Coding 0..* |
| AuditEvent.agent | purposeOfUse : Coding 0..* « AuditEventPurposeOfUse » | |
| Record - Reason, Rationale, Purpose | Provenance | reason : Coding 0..* |
| policy : uri 0..* | ||
| AuditEvent | purposeOfEvent : Coding 0..* | |
| Additional Evidentiary Metadata, as applicable | ||
| Digital Signature(s) |
Provenance one per signature |
signature : Signature 0..* |
| Record Entry ID | Provenance | Target : Reference(Any) 0..* |
| AuditEvent.entity : 0..* |
identifier : Identifier 0..1 reference : Reference(Any) 0..1 |
|
|
Record Entry Content ID(s): data, docs, artifacts |
Provenance | Target : Reference(Any) 0..* |
|
Provenance.entity : 0..* one per Record Entry |
role : Coding 0..1 « ProvenanceEntityRole » type : Coding 0..1 « ProvenanceResourceType » reference : Reference(Any) 0..1 agent : [see Provenance.agent] |
|
|
AuditEvent.entity : 0..* one per Content item |
identifier : Identifier 0..1 reference : Reference(Any) 0..1 |
|
| Corresponding/linked Record Entry(ies) |
Provenance.entity : 0..* one per linked Record Entry |
role : Coding 0..1 « ProvenanceEntityRole » type : Coding 0..1 « ProvenanceResourceType » reference : Reference(Any) 0..1 agent : [see Provenance.agent] |
|
AuditEvent.entity : 0..* one per linked Record Entry |
identifier : Identifier 0..1 reference : Reference(Any) 0..1 |
|
| Amendment/Translation Sequence |
Provenance.entity : 0..* one for each Record Entry in sequence |
role : Coding 0..1 « ProvenanceEntityRole » type : Coding 0..1 « ProvenanceResourceType » reference : Reference(Any) 0..1 agent : [see Provenance.agent] |
| AuditEvent.entity : 0..* | lifecycle : Coding 0..1 | |
| Pointer to Pre Event Entry, if chained |
Provenance.entity : 0..* one per previous instance |
role : Coding 0..1 « ProvenanceEntityRole » type : Coding 0..1 « ProvenanceResourceType » reference : Reference(Any) 0..1 agent : [see Provenance.agent] |
|
AuditEvent.entity : 0..* one per previous instance |
identifier : Identifier 0..1 reference : Reference(Any) 0..1 |
|
|
Source of Copied Content (e.g. copy/paste template) |
Provenance.entity : 0..* one per source |
role : Coding 0..1 « ProvenanceEntityRole » type : Coding 0..1 « ProvenanceResourceType » reference : Reference(Any) 0..1 agent : [see Provenance.agent] |
|
AuditEvent.source : 1..1 one per source |
site : BackboneElement 0..1 identifier : string 1..1 type : Coding 0..* « AuditEventSourceType » |
|
|
AuditEvent.entity : 0..* one per source |
identifier : Identifier 0..1 reference : Reference(Any) 0..1 type : Coding 0..1 « AuditEventEventType » role : Coding 0..1 « AuditEventEventRole » |
|
| Event is known Disclosure | AuditEvent.entity : 0..* |
lifecycle : Coding 0..1 where lifecycle = "disclosure" |
| Record Entry Permissions |
AuditEvent.agent : 1..* one per agent |
[for role-based permissions] role : CodeableConcept 0..* « [as specified] » [for user-based permissions] reference : Reference(Practitioner|Organization|Device|Patient|RelatedPerson) 0..1 userId : Identifier 0..1 |
|
AuditEvent.entity : 0..* One per agent label |
securityLabel : Coding 0..1 « [as specified] » | |
| Event Transaction Entries |
Provenance.entity : 0..* one per Record Entry |
role : Coding 0..1 « ProvenanceEntityRole » type : Coding 0..1 « ProvenanceResourceType » reference : Reference(Any) 0..1 agent : [see Provenance.agent] |
|
AuditEvent.entity : 0..* one per Record Entry |
identifier : Identifier 0..1 reference : Reference(Any) 0..1 type : Coding 0..1 « AuditEventEntityType » |
|
| Identifier/Version of Translation Tools |
Provenance.entity : 0..* one per translation event |
role : Coding 0..1 « ProvenanceEntityRole » type : Coding 0..1 « ProvenanceResourceType » reference : Reference(Any) 0..1 agent : [see Provenance.agent] |
|
AuditEvent.agent : 1..* one per translation event |
role : CodeableConcept 0..* « ActiveParticipantRoleCode » reference : Reference(Device) 0..1 userId : Identifier 0..1 |
Action = Medication Order
Record Lifecycle Event (RLEs), in sequence: 1) originate/retain, 2) update/amend, 3) attest, 4) access/view...
Note that Record Entries have a pre-lifecycle event state (except for the genesis originate/retain event). Record Entries also have a post-lifecycle event state (except for the terminus destroy/delete event).
| Event Sequence | Record Lifecycle Event |
Record Entry Content - including FHIR Resource Instances |
Retaining without Alteration |
| 1 - Pre | Originate/Retain Order | --- | --- |
| 1 - Post |
Medication v1 MedicationOrder v1 AuditEvent v1 Provenance v1 |
--- | |
| 2 - Pre | Update/Amend Order |
Medication v1 MedicationOrder v1 AuditEvent v1 Provenance v1 |
All v1 Instances |
| 2 - Post |
Medication v2 MedicationOrder v2 AuditEvent v2 Provenance v2 |
All v1 Instances | |
| 3 - Pre | Attest Order |
Medication v2 MedicationOrder v2 AuditEvent v2 Provenance v2 |
All v1/2 Instances |
| 3 - Post |
Medication v3 MedicationOrder v3 AuditEvent v3 Provenance v3 (with signature ) |
All v1/2 Instances | |
| 4 - Pre | Access/View Order |
Medication v3 MedicationOrder v3 AuditEvent v3 Provenance v3 |
All v1/2/3 Instances |
| 4 - Post | AuditEvent v4 | All v1/2/3 Instances | |
| And on... |


AppServer Object¶
The is one of the core components in the zesty framework. It holds references to objects that play a central role in how everthing else is held together.:
public AppServer() {
this(new HashMap<>());
}
public AppServer(Map<String, String> props) {
this.assets(Optional.ofNullable(props.get("assets")).orElse("www"));
this.appctx(Optional.ofNullable(props.get("appctx")).orElse("/"));
this.engine(Optional.ofNullable(props.get("engine")).orElse("jtwig"));
this.threadPoolExecutor = createThreadPoolExecutor();
}
locals: Properties¶
This holds configuration attributes that can be passed to the application and that are used by other components internally to configure their own behavior.
threadPoolExecutor: ThreadPoolExecutor¶
This is a thread-pool that is separate from the server’s own thread pool. This is only used to handle requests for handlers configured as ‘supports async’. This thread pool is configurable using 3 parameters which are passed through the locals objects. These properties are:
- poolSize - the number of threads to keep in the pool, even if they are idle, unless allowCoreThreadTimeOut is set
- maxPoolSize - the maximum number of threads to allow in the pool
- keepAliveTime - when the number of threads is greater than the core, this is the maximum time (in MILLISECONDS) that excess idle threads will wait for new tasks before terminating.
wpcontext: Map¶
If configuring the application for wordpress
, this will hold the configuration parameters
required.:
// ************* WORDPRESS *****************//
public AppServer wordpress(String home, String fcgi_proxy) {
this.wpcontext.put("activate", "true");
this.wpcontext.put("resource_base", home);
this.wpcontext.put("welcome_file", "index.php");
this.wpcontext.put("fcgi_proxy", fcgi_proxy);
this.wpcontext.put("script_root", home);
return this;
}
corsconetxt: Map¶
This map holds the request headers’ attributes that the application will use to
configure the CorsFilter
.
servlets: ServletContextHandler¶
This is the servlet handlers’ container for the application. All configured routes are added to this handler under one context path.
engine: ViewEngine¶
This is an interface for exposing the active view component to the application. The value it holds specifies the concrete view implementation to be used by the application. This could be either be freemarker, jtwig at the moment.
AppProvider Object¶
This is a provider for the AppServer object which is comes in handy when working with Javascript.:
public class AppProvider {
public static AppServer provide(Map<String, String> props) {
return new AppServer(props);
}
}
You can alternatively just simply instantiate the AppServer manually.
HandlerConfig Object¶
This interface allows you to dynamically customize the request handler (the underlying
object is a HttpServletRequest
)
with the help of
ServletRegistration.Dynamic
to suit specific requirements.:
public interface HandlerConfig {
public void configure(ServletHolder holder);
}
Through the holder.getRegistration()
object, you will have access to servlet-specific methods like:
- setLoadOnStartup(int loadOnStartup)
- setMultipartConfig(MultipartConfigElement multipartConfig)
- Set<String> addMapping(String… urlPatterns)
- setAsyncSupported(boolean supported)
among others.
BodyWriter Object¶
This interface allows you to take over the response generation responsibility and the output is sent back to the client as the response body.
public interface BodyWriter<T> {
byte[] transform(T object);
}
BodyReader Object¶
This interface allows you to take over the request body processing responsibility and the output is used by the application to process the request.
public interface BodyReader<T> {
T transform(String type, byte[] bytes);
}
Configure Logging¶
To configure logging, let’s revisit how logback initialize itself.
- Logback tries to find a file called logback-test.xml in the classpath.
- If no such file is found, logback tries to find a file called logback.groovy in the classpath.
- If no such file is found, it checks for the file logback.xml in the classpath..
- If no such file is found, service-provider loading facility (introduced in JDK 1.6) is used to resolve the implementation of com.qos.logback.classic.spi.Configurator interface by looking up the file META-INFservicesch.qos.logback.classic.spi.Configurator in the class path. Its contents should specify the fully qualified class name of the desired Configurator implementation.
- If none of the above succeeds, logback configures itself automatically using the BasicConfigurator which will cause logging output to be directed to the console.
For the javascript application, we need another way to override this process in order to
control logging. Fortunately, logback will allow us to configure a system property path
which will preempt
the initialization process above. java -Dlogback.configurationFile=/path/to/config.xml
.
To configure this for javascript, use the syntax below:
jjs --language=es6 -ot -scripting -J-Dlogback.configurationFile=../lib/app-logback.xml -J-Djava.class.path=../lib/zesty-router-0.1.0-shaded.jar index.js
The corresponding app-logback.xml
file would look something like this.:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</encoder>
</appender>
<logger name="com.practicaldime.zesty" level="DEBUG" />
<logger name="org.eclipse.jetty" level="ERROR" />
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
With this setup, you are back in control over the logging process through the configuration file.


Most of the parkrun websites display your results and volunteer records in English. Some parkrun websites don't display in English. The French parkrun website, for example, displays your results and volunteer records in French.
Running Challenges works by reading the information on your parkrun results page and then adding your badges to the top of the page. It checks what badges you have achieved by looking for certain terms on the parkrun pages, like "Barocde Scanning" which indicates that you have volunteered as a Barcode Scanner at parkrun.
If a parkrunner registered in, say, France, all their roles seem to be displayed in French. This means that Running Challenges can't find the word "Barocde Scanning" on the page. So we have to provide a list of all the French volunteer terms (e.g. "Scan des codes-barres") so that French parkrunners get the right badges displayed on their pages. And the same for each other language.
The following table indicates the current list of volunteer roles that we have discovered for each language on the parkrun websites. As you can see, there are several gaps in the table because we couldn't find examples of all the volunteer roles on all of the non-English parkrun websites.
If you know what the missing volunteer roles are (the exact term used by parkrun in that language), please email us at<EMAIL_ADDRESS>If you can, please include a link to an athlete who has volunteered for that role and has it displayed in that language on their athlete page. This means that we can test that they get the right badges when we've updated the table.


Chhattisgarh CM calls for action against managers, operators of unregulated chit fund companies
In the cabinet meeting held on Saturday under the chairmanship of the Chief Minister, the cases registered against irregular financial (chit fund) companies were reviewed and the officials have been instructed to take swift action on the recorded allegations.
Chief Minister Bhupesh Baghel on Saturday gave directions to conduct a proper investigation and take appropriate actions against the managers and operators of the unregulated financial chit fund companies.
In the cabinet meeting held on Saturday under the chairmanship of the Chief Minister, the cases registered against irregular financial (chit fund) companies were reviewed and the officials have been instructed to take swift action on the recorded allegations.
"Proper investigation is being conducted against unregulated financial (chit fund) companies in the state with the registration of 403 cases. With reference to the case registered in the Bilaspur Civil Lines, a total sum of Rs. 2 lakh 80 thousand has been returned," informed a government release.
"With reference to the information received, in the cases filed since year 2015 till October 2019, 248 cases come under the Protection of Interests of Chhattisgarh Depositors Act 2005 and Rules 2005, 65 falls under the Prize Chit and Money Operating Scheme Restriction Act 1978 and 90 cases fall under the section of Indian Penal Code," it read.
These registered cases include 379 cases against the director and 148 cases against the office-bearers. For the refund process, the property is being identified in a total of 154 cases and attachment action is being taken in these cases.
According to figures, 3 lakh 65 thousand 570 people have been cheated in the total 403 cases registered since 2015 till October 2019, in which approximately 12 billion 59 crores 83 lakh 39 thousand 436 rupees has been cheated from the people.


MusicGen
Sign In with Google
Genre
Jazz
Rock
Pop
Classical
Hip Hop
Tempo
Slow
Normal
Fast
Duration
Short
Medium
Long
.
Generate
Your Generation History
Song 1 - February 1st, 2019 at 5:54pm
Song 2 - February 2nd, 2019 at 6:21pm
Song 3 - February 4th, 2019 at 2:12pm
Song 4 - February 5th, 2019 at 9:44am
Song 5 - February 6th, 2019 at 9:32pm


Web Visualization
with HTML5, CSS3 and JavaScript
References:
CSS3 2D Transformations
Intro to CSS3 3D Transforms
CSS3 Transitions
Got a question? feel free to contact me.
To learn more about this course visit my site
02GEEK
.


WBDC_base¶
-
class
MonitorControl.Receivers.WBDC.
 The feeds can be interchanged with a pair of transfer switches.
The signals from each feed and pol enter an RF section which splits the full band into five RF sub-bands and also measures the power coming in to the RF section.
The five outputs from each of the RF section for each pol are passed into a polarization section.
Class variables are used to name the sections of the WBDC.
WARNING! RFsection method _rename_beam is very dependent on the naming convention used, specifically, the length of the names.
Attributes Summary
Methods Summary
Get the cross-over switch state
set_crossover
([crossover])Set or unset the cross-over switch
Attributes Documentation
-
DC_names
= ['D1', 'D2']¶
-
IF_names
= ['I1', 'I2']¶
-
RF_names
= ['R1', 'R2']¶
-
out_pols
= ['P1', 'P2']¶
-
pol_names
= ['E', 'H']¶
Methods Documentation
-
get_crossover
()¶ Get the cross-over switch state
-
set_crossover
(crossover=False)¶ Set or unset the cross-over switch
-


Fobrent Knóka
O FUTURO DO COMPETITIVO ESTÁ ENTRE NÓS!
Knight
Kanterbury Guardian
- Role
- Warrior
- Element
- Basic
- Special Ability
- Master of Weapons
- Compatible Weapons
- Swords, Shield, Bow, Rifle
Evolution Stage
evolution stage 1/5
evolution stage 2/5
evolution stage 3/5
evolution stage 4/5
evolution stage 5/5
Marianne
Teatan Engineer
- Role
- Ranged
- Element
- Earth
- Special Ability
- Missile Shooter
- Compatible Weapons
- Rifle
Evolution Stage
evolution stage 2/5
evolution stage 3/5
evolution stage 4/5
evolution stage 5/5
Loraine
Mysterious Innkeeper
- Role
- Support
- Element
- Basic
- Special Ability
- Strange Picnic Basket
- Compatible Weapons
- Basket
Evolution Stage
evolution stage 2/5
evolution stage 3/5
evolution stage 4/5
evolution stage 5/5
Marvin
Desert Mercenary
- Role
- Warrior
- Element
- Earth
- Special Ability
- Merciless Charge
- Compatible Weapons
- Gauntlet
Evolution Stage
evolution stage 2/5
evolution stage 3/5
evolution stage 4/5
evolution stage 5/5
Sohee
Magitech Scientist
- Role
- Ranged
- Element
- Light
- Special Ability
- Magiton Pack
- Compatible Weapons
- Rifle
Evolution Stage
evolution stage 2/5
evolution stage 3/5
evolution stage 4/5
evolution stage 5/5
Kanterbury Forest
Teatan Kingdom
Magic School
Desert of Madness
City of Shen
Inn
Dungeon Kingdom
Mt. Shivering


- The operands of all OP2, OP3, and OP4 operators must be integers
- The OP2 and OP3 operators create an integer result.
- The OP4 operators create boolean results.
- All variables must be declared with a particular type.
- Each variables may only be declared once.
- The left-hand of assignment must be a variable, and the right-hand
side must be an expression of the variable's type.
- When used as a value, a variable's type is its declared type.
- Only integer variables may be assigned the result of readInt.
- writeInt's expression must evaluate to an integer.
- The expression guarding if-statements and while-loops must be boolean.
- The literals "false" and "true" are boolean constants.
- The literal numbers 0 through<PHONE_NUMBER> are integer
constants. Numbers outside of that range should be flagged as
illegal.
Errata/Clarifications


[gecode-users] Views and serialization
Guido Tack
tack at ps.uni-sb.de
Fri Dec 21 11:23:26 CET 2007
Gustavo Gutierrez wrote:
> lems with VarMaps. As you said there are two ways to fill a VarMap:
> by using put and putArray methods and by iterating on actor
> specifications. I tried the second but because of a design decision
> in the past we cannot use it. In our design we have a class
> GenericSpace which inherits from Gecode::Space. This class has an
> attribute that contains a DynamicArray with all variables declared
> in a computation space. This array contains VarBase pointers
> (VarImpBase in the trunk version). To fill the VarMap i am using the
> following code:
>
> void GenericSpace::merge(GenericSpace *src) {
> Reflection::VarMap vm;
> for (int i = 0; i < src->vars.getSize(); i++) {
> std::stringstream s;
> s << "src-" << i;
> vm.put(src,src->vars.getVar(i),s.str().c_str());
> }
> printf("End merge operation\n");fflush(stdout);
> }
>
> getVar(i) returns a reference to the VarImpBase stored at position i
> in the array. When building the following error appears:
You cannot use put with a VarImBase*, you always have to go through
the actual variable. This is like update: You cannot call update on a
VarImpBase*, only on a Var (or View). The reason is that we do not
want variables to have any virtual functions. I guess you have some
flag indicating which VarImpBase* has which actual variable type, so
that you can copy (update) variables. You should use the same
information for merge. Cast the VarImpBase* to the corresponding
IntVarImp* (or SetVarImp* or whatever you have), then use that to get
an IntVar (or SetVar...), and then call vm.put with that variable.
Cheers,
Guido
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.ps.uni-sb.de/pipermail/users/attachments/20071221/edc6e3f1/attachment.htm>
More information about the gecode-users
mailing list


{% load i18n %} {# submission of this form will forward to "includes/search_results.html" #} {# this form can also be submitted using ajax and "includes/search_results.html" is returned #}


Mathematics
Centre College's Mathematics Department Staff:
Photo
Name
Jeffrey Heath
Lucas Hoots
Joel Kilty
Michael Lamar
Alex McAllister
Sarah Murray
Prayat Poudel
Ellen Swanson
Lesley Wiglesworth
John Wilson
Back to Index


Storybooks Speech and Hearing is a free open educational resource designed for speech and hearing professionals, including speech therapists and speech pathologists, as well as language learners. It makes 40 stories from the African Storybook available with text, audio, and IPA transcriptions in English and a variety of other languages. The transcriptions have been automatically generated, and are currently in the process of being manually refined and corrected by experts in each language.
All 40 stories on the Storybooks Speech and Hearing website come from the African Storybook – a groundbreaking digital initiative of the South African organization Saide, which promotes literacy for African children. The African Storybook has hundreds of stories in multiple African languages, as well as English, French, and Portuguese. The stories are openly licensed, which allows the Storybooks Speech and Hearing team to repurpose them for a audience. We are very grateful to the African Storybook and Saide for making the stories freely available under an open license.
We selected the 40 stories out of several hundred from the African Storybook, and sought to create a collection of stories of different lengths that balance the African origin of the stories with internationally relevant themes. There are traditional animal fables as well as contemporary stories about city life. Some stories cover serious topics like responsibility and gender equality.  We hope that the universal values reflected in the stories will resonate with children across Speech and Hearing.
Storybooks Speech and Hearing has only been possible with the help of a large number of people, including translators, readers, proofreaders, and others who have been part of the process of making these stories available. We sincerely thank all contributors for their time and effort!
We are particularly grateful to the Storybooks Canada project, which has created the modular website on which Storybooks Speech and Hearing is based, and to the ipa-dict project for providing the freely-licensed IPA transcription data for each language.
Icons provided by FontAwesome (via Fontello) and Elegant Circles. Site logo and icon based on speaking by Adrien Coquet from the Noun Project.


|
BSL430.NET
1.2.1
|
EEPROM structure specific to FT2232 devices. Inherits from FT_EEPROM_DATA. More...
Public Attributes | |
| bool | PullDownEnable = false |
| Determines if IOs are pulled down when the device is in suspend More... | |
| bool | SerNumEnable = true |
| Determines if the serial number is enabled More... | |
| bool | USBVersionEnable = true |
| Determines if the USB version number is enabled More... | |
| UInt16 | USBVersion = 0x0200 |
| The USB version number. Should be either 0x0110 (USB 1.1) or 0x0200 (USB 2.0) More... | |
| bool | AIsHighCurrent = false |
| Enables high current IOs on channel A More... | |
| bool | BIsHighCurrent = false |
| Enables high current IOs on channel B More... | |
| bool | IFAIsFifo = false |
| Determines if channel A is in FIFO mode More... | |
| bool | IFAIsFifoTar = false |
| Determines if channel A is in FIFO target mode More... | |
| bool | IFAIsFastSer = false |
| Determines if channel A is in fast serial mode More... | |
| bool | AIsVCP = true |
| Determines if channel A loads the VCP driver More... | |
| bool | IFBIsFifo = false |
| Determines if channel B is in FIFO mode More... | |
| bool | IFBIsFifoTar = false |
| Determines if channel B is in FIFO target mode More... | |
| bool | IFBIsFastSer = false |
| Determines if channel B is in fast serial mode More... | |
| bool | BIsVCP = true |
| Determines if channel B loads the VCP driver More... | |
| Public Attributes inherited from FTD2XX_NET.FTDI.FT_EEPROM_DATA | |
| UInt16 | VendorID = 0x0403 |
| Vendor ID as supplied by the USB Implementers Forum More... | |
| UInt16 | ProductID = 0x6001 |
| Product ID More... | |
| string | Manufacturer = "FTDI" |
| Manufacturer name string More... | |
| string | ManufacturerID = "FT" |
| Manufacturer name abbreviation to be used as a prefix for automatically generated serial numbers More... | |
| string | Description = "USB-Serial Converter" |
| Device description string More... | |
| string | SerialNumber = "" |
| Device serial number string More... | |
| UInt16 | MaxPower = 0x0090 |
| Maximum power the device needs More... | |
| bool | SelfPowered = false |
| Indicates if the device has its own power supply (self-powered) or gets power from the USB port (bus-powered) More... | |
| bool | RemoteWakeup = false |
| Determines if the device can wake the host PC from suspend by toggling the RI line More... | |
EEPROM structure specific to FT2232 devices. Inherits from FT_EEPROM_DATA.
| bool FTD2XX_NET.FTDI.FT2232_EEPROM_STRUCTURE.AIsHighCurrent = false |
Enables high current IOs on channel A
| bool FTD2XX_NET.FTDI.FT2232_EEPROM_STRUCTURE.AIsVCP = true |
Determines if channel A loads the VCP driver
| bool FTD2XX_NET.FTDI.FT2232_EEPROM_STRUCTURE.BIsHighCurrent = false |
Enables high current IOs on channel B
| bool FTD2XX_NET.FTDI.FT2232_EEPROM_STRUCTURE.BIsVCP = true |
Determines if channel B loads the VCP driver
| bool FTD2XX_NET.FTDI.FT2232_EEPROM_STRUCTURE.IFAIsFastSer = false |
Determines if channel A is in fast serial mode
| bool FTD2XX_NET.FTDI.FT2232_EEPROM_STRUCTURE.IFAIsFifo = false |
Determines if channel A is in FIFO mode
| bool FTD2XX_NET.FTDI.FT2232_EEPROM_STRUCTURE.IFAIsFifoTar = false |
Determines if channel A is in FIFO target mode
| bool FTD2XX_NET.FTDI.FT2232_EEPROM_STRUCTURE.IFBIsFastSer = false |
Determines if channel B is in fast serial mode
| bool FTD2XX_NET.FTDI.FT2232_EEPROM_STRUCTURE.IFBIsFifo = false |
Determines if channel B is in FIFO mode
| bool FTD2XX_NET.FTDI.FT2232_EEPROM_STRUCTURE.IFBIsFifoTar = false |
Determines if channel B is in FIFO target mode
| bool FTD2XX_NET.FTDI.FT2232_EEPROM_STRUCTURE.PullDownEnable = false |
Determines if IOs are pulled down when the device is in suspend
| bool FTD2XX_NET.FTDI.FT2232_EEPROM_STRUCTURE.SerNumEnable = true |
Determines if the serial number is enabled
| UInt16 FTD2XX_NET.FTDI.FT2232_EEPROM_STRUCTURE.USBVersion = 0x0200 |
The USB version number. Should be either 0x0110 (USB 1.1) or 0x0200 (USB 2.0)
| bool FTD2XX_NET.FTDI.FT2232_EEPROM_STRUCTURE.USBVersionEnable = true |
Determines if the USB version number is enabled


Build your Messenger ChatBot within minutes.
It only takes 3 easy and fast steps to make the ChatBot that will help you strengthen your community.
- Step 1
- Step 2
- Step 3
place holder im out of ideas :( Lorem, ipsum dolor sit amet consectetur adipisicing elit. Nisi, quasi inventore tempore, vitae repellat eveniet ab eligendi quae quos aliquid dolor soluta expedita? Officia ducimus atque quidem labore ipsam laudantium. lorem


Stage 1 Packet #1: TGT request (AS-REQ) with no PAC.
NOTE: The AS-REQ for the TGT requests a TGT with no PAC. This may be useful for creating a Snort signature to detect attempted MS14-068 exploitation on the network.
Compare this with a TGT request (AS-REQ) from a Windows client (Windows 7) which requests a PAC by default (click thumbnail to embiggen):
Stage 1 Packet #2: TGT Response (AS-REP) which returns the KDC encrypted TGT to the client.
Stage 1 Packet #3: The TGS request notes no PAC should be included and there is an authenticator provided (the generated PAC).
NOTE: The TGS-REQ provides the PAC as part of the request (though no PAC is requested). This can be used to create an IDS signature to detect attempted MS14-068 exploitation on the network.
Compare this with a TGS request (TGS-REQ) from a Windows client (Windows 7) which doesn’t have “include-pac:False”
Stage 1 Packet #4: The TGS response includes the new TGT which uses MD5 (unkeyed).
Compare this with a TGS response (TGS-REP) from a Windows client (Windows 7) in which the ticket component contains an “enc-part” with the etype: “eTYPE-AES256-CTS-HMAC-SHA1-96 (18)” which is a keyed SHA1 hash.
(click thumbnail to embiggen):


This section describes the following troubleshooting issues related to focus events.
To troubleshoot a problem with focus, you can trace focus events. You can do it by adding a focus listener to the toolkit, as shown in Example 10-5.
Example 10-5 Trace Focus Events
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener( public void eventDispatched(AWTEvent e) { System.err.println(e); } ), FocusEvent.FOCUS_EVENT_MASK | WindowEvent.WINDOW_FOCUS_EVENT_MASK | WindowEvent.WINDOW_EVENT_MASK);
The System.err
stream is used here because it does not buffer the output.
Remember that the correct order of focus events is the following:
FOCUS_LOST
on component losing focus
WINDOW_LOST_FOCUS
on top-level losing focus
WINDOW_DEACTIVATED
on top-level losing activation
WINDOW_ACTIVATED
on top-level becoming active widow
WINDOW_GAINED_FOCUS
on top-level becoming focused window
FOCUS_GAINED
on component gaining focus
When focus is transferred between components inside the focused window, only FOCUS_LOST
and FOCUS_GAINED
events should be generated. When focus is transferred between owned windows of the same owner or between an owned window and its owner, then the following events should be generated:
FOCUS_LOST
WINDOW_LOST_FOCUS
WINDOW_GAINED_FOCUS
FOCUS_GAINED
Note: The events losing focus or activation should come first.
Sometimes a problem may be caused by the native platform. To check this, investigate the native events that are related to focus. Make sure that the window you want to be focused gets activated and the component you want to focus receives the native focus event.
On the Windows platform, the native focus events are the following:
WM_ACTIVATE
for a top-level. WPARAM
is WA_ACTIVE
when activating and WA_INACTIVE
when deactivating.
WM_SETFOCUS
and WM_KILLFOCUS
for a component.
On the Windows platform, a concept of synthetic focus has been implemented. It means that a focus owner component only emulates its focusable state whereas real native focus is set to a focus proxy component. This component receives key and input method native messages and dispatches them to a focus owner. Prior to JDK7 a focus proxy component was a dedicated hidden child component inside a frame/dialog. In the latest JDK releases a frame/dialog itself serves as a focus proxy. Now it proxies focus not only for components in an owned window but for all child components as well. A simple window never receives native focus and relies on focus proxy of its owner. This mechanism is transparent for a user but should be taken into account when debugging.
On Oracle Solaris and Linux operating systems, XToolkit uses a focus model that allows AWT to manage focus itself. With this model the window manager does not directly set input focus on a top-level window, but instead it sends only the WM_TAKE_FOCUS
client message to indicate that focus should be set. AWT then explicitly sets focus on the top-level window if it is allowed.
Note: The X server and some window managers may nevertheless send focus events to a window. However all such events are discarded by AWT.
AWT does not generate the hierarchical chains of focus events when a component inside a top-level gains focus. Moreover, the native window mapped to the component itself does not get any native focus event. On the Oracle Solaris and Linux platforms, as well as on the Windows platform, AWT uses the focus proxy mechanism. Therefore, focus on the component is set by synthesizing a focus event, whereas the invisible focus proxy has native focus.
A native window that is mapped to a Window
object (not a Frame
or Dialog
object) has the override-redirect
flag set. Thus the window manager does not notify the window about focus change. Focus is requested on the window only in response to a mouse click. This window will not receive native focus events at all. Therefore, you can trace only FocusIn
or FocusOut
events on a frame or dialog. Since the major processing of focus occurs at the Java level, debugging focus with XToolkit is simpler than with WToolkit.
An applet is embedded in a browser as a child (though not a direct child) of an EmbeddedFrame
. This is a special Frame
that has the ability to communicate with the plugin. From the applet's perspective the EmbeddedFrame
is a full top-level Frame
.
Managing focus for an EmbeddedFrame
requires special additional actions. When an applet first starts, the EmbeddedFrame
does not get activated by default by the native system. The activation is performed by the plugin that triggers a special API provided by the EmbeddedFrame
. When focus leaves the applet, the EmbeddedFrame
is also deactivated in a synthesized manner.
The following focus models are supported by X window managers:
click-to-focus is a commonly used focus model. (For example, Microsoft Windows uses this model.)
focus-follows-mouse is a focus model in which focus goes to the window that the mouse hovers over.
The focus-follows-mouse model is not detected in XAWT in Java SE 7, and this causes problems for simple windows (objects of java.awt.Window
class). Such windows have the override-redirect
property, which means that they can be focused only when the mouse button is pressed, and not by hovering over the window. As a workaround, set MouseListener
on the window and request focus on it when mouse crosses the window borders.
This section describes some issues related to focus in AWT that can occur and suggests solutions.
Issue 1 - Linux + KDE, XToolkit cannot be switched between two frames when a frame's title is clicked.
Clicking a component inside a frame causes focus to change.
Solution: Check the version of your window manager and upgrade it to 3.0 or greater.
Issue 2 - You want to manage focus using KeyListener
to transfer focus in response to Tab/Shift+Tab, but not key event appear.
Solution: To catch traversal key events, you must enable them by calling Component.setFocusTraversalKeysEnabled(true)
.
Issue 3 - A window is set modal excluded with Window.setModalExclusionType(ModalExclusionType)
.
The frame, its owner, is modal blocked. In this case the window will also remain modal blocked.
Solution: A window cannot become the focused window when its owner is not allowed to get focus. The solution is to exclude the owner from modality.
Issue 4 - On Windows a component requests focus and is concurrently removed from its container.
Sometimes java.lang.NullPointerException: null pData
is thrown.
Solution: The easiest way to avoid throwing the exception is to do the removal along with requesting focus on EDT. Another, more complicated, approach is to synchronize requesting focus and removal if you need to perform these actions on different threads.
Issue 5 - When focus is requested on a component and the focus owner is immediately removed, focus goes to the component after the removed component.
For example, Component A is the focus owner. Focus is requested on Component B, and immediately after this Component A is removed from its container. Eventually focus goes to Component C, which is located after Component A in the container, but not to Component B.
Solution: In this case, ensure that the requesting focus is executed after Component A is removed, not before.
Issue 6 - On Windows, when a window is set alwaysOnTop
in an inactive frame, the window cannot receive key events.
For example, a frame is displayed, with a window that it owns. The frame is inactive, so the window is not focused. Then the window is set to alwaysOnTop
. The window gains focus, but its owner remains inactive. Therefore, the window cannot receive key events.
Solution: Bring the frame to front (the Frame.toFront()
method) before setting the window to alwaysOnTop
.
Issue 7 - When a splash screen is shown and a frame is shown after the splash screen window closes, the frame does not get activated.
Solution: Bring the frame to front (the Frame.toFront()
method) after showing it (the Frame.setVisible(true)
method).
Issue 8 - The WindowFocusListener.windowGainedFocus(WindowEvent)
method does not return the frame's most recent focus owner.
For example, a frame is the focused window, and one of its components is the focus owner. Another window is clicked, and then the frame is clicked again. WINDOW_GAINED_FOCUS
comes to the frame and the WindowFocusListener.windowGainedFocus(WindowEvent)
method is called. However, inside of this callback you cannot determine the frame's most recent focus owner, because Frame.getMostRecentFocusOwner()
returns null
.
Solution: You can get the frame's most recent focus owner inside the WindowListener.windowActivated(WindowEvent)
callback. However, by this time the frame will have become the focused window only if it does not have owned windows.
|
Note: This approach does not work for the window, only for the frame or dialog. |
Issue 9 - An Applet Steals focus when it starts.
Solution: This behavior is the default with JDK. However you might need to prevent the applet from getting focus on startup, for example, if your applet is invisible and does not require focus at all. In this case, you can set the special parameter initial_focus
to false
in the HTML tag, as shown in Example 10-6.
Issue 10 - A window is disabled with Component.setEnabled(false)
, but does not get totally unfocusable.
Solution: Do not assume that the condition set by calling Component.setEnabled(false)
or Component.setFocusable(false)
will be maintained unfocusable along with all its content. Instead, use the Window.setFocusableWindowState(boolean)
method.


Starting around age 35, I started having severe bouts of fatigue, which would typically hit around 1pm. This was causing me to lose productivity at work - and it was noticed. Even though I was sleeping a good 6-7 hrs a night, the fatigue became a monster that would absolutely rob me of any ability to be productive for a few hours every afternoon. It took all my might to stay sitting upright in my chair pretending I was figuring out programming problems on the computer at work. It was painful. Usually starting around 4pm or so, the fatique would slowly recede and I'd rush to get the work done that I was supposed to get done that day. Sometimes I'd have to stay late to get it done.
I went to the doctor, and told him about my problem. He was quite unhelpful. After a blood test, he said everything was fine, and simply recommended that I stop eating foods and drinks with sugar in them.
Yea well - I went ahead and stopped drinking soda pop and avoiding candy bars. And the fatigue did lessen - a little. But it was still there. Instead of a 10 ft. tall monster, it was a 9 ft. tall monster.
I eventually lost my job due to poor productivity. But I found another job - telecommuting. I could crash in the afternoon, and then pick up again after I got back up, and finish the rest of my work at night. But I was still not happy about losing 3-4 hours out of every day due to my afternoon fatigue.
Then I read about modafinil. I got a package of Modalert soon in the mail. 200mg pills. Even though I read that it was helping people, I was not optimistic about it. I had resigned myself to a life handicapped with fatigue, and I really felt hopeless about it. So, when that daily fatigue started setting in around 1pm, I took half a pill. 5 minutes nothing. 10 minutes nothing. Then a wonderful thing began to happen. The fatigue was dissolving! I could feel it going away. And in about 30 minutes - I was wide awake - and eager to continue with my work. If I was religious, I would have dropped to my knees and thanked God for this miracle.
This stuff works for me. No more fatigue in my days. I've settled on a schedule of 1/2 pill around noon, and if I need to continue working into the night, I take another half-pill around 5pm. I tried taking a whole pill once, 200mg - and I didn't like it. I was TOO awake, much too easily distracted by sounds and things.
I have no intention of using these pills to stay awake for 'days at a time'. I sleep everynight, and it even seems that I've been sleeping better since taking these pills.
Now - instead of stressing over not having enough time to get my work done every day, now I'm in the curious situation of having all my work done by 6pm, and then sitting around wondering what to do with the rest of my day. I've got various projects I'm working on now, besides doing my work.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


All Projects
Feb 2016
Week 8 - SQL cheatsheet
For week 8 I have done a review on SQL by designing my own SQL cheatsheet! It may not be the most informative cheatsheet but I believe it contains some basic information that you should know!
Week 7 - Week 7 Solo challenge - A javascript game
For week 7's solo challenge, I have created a mini game using Javascript. You the miner Tom has to collect 3 pieces of good diamonds in the mine named Dimonad Hill!


voxc.js
Documentation
Demo
About
Usage
.obj to Array
Rule Applyer
Image to Array
Edit rules file
×
Edit the rules file
Upload own rules file
Use predefined rules file
Save and upload


com.code10.kts.service
Interfaces
StorageService
Classes
AnnouncementService
ApartmentService
BuildingService
CommentService
CompanyService
FileSystemStorageService
MalfunctionService
MeetingService
ResidentialRequestService
SurveyService
TenantService
TopicService
UserService


Steem Curator is an effort to help the community with my knowledge of technology and steem economy. The goal of this project will always be to maximize your curation earnings by scanning through various bot activities to find best content to up-vote before major votes fall in so you earn curation reward for every vote that you cast.
This module looks through the current bids of 16 bots which support comment up-voting and displays the result for easy curation. I also added two links, one for steemit.com and other for busy.org. If you use busy.org, you can set voting % so you can cast more votes without depleting your voting power a lot. Even a small up-vote before the bigger votes gets you a decent share of curation pie.
Utopian Posts module helps in 2 different ways. One it provides for easier sorting and readability to the data on utopian site and Secondly Utopian posts are great for curation. These are posts that add value to the opensource community and most of them will get a vote from utopian guaranteeing a definite curation reward.
If you find this site useful, drop me a follow on steemit.Cheers, @mightypanda


Projects
Have you got a project that uses parslet? Please write us about it.
edn-ruby is a Ruby library to read and write edn- format/edn (extensible data notation), a subset of Clojure used for transferring data between applications, much like JSON, YAML, or XML.
In here, you can find a parser for a lisp like language and much more.
A really small and elegant HTTP server written in Ruby. Think Webrick. Using parslet. (Postmodern)
An external DSL for Ruby that tries to make regular expressions readable and maintainable. (Hal Fulton)
A self-ml implementation using parslet. (Ricardo Mendes)
Thnad is a tiny programming language with so few features that it is not useful for anything at all — except showing how to write a compiler in half an hour.
A units of measure library for Ruby. Part of it’s magic comes from supporting the “Unified Code for Units of Measure”, which has a formal grammar, described here. The grammar is sufficiently complicated that it can’t be solved with regular expressions (mostly because the grammar is recursive), and was therefore better suited for a PEG. (Josh Lewis)
A variant of Chris Pound’s word generator written in Ruby, with some improvements. (Robert Kosek)
A semantic version parser. (meh)
A ruby gem for parsing Wordpress style shortcodes using parslet. (Jamie Dyer)
A simple Java parser that can parse the overall structure of a Java file.
A ruby virtual machine in 100% ruby, that tries to parse most of ruby syntax using parslet.