Tadhg Beirne returns to Munster lineup for Racing clash
Alby Mathewson is among the replacements and could make last appearance for province
Heineken Champions Cup: Munster v Racing 92
Kick-off: 5.30pm, Saturday. Venue: Thomond Park. How to follow: The Irish Times liveblog will begin at 5pm. On TV: Live on BT Sport.
Johann van Graan has made three changes to his Munster side to take on Racing 92 at Thomond Park with JJ Hanrahan, Tadhg Beirne and Jack O’Donoghue all coming in to the starting lineup.
Mike Haley starts at fullback with Andrew Conway and Keith Earls on either flank.
Rory Scannell and Chris Farrell continue their centre partnership with Conor Murray and Hanrahan in the halfbacks.
Last week’s man of the match Jeremy Loughman, Niall Scannell and John Ryan pack down in the front row.
Beirne partners Jean Kleyn in the engine room with O’Donoghue named in a back row that also includes captain Peter O’Mahony and CJ Stander.
Alby Mathewson is among the replacements and is set to play his last game for the province.
Munster: Mike Haley; Andrew Conway, Chris Farrell, Rory Scannell, Keith Earls; JJ Hanrahan, Conor Murray; Jeremy Loughman, Niall Scannell, John Ryan; Jean Kleyn, Tadhg Beirne; Peter O’Mahony (C), Jack O’Donoghue, CJ Stander.
Replacements: Kevin O’Byrne, James Cronin, Stephen Archer, Billy Holland, Fineen Wycherley, Alby Mathewson, Dan Goggin, Arno Botha.


e-Resolute Employees
Add/Edit Employee
Name
Email
Designation
Phone No.
Address
Save
Search
Employee List
ID
Name
Email
Designation
Address
Phone No
Action


So I've been using the Android public beta of atomicDEX for about a week. Did my first atomic swap which was neat.
The issue I'm having is that after the latest update (0.2.0-e634e05ee) my balance is showing as zero and coins/tokens I've added to my portfolio are gone. Trying to add a coin/token again adds an empty space where it should be in the list.
This version is newer than what's on Google Play so maybe it got rolled out by accident? It's probably just a bug with that tab, my tra...


lossage
`Prev `__
L
`Next `__
--------------
**lossage**: /los'@j/, n.
[very common] The result of a bug or malfunction. This is a mass or
collective noun. “What a loss!” and “What lossage!” are nearly
synonymous. The former is slightly more particular to the speaker's
present circumstances; the latter implies a continuing
`*lose* `__ of which the speaker is currently a victim. Thus
(for example) a temporary hardware failure is a loss, but bugs in an
important tool (like a compiler) are serious lossage.
--------------
+-------------------------+----------------------------+--------------------------+
| `Prev `__ | `Up <../L.html>`__ | `Next `__ |
+-------------------------+----------------------------+--------------------------+
| loss | `Home <../index.html>`__ | lossy |
+-------------------------+----------------------------+--------------------------+


Leeds City Region enterprise zone
Mark Mills, Leeds City Council
<EMAIL_ADDRESS>Logic Leeds
Ian Greenwood, Carter Towler
<EMAIL_ADDRESS>Tom Lamb, Knight Frank
<EMAIL_ADDRESS>Newmarket Lane
Chris Bellamy, Leeds City Council
<EMAIL_ADDRESS>Temple Green
Mike Dove, Dove Haigh Phillips
<EMAIL_ADDRESS>Thornes Farm
Martin Blackett, Leeds City Council
<EMAIL_ADDRESS>Nick Arundel, AWS Ltd
<EMAIL_ADDRESS>Connex 45 (Thornes Farm)
Mike Baugh, CBRE
<EMAIL_ADDRESS>Rob Whatmuff, Lambert Smith Hampton
rwhatmuff@lsh.co.uk


VTT
OpenVA
Please Login
Invalid username and password.
You have been logged out.
Your session has expired because of inactivity.
Username
Password
Log in


➭ Select a letter in the alphabet area.
➭ If the letter is not part of the word, a part of the hangman is added.
➭ To win, all letters of the word has to be revealed.
➭ If all parts of the hangman are revealed, you lose.


When the Party's Over * * * 1/2 (out of * * * * )
Directed by Matthew Irmas. Cast: Rae Dawn Chong, Sandra Bullock, Elizabeth Berridge, Michael Landes, Kris Kamm, Fisher Stevens, Brian McNamara, Stephen Meadows, Raymond Cruz. 1992 - 114 minutes Rated R (for profanity and sexual situations). Reviewed June 20, 1999.
"When the Party's Over" really surprised me. Renting the film because of the impressive cast, but not actually expecting much out of it, what I found was an, overall, undiscovered gem that most people probably have not even heard of, but it really is in video stores, just waiting to be rented. Another movie about "twentysomethings in the '90s," but made in 1991 before the Gen-X feature film explosion, "When the Party's Over" includes fascinating, multi-layered characters and an engaging story, and is easily worthy the price of a rental.
Set in Los Angeles, four friends--businesswoman MJ (Rae Dawn Chong), feminist artist Amanda (Sandra Bullock), charity worker Frankie (Elizabeth Berridge), and struggling actor Banks (Kris Kamm)--share a place together. MJ is beginning to wonder if she will ever find someone to love, as her days are filled with either work or emotionless one night stands. Constantly taking her friends for granted, but always apologetic afterwards, she also is currently having an affair with Taylor (Brian McNamara), who is seriously involved and in love with the sweet, caring Frankie. Frankie, meanwhile, is in the middle of creating a giant mural in an urban neighborhood, having made a friend with Mario (Raymond Cruz), who lives there, but fearing for the residents' lives, as a drive-by shooting seems to occur almost every night. And last, Amanda has sworn off dating for awhile, unable to deal with the pain that inevitably comes with it, choosing instead to just be with her friends and her teenage brother, Willie (Michael Landes), who is always hanging around her to get away from his unsatisfying home life. One day while at a party, the curiously-named Alexander Midnight (Fisher Stevens) first comes on to her with a seemingly corny pick-up line ("I'm positive we've met before...in a past life"), but soon she discovers that Alexander is completely sincere and, for once, interested in her, not sex.
It's mindboggling why "When the Party's Over" fell through the cracks, obtaining nothing more than a limited, and brief, theatrical run before heading to video. Maybe it is because now-movie star Sandra Bullock was a then-nobody, or more likely, it is because distrubutor Live Entertainment was going through financial troubles during the 1991-1992 time period.
Most captivating of all is MJ, played by Chong in one of her last substantial roles (before she, sadly, has resorted to direct-to-video action-oriented junk). MJ is not a bad person, regardless of if she uses her friends. She loves them all dearly, but is plagued by self-involvement, jumping from one guy to the next and only gaining interest in the men she knows she can't have, such as Taylor. MJ knows she has a problem, and is often keeping Amanda up through all hours of the night discussing her life.
In one of her very first feature film roles, Bullock gives one of her best performances to date, ranking right up there with her scene-stealing work in 1993's "The Thing Called Love" and 1994's "Speed." Bullock's Amanda is given the chance to have two memorable relationships in the film, both very telling and honest--one with her teen brother who, in one of the more touching scenes, explains to him that she loves him more than anything, would do anything for him, but that he can't move in with her because he has to live at home with their father; and the other with Alexander Midnight, which slowly but surely builds up to a sweet, innocent romance.
Elizabeth Berridge, previously seen in a number of films, including one of my all-time favorites, 1986's "Smooth Talk," is truly poignant and effervescent as Frankie, who is hoping to get engaged with Taylor, unknowing that he has cheated on her. Frankie is a do-gooder, hoping to change the world in some way with her dedication to society, but is also having doubts about where everything is headed. She loves living in L.A., but is beginning to doubt if other better things might be passing her by.
All of these story threads boil down to an absolutely perfect conclusion, where everything comes together but, realistically, not everything is solved. Director Matthew Irmas is wise not to judge the characters, but to let the viewer decide what they think of each one of them, and due to the flawless last ten or so shots, ends everything on an emotional, thoughful note. "When the Party's Over," a serious-minded motion picture on the trials, tribulatons, and (good and bad) experiences of young adults, is not to be missed.
- Copyright 1999 by Dustin Putman Http://hometown.aol.com/FilmFan16/index.html
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Currency Converter
Log In
Invalid email or password
You have been logged out
Email
*
Email errors
Password
*
Password errors
Confirm Password
*
Confirm Password errors
Name
*
Name errors
Date of Birth
*
Date of Birth errors
Street
Street errors
Postal Code
Postal code errors
City
City errors
Country
Country errors
Sign Up


A configuration profile with your fonts is ready to download into Settings. Tap the button below to begin, then tap Allow when prompted.
Download FontsWhen you see the confirmation alert on this page, open the Settings app and navigate to General > VPN & Device Management to install the $(PRODUCT_NAME) Installation profile.
After Settings are updated, the fonts will appear in other apps like Pages, Keynote, Numbers, and Tot.


Secret Diary
Store your thoughts permanently and securely.
Log in using your username and password.
Stay logged in
SignUp


Microsoft Azure (Networking)
SDET Intern
Jun 2012 - Aug 2012
- Developed internal tool for simulating network failure and congestion (fault-injection)
- Saw project from concept to completion including design, architecture, implementation, testing, and documentation
- Presented project in front of CVP of Server & Cloud Division, received positive feedback on project and presentation


Alan Jones' show loses half its revenue after Jacinda Ardern comments
Advertisers are deserting controversial Australian talkback radio host Alan Jones' radio show with reports it has lost half its revenue since he chastised Prime Minister Jacinda Ardern.
In August, Jones said she should be hit with a 'backhander'. He also said Australian Prime Minister Scott Morrison should "shove a sock down her throat" after she called Morrison out over Australia's stance on climate change.
Many brands boycotted the radio host's show with more than 80 brands abandoning the radio programme in the month following Jones' comments.
Related News
Revealed: Alan Jones apology letter to Ardern
'Superb': Jones praises Ardern's response to his attacks
A week after Jones' verbal attack on Ardern caused an uproar on both sides of the Tasman, he backtracked, saying his comments did not come out as he had hoped.
"I made some comments last week as you're well aware, and in the haste of what you say in radio they were most probably clumsily presented," Jones said on Sky News Australia.
He also wrote a letter to Ardern apologising, which she accepted, but advertisers have not been as forgiving.
Sources told The Sydney Morning Herald the backlash from Jones' comments may cost Macquarie Media, which owns Jones' network 2GB, about $6 million in advertising.
It appears audiences are also deserting the shock jock.
The latest Commercial Radio Australia survey results revealed Jones' show had dropped 0.3 percent in the Sydney breakfast market.
The station Jones is on dropped 0.6 percent in the overall Sydney share.


The battle for glory begins...
Sangharsh, a platform for the doers
who just never want to give up.
Sangharsh is an ultimate platform for athletes to showcase their talent and it is organised in the true spirit of sportsmanship and the fiesta begins on the 24th of March and keeps the adrenaline kicking till the 26th of March 2K17 so join us for a wonderful rondezvous of zest,ethos and sportsmanship.
Registration Dates: 9th of Jan 2017 to 22nd of March 2017.
Opening Ceremony: 23rd of March 2017.
Closing Ceremony: 26th of March 2017.
JUET, Guna has always strived to produce professionals that excel not only in the field of science n technology, but can also stand their ground when it comes to the field of sports. Sangharsh is one huge step that we take towards that very goal- one of many. I wish our participating students the very best in their endeavours, and hope this battle for glory brings them just that.
To be trained in well-equipped laboratories, and the in the comfort of air conditioned lecture halls, and to be tempered in the heat and dust of sports, where teamwork and sportsmanship are grilled in one’s psyche by equal parts victory and defeat- are both a quota that JUET is proud to meet. We at JUET take pride as hosts to Sangharsh’17, an outstanding effort to realise the latter.


Beta This is a test version of the layout of this page. Take the survey to help us improve it
Guidance
Information on how much education services grant (ESG) transitional grant local authorities are getting for the 2017 to 2018 financial year.
The education services grant ( ESG ) gives local authorities and academy trusts money to fund their schools’ services. In July 2016 we announced that local authorities will receive transitional ESG funding from April to August 2017 to complement the ESG funding academies will receive for the remainder of the academic year 2016 to 2017.
The allocations document gives a breakdown of how much ESG transitional grant local authorities will receive from April to August 2017.
The technical note explains how we calculated these allocations, and sets out the ESG transitional grant funding rates for 2017 to 2018.
More information on school funding arrangements for 2017 to 2018 is available. You can also read the written ministerial statement issued on 20 December 2016.
Information on ESG protection for academies is available in academies revenue funding allocations guidance.


| I l@ve RuBoard |
|
[A]
[B]
[C]
[D]
[E]
[F]
[G]
[H]
[I]
[J]
[K]
[L]
[M]
[N]
[O]
[P]
[Q]
[R]
[S]
[T]
[U]
[V]
[W]
[X]
[Y]
[Z]
variables global flag shell configuring faking inputs on forms with versions of Python changes in 2nd virtual methods Visual Python, running Python from |
| I l@ve RuBoard |


| 006:165 Khan | : |
And it is He Who has made you generations coming after generations, replacing each other on the earth. And He has raised you in ranks, some above others that He may try you in that which He has bestowed on you. Surely your Lord is Swift in retribution, and certainly He is Oft-Forgiving, Most Merciful. |
| 006:165 Maulana | : |
And He it is Who has made you successors in the land and exalted some of you in rank above others, that He may try you by what He has given you. Surely thy Lord is Quick in requiting (evil), and He is surely the Forgiving, the Merciful. |
| 006:165 Pickthal | : |
He it is Who hath placed you as viceroys of the earth and hath exalted some of you in rank above others, that He may try you by (the test of) that which He hath given you. Lo! Thy Lord is swift in prosecution, and Lo! He verily is Forgiving, Merciful. |
| 006:165 Rashad | : |
He is the One who made you inheritors of the earth, and He raised some of you above others in rank, in order to test you in accordance with what He has given you. Surely, your Lord is efficient in enforcing retribution, and He is Forgiver, Most Merciful. |
| 006:165 Sarwar | : |
On earth, We have made each of your generations the successors of their predecessors; We have made some of you do good deeds of a higher degree than others. He will test you in this way through what He has revealed to you. Your Lord's retribution is swift and He is certainly All-forgiving and All-merciful. |
| 006:165 Shakir | : |
And He it is Who has made you successors in the land and raised some of you above others by (various) grades, that He might try you by what He has given you; surely your Lord is quick to requite (evil), and He is most surely the Forgiving, the Merciful. |
| 006:165 Sherali | : |
And HE it is who made you successors of others on the earth and has exalted some of you over others in degrees of rank, that HE may try you by that which HE has given you. Surely, thy Lord is Quick in punishment; and surely, HE is Most Forgiving, Merciful. |
| 006:165 Yusufali | : |
It is He Who hath made you (His) agents, inheritors of the earth: He hath raised you in ranks, some above others: that He may try you in the gifts He hath given you: for thy Lord is quick in punishment: yet He is indeed Oft-forgiving, Most Merciful. |
Concepts/Themes Covered: أركان الإسلام > التوحيد > توحيد الله تعالي > التوحيد المطلق لله تعالى Pillars of Islam> Islamic> Oneness of Allah> The Absolute Monotheism of His Glory أركان الإسلام > التوحيد > توحيد الله تعالي > صفات الله تعالى > سريع العقاب Pillars of Islam> Islamic> Oneness of Allah> His Glory's Characteristics> The Swift in Retribution أركان الإسلام > التوحيد > توحيد الله تعالي > وحدانيته Pillars of Islam> Islamic> Oneness of Allah> Singularity and Being Unique الإيمان > الإيمان بالله > الابتلاء والفتن اختبار لإيمان المؤمن Faith> Belief In Allah> The Affliction and the Ordeals are test for the Believer's Faith الإيمان > المؤمنون > ابتلاؤهم Faith> The Believers> Their Affliction الإنسان والعلاقات الاجتماعية > المجتمعات > التفاضل بينها Man and The Social Relations>The Societies>Preference Among them الإنسان والعلاقات الاجتماعية > المجتمعات > جعلهم خلائف Man and The Social Relations>The Societies>Making them Successors
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


(navbar)
This needs to be left here
This needs to be left here
Comments
Comment id
Object id
User
Comment
Date
Prev
1
2
3
4
5
Next


Serving the powdered metal and other manufacturing industries since 2007
Note: this website is under construction.


@* * Copyright 2019 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import config.RadioInput @import config.ValidationError @(input: RadioInput, data: Map[String, String])(implicit messages: Messages, errors: Map[String, Seq[ValidationError]])


{% extends 'generic/object.html' %} {% load helpers %} {% load plugins %} {% block breadcrumbs %} {{ block.super }} {% if object.group %}
| Group | {{ object.group|linkify|placeholder }} |
| Description | {{ object.description|placeholder }} |
Sites
Racks
Rack reservations
Locations
Devices
Virtual Device Contexts
Cables
Aggregates
Prefixes
IP Ranges
IP addresses
VLANs
L2VPNs
Circuits
Virtual machines
Clusters
Wireless LANs
Wireless Links


No selection.
Toggle the proteins between a bar and a circle
Click on protein
Zoom
Mouse wheel
Pan
Click and drag on background
Move protein
Click and drag on protein
Expand bar
(increases bar length until sequence is visible)
Shift_left-click on protein
Rotate bar
Click and drag on handles that appear at end of bar
Hide/show protein (and all links to it)
Right-click on protein
Hide links between two specific proteins
Right click on any link between those proteins
Show all hidden links
Right click on background
'Flip' self-links
Right-click on self-link
Example:
PolII
PP2A
NPC
Reset
Export SVG
Legend
Details
Help
Self-Links
Ambig.
(cut-off)
Annot.
Custom
UniprotKB
SuperFamily
None


Tag loop expansion tokens are used to insert information about the current tag being processed within the context of a tag loop into the output stream. Tag loop tokens can only be used inside a tag loop.
|
Tag Loop Token |
Description |
|
|
For multi-expression tags, inserts the C-style operator that is used to connect the current tag expression with the previous tag expression. The token is replaced by a blank string for the first tag expression.
Possible values: &&, || |
|
|
For multi-expression tags, inserts the DBL-style operator that is used to connect the current tag expression with the previous tag expression. The token is replaced by a blank string for the first tag expression.
Possible values: .AND., .OR. Alternates: <tagloop_connector_dbl> |
|
|
Inserts the tag fields alternate name. Refer to <FIELD_ALTNAME> for additional information.
Alternates: <tagloop_field_altname>, <Tagloop_Field_Altname>, <Tagloop_field_altname>, <TagloopFieldAltname>, <tagloopFieldAltname> |
|
|
Inserts the tag fields base name. Refer to <FIELD_BASENAME> for additional information.
Alternates: <tagloop_field_basename>, <Tagloop_Field_Basename>, <Tagloop_field_basename>, <TagloopFieldBasename>, <tagloopFieldBasename> |
|
Inserts a string indicating the C# equivalent data type of the tag field currently being processed.
Possible values: bool, byte, double, float, int, long, decimal, DateTime, Nullable<DateTime>, sbyte, short, string, uint, ulong, ushort |
|
|
|
Inserts the tag fields name.
Alternates: <tagloop_field_name>, <Tagloop_Field_Name>, <Tagloop_field_name>, <TagloopFieldName>, <tagloopFieldName> |
|
|
Inserts the tag fields ODBC compatible name. Refer to <FIELD_ODBCNAME> for additional information.
Alternates: <tagloop_field_odbcname>, <Tagloop_Field_Odbcname>, <Tagloop_field_odbcname>, <TagloopFieldOdbcname>, <tagloopFieldOdbcname> |
|
|
Inserts the tag fields original name. Refer to <FIELD_ORIGINAL_NAME> for additional information.
Alternates: <tagloop_field_originalname>, <Tagloop_Field_Originalname>, <Tagloop_field_originalname>, <TagloopFieldOriginalname>, <tagloopFieldOriginalname> |
|
|
Inserts a string indicating the Synergy .NET equivalent data type of the tag field currently being processed.
Possible values: boolean, int, long, decimal, DateTime, @Nullable<DateTime>, String |
|
|
Inserts the tag fields SQL compatible name. Refer to <FIELD_SQLNAME> for additional information.
Alternates: <tagloop_field_sqlname>, <Tagloop_Field_Sqlname>, <Tagloop_field_sqlname>, <TagloopFieldSqlname>, <tagloopFieldSqlname> |
|
|
Inserts the appropriate C operator to evaluate the tag field against the tag value.
Possible values: ==, >=, >, <=, <, != |
|
|
Inserts the appropriate DBL operator to evaluate the tag field against the tag value.
Possible values: .EQ., .GE., .GT., .LE., .LT., .NE. Alternates: <tagloop_operator_dbl> |
|
|
Inserts the sequence number of the current tag within the collection of tags. |
|
|
Inserts the name of the current tag. |
|
|
Inserts the comparison value of the current tag. |
Copyright © 2021 Synergex International, Inc.


welcome to me. from me.
Blah LinkedIn profile BI Product Owner
Blah gitHub tinkering
Blah cheesopedia.com


Last time, in Tokens, cookies and sessions: an auth story (Part 1), we talked about the decision-making process behind our authentication mechanism.
This post will explore the implementation of our very own authentication token library, which you can find here on Github.
We will go over fleshing out an API for working directly with auth tokens, talk about expiring and refreshing tokens. At the end we'll cover a router plug to use in a Phoenix project.
What is your function in life?
To set our goals and aims straight, let's keep in mind what we want to do: simple encrypted tokens as means for authentication, which will serve as the baseline which we can improve upon in the future. Out of all the options that are available within JWT, we want to have one sane setting, that will sufficiently secure our tokens.
With that in mind, we can safely set the mode we use to A128GCM, and pass on the key directly.
Why AES 128 and not 256?
There are some attacks on AES 256 that make it's key handling "weaker" than that of AES 128, but none have any practical security implications, for now.
And for new applications I suggest that people don't use AES-256. AES-128 provides more than enough security margin for the forseeable future. But if you're already using AES-256, there's no reason to change.
Other than this quote from Schneier, AES-128 has the advantage of being slightly faster and slightly smaller in output, while providing a solution that is secure enough. Another point to keep in mind: tokens are short lived, so if at any point we should discover that AES-128 isn't secure enough any more, we can simply exchange it for something better.
Dependencies
Since JOSE/JWT for Elixir is what we're using to create this, and Phoenix is the framework we're building this for, our list of dependencies is going to be pretty straight forward.
defp deps do
[
{:jose, "~> 1.8"},
{:plug, "~> 1.4"},
{:phoenix, "~> 1.3"},
]
end
Most of the code won't care about Phoenix or Plug, so you can use it in any project you want, independent of your choice of framework, or lack thereof.
Token API
Let's put together our token API, by first guarding the most basic edges with tests.
Keys
Encryption usually requires some form of key for the encrypting party, otherwise we would be scrambling into an unrecoverable mess. AES128 keys need to be 16 bytes in length, so we can simply test for that:
describe "keys" do
test "generate_key/0 returns a valid AES128 key" do
{:ok, key} = AuthToken.generate_key()
assert byte_size(key) == 16
end
end
And its very short implementation:
@spec generate_key() :: {:ok, binary}
def generate_key do
{:ok, :crypto.strong_rand_bytes(16)}
end
That key then just goes to config :authtoken, :token_key
so we can read it out with Application.get_env(:authtoken, :token_key)
.
There is no necessity to make it readable for people, so we can just leave it in its binary format.
Tokens
Tokens themselves are very simple and so the only part we really need to verify is whether the encryption and decryption works as expected.
@user %{id: 123}
describe "tokens" do
test "token generation" do
{:ok, encrypted_token} = AuthToken.generate_token(@user)
assert {:ok, token} = AuthToken.decrypt_token(encrypted_token)
assert token["id"] == @user.id
end
end
We'll set up some test data to verify with, generate a token and decrypt it again!
Simple, right?
Yes, but not very useful.
Expiration and refresh
Intermission: the beauty of writing down your thoughts about what you're doing is making it easier to recognize when you're doing something stupidsuboptimal.
In the first iteration I left out a refresh cycle for the tokens for simplicity's sake.
The huge downside to this is that you're keeping your tokens valid for way longer than is sensible in an environment in which you want to be able to revoke access; by removing someone from a project, by deleting your own or someone else's account, changing permissions or any other reason or set of reasons.
Any useful token needs to have some limited time frame within which it is valid. This is also one of those settings that should have some default value which can be overwritten by other applications' config files. To that end, we can add this to the package's application method in mix.exs:
def application do
[applications: [:logger, :plug],
env: [
timeout: 86400,
refresh: 1800
]]
end
With these defaults we have the total lifetime of a token set to one day, with a refresh rate of 30 minutes. This means that a user will need to do provide their credentials only once per day. The client however needs to request a new token once per refresh cycle - 30 minutes in this case - which denotes the time window of total trust we want to put into a single token. After that we can refresh the token and use that opportunity to check with the backend if the user is still legible for access.
So, to validate that we have a usable token meeting our requirements, let's extend our test for the tokens:
test "token generation" do
{:ok, encrypted_token} = AuthToken.generate_token(@user)
assert {:ok, token} = AuthToken.decrypt_token(encrypted_token)
assert token["id"] == @user.id
refute AuthToken.is_timedout?(token)
refute AuthToken.needs_refresh?(token)
Application.put_env(:authtoken, :timeout, -1)
Application.put_env(:authtoken, :refresh, -1)
assert AuthToken.is_timedout?(token)
assert AuthToken.needs_refresh?(token)
end
Newly generated tokens should neither be timed out nor need a refresh, so both is_timedout?/1
and needs_refresh?/1
should return false.
To ensure that both functions actually do their job, we can reduce the time to timeout and refresh to -1, so they always return true and assert that that's happening.
That was easy enough, so now it's
Implementation time
First let's get dirty and generate some encrypted tokens. Looking at the JOSE documentation, it is very easy to get overwhelmed and maybe go a bit insane; and get reminded why having a reduced set of options is actually a nice thing, if you don't want to die of choice paralysis.
But since we already know what we're going for, we can just look at what we need for our implementation case. To generate our token we need an encryption header (JWE):
%{ "alg" => "dir", "enc" => "A128GCM", "typ" => "JWT" }
which we can just put in a private function defp get_jwe
.
alg
set to dir
means we don't need any key wrapping or derivation function, since we're supplying our own key in the correct size already.
Second we need a key (JWK), which we can generate with JOSE.JWK.from_oct/1
.
This we can also put into a private helper function:
@spec get_jwk() :: %JOSE.JWK{}
defp get_jwk do
get_config(:token_key)
|> JOSE.JWK.from_oct()
end
get_config/1
is a simple wrapper function for Application.get_env(:authtoken, :atom)
which throws an error if the specified atom is not set.
Alright, with this done, we can piece together a nice and simple function generating us our tokens.
@spec generate_token(map) :: {:ok, String.t}
def generate_token(user_data) do
token_content = %{ct: DateTime.to_unix(DateTime.utc_now())} |> Enum.into(user_data)
jwt = JOSE.JWT.encrypt(get_jwk(), get_jwe(), token_content) |> JOSE.JWE.compact |> elem(1)
# Remove JWT header
{:ok, Regex.run(~r/.+?\.(.+)/, jwt) |> List.last}
end
Taking an arbitrary map of data, we insert a creation time, do the conversion and then snip off the token's header by removing everything up to the first .
with a quick regex.
Since the library only provides us with standard compliant JWTs, this is the way to go here.
Decrypting our tokens is going to be similarly easy.
We have to rebuild our decapitated token, which we can easily do with our helper function get_jwe/0
and a base64 encoding, since all JWTs are base64 encoded.
header = get_jwe() |> JOSE.Poison.lexical_encode! |> :base64url.encode
auth_token = header <> "." <> headless_token
Now all we need to do is try do
decrypt with our key, and return
try do
%{fields: token} = JOSE.JWT.decrypt(get_jwk(), auth_token) |> elem(1)
{:ok, token}
rescue
_ -> {:error}
end
Last but not least we need to add the helper functions for checking the freshness of our tokens. These would simply read out the configured value for the respective time frames and return either true or false:
@spec is_timedout?(map) :: boolean
def is_timedout?(token) do
{:ok, ct} = DateTime.from_unix(token["ct"])
DateTime.diff(DateTime.utc_now(), ct) > get_config(:timeout)
end
@spec needs_refresh?(map) :: boolean
def needs_refresh?(token) do
{:ok, rt} = DateTime.from_unix(token["rt"])
DateTime.diff(DateTime.utc_now(), rt) > get_config(:refresh)
end
Regeneration
So far so good, what's missing now is a way to refresh stale tokens. A function providing this should give us a token with the same creation time, but a new refresh time -- if the token actually is eligible for regeneration; so only if it's not still fresh and if it's not timed out.
test "token refresh" do
{:ok, encrypted_token} = AuthToken.generate_token(@user)
{:ok, token} = AuthToken.decrypt_token(encrypted_token)
assert AuthToken.refresh_token(token) == {:error, :stillfresh}
:timer.sleep(1000)
Application.put_env(:authtoken, :refresh, -1)
assert {:ok, fresh_token} = AuthToken.refresh_token(token)
{:ok, token} = AuthToken.decrypt_token(fresh_token)
assert token["ct"] < token["rt"]
Application.put_env(:authtoken, :timeout, -1)
assert AuthToken.refresh_token(token) == {:error, :timedout}
end
This covers what we described pretty well, and implementing it should also pretty straight forward, especially given that we already have some working helper functions:
@spec refresh_token(map) :: {:ok, String.t} | {:error, :stillfresh} | {:error, :timedout}
def refresh_token(token) do
cond do
is_timedout?(token) -> {:error, :timedout}
!needs_refresh?(token) -> {:error, :stillfresh}
needs_refresh?(token) ->
token = %{"rt" => DateTime.to_unix(DateTime.utc_now())} |> Enum.into(token)
generate_token(token)
end
end
We can easily increase the usability of this function here by making it possible to directly refresh a still encrypted token you receive from the client. Elixir's guards make this beautifully elegant. First let's add one to the existing function:
def refresh_token(token) when is_map(token) do
Sweet! Now what we need is another function accepting string tokens attempting to decrypt and then refresh them. Also, I'm going to let you figure out how to extend the test cases for this yourself, and if you want you can even pretend to have written the tests first.
@spec refresh_token(String.t) :: {:ok, String.t} | {:error, :stillfresh} | {:error, :timedout}
def refresh_token(token) when is_binary(token) do
decrypt_token(token)
|> refresh_token
end
Plug me baby
A plug is what's going to make the whole process of checking tokens easily integrated in our (or our user's) future routers.
We are going to be covering one use-case, that I think is the most common: block all requests with invalid tokens with a 401
and let through (i.e. do nothing) those with valid tokens.
JWTs usually get sent with the authorization
header with bearer:
prefixed.
We'll stick to this standard here.
Again, let's start out with writing down our wishes and requirements in the form of tests. They're such a useful tool to help you remember what you would like your software to look like when it's all grown up.
Test for no token existing
The simplest test case is to send a request with no special auth header set:
test "denying access for no token", %{conn: conn} do
conn = AuthToken.Plug.verify_token(conn, [])
assert json_response(conn, 401)
end
Test for "wrong" token
This could be anything from a malicious token to one so old that your key for generating them has changed a few times already.
test "denying access for wrong token", %{conn: conn} do
conn = conn
|> put_req_header("authorization", "bearer: ")
|> AuthToken.Plug.verify_token([])
assert json_response(conn, 401)
end
Test for stale and expired tokens
For this one, we can again just set the refresh and timeout value to -1, which will make all tokens expire or require regeneration immediately.
test "denying access for stale or expired token", %{conn: conn} do
{:ok, token} = AuthToken.generate_token(@user)
Application.put_env(:authtoken, :refresh, -1)
conn = conn
|> put_req_header("authorization", "bearer: " <> token)
|> AuthToken.Plug.verify_token([])
assert json_response(conn, 401) == %{"error" => "needs_refresh"}
Application.put_env(:authtoken, :timeout, -1)
assert Application.get_env(:authtoken, :timeout) == -1
conn = conn
|> recycle()
|> put_req_header("authorization", "bearer: " <> token)
|> AuthToken.Plug.verify_token([])
assert json_response(conn, 401) == %{"error" => "timeout"}
end
Test for valid tokens
Just generate a token and expect the request to go through.
test "granting access for correct token", %{conn: conn} do
{:ok, token} = AuthToken.generate_token(@user)
conn = conn
|> put_req_header("authorization", "bearer: " <> token)
|> AuthToken.Plug.verify_token([])
assert conn.status != 401
end
Do it
Having covered a good range of cases, we can attempt to implement this.
If we want this module to be usable as a plug, we have to import Plug.Conn
, which gives the module access to all the necessary functionality.
First we'll try to verify if the given token is decryptable at all. Let's extract the token from the request header:
token_header = get_req_header(conn, "authorization") |> List.first
crypto_token = if token_header, do: Regex.run(~r/(bearer\: )?(.+)/, token_header) |> List.last
We don't need the bearer:
portion, so a quick Regex will get rid of that.
Next we can pass it through AuthToken.decrypt_token/1
and return accordingly.
In case it fails, we send back a 401
with the JSON encoded error message auth_fail
.
Don't forget to call halt/0
to tell Plug that this request is done and no further action is needed.
A client can then use this as a keyword for translation or redirect to a login page.
Or crash the browser if it's feeling frisky.
case AuthToken.decrypt_token(crypto_token) do
{:error} ->
conn
|> put_resp_content_type("application/json")
|> send_resp(:unauthorized, "{\"error\": \"auth_fail\"}")
|> halt
{:ok, token} ->
conn
end
The success case could just end here, but there's still the case of a timed out token, so let's extend that to
{:ok, token} ->
conn |> check_token_time(token)
and pass it on to the next method validating the time.
In case it fails here, we're going to return the error message timeout
.
Apart from that it is pretty similar to verify_token
.
Here's the full code for both functions:
import Plug.Conn
@spec verify_token(Plug.Conn.t, any) :: Plug.Conn.t
def verify_token(conn, _options) do
token_header = get_req_header(conn, "authorization") |> List.first
crypto_token = if token_header, do: Regex.run(~r/(bearer\: )?(.+)/, token_header) |> List.last
case AuthToken.decrypt_token(crypto_token) do
{:error} ->
conn
|> put_resp_content_type("application/json")
|> send_resp(:unauthorized, "{\"error\": \"auth_fail\"}")
|> halt
{:ok, token} ->
conn |> check_token_time(token)
end
end
@spec check_token_time(Plug.Conn.t, map) :: Plug.Conn.t
defp check_token_time(conn, token) do
timeout = AuthToken.get_config(:timeout)
{:ok, ct} = DateTime.from_unix(token["ct"])
cond do
AuthToken.is_timedout?(token) ->
conn
|> put_resp_content_type("application/json")
|> send_resp(:unauthorized, "{\"error\": \"timeout\"}")
|> halt
AuthToken.needs_refresh?(token) ->
conn
|> put_resp_content_type("application/json")
|> send_resp(:unauthorized, "{\"error\": \"needs_refresh\"}")
|> halt
true ->
conn
end
end
Future Improvements
That's a good base package for our simple encrypted auth tokens. There is always room for improvement though, and writing down helps with not forgetting future plans.
One thing that could greatly improve usability -- and at the same time security -- would be an automated key management. Keys could then be kept by the server for the duration of the timeout and then replaced by a new key, thus ensuring constant rotation.
Next time we'll look at assembling what we have into a more complete authentication API.


How to create this endpoint?
Check out the documentation repo and be sure you have installed
composer
npm (for sass)
neoan3-cli
From within the project folder, run neoan3 new component {{class}}
(choose "Route component" with a view using frame "docs")
Now code away (probably in the view.html of your new component) and send a pull request if you are happy with your work.


Friday's Scores
by The Associated PressPREP FOOTBALL=
OHSAA Playoffs=
Quarterfinal=
Division I=
Region 1=
Can. McKinley 29, Solon 25
Euclid 28, Massillon Jackson 19
Lakewood St. Edward 73, Medina 38
Mentor 48, Cle. Hts. 7
Region 2=
Dublin Coffman 45, Perrysburg 14
Dublin Jerome 38, Springboro 31, 5OT
Springfield 23, Marysville 0
Tol. Whitmer 35, Clayton Northmont 21
Region 3=
Groveport-Madison 18, Hilliard Davidson 17
Lewis Center Olentangy Orange 36, Pickerington N. 17
Pickerington Cent. 20, Reynoldsburg 14
Powell Olentangy Liberty 14, Westerville Cent. 7
Region 4=
Cin. Colerain 30, Cin. Princeton 7
Cin. Elder 42, W. Chester Lakota W. 17
Cin. St. Xavier 48, Mason 20
Fairfield 37, Hamilton 13
Division II=
Region 5=
Akr. Hoban 69, Alliance 6
Massillon Perry 37, Hudson 27
Massillon Washington 55, Warren Harding 0
Mayfield 47, Willoughby S. 21
Region 6=
Avon 33, Wooster 13
Avon Lake 38, Maple Hts. 6
Cle. Benedictine 41, Brecksville-Broadview Hts. 38
Wadsworth 35, Olmsted Falls 7
Region 7=
Lewis Center Olentangy 42, Troy 10
Tol. Cent. Cath. 20, Tol. St. Francis 10
Tol. St. John's 42, Westerville S. 34
Whitehouse Anthony Wayne 44, Delaware Olentangy Berlin 36
Region 8=
Cin. La Salle 42, Morrow Little Miami 0
Cols. DeSales 27, Cin. Turpin 13
Cols. Walnut Ridge 28, Xenia 7
Harrison 24, Canal Winchester 18
Division III=
Region 9=
Aurora 27, Steubenville 21
Chardon 28, Dover 14
New Philadelphia 31, Chagrin Falls Kenston 28
Streetsboro 21, STVM 14
Region 10=
Mansfield Sr. 28, Bay Village Bay 0
Norwalk 22, Cle. Glenville 2
Parma Hts. Holy Name 14, Tiffin Columbian 7
Sandusky 20, Medina Buckeye 14
Region 11=
Cols. Hartley 14, London 8
Granville 41, Zanesville 7
Jackson 70, Cols. Centennial 28
Plain City Jonathan Alder 35, Thornville Sheridan 13
Region 12=
Hamilton Badin 46, Hamilton Ross 14
Kettering Alter 10, Day. Chaminade Julienne 7
St. Marys Memorial 14, Franklin 10
Trotwood-Madison 33, Wapakoneta 21
Division VI=
Region 21=
Beverly Ft. Frye 48, Dalton 39
Glouster Trimble 26, Salineville Southern 14
Mogadore 49, Brookfield 28
New Middletown Spring. 34, Berlin Center Western Reserve 7
Region 22=
Attica Seneca E. 14, Creston Norwayne 2
Carey 50, Collins Western Reserve 41
Howard E. Knox 21, Ashland Crestview 20
Jeromesville Hillsdale 25, Galion Northmor 21
Region 23=
Anna 47, Minster 21
Archbold 27, Coldwater 21
Liberty Center 43, Harrod Allen E. 12
Sherwood Fairview 29, Lima Cent. Cath. 27
Region 24=
Cols. Grandview Hts. 35, Bainbridge Paint Valley 28
Covington 33, Worthington Christian 27
Mechanicsburg 32, Frankfort Adena 7
Southeastern 40, Day. Christian 3
___
Some high school football scores provided by Scorestream.com, https://scorestream.com/


Amazon EMR Cluster InstanceGroupConfig
InstanceGroupConfig
is a property of the CoreInstanceGroup
and
MasterInstanceGroup
properties of the job flow instances
configuration. The InstanceGroupConfig
property specifies the settings for
instances (nodes) in the core and master instance groups of an Amazon EMR cluster.
Syntax
JSON
{ "AutoScalingPolicy" :
AutoScalingPolicy
, "BidPrice" :String
, "Configurations" : [Configuration, ...
], "EbsConfiguration" :EBSConfiguration
, "InstanceCount" :Integer
, "InstanceType" :String
, "Market" :String
, "Name" :String
}
YAML
AutoScalingPolicy:
AutoScalingPolicy
BidPrice:String
Configurations: -Configuration
EbsConfiguration:EBSConfiguration
InstanceCount:Integer
InstanceType:String
Market:String
Name:String
Properties
AutoScalingPolicy
-
An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. An automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric.
Required: No
Update requires: No interruption
BidPrice
-
When launching instances as Spot Instances, the bid price in USD for each EC2 instance in the instance group.
Required: No
Type: String
Update requires: Replacement
Configurations
-
A list of configurations to apply to this instance group. For more information see, Configuring Applications in the Amazon EMR Release Guide.
Required: No
Type: List of Amazon EMR Cluster Configurations
Update requires: Replacement
EbsConfiguration
-
Configures Amazon Elastic Block Store (Amazon EBS) storage volumes to attach to your instances.
Required: No
Type: Amazon EMR EbsConfiguration
Update requires: Replacement
InstanceCount
-
The number of instances to launch in the instance group.
Required: Yes
Type: Integer
InstanceType
-
The EC2 instance type for all instances in the instance group. For more information, see Instance Configurations in the Amazon EMR Management Guide.
Required: Yes
Type: String
Market
-
The type of marketplace from which your instances are provisioned into this group, either
ON_DEMAND
orSPOT
. For more information, see Amazon EC2 Purchasing Options.Required: No
Type: String
Name
-
A name for the instance group.
Required: No
Type: String


This page contains an index of all the events in the database, sorted by their type and date (if one is present). Clicking on an event’s Gramps ID will open a page for that event.
| Letter |
Type |
Date |
Gramps ID |
Person |
| A |
Activity |
|
E0072
|
Naberezny, John
|
| B |
Baptism |
1887-10-09 |
E0076
|
Naberezny, John
|
| B |
Birth |
1861-08-13 |
E0050
|
Hajduk, Bartlomiej
|
| |
|
1872-07-08 |
E0048
|
Wolanski, Agatha
|
| |
|
1887-06-24 |
E0052
|
Wolanski, John Jozef
|
| |
|
1887-10-04 |
E0068
|
Naberezny, John
|
| |
|
1888-09-29 |
E0042
|
Hajduk, Pauline
|
| |
|
1889-02-21 |
E0077
|
Naberezny, Mary
|
| |
|
1889-12-22 |
E0044
|
Hajduk, Thomas
|
| |
|
1895 |
E0055
|
Wolanski, Marjanna
|
| |
|
1898-03-07 |
E0057
|
Alton, Walter
|
| |
|
1912-04-03 |
E0037
|
Naberezny, Adam
|
| |
|
1913-07-25 |
E0079
|
Ross, Helena
|
| |
|
1917-12-25 |
E0011
|
Naber, Raymond Edwin
|
| |
|
1920-03-13 |
E0007
|
Naber, Angela Pauline
|
| |
|
1922-05-10 |
E0081
|
Naber, Viktor Daniel
|
| |
|
1924-10-04 |
E0032
|
Reiger, Arthur Cleveland
|
| |
|
1934-06-07 |
E0023
|
Thomas, Peter Sullivan
|
| |
|
1936-11-01 |
E0019
|
Thomas, Lorraine Jean
|
| |
|
1956-07-30 |
E0021
|
Thomas, Marian Joan
|
| |
|
1957-02-21 |
E0013
|
Thomas, Daniel Patrick
|
| |
|
1983-01-08 |
E0030
|
Marcus, Lawrence
|
| |
|
1983-11-28 |
E0017
|
Thomas, Elizabeth Claire
|
| |
|
1987-01-08 |
E0031
|
Bubel, Mark
|
| |
|
1988-11-26 |
E0025
|
Thomas - Bubel, Ann Kathryn
|
| |
|
1991-12-06 |
E0000
|
Thomas, Joseph Edward
|
| |
|
1993-05-03 |
E0029
|
Wysocki, Anthony
|
| |
|
1994-08-04 |
E0006
|
Thomas, Rebekah Leigh
|
| |
|
1995-03-13 |
E0022
|
Thomas, Mary Pauline
|
| |
|
2019-10-17 |
E0027
|
Wysocki, Owen Patrick
|
| |
|
2020-10-22 |
E0028
|
Marcus, Tessa Thomas
|
| B |
Burial |
1912-04-05 |
E0039
|
Naberezny, Adam
|
| |
|
1944-03-11 |
E0092
|
Wolanski, John Jozef
|
| |
|
1951-07-23 |
E0087
|
Wolanski, Agatha
|
| |
|
1961-02-13 |
E0075
|
Naberezny, John
|
| |
|
1998-09-21 |
E0016
|
Thomas, Daniel Patrick
|
| |
|
2009-09-02 |
E0009
|
Naber, Angela Pauline
|
| C |
Cat Heidi |
2013-11-15 |
E0064
|
Thomas, Joseph Edward
|
| C |
Cat Luna |
2012-12-10 |
E0063
|
Thomas, Joseph Edward
|
| D |
Death |
1912-04-04 |
E0038
|
Naberezny, Adam
|
| |
|
1927-06-27 |
E0056
|
Wolanski, Marjanna
|
| |
|
1928-09-05 |
E0051
|
Hajduk, Bartlomiej
|
| |
|
1944-03-08 |
E0053
|
Wolanski, John Jozef
|
| |
|
1949-02-22 |
E0058
|
Alton, Walter
|
| |
|
1951-07-20 |
E0049
|
Wolanski, Agatha
|
| |
|
1954 |
E0045
|
Hajduk, Thomas
|
| |
|
1961-02-09 |
E0069
|
Naberezny, John
|
| |
|
1965-04-19 |
E0080
|
Naberezny, Mary
|
| |
|
1972-08-17 |
E0043
|
Hajduk, Pauline
|
| |
|
1998-09-16 |
E0014
|
Thomas, Daniel Patrick
|
| |
|
2002-06-05 |
E0024
|
Thomas, Peter Sullivan
|
| |
|
2009-08-27 |
E0008
|
Naber, Angela Pauline
|
| |
|
2015-05-21 |
E0012
|
Naber, Raymond Edwin
|
| D |
Dog Max |
|
E0061
|
Thomas, Joseph Edward
|
| D |
Dog Sierra |
2014-10-15 |
E0065
|
Thomas, Joseph Edward
|
| E |
Education |
|
E0001
|
Thomas, Joseph Edward
|
| |
|
|
E0002
|
Thomas, Joseph Edward
|
| |
|
|
E0003
|
Thomas, Joseph Edward
|
| |
|
|
E0062
|
Hajduk, Helen
|
| |
|
1941 |
E0034
|
Naber, Angela Pauline
|
| |
|
from 2010-08-00 to 2013-04-00 (Julian) |
E0004
|
Thomas, Joseph Edward
|
| |
|
from 2015-01-00 to 2017-08-00 |
E0005
|
Thomas, Joseph Edward
|
| |
|
from 2017-08-20 to 2019-05-05 (Julian) |
E0066
|
Thomas, Joseph Edward
|
| F |
Funeral |
1961-02-13 |
E0073
|
Naberezny, John
|
| |
|
1961-02-13 |
E0074
|
Naberezny, John
|
| G |
Graduation |
2021-04-30 |
E0036
|
Thomas, Rebekah Leigh
|
| I |
Immigration |
1889 |
E0084
|
Wolanski, Agatha
Wolanski, John Jozef
|
| |
|
1904-11-30 |
E0083
|
Naberezny, Mary
|
| M |
Marriage |
1910-05-09 |
E0078
|
Naberezny, John
Naberezny, Mary
|
| |
|
1915-08-10 |
E0097
|
Wolanski, John Jozef
|
| |
|
1917-04-19 |
E0046
|
Hajduk, Thomas
|
| |
|
1948-06-28 |
E0010
|
Naber, Raymond Edwin
Naber, Angela Pauline
|
| |
|
1956-05-12 |
E0020
|
Thomas, Peter Sullivan
Thomas, Lorraine Jean
|
| |
|
1981-09-26 |
E0015
|
Thomas, Daniel Patrick
Thomas, Marian Joan
|
| |
|
2011-07-03 |
E0018
|
Thomas, Elizabeth Claire
|
| |
|
2014-04-05 |
E0026
|
Thomas - Bubel, Ann Kathryn
|
| |
|
2019-05-18 |
E0035
|
Thomas, Rebekah Leigh
|
| M |
Military Service |
|
E0033
|
Reiger, Arthur Cleveland
|
| |
|
|
E0047
|
Hajduk, Thomas
|
| |
|
|
E0059
|
Alton, Walter
|
| |
|
from 1918-05-25 to 1919-05-29 |
E0054
|
Wolanski, John Jozef
|
| |
|
1918-05-25 |
E0093
|
Wolanski, John Jozef
|
| |
|
1918-05-29 |
E0094
|
Wolanski, John Jozef
|
| |
|
1942-04-08 |
E0041
|
Naber, Raymond Edwin
|
| |
|
1942-04-27 |
E0096
|
Wolanski, John Jozef
|
| N |
Naturalization |
1895 |
E0085
|
Wolanski, Agatha
Wolanski, John Jozef
|
| O |
Occupation |
|
E0060
|
Thomas, Edward
|
| |
|
|
E0067
|
Naber, Raymond Edwin
|
| |
|
1910 |
E0090
|
Wolanski, John Jozef
|
| |
|
1920 |
E0089
|
Wolanski, John Jozef
|
| |
|
between 1923 and 1953 |
E0071
|
Naberezny, John
|
| |
|
1944 |
E0091
|
Wolanski, John Jozef
|
| R |
Residence |
estimated 1910 |
E0088
|
Wolanski, Agatha
Wolanski, John Jozef
|
| |
|
1917 |
E0070
|
Naberezny, John
|
| |
|
1918 |
E0095
|
Wolanski, John Jozef
|
| |
|
estimated from 1920 to 1951-07-20 |
E0086
|
Wolanski, Agatha
Wolanski, John Jozef
|
| |
|
1954-06-11 |
E0040
|
Naber, Raymond Edwin
|


GAITracker Protocol Reference
| Conforms to | NSObject |
| Declared in | GAITracker.h |
Overview
Google Analytics tracking interface. Obtain instances of this interface from [GAI trackerWithTrackingId:] to track screens, events, transactions, timing, and exceptions. The implementation of this interface is thread-safe, and no calls are expected to block or take a long time. All network and disk activity will take place in the background.
Tasks
-
trackingId
The tracking identifier (the string that begins with “UA-”) this tracker is associated with.
property required method -
appName
The application name associated with this tracker. By default, this property is populated with the
property required methodCFBundleName
string from the application bundle. If you wish to override this property, you must do so before making any tracking calls. -
appId
The application identifier associated with this tracker. This should be set to the iTunes Connect application identifier assigned to your application. By default, this property is
property required methodnil
. If you wish to set this property, you must do so before making any tracking calls. -
appVersion
The application version associated with this tracker. By default, this property is populated with the
property required methodCFBundleShortVersionString
string from the application bundle. If you wish to override this property, you must do so before making any tracking calls. -
anonymize
Tracking data collected while this is true will be anonymized by the Google Analytics servers by zeroing out some of the least significant bits of the IP address.
property required method -
useHttps
Tracking information collected while this is true will be submitted to Google Analytics using HTTPS connection(s); otherwise, HTTP will be used. Note that there may be additional overhead when sending data using HTTPS in terms of processing costs and/or battery consumption.
property required method -
sampleRate
The sampleRate parameter controls the probability that the visitor will be sampled. By default, sampleRate is 100, which signifies no sampling. sampleRate may be set to any value between 0 and 100, inclusive. A value of 90 means 90% of visitors should be sampled (10% of visitors to be sampled out).
property required method -
clientId
The client ID for the tracker.
property required method -
appScreen
The current screen set for this tracker.
property required method -
referrerUrl
The referrer URL for this tracker. Changing this value causes it to be sent with the next dispatch of tracking information.
property required method -
campaignUrl
The campaign URL for this tracker. This is not directly propagated to Google Analytics, but if there are campaign parameter(s), either manually or auto-tagged, present in this URL, the SDK will include those parameters in the next dispatch of tracking information. Google Analytics treats tracking information with differing campaign information as part of separate sessions.
property required method -
sessionStart
If true, indicates the start of a new session. Note that when a tracker is first instantiated, this is initialized to true. To prevent this default behavior, set this to
property required methodNO
when the tracker is first obtained. -
sessionTimeout
If non-negative, indicates how long, in seconds, the application must transition to the inactive or background state for before the tracker will automatically indicate the start of a new session when the app becomes active again by setting sessionStart to true. For example, if this is set to 30 seconds, and the user receives a phone call that lasts for 45 seconds while using the app, upon returning to the app, the sessionStart parameter will be set to true. If the phone call instead lasted 10 seconds, sessionStart will not be modified.
property required method -
– sendView
Track that the current screen (as set in appScreen) was displayed. If appScreen has not been set, this will not generate any tracking information.
required method -
– trackView
This method is deprecated. See sendView.
required method -
– sendView:
Track that the specified view or screen was displayed. This call sets the appScreen property and generates tracking information to be sent to Google Analytics.
required method -
– trackView:
This method is deprecated. See sendView.
required method -
– sendEventWithCategory:withAction:withLabel:withValue:
Track an event.
required method -
– trackEventWithCategory:withAction:withLabel:withValue:
This method is deprecated. See sendEventWithCategory.
required method -
– sendTransaction:
Track a transaction.
required method -
– trackTransaction:
This method is deprecated. see sendTransaction.
required method -
– sendException:withDescription:
Track an exception.
required method -
– trackException:withDescription:
This method is deprecated. See sendException.
required method -
– sendException:withNSException:
Convenience method for tracking an NSException that passes the exception name to trackException:withDescription:.
required method -
– trackException:withNSException:
This method is deprecated. See sendException.
required method -
– sendException:withNSError:
Convenience method for tracking an NSError that passes the domain, code, and description to trackException:withDescription:.
required method -
– trackException:withNSError:
This method is deprecated. See sendException.
required method -
– sendTimingWithCategory:withValue:withName:withLabel:
Track user timing.
required method -
– trackTimingWithCategory:withValue:withName:withLabel:
This method is deprecated. See sendTimingWithCategory.
required method -
– sendSocial:withAction:withTarget:
Track social action.
required method -
– trackSocial:withAction:withTarget:
This method is deprecated. See sendSocial.
required method -
– set:value:
Set a tracking parameter.
required method -
– get:
Get a tracking parameter.
required method -
– send:params:
Queue tracking information with the given parameter values.
required method -
– setCustom:dimension:
Set a custom dimension value, to be sent at the next tracking call.
required method -
– setCustom:metric:
Set a custom metric value, to be sent at the next tracking call.
required method -
– close
Close the tracker. This will mark it as closed and remove it from the list of trackers accessible through [GAI trackerWithTrackingId:], thus decrementing its reference count (and causing it to be dealloced unless it has been retained by the application). Once this method has been called, it is an error to call any of the tracking methods, and they will not result in the generation of any tracking information to be submitted to Google Analytics.
required method
Properties
anonymize
Tracking data collected while this is true will be anonymized by the Google Analytics servers by zeroing out some of the least significant bits of the IP address.
@property (nonatomic, assign) BOOL anonymize
Discussion
Tracking data collected while this is true will be anonymized by the Google Analytics servers by zeroing out some of the least significant bits of the IP address.
In the case of IPv4 addresses, the last octet is set to zero. For IPv6 addresses, the last 10 octets are set to zero, although this is subject to change in the future.
By default, this flag is false.
Declared In
GAITracker.h
appId
The application identifier associated with this tracker. This should be set to
the iTunes Connect application identifier assigned to your application. By
default, this property is nil
. If you wish to set this property, you must do
so before making any tracking calls.
@property (nonatomic, copy) NSString *appId
Discussion
The application identifier associated with this tracker. This should be set to
the iTunes Connect application identifier assigned to your application. By
default, this property is nil
. If you wish to set this property, you must do
so before making any tracking calls.
Note that this is not your app’s bundle id (e.g. com.example.appname), but the identifier used by the App Store.
Declared In
GAITracker.h
appName
The application name associated with this tracker. By default, this property is
populated with the CFBundleName
string from the application bundle. If you
wish to override this property, you must do so before making any tracking
calls.
@property (nonatomic, copy) NSString *appName
Discussion
The application name associated with this tracker. By default, this property is
populated with the CFBundleName
string from the application bundle. If you
wish to override this property, you must do so before making any tracking
calls.
Declared In
GAITracker.h
appScreen
The current screen set for this tracker.
@property (nonatomic, copy) NSString *appScreen
Discussion
The current screen set for this tracker.
Calling trackView: will also update this property before it dispatches tracking information to Google Analytics. However, if you wish to update the current screen without sending any tracking information, set this property directly. The updated screen will be reflected in subsequent tracking information.
Declared In
GAITracker.h
appVersion
The application version associated with this tracker. By default, this property
is populated with the CFBundleShortVersionString
string from the application
bundle. If you wish to override this property, you must do so before making any
tracking calls.
@property (nonatomic, copy) NSString *appVersion
Discussion
The application version associated with this tracker. By default, this property
is populated with the CFBundleShortVersionString
string from the application
bundle. If you wish to override this property, you must do so before making any
tracking calls.
Declared In
GAITracker.h
campaignUrl
The campaign URL for this tracker. This is not directly propagated to Google Analytics, but if there are campaign parameter(s), either manually or auto-tagged, present in this URL, the SDK will include those parameters in the next dispatch of tracking information. Google Analytics treats tracking information with differing campaign information as part of separate sessions.
@property (nonatomic, copy) NSString *campaignUrl
Discussion
The campaign URL for this tracker. This is not directly propagated to Google Analytics, but if there are campaign parameter(s), either manually or auto-tagged, present in this URL, the SDK will include those parameters in the next dispatch of tracking information. Google Analytics treats tracking information with differing campaign information as part of separate sessions.
For more information on auto-tagging, see http://support.google.com/googleanalytics/bin/answer.py?hl=en&answer=55590
For more information on manual tagging, see http://support.google.com/googleanalytics/bin/answer.py?hl=en&answer=55518
Declared In
GAITracker.h
clientId
The client ID for the tracker.
@property (nonatomic, copy, readonly) NSString *clientId
Discussion
The client ID for the tracker.
This is a persistent unique identifier generated the first time the library is called and persisted unchanged thereafter. It is used to identify the client across multiple application sessions.
Declared In
GAITracker.h
referrerUrl
The referrer URL for this tracker. Changing this value causes it to be sent with the next dispatch of tracking information.
@property (nonatomic, copy) NSString *referrerUrl
Discussion
The referrer URL for this tracker. Changing this value causes it to be sent with the next dispatch of tracking information.
Declared In
GAITracker.h
sampleRate
The sampleRate parameter controls the probability that the visitor will be sampled. By default, sampleRate is 100, which signifies no sampling. sampleRate may be set to any value between 0 and 100, inclusive. A value of 90 means 90% of visitors should be sampled (10% of visitors to be sampled out).
@property (nonatomic, assign) double sampleRate
Discussion
The sampleRate parameter controls the probability that the visitor will be sampled. By default, sampleRate is 100, which signifies no sampling. sampleRate may be set to any value between 0 and 100, inclusive. A value of 90 means 90% of visitors should be sampled (10% of visitors to be sampled out).
When a visitor is not sampled, no data is collected by Google Analytics for iOS library about that visitor’s activity. If your application is subject to heavy traffic spikes, you may wish to adjust the sample rate to ensure uninterrupted report tracking. Sampling in Google Analytics occurs consistently across unique visitors, ensuring integrity in trending and reporting even when sampling is enabled, because unique visitors remain included or excluded from the sample, as set from the initiation of sampling.
Declared In
GAITracker.h
sessionStart
If true, indicates the start of a new session. Note that when a tracker is
first instantiated, this is initialized to true. To prevent this default
behavior, set this to NO
when the tracker is first obtained.
@property (nonatomic, assign) BOOL sessionStart
Discussion
If true, indicates the start of a new session. Note that when a tracker is
first instantiated, this is initialized to true. To prevent this default
behavior, set this to NO
when the tracker is first obtained.
By itself, setting this does not send any data. If this is true, when the next tracking call is made, a parameter will be added to the resulting tracking information indicating that it is the start of a session, and this flag will be cleared.
Declared In
GAITracker.h
sessionTimeout
If non-negative, indicates how long, in seconds, the application must transition to the inactive or background state for before the tracker will automatically indicate the start of a new session when the app becomes active again by setting sessionStart to true. For example, if this is set to 30 seconds, and the user receives a phone call that lasts for 45 seconds while using the app, upon returning to the app, the sessionStart parameter will be set to true. If the phone call instead lasted 10 seconds, sessionStart will not be modified.
@property (nonatomic, assign) NSTimeInterval sessionTimeout
Discussion
If non-negative, indicates how long, in seconds, the application must transition to the inactive or background state for before the tracker will automatically indicate the start of a new session when the app becomes active again by setting sessionStart to true. For example, if this is set to 30 seconds, and the user receives a phone call that lasts for 45 seconds while using the app, upon returning to the app, the sessionStart parameter will be set to true. If the phone call instead lasted 10 seconds, sessionStart will not be modified.
To disable automatic session tracking, set this to a negative value. To indicate the start of a session anytime the app becomes inactive or backgrounded, set this to zero.
By default, this is 30 seconds.
Declared In
GAITracker.h
trackingId
The tracking identifier (the string that begins with “UA-”) this tracker is associated with.
@property (nonatomic, copy, readonly) NSString *trackingId
Discussion
The tracking identifier (the string that begins with “UA-”) this tracker is associated with.
This property is read-only.
Declared In
GAITracker.h
useHttps
Tracking information collected while this is true will be submitted to Google Analytics using HTTPS connection(s); otherwise, HTTP will be used. Note that there may be additional overhead when sending data using HTTPS in terms of processing costs and/or battery consumption.
@property (nonatomic, assign) BOOL useHttps
Discussion
Tracking information collected while this is true will be submitted to Google Analytics using HTTPS connection(s); otherwise, HTTP will be used. Note that there may be additional overhead when sending data using HTTPS in terms of processing costs and/or battery consumption.
By default, this flag is true.
Declared In
GAITracker.h
Instance Methods
close
Close the tracker. This will mark it as closed and remove it from the list of trackers accessible through [GAI trackerWithTrackingId:], thus decrementing its reference count (and causing it to be dealloced unless it has been retained by the application). Once this method has been called, it is an error to call any of the tracking methods, and they will not result in the generation of any tracking information to be submitted to Google Analytics.
- (void)close
Discussion
Close the tracker. This will mark it as closed and remove it from the list of trackers accessible through [GAI trackerWithTrackingId:], thus decrementing its reference count (and causing it to be dealloced unless it has been retained by the application). Once this method has been called, it is an error to call any of the tracking methods, and they will not result in the generation of any tracking information to be submitted to Google Analytics.
Declared In
GAITracker.h
get:
Get a tracking parameter.
- (NSString *)get:(NSString *)parameterName
Parameters
- parameterName
The parameter name.
Return Value
The parameter value, or nil
if no value for the given parameter is
set.
Discussion
Get a tracking parameter.
Declared In
GAITracker.h
send:params:
Queue tracking information with the given parameter values.
- (BOOL)send:(NSString *)trackType params:(NSDictionary *)parameters
Parameters
- trackType
The type of tracking information, e.g., @“appview”.
- parameters
A map from parameter names to parameter values which will be set just for this piece of tracking information.
Return Value
YES
if the tracking information was queued for submission, or NO
if an error occurred (e.g. bad track type).
Discussion
Queue tracking information with the given parameter values.
Declared In
GAITracker.h
sendEventWithCategory:withAction:withLabel:withValue:
Track an event.
- (BOOL)sendEventWithCategory:(NSString *)category withAction:(NSString *)action withLabel:(NSString *)label withValue:(NSNumber *)value
Parameters
- category
The event category, or
nil
if none.
- action
The event action, or
nil
if none.
- label
The event label, or
nil
if none.
- value
The event value, to be interpreted as a 64-bit signed integer, or
nil
if none.
Return Value
YES
if the tracking information was queued for dispatch, or NO
if
there was an error (e.g. the tracker was closed).
Discussion
Track an event.
If [GAI optOut] is true, this will not generate any tracking information.
Declared In
GAITracker.h
sendException:withDescription:
Track an exception.
- (BOOL)sendException:(BOOL)isFatal withDescription:(NSString *)format, ...
Parameters
- isFatal
A boolean indicating whether the exception is fatal.
- format
A format string that will be used to create the exception description.
- ...
An optional list of arguments to be substituted using the format string.
Return Value
YES
if the tracking information was queued for dispatch, or NO
if
there was an error (e.g. the tracker was closed).
Discussion
Track an exception.
If [GAI optOut] is true, this will not generate any tracking information.
Declared In
GAITracker.h
sendException:withNSError:
Convenience method for tracking an NSError that passes the domain, code, and description to trackException:withDescription:.
- (BOOL)sendException:(BOOL)isFatal withNSError:(NSError *)error
Parameters
- isFatal
A boolean indicating whether the exception is fatal.
- error
The NSError error object.
Return Value
YES
if the tracking information was queued for dispatch, or NO
if
there was an error (e.g. the tracker was closed).
Discussion
Convenience method for tracking an NSError that passes the domain, code, and description to trackException:withDescription:.
If [GAI optOut] is true, this will not generate any tracking information.
Declared In
GAITracker.h
sendException:withNSException:
Convenience method for tracking an NSException that passes the exception name to trackException:withDescription:.
- (BOOL)sendException:(BOOL)isFatal withNSException:(NSException *)exception
Parameters
- isFatal
A boolean indicating whether the exception is fatal.
- exception
The NSException exception object.
Return Value
YES
if the tracking information was queued for dispatch, or NO
if
there was an error (e.g. the tracker was closed).
Discussion
Convenience method for tracking an NSException that passes the exception name to trackException:withDescription:.
If [GAI optOut] is true, this will not generate any tracking information.
Declared In
GAITracker.h
sendSocial:withAction:withTarget:
Track social action.
- (BOOL)sendSocial:(NSString *)network withAction:(NSString *)action withTarget:(NSString *)target
Parameters
- network
A string representing social network. Must not be nil.
- action
A string representing a social action. Must not be nil.
- target
A string representing the target. May be nil.
Return Value
YES
if the tracking information was queued for dispatch, or NO
if
there was an error (e.g. the tracker was closed).
Discussion
Track social action.
If [GAI optOut] is true, this will not generate any tracking information.
Declared In
GAITracker.h
sendTimingWithCategory:withValue:withName:withLabel:
Track user timing.
- (BOOL)sendTimingWithCategory:(NSString *)category withValue:(NSTimeInterval)time withName:(NSString *)name withLabel:(NSString *)label
Parameters
- category
A string representing a timing category.
- time
A timing value.
- name
A string representing a timing name, or
nil
if none.
- label
A string representing a timing variable label, or
nil
if none.
Return Value
YES
if the tracking information was queued for dispatch, or NO
if
there was an error (e.g. the tracker was closed).
Discussion
Track user timing.
If [GAI optOut] is true, this will not generate any tracking information.
Declared In
GAITracker.h
sendTransaction:
Track a transaction.
- (BOOL)sendTransaction:(GAITransaction *)transaction
Parameters
- transaction
The GAITransaction object.
Return Value
YES
if the tracking information was queued for dispatch, or NO
if
there was an error (e.g. the tracker was closed).
Discussion
Track a transaction.
If [GAI optOut] is true, this will not generate any tracking information.
Declared In
GAITracker.h
sendView
Track that the current screen (as set in appScreen) was displayed. If appScreen has not been set, this will not generate any tracking information.
- (BOOL)sendView
Return Value
YES
if the tracking information was queued for dispatch, or NO
if
there was an error (e.g. the tracker was closed or appScreen is not set).
Discussion
Track that the current screen (as set in appScreen) was displayed. If appScreen has not been set, this will not generate any tracking information.
If [GAI optOut] is true, this will not generate any tracking information.
Declared In
GAITracker.h
sendView:
Track that the specified view or screen was displayed. This call sets the appScreen property and generates tracking information to be sent to Google Analytics.
- (BOOL)sendView:(NSString *)screen
Parameters
- screen
The name of the screen. Must not be
nil
.
Return Value
YES
if the tracking information was queued for dispatch, or NO
if
there was an error (e.g. the tracker was closed).
Discussion
Track that the specified view or screen was displayed. This call sets the appScreen property and generates tracking information to be sent to Google Analytics.
If [GAI optOut] is true, this will not generate any tracking information.
Declared In
GAITracker.h
set:value:
Set a tracking parameter.
- (BOOL)set:(NSString *)parameterName value:(NSString *)value
Parameters
- parameterName
The parameter name.
- value
The value to set for the parameter. If this is
nil
, the value for the parameter will be cleared.
Return Value
YES
if the parameter was set to the given value, or NO
if there
was an error (e.g. unknown parameter).
Discussion
Set a tracking parameter.
Declared In
GAITracker.h
setCustom:dimension:
Set a custom dimension value, to be sent at the next tracking call.
- (BOOL)setCustom:(NSInteger)index dimension:(NSString *)dimension
Parameters
- index
The index at which to set the dimension. Must be positive.
- dimension
The dimension value, or
nil
if the dimension at the given index is to be cleared.
Return Value
YES
on success, or NO
if an error occurred.
Discussion
Set a custom dimension value, to be sent at the next tracking call.
Declared In
GAITracker.h
setCustom:metric:
Set a custom metric value, to be sent at the next tracking call.
- (BOOL)setCustom:(NSInteger)index metric:(NSNumber *)metric
Parameters
- index
The index at which to set the metric. Must be positive.
- metric
The metric value, which will be interpreted as a signed 64-bit integer, or
nil
if the metric at the given index is to be cleared.
Return Value
YES
on success, or NO
if an error occurred.
Discussion
Set a custom metric value, to be sent at the next tracking call.
Declared In
GAITracker.h
trackEventWithCategory:withAction:withLabel:withValue:
This method is deprecated. See sendEventWithCategory.
- (BOOL)trackEventWithCategory:(NSString *)category withAction:(NSString *)action withLabel:(NSString *)label withValue:(NSNumber *)value
Discussion
This method is deprecated. See sendEventWithCategory.
Declared In
GAITracker.h
trackException:withDescription:
This method is deprecated. See sendException.
- (BOOL)trackException:(BOOL)isFatal withDescription:(NSString *)format, ...
Discussion
This method is deprecated. See sendException.
Declared In
GAITracker.h
trackException:withNSError:
This method is deprecated. See sendException.
- (BOOL)trackException:(BOOL)isFatal withNSError:(NSError *)error
Discussion
This method is deprecated. See sendException.
Declared In
GAITracker.h
trackException:withNSException:
This method is deprecated. See sendException.
- (BOOL)trackException:(BOOL)isFatal withNSException:(NSException *)exception
Discussion
This method is deprecated. See sendException.
Declared In
GAITracker.h
trackSocial:withAction:withTarget:
This method is deprecated. See sendSocial.
- (BOOL)trackSocial:(NSString *)network withAction:(NSString *)action withTarget:(NSString *)target
Discussion
This method is deprecated. See sendSocial.
Declared In
GAITracker.h
trackTimingWithCategory:withValue:withName:withLabel:
This method is deprecated. See sendTimingWithCategory.
- (BOOL)trackTimingWithCategory:(NSString *)category withValue:(NSTimeInterval)time withName:(NSString *)name withLabel:(NSString *)label
Discussion
This method is deprecated. See sendTimingWithCategory.
Declared In
GAITracker.h
trackTransaction:
This method is deprecated. see sendTransaction.
- (BOOL)trackTransaction:(GAITransaction *)transaction
Discussion
This method is deprecated. see sendTransaction.
Declared In
GAITracker.h


Detected Language
Default Language
Confidence Level
Click and Speak!
Tap anywhere on the calculator section
and then start Speaking.
Voice commands can be spoken in any order:
(+) - "Plus"
(-) - "Minus"
(/) - "Divided by"
(x) - "Times"
(^) - "To the power of"
This app is based on an experimental API
/!\Application stuck? Click again/!\
Show instructions
Language Override
Temporary results
Approximate results
Mute
Advanced Options