About SpeechDrop
What file formats are allowed?
You can upload DOC, DOCX, ODT, RTF, PDF, and TXT files that are up to 5MB.
Why should I use this over {insert competing service}?
SpeechDrop supports drag-and-drop, has auto-refreshing, preserves filenames, allows you to archive rooms with one click, lacks ambiguous characters in room codes, looks better (especially on mobile devices), uses HTTPS, and most importantly, it has a cooler name and fancy animations.
How long are files kept for?
Files are kept for up to 60 days after room creation. When you manually delete a file, it is permanently purged from the server and cannot be recovered.
What information is collected?
We collect anonymous, non-identifying usage data for the purpose of improving the service. Cookies are used in order to analyze user activity with Google Analytics and Cloudflare. We do not share your individual data with any other parties.
Which browsers are supported?
Modern versions of Chrome, Safari, Firefox, Edge, Opera, and IE11 will work.
What's this powered by?
The backend uses NGINX and Vert.x, and the frontend uses Picnic CSS and Vue.js.
The source is available on GitHub.
Currently running version {% VERSION %}.


Renault servicing offers
For 100% peace of mind
Why choose Renault?
BENEFITS OF A RENAULT SERVICE
- Safety - Full vehicle health check
- Reliability – Renault genuine parts
- Transparency - Fixed price on Service and Maintenance
- Customer excellence – vehicle returned washed and clean and all repairs benefit from 1 year guarantee on parts and labour
FEATURED OFFERS
A range of offers designed to keep your car working at optimal performance.
RENAULT SERVICE FROM £159*
Applies to vehicle on a two year service regime. Content: engine oil and filter change, safety, computer, battery, levels and anti-corrosion checks and adjustments. It’s important that your car is serviced in line with the manufacturer service schedule to maintain its performance and efficiency, and also contribute to maintaining its residual value.
MOT FROM £39**
The first MOT test is required when your vehicle is 3 years old. All of our testers are UK Vehicle Inspectorate trained and we will only be using Renault genuine parts to carry out any necessary repair work.
FREE VEHICLE HEALTH CHECK
Free visual inspection of your vehicle to ensure it is operating at peak efficiency.
AIR CON SERVICE FROM £69
Renault recommends a service of the Air Conditioning System every two years. The air con service is a thorough inspection of the air conditioning system, including a complete recharge of the air con gas and a cleanse of the evaporator.
SERVICE OFFER PRICING
Service pricing made simple.
| Service | Offer | What's included? |
|---|---|---|
| Air Conditioning | From £69 | Renault recommends a service of the Air Conditioning System every two years. The air con service is a thorough inspection of the air conditioning system, including a complete recharge of the air con gas and a cleanse of the evaporator. |
| Vehicle Health Check | FREE | Free visual inspection of your vehicle to ensure it is operating at peak efficiency. |
| Renault Service | From £159* | Applies to vehicle on a two year service regime. Content: engine oil and filter change, safety, computer, battery, levels and anti-corrosion checks and adjustments. It’s important that your car is serviced in line with the manufacturer service schedule to maintain its performance and efficiency, and also contribute to maintaining its residual value. |
| MOT | From £39** | The first MOT test is required when your vehicle is 3 years old. All of our testers are UK Vehicle Inspectorate trained and we will only be using Renault genuine parts to carry out any necessary repair work. |
| Service* & MOT** | From £199 | Combine your Renault Service and MOT. |
| Interim Service | From £129* | Applies to high mileage drivers (i.e. more than 2 services required in a two year period) with a vehicle on a 2 year service regime. Content: Engine Oil & Filter change, safety, computer & level checks & adjustments |
| Cabin Service | From £59* | The cabin filter ensures the passenger compartment is supplied with clean, healthy air. Not replacing the cabin filter at the recommended interval can lead to unpleasant odours, inefficient screen demisting and reduced hot & cold air flows. |
| Express Service | From £89† | Basic oil and filter change and free vehicle health check. |
| Service Plan | From £8 per month | Spread the cost of your service & maintenance requirements into monthly payments. Your local Renault dealer will be able to tailor a service plan based on your vehicle, annual mileage and budget. |
| Brake Fluid | From £39 | Brake Fluid provides a hydraulic link between the brake pedal and the brakes. Over time, brake fluid becomes contaminated with water and a severe contamination can lead to brake failure. Replacing the brake fluid at the recommended interval maintains the vehicle braking performance and extends the life of braking components. |
| Cambelt Replacement | From £199†† | The cambelt keeps the engine running smoothly. It is essential that the cambelt is replaced at the recommended interval as a slipped or snapped belt can lead to complete engine failure. |
| Front Brake Pads | From £89 | Brake pads grip on to the brake discs to reduce vehicle speed. Over time, the brake pads are worn down and need replacing to ensure safety and maintain braking performance. |
| Front Brake Pads & Discs | From £199 | Brake pads grip on to the brake discs to reduce vehicle speed. Over time, the brake pads and brake discs wear down and need replacing to ensure safety and maintain braking performance. |
I'd like to
Terms & Conditions
All prices quoted are manufacturer recommended retail prices including VAT at the prevailing rate. Prices may vary depending on model and servicing requirement. All prices are correct at time of publication and may be subject to change at any point without notice. All offers exclude the Z.E. range. Available at participating Dealers only.
* Additional parts may be required according to the maintenance programme (not included in stated price). Excludes V6 engines. Consult your Renault Dealer for the correct specification for your vehicle.
** MOT excludes Northern Ireland and Class 7
† Offer available to customers who own a Renault car over 48 months old who are new Renault Service department customers. The Express Service consists of an oil & filter change and a 25-point visual inspection. Service carried out using Renault Approved Parts. Additional parts may be required. Participating dealers only. Price includes VAT at the prevailing rate. Excludes ZE vehicles, LCVs and V6 engines.
†† Price quoted is for a Clio II 1.2 8v D7F 60bhp
***** Price stated relates to tyre 185/65 R15 88T, Fuel Efficiency F, Wet Grip E, External rolling noise 3 (71)
Service carried out using Renault Approved Parts. Additional parts may be required. Participating dealers only. Price includes VAT at the prevailing rate. Excludes ZE vehicles, LCVs and V6 engines.


Artiste FeedArt de la semaine :
Amit Shimoni is a young Israeli designer, illustrator and artist. His work engage with the gaps between reality and imagination. The project HIPSTORY featured here is a series of drawings that attempt to create new and altered portrait of iconic figures of the 20th century, by placing them in different time and culture.


New Users
2.134
15% more than last week.
Social Media
8.490
-15% less than last week.
Traffic hours
12.00PM
19% more than last week.
Week Search
9.543
-23% less than last week.
Lorem ipsum
5.284
7% more than last week.


{# Home page for a logged in user having role 'user'. #} {% extends "base.html" %} {% block content_left %}


You can use this tool to convert frequency from one unit to another.
Enter the from Frequency
Enter the to Frequency
Converted Frequency
textDesc
Reference formula
refDesc


Stephen Tu, Shivaram Venkataraman, Ashia C. Wilson,
Alex Gittens, Michael I. Jordan, and Benjamin Recht.
$\newcommand{\T}{\mathsf{T}}$ $\newcommand{\R}{\mathbb{R}}$ $\newcommand{\E}{\mathbb{E}}$ $\newcommand{\X}{\mathcal{X}}$ $\newcommand{\H}{\mathcal{H}}$ $\newcommand{\twonorm}[1]{ \left\| #1 \right\|_{\ell_2} }$ $\newcommand{\fronorm}[1]{ \left\| #1 \right\|_{F} }$ $\newcommand{\norm}[1]{ \left\| #1 \right\| }$ $\newcommand{\ip}[2]{ \left\langle #1, #2 \right\rangle}$ $\newcommand{\abs}[1]{ \left| #1 \right| }$ $\newcommand{\ind}{ \mathbf{1} }$ $\newcommand{\A}{\mathcal{A}}$ $\newcommand{\B}{\mathcal{B}}$ $\DeclareMathOperator*{\argmin}{arg\,min}$ $\newcommand{\dist}{\mathrm{dist}}$ $\newcommand{\Tr}{\mathbf{Tr}}$
Simple Goal: Fix an $n \times n$ (dense) positive definite matrix $A$ and response vector $b \in \R^n$. Our goal is to solve $Ax=b$.
Caveat: we want $n$ to be really big.
Motivating application is kernel ridge regression (KRR).
KRR: Given dataset $\{(x_i, y_i)\}_{i=1}^{n}$ and kernel function $k(x, y)$, the goal is to solve $$ \min_{\alpha \in \R^n} \twonorm{ K\alpha - Y }^2 + \lambda \alpha^\T K \alpha \:. $$
Solution is to solve $(K + \lambda I) \alpha = Y$. For large $n$ (i.e. $n \approx 10^6$), $K$ does not even fit in memory.
If the matrices do not fit in memory, we must turn to iterative methods.
Iterative methods for linear systems is a widely studied area. Classical methods include conjugate-gradient (CG) and Gauss-Seidel (GS).
This talk: A new accelerated variant of randomized GS designed to work with small blocks of data at a time.
Given a current iterate $x_k$ and a random block of coordinates $I \subseteq [n]$, update only the coordinates in $I$ via $$ (x_{k+1})_{I} = (x_k)_{I} - A_{II}^{-1} (A x_k - b)_{I} \:. $$
Equivalently, with sketching matrix $S_k \in \R^{n \times \abs{I}}$, $$ x_{k+1} = x_k - S_k (S_k^\T A S_k)^{-1} S_k^\T (A x_k - b) \:. $$
Question: How should we sample blocks?
We focus on two practical distributions for block GS.
Fixed partition: Choose blocksize $p$, divide $[n]$ into blocks $I_1, ..., I_{n/p}$ ahead of time. During the iterates, randomly choose a block $I_{k_t}$ for $k_t \sim \mathrm{Unif}(\{1, ..., n/p\})$.
Random coordinates: At each iteration, choose uniformly from the set $\{ I \in 2^{[n]} : \abs{I} = p \}$.
Fixed partition is preferable from a systems perspective (better cache locality, can replicate blocks, etc.).
Random coordinates suffers from slower memory reads. So should we just use fixed partitioning?
A simple example where the sampling matters in block GS (similar to Lee and Wright, 16).
Define the $n \times n$ matrix $$ A_{\alpha,\beta} := \alpha I + \frac{\beta}{n} \ind\ind^\T \:. $$
Now, let us try $n=5000, p=500, \alpha=1, \beta=1000$.
To understand what is going on, let us look at the theory of randomized GS.
(Gower and Richtárik, 16). For all $k \geq 0$, $$ \begin{align*} \E\norm{x_k - x_*}_{A} \leq (1 - \mu)^{k/2} D_0 \:, \end{align*} $$
where $\mu := \lambda_{\min}(\E[ P_{A^{1/2} S} ])$.
The $\mu$ quantity varies as the sampling distribution changes.
$$ A_{\alpha,\beta} := \alpha I + \frac{\beta}{n} \ind\ind^\T \:. $$
$$ \begin{align*} \mu_{\mathrm{part}} &= \frac{p}{n+\beta p} \:, \\ \mu_{\mathrm{rand}} &= \mu_{\mathrm{part}} + \frac{p-1}{n-1} \frac{\beta p}{n + \beta p} \:. \end{align*} $$
As $\beta \longrightarrow \infty$, $\mu_{\mathrm{part}} \approx 1/\beta$ whereas $\mu_{\mathrm{rand}} \approx p/n$. Gap is arbitrarily large.
Systems point of view: fixed-partition sampling is preferable. Can cache blocks ahead of time, replicate across nodes, etc. Locality is good for performance!
Optimization point of view: random coordinates is preferable. Each iteration of GS will make more progress. Locality is bad for optimization!
Q1: Does the same sampling phenomenon occur with acceleration?
Q2: Does acceleration provide the $\sqrt{\mu}$ behavior we expect?
Add a Nesterov momentum step to the iterates.
$$ \begin{align*} x_{k+1} &= \frac{1}{1+\tau} y_k + \frac{\tau}{1+\tau} z_k \:, \\ H_k &= S_k(S_k^\T A S_k)^{-1} S_k^\T \:, \\ y_{k+1} &= x_{k+1} - H_k(A x_{k+1} - b) \:, \\ z_{k+1} &= z_k + \tau(x_{k+1} - z_k) - \frac{\tau}{\mu} H_k(A x_{k+1} - b) \:. \end{align*} $$
Parameters $\tau, \mu$ are carefully chosen.
(Nesterov and Stich, 16). For all $k \geq 0$, accelerated block GS with fixed-partition sampling satisfies $$ \E\norm{y_k - x_*}_A \lesssim \left(1 - \sqrt{\frac{p}{n} \mu_{\mathrm{part}}} \right)^{k/2} D_0 \:. $$
Here, $\mu_{\mathrm{part}} = \E[ P_{A^{1/2}} S]$, where $S \in \R^{n \times p}$ represents fixed-partition sampling.
Loses $\sqrt{n/p}$ factor over "ideal" Nesterov rate.
$$ \E\norm{y_k - x_*}_A \lesssim \left(1 - \sqrt{\frac{p}{n} \mu_{\mathrm{part}}} \right)^{k/2} D_0 \:. $$
Question: does the guarantee hold for other sampling schemes, with $\mu_{\mathrm{part}}$ replaced by $\mu = \E[ P_{A^{1/2} S} ]$?
(Main result). For all $k \geq 0$, accelerated block GS with any (non-degenerate) sampling scheme satisfies $$ \E\norm{y_k - x_*}_A \lesssim (1-\tau)^{k/2} D_0 \:. $$
Here, $\tau := \sqrt{ \frac{1}{\nu} \cdot \mu}$, where $\mu$ is as before, and $\nu$ is a new quantity which behavies roughly like $n/p$.
We also prove the rate is sharp-- there exists a starting point which matches the rate up to constants.
For fixed-partition sampling, we can prove that $\nu = n/p$, thus recovering Nesterov and Stich's earlier result (combined with the sharpness of the rate, this proves that the $\sqrt{n/p}$ loss over ideal Nesterov rate is real).
For random coordinate sampling, we can only prove the weaker claim $$ \nu \leq \frac{n}{p} \max_{\abs{J} = p} \frac{\max_{i \in J} A_{ii}}{\lambda_{\min}(A_{JJ})} \:. $$
Empirically, $\nu$ never strays too far from $n/p$, so we leave this as open.
Block sampling distribution is very important for GS (need to trade-off systems performance with optimization performance).
We generalize the theory of block GS to the accelerated case.
Poster session Mon 6:30pm-10:00pm.


EVENT HORIZON (1997)
Directed by Paul Anderson Starring : Lawrence Fishburne Sam Neill Kathleen Quinlan Running Time : 1hr 50mins Rating : ***1/2 out of **** (at your own risk!)
EVENT HORIZON is dreadful horror.
No, it is not a bad film, in fact it is so good in achieving its purpose, I actually wished for the film to end itself quickly. EVENT HORIZON is not your run-of-the-mill sci-fi film, I'm sure many who have watched this will agree with me. It is not even original in that sense, and it does borrow heavily from films like ALIEN, HELLRAISER and even BLADE RUNNER. The magic of this film lies in its unorthodox setting and methodical build-up that makes it wonderfully horrifying.
The story brings us to the year 2050, where space travel have since enormously progressed. The EVENT HORIZON is actually a ship built for a secret experimental purpose; it has the ability to fold time and space thus making it possible for travelling distances not reachable in a man's lifetime. The ship disappeared as soon as it went into operation but after 7 years, it reappeared again within the orbit of Neptune. A search and rescue team led by Miller (Fishburne) is given the task to check for survivors of the EVENT HORIZON. The designer of the ship, Dr. Weir (Neill) follows along to satisfy his curiosity on what actually happened to his otherwise technologically impressive ship.
 While in ALIEN, the crew has to cope with a ferocious creature while encased within tight spaces, in EVENT HORIZON, the forces which goes against the crew is undefined but yet so powerful and horrifying. The story unfolds itself slowly and the suspense buildup is superb, up till the point where I really felt like saying out loud `enough! I can't stand this anymore!'. There are more than enough jolts to send your adrenalin pumping overtime. The story in itself is not exactly something very exciting and also, the acting is only at most, average by most commercial standards. Even so, the essence of horror is carried out very well in this film, thanks to its well-paced storytelling, disturbing set designs and some really gory sequences (which incidentally, has been quite generously removed by our censorship board).
Director Paul Anderson (who did MORTAL KOMBAT) and his team of `atmosphere' creators have done well in keeping EVENT HORIZON within the bounds of the term `horror'. This picture did not do very well in the US box-office most probably for the dread-factor impact it has on most audiences; people will not see it again and not many would recommend their friend to watch this. Although on the face of it, EVENT HORIZON is mostly molded for mass-entertainment; many thrills, spills and suspense to keep audiences in focus. However, the offbeat horror element which it ultimately convey audiences is very disturbing. My friend and I could not say a word to each other for quite a while after going through the `experience' of EVENT HORIZON. I guess it was just the immense feeling of dread which the film had cast upon us.
Be forewarned, this film is not for the faint-hearted nor for pure entertainment. Be prepared to be disturbed if you should decide to watch this film! EVENT HORIZON is highly recommendedÓÓbut at your own risk! It has been a long time since good-horror embraced the big screen, and EVENT HORIZON is one.
Reviewed by Jack Choo<EMAIL_ADDRESS>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


Richard Cyganiak
- Mini bio:
- Semantic Web evangelist. Researcher and engineer at DERI Galway, Ireland. Berlin native.
- Interests:
-
Semantic Web,
Linked Data,
RDF,
data integration,
software development,
Go,
Apple
- Weblog:
- dowhatimean.net
- Email:
-<EMAIL_ADDRESS>- Skype:
- richard.cyganiak
- Phone:
- +353-87-2206327
- IRC nick:
- cygri
- Home address:
-
15 Greenfields Road,
Newcastle,
Galway,
Ireland
(Google
Maps)
- Work address:
-
Office 102,
Digital Enterprise Research
Institute, NUI Galway,
Lower Dangan,
Galway,
Ireland
(Google
Maps)
- IRI:
- http://richard.cyganiak.de/foaf.rdf#cygri
Web properties
Current projects
- Sindice.com
- An experimental search engine for the Web of Data. The
project is lead by Giovanni Tummarello. I joined in late 2007.
- D2RQ and D2R Server
- An open-source project aimed at making relational databases
part of the Web of Data. Originally founded by Chris Bizer. I have maintained
D2RQ and D2R Server since 2005.
- Neologism
- An open-source publishing platform for RDFS vocabularies. Currently
in Alpha stage. I founded this project in 2008.
- DBpedia
- Extracting structured RDF information from Wikipedia. A large community
project involving several universities and companies. I have contributed to the original extraction framework
and have developed and maintained DBpedia's HTML frontend during much of 2007 and 2008.
- Linking Open
Data
- A community effort to convert existing sources of open data to
RDF an make them part of the Semantic Web. I'm a co-founder of the project, together with Chris Bizer. My main contribution is in helping to establish best practices
for publishing RDF on the Web, and maintaining the LOD dataset
cloud diagram.
- Semantic Sitemaps
- A proposed standard for improving RDF discovery,
originally designed by Giovanni Tummarello.
- voiD
- A work-in-progress RDFS vocabulary for describing the contents of RDF
datasets.
- Pubby
- A Linked Data server that exposes RDF data from SPARQL endpoints.
Originally developed for DBpedia.
- Disco
- A simple RDF browser. Developed together with Tobias Gauß.
- Miscellaneous
-
Past projects
- StatCVS/StatSVN
- StatCVS generates colorful reports from CVS repository logs. I
maintained the open-source project from 2002 to 2008. A port to Subversion, called StatSVN, was created by Jason
Kealey and Benoit Xhenseval. They took over maintenance of StatCVS in 2008.
- NG4J
- NG4J provided support for Named Graphs long before this feature became standard in all RDF
stores. The project was initiated by Chris Bizer, and I maintained it throughout most of its lifetime.
- WIQA
- A policy framework for Web Information Quality Assurance, part
of Chris Bizer's doctoral thesis. I did parts of the implementation.
- Old stuff
- Some very old projects. Page in German.
Publications
I occasionally blog at dowhatimean.net.
There is a list of my very old publications (page in German). Once
upon a time, I did some blogging in German here.
Tutorials and HOWTOs
-
How to Publish Linked Data on the Web
(Video, ISWC 2008)
-
Tom Heath, Michael Hausenblas, Christian Bizer, Richard Cyganiak, Olaf Hartig.
Tutorial at ISWC 2008, Karlsruhe.
Published at videolectures.net.
-
How to Publish Linked Data on the Web
-
Christian Bizer, Richard Cyganiak, Tom Heath.
Tutorial, 2007.
-
Cool IRIs for the Semantic Web
-
Leo Sauermann, Richard Cyganiak, Danny Ayers, Max Völkel.
W3C Interest Group Note, 2008.
-
Debugging Semantic Web sites with cURL
-
Tutorial, 2007.
Peer-reviewed
-
Quality-Driven Information Filtering Using the WIQA Policy Framework
(JWS, 2008)
-
Christian Bizer,
Richard Cyganiak,
Quality-Driven
Information Filtering Using the WIQA Policy Framework (Article in Press).
Journal of Web Semantics: Science, Services and Agents on the World Wide Web,
2008.
-
Neologism – Easy Vocabulary Publishing
(SFSW2008)
-
Cosmin Basca,
Stéphane Corlosquet,
Richard Cyganiak,
Sergio Fernández,
Thomas Schandl:
Neologism – Easy Vocabulary Publishing.
4th Workshop on Scripting for the Semantic Web, Tenerife, Spain,
June 2008.
(PDF)
-
Semantic Sitemaps – Efficient and Flexible Access to Datasets on the Semantic Web
(ESWC2008)
-
Richard Cyganiak,
Holger Stenzhorn,
Renaud Delbru,
Stefan Decker,
Giovanni Tummarello:
Semantic Sitemaps – Efficient and Flexible Access to Datasets on the Semantic Web.
5th European Semantic Web Conference, Tenerife, Spain,
June 2008.
(PDF)
-
Browsing Linked Data with Fenfire
(Demo at LDOW2008)
-
Tuukka Hastrup,
Richard Cyganiak,
Uldis Bojārs:
Browsing Linked Data with Fenﬁre (Demo).
Workshop on Linked Data on the Web (LDOW2008), Beijing, China,
April 2008.
(PDF)
-
Weaving SIOC into the Web of Linked Data
(LDOW2008)
-
Uldis Bojārs,
Alexandre Passant,
Richard Cyganiak,
John Breslin:
Weaving SIOC into the Web of Linked Data.
Workshop on Linked Data on the Web (LDOW2008), Beijing, China,
April 2008.
(PDF)
-
Sindice.com – A Document-oriented Lookup Index for Open Linked Data
(IJMSO, 2008)
-
Eyal Oren,
Renaud Delbru,
Michele Catasta,
Richard Cyganiak,
Holger Stenzhorn,
Giovanni Tummarello:
Sindice.com – A Document-oriented Lookup Index for Open Linked Data.
International Journal of Metadata, Semantics and Ontologies, 3 (1),
2008.
(PDF)
2007
-
DBpedia – A Nucleus for a Web of Open Data
(ISWC2007)
-
Sören Auer,
Christian Bizer,
Georgi Kobilarov,
Jens Lehmann,
Richard Cyganiak,
Zachary Ives:
DBpedia – A Nucleus for a Web of Open Data.
6th International Semantic Web Conference (ISWC 2007), Busan, Korea,
November 2007.
(PDF)
-
D2RQ – Lessons Learned
(W3C RdfRDB 2007)
-
Chrisitan Bizer,
Richard Cyganiak:
D2RQ –
Lessons Learned.
W3C Workshop on RDF Access to Relational Databases, Boston, USA,
October 2007
-
DBpedia – A Nucleus for a Web of Open Data
(Poster at CSSW2007)
-
Christian Bizer,
Richard Cyganiak:
DBpedia – A Nucleus for a Web of Open Data (Poster).
SABRE Conference on Social Semantic Web (CSSW 2007), Leipzig, Germany,
September 2007.
(Poster)
-
RDF Book Mashup – From Web APIs to a Web of Data
(SFSW2007)
-
Christian Bizer,
Richard Cyganiak,
Tobias Gauß:
The RDF Book Mashup – From Web APIs to a Web of Data.
3rd Workshop on Scripting for the Semantic Web (SFSW2007), Innsbruck, Austria,
June 2007
(PDF)
-
DBpedia – Querying Wikipedia like a Database
(Dev Track at WWW2007)
-
Christian Bizer,
Sören Auer,
Richard Cyganiak,
Georgi Kobilarov:
DBpedia – Querying Wikipedia like a Database.
16th International World Wide Web Conference (WWW2007), Banff, Canada,
May 2007.
2006
-
D2R Server – A Semantic Web Front-end to Existing Relational Databases
(Poster at BXMLT2006)
-
Richard Cyganiak,
Christian Bizer:
D2R Server – A Semantic Web Front-end to Existing Relational Databases (Poster).
Berliner XML Tage, Berlin, Germany,
September 2006.
(PDF)
(Poster)
-
DODA 0.1 – An Ontology for Lightweight Integration of Semantic Data Access Technologies
(SIIK2006)
-
Giovanni Tummarello,
Christian Morbidoni,
Michele Nucci,
Richard Cyganiak:
DODA 0.1 – An Ontology for Lightweight Integration of Semantic Data Access Technologies.
1st International Workshop on Semantic Information Integration on Knowledge Discovery (SIIK 2006), Yogyakarta, Indonesia,
December 2006.
(PDF)
-
The DODA Ontology – Lightweight Integration of Semantic Data Access Technologies
(SWAP2006)
-
Christian Morbidoni,
Giovanni Tummarello,
Michele Nucci,
Richard Cyganiak:
The DODA Ontology – Lightweight Integration of Semantic Data Access Technologies.
3rd Italian Semantic Web Workshop (SWAP 2006), Pisa, Italy,
December 2006.
(PDF)
-
D2R Server – Publishing Releational Databases on the Semantic Web
(Poster at ISWC2006)
-
Christian Bizer,
Richard Cyganiak:
D2R Server – Publishing Releational Databases on the Semantic Web (Poster).
5th International Semantic Web Conference, Athens, USA,
November 2006.
(PDF)
(Poster)
-
D2R Server – Publishing Relational Databases on the Web as SPARQL Endpoints
(Dev Track at WWW2006)
-
Richard Cyganiak,
Christian Bizer:
D2R Server – Publishing Relational Databases on the Web as SPARQL Endpoints.
15th International World Wide Web Conference (WWW2006), Edinburgh, Scotland,
May 2006.
2005
-
The TriQL.P Browser – Filtering Information using Context-, Content- and Rating-Based Trust Policies
(SWPW2005)
-
Christian Bizer,
Richard Cyganiak,
Tobias Gauß,
and Oliver Maresch:
The TriQL.P Browser – Filtering Information using Context-, Content- and Rating-Based Trust Policies.
Semantic Web and Policy Workshop at the 4th International Semantic Web Conference, Galway, Ireland,
November 2005.
(PDF)
- NG4J – Named Graphs API for Jena
(Poster, ESWC2005)
-
Christian Bizer,
Richard Cyganiak,
Rowland Watkins:
NG4J – Named Graphs API for Jena (Poster).
2nd European Semantic Web Conference (ESWC 2005), Heraklion, Greece,
May 2005.
(PDF)
(Poster)
Talks and slides
@@@ Some day I will upload all my presentations to SlideShare. For now, just some notes.
- See publication list above
- Linked Data in 7 Easy Steps, Tutorial, ISWC2008
- Using the Web of Data, WOD-PD 2008
- There's more than US-ASCII, lightning talk at ESWC2008
- Sindice.com, lightning talk at LOD Gathering, ESWC2008
- Sindice.com, Linked Data Planet, 2008
- Web of Data, XTech 2008
- Linking Open Data, New York Semantic Web Meetup, 2008
- D2RQ, W3C RDF2RDB XG, 2008
- Semantics and Complexity of SPARQL, DERI Reading Group, 2007
- D2R Server, JUC 2006
- D2RQ, HP Labs, 2005
Posters
All of these are made with OmniGraffle. On some, I
have contributed not as an author but only by creating the poster itself.
Event organizer
PC memberships
Data


App Functions¶
These are the functions you can be able to use that are made accessible through the AppServer
instance.:
let zesty = Java.type('com.practicaldime.zesty.app.AppProvider');
let Date = Java.type('java.util.Date');
let DateFormat = Java.type('java.text.SimpleDateFormat');
function now() {
return new DateFormat("hh:mm:ss a").format(new Date());
}
//create AppServer instance
let app = zesty.provide({
appctx: "/app",
assets: "",
engine: "freemarker"
});
status() : String¶
Return a value hinting at the health of the application:
res.send(app.status().concat(" @ ").concat(now());
appctx(path: String) : void¶
Define the application’s context path
through which
requests should be routed. This value is held in the locals
object.
assets(path: String) : void¶
Define the directory, relative to the application’s root directory, where static resources
will be located. This value is held in the
locals
object.
engine(String view) : void¶
Define the application’s view rendering engine
- valid
values are currently either freemarker or jtwig. This value is
held in the locals
object.
resolve(path: String) : String¶
Sanitizes the path value relative the appctx
to eliminate ambiguity when dealing with relativity of url paths.:
res.redirect(app.resolve("/upload"));
locals() : Set<String>¶
Return the keys contained in the locals
object
locals(param: String) : Object¶
Return a value from the locals
object using the given key
cors(params: Map) : AppServer¶
Enable and provide request headers to configure cors for the application. If
an empty or null map is provided, the application will use default values
to configure the cors filter, which are generously open. You can equally
turn cors on/off through passing a cors true/false attribute to
the
locals
map.
router() : AppServer¶
Create the AppRoutes
object and return the current instance on AppServer
to allow method chaining.
router(supplier: Supplier) : AppServer¶
This method matches router()
, except that is allows you to provide your
own implementation of the Router
interface.
This allows you to try out different algorithms for matching request handlers to the
respective requests.
filter(filter: HandlerFilter) : AppServer¶
Apply a filter at the front of the request processing pipeline where the outcome would either allow the request to proceed or send a response instead. This filter is applied to all incoming requests
filter(context: String, filter: HandlerFilter) : AppServer¶
Similar to filter(filter:
HandlerFilter)
but this filter is only applied for
requests on the specified context
route(method: String, path: String, handler: HandlerServlet) : AppServer¶
Add a route to handle requests that match the specified path and method. This API is targeted for Java users.
route(method: String, path: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Similar to the route(method:
String, path: String,
handler: HandlerServlet)
.
However, this function allows you to
dynamically configure the handler before it is added to the server. This is done
through the HandlerConfig
interface.
A Java example is shown below.:
get("/async/{value}", (holder)->holder.getRegistration().setAsyncSupported(true), new HandlerServlet() {
@Override
public void handle(HandlerRequest request, HandlerResponse response) {
//code goes here
}
})
In this example, we configure the handler to use servlet 3.0’s AsyncContext
object to process the request by setting
setAsyncSupported
to true. This is how we
leverage the AsyncContext
because the default value is false.
head(path: String, handler: HandlerServlet) : AppServer¶
Configures a route to handle a head requests on the path url.
head(path: String, handler: BiFunction) : AppServer¶
Configures a route to handle a head requests on the path url. This
function is exactly like head(path, handler: HandlerServlet)
and is more favorable for use with Javascript instead of Java.
head(path: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Configure a route to handle a head requests on the path url. This
function also uses the HandlerConfig
config object
to further customize the handler before it is added to the server. With the config.getRegistration()
object, the handler
can be further customized with servlet specific properties to adapt to different
requirements.
head(path: String, config: HandlerConfig, handler: BiFunction) : AppServer¶
Configure a route to handle a head requests on the path url. This
function is exactly like head(path, config, handler: HandlerServlet)
and is more favorable for use with Javascript instead of Java.
head(path: String, accept: String, type: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Configure a route to handle a head requests on the path url, with a
content-type of header of type value and accept header of
accept value. This function is exactly like head(path, config, handler: HandlerServlet)
with the added parameters. All the other
functions in the head(...)
family eventually delegate to this function, which add the handler to the server.
trace(path: String, handler: HandlerServlet) : AppServer¶
Configures a route to handle a trace requests on the path url.
trace(path: String, handler: BiFunction) : AppServer¶
Configures a route to handle a trace requests on the path url. This
function is exactly like trace(path, handler: HandlerServlet)
and is more favorable for use with Javascript instead of Java.
trace(path: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Configure a route to handle a trace requests on the path url. This
function also uses the HandlerConfig
config object
to further customize the handler before it is added to the server. With the config.getRegistration()
object, the handler
can be further customized with servlet specific properties to adapt to different
requirements.
trace(path: String, config: HandlerConfig, handler: BiFunction) : AppServer¶
Configure a route to handle a trace requests on the path url. This
function is exactly like trace(path, config, handler: HandlerServlet)
and is more favorable for use with Javascript instead of Java.
trace(path: String, accept: String, type: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Configure a route to handle a trace requests on the path url, with
a content-type of header of type value and accept header
of
accept value. This function is exactly like trace(path, config, handler: HandlerServlet)
with the added parameters. All the other
functions in the trace(...)
family eventually delegate to this function, which add the handler to the server.
options(path: String, handler: HandlerServlet) : AppServer¶
Configures a route to handle a options requests on the path url.
options(path: String, handler: BiFunction) : AppServer¶
Configures a route to handle a options requests on the path url.
This function is exactly like options(path, handler: HandlerServlet)
and is more favorable for use with Javascript instead of Java.
options(path: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Configure a route to handle a options requests on the path url.
This function also uses the HandlerConfig
config object
to further customize the handler before it is added to the server. With the config.getRegistration()
object, the handler
can be further customized with servlet specific properties to adapt to different
requirements.
options(path: String, config: HandlerConfig, handler: BiFunction) : AppServer¶
Configure a route to handle a options requests on the path url.
This function is exactly like options(path, config, handler: HandlerServlet)
and is more favorable for use with Javascript instead of Java.
options(path: String, accept: String, type: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Configure a route to handle a options requests on the path url,
with a content-type of header of type value and accept
header of
accept value. This function is exactly like options(path, config, handler: HandlerServlet)
with the added parameters. All the other
functions in the options(...)
family eventually delegate to this function, which add the handler to the server.
get(path: String, handler: HandlerServlet) : AppServer¶
Configures a route to handle a get requests on the path url.
get(path: String, handler: BiFunction) : AppServer¶
Configures a route to handle a get requests on the path url. This
function is exactly like get(path, handler: HandlerServlet)
and is more favorable for use with Javascript instead of Java.
get(path: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Configure a route to handle a get requests on the path url. This
function also uses the HandlerConfig
config object
to further customize the handler before it is added to the server. With the config.getRegistration()
object, the handler
can be further customized with servlet specific properties to adapt to different
requirements.
get(path: String, config: HandlerConfig, handler: BiFunction) : AppServer¶
Configure a route to handle a get requests on the path url. This
function is exactly like get(path, config, handler: HandlerServlet)
and is more favorable for use with Javascript instead of Java.
get(path: String, accept: String, type: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Configure a route to handle a get requests on the path url, with a
content-type of header of type value and accept header of
accept value. This function is exactly like get(path,
config, handler: HandlerServlet)
with the added parameters. All
the other
functions in the get(...)
family eventually delegate to this function, which add the handler to the server.
post(path: String, handler: HandlerServlet) : AppServer¶
Configures a route to handle a post requests on the path url.
post(path: String, handler: BiFunction) : AppServer¶
Configures a route to handle a post requests on the path url. This
function is exactly like post(path, handler: HandlerServlet)
and is more favorable for use with Javascript instead of Java.
post(path: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Configure a route to handle a post requests on the path url. This
function also uses the HandlerConfig
config object
to further customize the handler before it is added to the server. With the config.getRegistration()
object, the handler
can be further customized with servlet specific properties to adapt to different
requirements.
post(path: String, config: HandlerConfig, handler: BiFunction) : AppServer¶
Configure a route to handle a post requests on the path url. This
function is exactly like post(path, config, handler: HandlerServlet)
and is more favorable for use with Javascript instead of Java.
post(path: String, accept: String, type: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Configure a route to handle a post requests on the path url, with a
content-type of header of type value and accept header of
accept value. This function is exactly like post(path, config, handler: HandlerServlet)
with the added parameters. All the other
functions in the post(...)
family eventually delegate to this function, which add the handler to the server.
put(path: String, handler: HandlerServlet) : AppServer¶
Configures a route to handle a put requests on the path url.
put(path: String, handler: BiFunction) : AppServer¶
Configures a route to handle a put requests on the path url. This
function is exactly like put(path, handler: HandlerServlet)
and is more favorable for use with Javascript instead of Java.
put(path: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Configure a route to handle a put requests on the path url. This
function also uses the HandlerConfig
config object
to further customize the handler before it is added to the server. With the config.getRegistration()
object, the handler
can be further customized with servlet specific properties to adapt to different
requirements.
put(path: String, config: HandlerConfig, handler: BiFunction) : AppServer¶
Configure a route to handle a put requests on the path url. This
function is exactly like put(path, config, handler: HandlerServlet)
and is more favorable for use with Javascript instead of Java.
put(path: String, accept: String, type: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Configure a route to handle a put requests on the path url, with a
content-type of header of type value and accept header of
accept value. This function is exactly like put(path,
config, handler: HandlerServlet)
with the added parameters. All
the other
functions in the put(...)
family eventually delegate to this function, which add the handler to the server.
delete(path: String, handler: HandlerServlet) : AppServer¶
Configures a route to handle a delete requests on the path url.
delete(path: String, handler: BiFunction) : AppServer¶
Configures a route to handle a delete requests on the path url.
This function is exactly like delete(path, handler: HandlerServlet)
and is more favorable for use with Javascript instead of Java.
delete(path: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Configure a route to handle a delete requests on the path url. This
function also uses the HandlerConfig
config object
to further customize the handler before it is added to the server. With the config.getRegistration()
object, the handler
can be further customized with servlet specific properties to adapt to different
requirements.
delete(path: String, config: HandlerConfig, handler: BiFunction) : AppServer¶
Configure a route to handle a delete requests on the path url. This
function is exactly like delete(path, config, handler: HandlerServlet)
and is more favorable for use with Javascript instead of Java.
delete(path: String, accept: String, type: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Configure a route to handle a delete requests on the path url, with
a content-type of header of type value and accept header
of
accept value. This function is exactly like delete(path, config, handler: HandlerServlet)
with the added parameters. All the other
functions in the delete(...)
family eventually delegate to this function, which add the handler to the server.
all(path: String, handler: HandlerServlet) : AppServer¶
Configures a route to handle requests of any method on the path url.
all(path: String, handler: BiFunction) : AppServer¶
Configures a route to handle requests of any method on the path
url. This function is exactly like all(path,
handler: HandlerServlet)
and is more favorable for use with Javascript instead of Java.
all(path: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Configure a route to handle requests of any method on the path url.
This function also uses the HandlerConfig
config object
to further customize the handler before it is added to the server. With the config.getRegistration()
object, the handler
can be further customized with servlet specific properties to adapt to different
requirements.
all(path: String, config: HandlerConfig, handler: BiFunction) : AppServer¶
Configure a route to handle requests of any method on the path url.
This function is exactly like all(path, config, handler: HandlerServlet)
and is more favorable for use with Javascript instead of Java.
all(path: String, accept: String, type: String, config: HandlerConfig, handler: HandlerServlet) : AppServer¶
Configure a route to handle requests of any method on the path url,
with a content-type of header of type value and accept
header of
accept value. This function is exactly like all(path,
config, handler: HandlerServlet)
with the added parameters. All
the other
functions in the all(...)
family eventually delegate to this function, which add the handler to the server.
websocket(ctx: String, provider: AppWsProvider) : AppServer¶
Configure a websocket handler for the application. This will handle websocket
requests on the ctx
context path. The AppWsProvider
object
should provide a prepared instance of WebSocketAdapter
. You can use AppWebSocket
which is the the default
implementation provided by the framework.
wordpress(home: String, fcgi_proxy: String) : AppServer¶
Configure an FCGI
handler to use with any application that speaks
fcgi like Wordpress
.
listen(port: int, host: String) : void¶
Fire up the server and start listening for requests on the specified host and on the specified port.
listen(port: int, host: String, result: Consumer) : void¶
This is similar to listen(port:
int, host: String)
except that is also accepts a consumer which gets invoked when the start up is
completed.
lifecycle(event: String, callback: Consumer) : AppServer¶
Add a lifecycle listener which gets invoked when the corresponding lifecycle even happens. The lifecycle events that will trigger the listener are:
- starting - happens when the server begins to get instantiated
- started - happens when the server is started successfully
- stopping - happens when the server begins to shut down
- stopped - happens when the server has stopped running
- failed - happens when the server is unable to start successfully


Inherited from BaseUdpSocket. Specific socket for interact with collision
More...
|
| delegate void | Callback (float x, float y) |
| |
| void | RayHitPositionReceived (float x, float y, float z) |
| | Method to set as callback to the collision application for receive th result of requested ray hit test More...
|
| |
| | BaseUdpSocket () |
| | Constructor that create the UDP socket make it ready to receive More...
|
| |
| bool | IsConnected () |
| | Indicate if socket is connected to a distant host. More...
|
| |
| void | Send (string s) |
| | Send a message to host. More...
|
| |
| void | Send (byte b) |
| | Send a message to host. More...
|
| |
| void | Send (byte[] b, int start, int len) |
| | Send a message to host. More...
|
| |
| void | Send (byte[] b) |
| | Send a message to host. The byte array is fully sended. More...
|
| |
| async Task | SendAsync (byte[] sequence, int start, int size) |
| | Send a message to host using asynchronous method. More...
|
| |
| async Task | SendAsync (byte[] sequence) |
| | Send a message to host using asynchronous method. The byte array is fully sended. More...
|
| |
| async Task< bool > | Connect (string host, string port) |
| | Try to connect a distant host. Awaitable. More...
|
| |
| async Task | AwaitDisconnection () |
| | Awaitable method that indicate when socket is disconnected. More...
|
| |
| bool | Close () |
| | Close the connection to distant host. Indicate if the operation works by returning boolean. It work as well if the socket is not connected (and return true). More...
|
| |
|
| override void | ReadMessage (DatagramSocketMessageReceivedEventArgs args) |
| | Overrided method that read message as a string. More...
|
| |
| override void | Reply () |
| | Overrided method that specify action to do after receiving a message. Split the message in order to get the list of received command. More...
|
| |
|
| int | _nb_reply |
| | number of reply to send coresponding to the number of requested ray hit test More...
|
| |
Inherited from BaseUdpSocket. Specific socket for interact with collision
◆ Callback()
| delegate void UdpSockets.RayCollisionUdpSocket.Callback |
( |
float |
x, |
|
|
float |
y |
|
) |
| |
◆ RayHitPositionReceived()
| void UdpSockets.RayCollisionUdpSocket.RayHitPositionReceived |
( |
float |
x, |
|
|
float |
y, |
|
|
float |
z |
|
) |
| |
|
inline |
Method to set as callback to the collision application for receive th result of requested ray hit test
- Parameters
-
| x | x world position (meters) |
| y | y world position (meters) |
| z | z world position (meters) |
◆ ReadMessage()
| override void UdpSockets.RayCollisionUdpSocket.ReadMessage |
( |
DatagramSocketMessageReceivedEventArgs |
args | ) |
|
|
inlineprotectedvirtual |
◆ Reply()
| override void UdpSockets.RayCollisionUdpSocket.Reply |
( |
| ) |
|
|
inlineprotectedvirtual |
Overrided method that specify action to do after receiving a message. Split the message in order to get the list of received command.
Reimplemented from UdpSockets.BaseUdpSocket.
◆ _message
| string UdpSockets.RayCollisionUdpSocket._message |
|
protected |
◆ _nb_reply
| int UdpSockets.RayCollisionUdpSocket._nb_reply |
|
private |
number of reply to send coresponding to the number of requested ray hit test
◆ _reply
| string UdpSockets.RayCollisionUdpSocket._reply |
|
protected |
◆ DepthTestFunction
| Callback UdpSockets.RayCollisionUdpSocket.DepthTestFunction |
The documentation for this class was generated from the following file:


Class ModelChangeRecorder
Represents a recorder for changes to a model.
Inheritance
object
ModelChangeRecorder
Inherited Members
object.Equals(object)
object.Equals(object, object)
object.GetHashCode()
object.GetType()
object.MemberwiseClone()
object.ReferenceEquals(object, object)
object.ToString()
Namespace: NMF.Models.Changes
Assembly: NMF.Models.dll
Syntax
public class ModelChangeRecorder
Constructors
| Improve this Doc View SourceModelChangeRecorder()
Declaration
public ModelChangeRecorder()
ModelChangeRecorder(bool)
Declaration
public ModelChangeRecorder(bool isInvertible)
Parameters
| Type | Name | Description |
|---|---|---|
| bool | isInvertible |
Properties
| Improve this Doc View SourceAttachedElement
Gets the attached model element or null, if the recorder is not attached.
Declaration
public IModelElement AttachedElement { get; }
Property Value
| Type | Description |
|---|---|
| IModelElement |
IsRecording
Checks whether the recorder is attached to a model element.
Declaration
public bool IsRecording { get; }
Property Value
| Type | Description |
|---|---|
| bool |
Methods
| Improve this Doc View SourceGetModelChanges()
Returns previously recorded changes in a tree hierarchy.
Declaration
public ModelChangeSet GetModelChanges()
Returns
| Type | Description |
|---|---|
| ModelChangeSet |
GetModelChangesAsync()
Declaration
public Task<ModelChangeSet> GetModelChangesAsync()
Returns
| Type | Description |
|---|---|
| System.Threading.Tasks.Task<TResult><ModelChangeSet> |
Start(IModelElement)
Attaches the recorder to the given model element. The recorder will track all changes made to the given element and every element further down in the containment hierarchy.
Declaration
public void Start(IModelElement element)
Parameters
| Type | Name | Description |
|---|---|---|
| IModelElement | element |
Stop()
Detaches the recorder, stopping the change tracking.
Declaration
public void Stop()


Microsoft's Hololens is one of the most recent strides commerciall augmmented reality technology. Unlike its predecessor, the Google Glass, Hololens uses translucent OLED display to project information onto the user's surroundings. When combined with the 120 degree field-of-view camera array mounted on the front of the glasses, the headset is able to display 3 dimensional images that seem attached to real world objects.
Tango is an new initiative by Google to bring auugmented reality to the smartphone front. By working with smartphone manufacturers to embed more sensors in upcoming phones, Google is createing an ecosystem ripe for augmented reality applications. Sitting on top of those sensors is a collection of SDK (SOftware Development Kits) that allow developers readieer access to the new hardware.
In development since 2013, the Meta company's space glasses promise radical improvements to existing headsets. The glasses are built with a reflective surface that widens their field of view, potentially solving one of the industry's biggest concerns. Having launched its first developer kit in 2014, Meta is currently working on the second generation of the revolutionary product.


Andreas Falk / @andifalk
Slides: https://andifalk.github.io/secure-oauth2-oidc-workshop
Source-Code: https://github.com/andifalk/secure-oauth2-oidc-workshop.git
Novatec Consulting GmbH
https://www.novatec-gmbh.de
<EMAIL_ADDRESS>/ @andifalk
RFC 6749: The OAuth 2.0 Authorization Framework
RFC 6750: OAuth 2.0 Bearer Token Usage
RFC 6819: OAuth 2.0 Threat Model and Security Considerations
OAuth 2.0 is an authorization delegation framework
| Client Type | Flow | Refresh Tokens |
|---|---|---|
| Confidential | Authorization Code | X |
| Public (Native) | Authorization Code (PKCE) | X |
| Public (SPA) | Implicit | -- |
| Trusted | RO Password Creds | X |
| No Resource Owner | Client Credentials | -- |
in action as part of Intro Lab
| Client Type | Flow | Refresh Tokens |
|---|---|---|
| Confidential | Authorization Code (PKCE) | X |
| Public (Native) | Authorization Code (PKCE) | X |
| Public (SPA) | Authorization Code (PKCE) | -- |
| Trusted | RO Password Creds | X |
| No Resource Owner | Client Credentials | -- |
(“Pixy”)
Mitigates authorization code attacks
Mitigates token leakage in SPAs
GET https://authserver.example.com/authorize
?response_type=code
&client_id=abcdefg
&redirect_uri=https://client.abc.com/callback
&scope=api.read api.write
&state=xyz
&code_challenge=xyz...
&code_challenge_method=S256
POST https://authserver.example.com/token
Content-Type:
application/x-www-form-urlencoded
grant_type=authorization_code&code=ab23bhW56Xb
&redirect_uri=https://client.abc.com/callback
&client_id=123&client_secret=456
&code_verifier=4gth4jn78k_8
Required claims: iss, exp, aud, sub, client_id
Consider privacy restrictions for identity claims
Authorization claims according to SCIM Core (RFC7643):
System for Cross-domain Identity Management (SCIM)
JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens
OpenID Connect Core 1.0
OpenID Connect Dynamic Client Registration 1.0
OpenID Connect Discovery 1.0
ID Token (JWT format)
User Info Endpoint
OpenID Provider Configuration Information
Base 64 Encoded JSON Formatted Value of...
...Header
...Payload
...Signature
GET / HTTP/1.1
Host: localhost:8080
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1N...
Header
{
typ: "JWT",
alg: "RS256"
}
Payload
{
iss: "https://identity.example.com",
aud: "my-client-id",
exp:<PHONE_NUMBER>,
nonce: "N0.46824857243233511495739124749",
iat:<PHONE_NUMBER>,
at_hash: "hC1NDSB8WZ9SnjXTid175A",
sub: "mysubject",
auth_time:<PHONE_NUMBER>,
email<EMAIL_ADDRESS>}
| Scope | Required | Description |
|---|---|---|
| iss | X | Issuer Identifier |
| sub | X | Subject Identifier |
| aud | X | Audience(s) of this ID Token |
| exp | X | Expiration time |
| iat | X | Time at which the JWT was issued |
| auth_time | (X) | Time of End-User authentication |
| nonce | -- | Associate a client with an ID Token |
GET /userinfo HTTP/1.1
Host: identityserver.example.com
Authorization: Bearer SlAV32hkKG
HTTP/1.1 200 OK
Content-Type: application/json
{
"sub": "248289761001",
"name": "Jane Doe",
"given_name": "Jane",
"family_name": "Doe",
"preferred_username": "j.doe",
"email"<EMAIL_ADDRESS>"picture": "http://example.com/janedoe/me.jpg"
}
https://example.com/.well-known/openid-configuration
{
"authorization_endpoint": "https://idp.example.com/auth",
"grant_types_supported": [
"authorization_code",
"implicit",
"refresh_token"
],
"issuer": "https://idp.example.com",
"jwks_uri": "https://idp.example.com/keys",
"token_endpoint": "https://idp.example.com/token",
"userinfo_endpoint": "https://idp.example.com/userinfo",
...
}
Start keycloak on Linux/Mac OS
[keycloak_install_dir]/bin/standalone.sh
or on Windows
[keycloak_install_dir]\bin\standalone.bat
See intro-labs/auth-code-demo for instructions
Please follow lab tutorials in GitHub Repo
Spring Security 5.2.0 M2 GitHub Issues
Spring Security 5.2.0 M3 GitHub Issues
Spring Security 5.2.0 RC1 GitHub Issues
Spring Security 5.2.0 GitHub Issues
Opaque Tokens
class ResSrvConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http)
throws Exception {
http.oauth2ResourceServer()
.opaqueToken()
.introspectionUri(this.introspectionUri)
.introspectionClientCredentials(
this.clientId, this.clientSecret);
}
}
https://github.com/spring-projects/spring-security/issues/5200
class ResSrvConfig extends WebSecurityConfigurerAdapter {
@Override protected void configure(HttpSecurity http) {
http.oauth2ResourceServer()
.authenticationManagerResolver(
multitenantAuthenticationManager());
}
@Bean AuthenticationManagerResolver<HttpServletRequest>
multiTenantAuthMgr() {...}
AuthenticationManager jwt() {...}
AuthenticationManager opaque() {...}
}
https://github.com/spring-projects/spring-security/issues/5351
class ResSrvConfig extends WebSecurityConfigurerAdapter {
@Value("${spring.security.oauth2.resourceserver.
jwt.key-value}") RSAPublicKey key;
@Override protected void configure(HttpSecurity http) {
http.oauth2ResourceServer().jwt().decoder(jwtDecoder());
}
@Bean JwtDecoder jwtDecoder() throws Exception {
return NimbusJwtDecoder.
withPublicKey(this.key).build();
}
}
https://github.com/spring-projects/spring-security/issues/5465
public class OAuth2ResourceServerTest {
@Test
public void testRequestPostProcessor() {
mockMvc.perform(get("/message")
.with(mockAccessToken().scope("message:read")))
.andExpect(status().isOk())
mockMvc.perform(get("/")
.with(jwt().claim(SUB, "the-subject")))
.andExpect(status().isOk())
}
}
https://github.com/spring-projects/spring-security/issues/6634
Support OAuth 2.0 Authorization Server:
<EMAIL_ADDRESS>Twitter: @andifalk
All images used are from Pixabay and are published under Creative Commons CC0 license.
All used logos are trademarks of respective companies


Market Analysis
Target Platform
Description:
Target Market
Description:
Target ESRB Rating
Description:
Target Genre
Description:
Top Performers
Description:
Feature Comparison
Description:
Legal Analysis
Description:
Description:
Description:
Description:
Description:
Description:
Description:
Description:


Choose a sci-fi genre from the menu below and learn a lot of interesting stuff!
Explore exotic genres
Read without opening Wikipedia
Learn something completely new


Showcase Projects
High Throughput Optical Communication System
Since high data rates are necessary in optical communication systems, M-ary amplitude shift keying (ASK) has been developed to improve the spectral efficiency.
Low Noise Amplifier with Air-suspended RF MEMS Inductors
This work presents the development of a CMOS Ultra-wideband differential Low Noise Amplifier with air-suspended MEMS inductors substituting standard planar spiral inductors.
Ultra-Wideband Wireless Communication ICs
In current wireless communication applications, high data rate, low power, and low cost are desirable because of the surging demand for enhanced performance, battery-life, and cost efficiency of the electronic devices
Glucose Sensing Readout Circuit
In amperometric glucose sensors, electrical current is generated as a result of chemical reaction between glucose molecules and sensor electrodes, and this current is then measured by the readout circuit.
In Situ Sensing System for Bilogical Toxin in HABs
The increasing occurrence of harmful algal blooms (HABs) in water resources worldwide is alarming the environmental and health authorities because of their potential to release lethal biological toxins, in particular, microcystins (MCs) produced from cyanobacterial HABs.


Audio Rule 2: object
elements must have equivalent
Test 1: object
element that may or may not have captions or a text transcript
Test 2: object
element that may or may not have captions or a text transcript
Test 3: object
element with a non-audio mime type
Test 4: object
element using @aria-describedby@ to reference a text transcription
Testing Testing one two three


@* * Copyright 2010-2013 Artima, Inc. * * 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. *@ @(selectedStyle: examples.StyleTraitExamples) @import controllers.Application.milestoneScaladoc
be
import org.scalatest.Matchers._ Set(1, 2, 3) should be ('traversableAgain)
traversableAgain
or isTraversableAgain
dynamically (For the details on how a field or method is dynamically selected, see the documentation for BeWord
.)import org.scalatest.Matchers._ import java.io.File val temp = new File("aFile.txt") temp should be a ('file)
import org.scalatest.Matchers._ import java.awt._ import event.KeyEvent val canvas = new Canvas val keyEvent = new KeyEvent(canvas, 0, 0, 0, 0, '0') keyEvent should be an ('actionKey)
import org.scalatest._ import Matchers._ import matchers._ import java.io.File class FileBePropertyMatcher extends BePropertyMatcher[java.io.File] { def apply(left: File) = BePropertyMatchResult(left.isFile, "file") } val file = new FileBePropertyMatcher val temp = new File("aFile.txt") temp should be a file
BePropertyMatcher