Ghost Dog: The Way of the Samurai ***
Rated on a 4-star scale Screening venue: Cornerhouse (Manchester) Released in the UK by Film Four on May 5, 2000; certificate 15; 116 minutes; countries of origin France/Germany/Japan/USA; aspect ratio 1.85:1
Directed by Jim Jarmusch; produced by Richard Guay, Jim Jarmusch. Written by Jim Jarmusch. Photographed by Robby Müller; edited by Jay Rabinowitz.
CAST..... Forest Whitaker..... Ghost Dog John Tormey..... Louie Bonacelli Cliff Gorman..... Sonny Valerio Henry Silva..... Ray Vargo Isaach de Bankolé..... Raymond Tricia Vessey..... Louise Vargo Victor Argo..... Vinny Gene Ruffini..... old consigliere Richard Portnow..... Handsome Frank Camille Winbush..... Pearline, the little girl
The hit man has no name. People in the neighbourhood just call him 'ghost dog'. He lives on the roof of a New York City apartment block, in an iron shack, surrounded by pigeons. His only friend is a Haitian ice-cream vendor who does not speak his language. Completely disconnected from reality, he uses the code of ancient samurai warriors as a guide on how to conduct his life and work.
"Ghost Dog: The Way of the Samurai" was written and directed by Jim Jarmusch, the perfect and perhaps only filmmaker for this material. He's fascinated by the quietly insane, or at least the quirky outsiders, of society. Think of the layabouts in "Stranger Than Paradise", the mixed bag of oddballs in "Mystery Train", the trio of plodding inept crooks in "Down By Law". Good old Jim has dedicated his career to looking at nutcases with a tender grin.
In "Ghost Dog", he makes clear that the plot will contain no surprises, so he can devote his attention to observing little details. The early scenes show us that Ghost Dog (Forest Whitaker) does contract killings for a gang of Italian mobsters. He feels indebted to one of their number for saving his life when he was a kid. For reasons I wasn't really paying attention to, it is decided that Ghost Dog himself must die, and by the end of the movie, of course, this is what's going to happen.
As ever, Jarmusch's pace is slow, and his camera stays pretty much stationary.   Try to imagine the scene in "Pulp Fiction" where the two guys are nitpicking about how to clean their blood-drenched car, spun out to feature length.
COPYRIGHT(c) 2000 Ian Waldron-Mantgani Please visit, and encourage others to visit, the UK Critic's website, which is located at http://members.aol.com/ukcritic
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


| Title | Owner | Customer | Offered On | Price |
|---|---|---|---|---|
| {{offer.title}} | {{offer.owner.fullName}} | {{offer.customer.name}} | {{offer.offeredOn | date:'longDate'}} | {{offer.total | currency}} |
| Title | Owner | Customer | Offered On | Price | Expires On |
|---|---|---|---|---|---|
| {{offer.title}} | {{offer.ownerFullName}} | {{offer.customerName}} | {{offer.offeredOn | date:'longDate'}} | {{offer.total | currency}} | {{offer.expiresOn | date:'longDate'}} |


An important link to read is CSS Values and units: lengths at MDN. We can take from that: The definition of Absolute length units is bound to physical/real world measurements of length:
1 in = 2.54 cm = 96 px
Even the size of a pixel is bound to a real world physical size, 1 px ~ 0.0265 mm (2.54 / 96).
However, there is a fundamental problem, as old as computer displays. Browser CSS-units don't relate to physical units as defined by the International System of Units (SI). Wikipedia discusses some of it in Dots per inch. NOTE: for computer displays some prefer talking about PPI (pixels per inch) rather than DPI (dots per inch), which often is interchangeable in meaning. The root lies in different pixel densities per display and becomes more apparent since more and more "high DPI" displays are around.
 Each device with a different PPI will have a different manifestation of e.g. a centimeter, unless it has been calibrated/compensated in some way.
A LED-panel can inform the computer of its PPI, in my case on a GNU/Linux:
$ xrandr | grep -w connected
eDP-1 connected primary 3200x1800+0+0 (normal left inverted right x axis y axis) 293mm x 165mm
This is enough information to calculate a PPI of 277.41 ( ~ 3200 / (29.3 / 2.54)
)
However, a digital projector usually can't tell: its PPI changes with the focal length of the lens and the distance to the wall/screen and that info is usually not available (not to the projector nor to the connected computer). An example:
$ xrandr | grep -w connected
HDMI-2 connected 1920x1080+3200+0 (normal left inverted right x axis y axis) 1600mm x 900mm
The actual measurements of the projected image were:
~ 2570mm x 1430 mm
(not exactly 16:9, but close enough).
So, the real world measurements were ~ 1.6 (or 8/5) times bigger than
the reported values.
CAVEAT: even though the operating system may know the physical display size and resolution, the browser doesn't expose that information.
In Javascript/DOM window.devicePixelRatio
(aka. Dots Per
Pixel/dppx) describes the ratio used to map CSS pixels to device/screen/physical
pixels. This is how websites can be designed using pixels (or centimeters),
without knowing exactly how big a pixel actually is. It also is just
a really rough approximation that does not match 96 pixels = 1 inches
in real world units on most devices . On my Laptop in front of me the
window.devicePixelRatio
is 2, which is caused by having
set a scale of 200 % for my display in the Gnome 3 settings menu.
zooming into the web page also changes this number. At 150 % browser
zoom, I get a devicePixelRatio of 3, this matches real world units
to CSS units a bit better.
To decide my scale factor in Gnome 3, I just used a setting that suited me, 100 % being too small to read comfortably. I never measured any real values, nor can I set other values than 100 % or 200 % (there's a 300 % option, but it has the same effect as 200 %, probably a bug).
This scale is marked up to be 10 cm wide in CSS units.
Measure the scale above on your physical screen with a physical ruler.
If the measurement was correct, this scale is now 10 cm wide in real work units.
Scale Factor = CSS Value / Real World Value (the measurement)
Scale Factor = 10 cm / cm
Scale Factor =
With this information, we can calculate the actual device PPI fairly accurately:
CSS-PPI = 96 (constant as shown above)
Device-PPI = CSS_PPI * Scale-Factor * window.devicePixelRatio
Device-PPI = 96 * *
Device-PPI =
And also we can calculate the real world display size(!):
CSS-PPCM (pixel per cm) = 96 / 2.54
CSS-PPCM (pixel per cm) =
CSS-Display-Width (in CSS-cm) = window.screen.width / CSS-PPCM
CSS-Display-Width (in CSS-cm) = /
CSS-Display-Width (in CSS-cm) = cm
Device-width = CSS-Display-Width / Scale-Factor
Device-width = /
Device-width = cm
CSS-Display-Height (in CSS-cm) = window.screen.height / CSS-PPCM
CSS-Display-Height (in CSS-cm) = /
CSS-Display-Height (in CSS-cm) = cm
Device-height = CSS-Display-Height / Scale-Factor
Device-height = /
Device-height = cm
Bad: There's no relation to real world units in the browser. Operating Systems may be able to know real world measurements, depending if the display reports them correctly, but they also don't make use of it. Operating System scaling support is sketchy, but also not intended for calibration, display zoom settings are rather just used to make the screen contents readable at all on "high DPI" displays.
Good: A simple widget and a simple measurement performed by the user is enough to establish a conversion factor that is sufficient to map between the real world units and abstract computer units. That widget can be deployed on a per app or website basis. With convincing applications for real world measurements a general browser support API and even some kind of operating system support is thinkable, especially because the majority of displays already can report correct measurements.
This list unfinished, please submit suggestions via GitHub.
This list unfinished, please submit suggestions via GitHub.


{% extends "admin/pool/_base.html" %} {% block main %} Pool “{{ pool.name }}” Pool issuer URL: {{ issuer_url }} Edit Create/edit users Create/edit groups Create/edit clients {% endblock %}
Pool issuer URL: {{ issuer_url }}


{% load crispy_forms_tags %} {% load static %}
We are excited to launch our new company and product Azia. After being featured in too many magazines to mention and having created an online stir, we know that BootstrapDash is going to be big. We also hope to win Startup Fictional Business of the Year this year.
Browse our site and see for yourself why you need Azia.
Learn More


This application is built in Angular 7 using Angular's CLI tool, ES6 and TypeScript. Bootstrap will be used for our HTML and CSS.
Click the button below to see a demo of the tutorial.
See It In Action!You will be building a simple form that will allow a client to enter their height and weight to calculate body mass index.
Below are some of the steps you will be taking:
You will need to set up the following tools to develop this application.
cmd
. You can also download Git Bash here which allows users to use linux commands.Terminal
.Open your preferred command line utility and make sure you have Node installed by typing node -v. We will also be using npm which is Node's package manager. It installs with Node by default but just to make sure you can type npm -v. If you do not get a version for either command, make sure you have Node and npm correctly installed.
Install Angular's CLI by typing npm install -g @angular/cli. The -g
is a flag that tells npm to install this package globally. You can verify the CLI by typing ng version.
Type ng new sleep-analyzer-tutorial to create an Angular application.
This command may prompt you with features when creating your new application. Select the defaults by pressing the Enter or Return key. Be patient! It may take a few minutes to create the new application. The Angular CLI will be downloading and configuring all of the packages that make up a skeleton application.
Navigate into the sleep-analyzer-tutorial folder by typing cd sleep-analyzer-tutorial.
Type ng serve --open to launch a server. As you make changes, the Angular CLI will watch for changes and rebuild the application as well as refresh the browser for you. The --open
flag will open a new browser at http://localhost:4200.
Let's start by adding Bootstrap. Bootstrap is a frontend component library for developing HTML, CSS and JS. We will use Bootstrap's CDN to load their CSS and JS files.
Open src/index.html
and in the <head></head> code block add the following to include the CSS file:
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
At the end of the file before the closing <body> tag, add the following to include the JS files:
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
Create some resource modules by typing the following:
ng generate module resources
ng generate module resources/authentication
ng generate module resources/body-mass-index
Open src/app/resources/resources.module.ts
and replace with the following:
import {NgModule} from '@angular/core'; import {HttpClientModule} from '@angular/common/http'; import {BodyMassIndexModule} from './body-mass-index/body-mass-index.module'; import {AuthenticationModule} from './authentication/authentication.module'; const modules = [ AuthenticationModule, BodyMassIndexModule, HttpClientModule ]; @NgModule({ imports: [ ...modules ], exports: [ ...modules ] }) export class ResourcesModule {}
We have imported the AuthenticationModule
and the BodyMassIndexModule
into the ResourcesModule
to organize or resources in one place. We will now add our ResourcesModule
to our AppModule
and by doing so we gain the ability to import any classes imported into those modules anywhere in our application.
Open src/app/app.module.ts
and import the ResourcesModule
and add it to the imports
array.
import {BrowserModule} from '@angular/platform-browser'; import {NgModule} from '@angular/core'; import {AppComponent} from './app.component'; import {ResourcesModule} from './resources/resources.module'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, ResourcesModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule {}
Let's create some other classes for our AuthenticationModule
. The --skipTest
flag takes a boolean and will dictate if you would like to produce a test file for each class. The --type
flag takes a string and will allow you to change the name of the file after the first dot. Example: ng generate service someFileName --type=umbrella will produce the file name of someFileName.umbrella.ts
.
Why are we skipping tests? While testing is important, it is out of the scope of this tutorial. We will not always be skipping the tests but since these folders hold many different classes, we believe seeing them without tests will give you a better understanding of a data resource folder structure.
When generating the command to create the guard (second line below), you may be prompted with options. if you are select the CanActivate
option. CanActivate
tells the route that it can load if all logic evaluates to true.
ng generate service resources/authentication/authentication --skipTests=true
ng generate guard resources/authentication/authentication --skipTests=true
ng generate class resources/authentication/authentication --skipTests=true --type=store
ng generate class resources/authentication/authentication --skipTests=true --type=types
In a normal application, authentication management would be the job of a backend server application, but for this sample application, we have to get an access token to attach to our API calls for the body mass index questions and calculation in lieu of a backend server application. Note this is ONLY to add security to this sample application and isn't recommended for production environments.
Open src/app/resources/authentication/authentication.service.ts
and replace with the following:
import {Injectable} from '@angular/core'; import {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http'; import {Observable} from 'rxjs'; @Injectable() export class AuthenticationService { /* -- CONSTRUCTOR -- */ /** * Inject any class dependencies that will be used in the class * @param _httpClient */ constructor( private _httpClient: HttpClient ) {} /* -- PUBLIC METHODS -- */ /** * login * @param body * * This method uses Angular's HttpClient library to perform a post request * and uses Angular's HttpHeaders library to set request headers */ public login(body: any): Observable<any> { const httpOptions = { headers: new HttpHeaders({ 'Accept': 'application/json', 'Cache-Control': 'no-cache', 'Content-Type': 'application/x-www-form-urlencoded' }) } const formData = new HttpParams({ fromObject : { 'client_id': body.client_id, 'client_secret': body.client_secret, 'grant_type': 'client_credentials' } }); const url = 'https://www.sleepapi.philips.com/oauth/accessToken'; return this._httpClient.post<any>(url, formData, httpOptions); } }
There are a few things to note here that you will see throughout the application and are standard Angular conventions.
We use the constructor to inject dependencies into the class. When we do that, we can then access their methods. Here we are injecting Angular's HttpClient
library which handles all of the REST calls. TypeScript allows us to make it private and it is good convention to add an underscore before private function names so they are easily recognizable.
Angular makes use of the RxJS library. Here we are using the Observable
class. If we call this from another method, we can then use the Observable.subscribe()
function to perform subsequent actions.
Think of it this way. We call the login method and send out an asynchronous request to the API to get an access token. Since returned an Observable
, the caller can subscribe to it and wait for a response. In this case the response it an Observable
of HTTPResponse
for the request with the response body.
TypeScript gives us the ability to add types to our JavaScript code. This provides static code checking and better development. Replace the code in src/app/resources/authentication/authentication.types.ts
with the following:
export class Client { public client_id: string; public token?: string; public client_secret: string; }
Store are singletons which will live the life of the application. The are great places to manage application state, store data structures and reusable functions that can be accessed across the application. Open src/app/resources/authentication/authentication.store.ts
and replace the code with the following:
import {Injectable} from '@angular/core'; import {Subject} from 'rxjs'; import {AuthenticationService} from './authentication.service'; import {Client} from './authentication.types'; @Injectable({ providedIn: 'root' }) export class AuthenticationStore { /* -- CONSTRUCTOR -- */ /** * Inject any class dependencies that will be used in the class * @param _authenticationServices */ constructor( private _authenticationService: AuthenticationService, ) {} /* -- EVENTS -- */ /** * Create subjects to act as event emitters - Subject extends Observable */ private _authenticationEvent = new Subject(); /* -- PROPERTIES -- */ /** * Create public properties of the event emitter for other components to subscribe to */ public authenticationEvent$ = this._authenticationEvent.asObservable(); /** * Create properties on the class - stores are singletons so * these properties will be available for life of the app */ private _client: Client; /* -- GETTERS -- */ /** * Use getters to expose private class properties to other classes */ public get client(): Client { return this._client; } /* -- PUBLIC METHODS -- */ /** * Login client * * login returns an Observable from AuthenticationServices * that this method can subscribe to * * Once the Observable resolves, the method sets the property to the class and * fires an event to alert listening components who can then query property with getter */ public login(login: Client) { this._authenticationService.login(login).subscribe( response => { const client = new Client(); client.token = response.access_token; this._client = client; this._authenticationEvent.next(); } ); } }
Here we are setting some properties to the store that we will then be able to access in any other component that we inject the store into.
We have also created an event listener in our class that can be subscribed to by other components. Here is where we are calling the AuthenticationService.login
method and subscribing to the Observable. Once AuthenticationService.login
resolves, we create a new client using our Client
type we created earlier, and then setting that property on the store.
When we call this._authenticationEvent.next()
we are sending out an event to all components subscribed that this method is complete.
Let's create a route guard. Our route guard will be used in our routing and will ensure that conditions are met before loading our route. This is helpful when checking that certain permissions exist which is what we will be doing here. Before we allow the client to go to the body-mass-index route we will create, we must ensure they have authenticated and received the API access token.
Open src/app/resources/authentication/authentication.guard.ts
and replace the code with the following:
import {Injectable} from '@angular/core'; import {Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router'; import {AuthenticationStore} from './authentication.store'; @Injectable({ providedIn: 'root' }) export class AuthenticationGuard implements CanActivate { /* -- CONSTRUCTOR -- */ /** * Inject any class dependencies that will be used in the class * @param _authenticationStore * @param _router */ constructor( private _router: Router, private _authenticationStore: AuthenticationStore ) {} /* -- PUBLIC METHODS -- */ /** * canActivate return a boolean if conditions are not met * Add this to your routes canActivate property to prevent route access * @param route * @param state */ canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { if (this._authenticationStore.client) { return true; } this._router.navigate(['/login']); return false; } }
Finally let's add the AuthenticationService
to our src/app/resources/authentication/authentication.module.ts
by adding it to our provides
array. By doing so, this will expose our AuthenticationService to our entire application.
import {NgModule} from '@angular/core'; import {AuthenticationService} from './authentication.service'; @NgModule({ providers: [ AuthenticationService ] }) export class AuthenticationModule {}
Just like our Client
type, we are going to create a Question
type.
ng generate class resources/questions/questions --skipTests=true --type=types
Replace the code in src/app/resources/question/question.types.ts
with the following:
export class Question { public id: string; public type: string; public computed: boolean; public sleepProblem: boolean; public dependencies: []; public questionText: string; }
ng generate service resources/body-mass-index/body-mass-index --skipTests=true
ng generate class resources/body-mass-index/body-mass-index --skipTests=true --type=store
Open src/app/resources/body-mass-index/body-mass-index.service.ts
and replace with the following:
import {Injectable} from '@angular/core'; import {HttpClient, HttpHeaders} from '@angular/common/http'; import {Observable} from 'rxjs'; import {AuthenticationStore} from '../authentication/authentication.store'; @Injectable() export class BodyMassIndexService { /* -- CONSTRUCTOR -- */ /** * Inject any class dependencies that will be used in the class * @param _httpClient */ constructor( private _authenticationStore: AuthenticationStore, private _httpClient: HttpClient ) {} /* -- PUBLIC METHODS -- */ /** * retrieveBodyMassIndexQuestions * * This method uses Angular's HttpClient library to perform a get request */ public retrieveBodyMassIndexQuestions(): Observable<any> { const httpOptions = { headers: new HttpHeaders({ 'Authorization': 'Bearer ' + this._authenticationStore.client.token }) }; const url = 'https://www.sleepapi.philips.com/smartsleep-analyzer/Scoring/GetRequiredQuestionSenses/bmi'; return this._httpClient.get<any>(url, httpOptions); } /** * retrieveBodyMassIndexQuestions * @param body * * This method uses Angular's HttpClient library to perform a post request * and uses Angular's HttpHeaders library to set request headers */ public postBodyMassIndexAnswers(body: {}): Observable<any> { const httpOptions = { headers: new HttpHeaders({ 'Accept': 'application/json', 'Cache-Control': 'no-cache', 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + this._authenticationStore.client.token }) }; const url = 'https://www.sleepapi.philips.com/smartsleep-analyzer/Scoring/ComputeSense/bmi'; return this._httpClient.post<any>(url, body, httpOptions); } }
We are doing many similar things in this service as we did in the AuthenticationService
. One thing to point out however is how we are using dependency injection to retrieve our access token. We use a getter in our AuthenticationStore
to retrieve the access token with this._authenticationStore.client.token
.
Open src/app/resources/body-mass-index/body-mass-index.store.ts
and replace with the following:
import {Injectable} from '@angular/core'; import {Subject} from 'rxjs'; import {BodyMassIndexService} from './body-mass-index.service'; import {Question} from '../questions/questions.types'; @Injectable({ providedIn: 'root' }) export class BodyMassIndexStore { /* -- CONSTRUCTOR -- */ /** * Inject any class dependencies that will be used in the class * @param _bodyMassIndexService */ constructor( private _bodyMassIndexService: BodyMassIndexService ) {} /* -- EVENTS -- */ /** * Create subjects to act as event emitters - Subject extends Observable */ private _postAnswersEvent = new Subject(); private _questionsUpdatedEvent = new Subject(); /* -- PROPERTIES -- */ /** * Create public properties of the event emitter for other components to subscribe to */ public postAnswersEvent$ = this._postAnswersEvent.asObservable(); public questionsUpdatedEvent$ = this._questionsUpdatedEvent.asObservable(); /** * Create properties on the class - stores are singletons so * these properties will be available for life of the app */ private _bmiCalculation: number; private _questions: Question[]; /* -- GETTERS -- */ /** * Use getters to expose private class properties to other classes */ public get bmiCalculation(): number { return this._bmiCalculation; } public get questions(): Question[] { return this._questions; } /* -- PUBLIC METHODS -- */ /** * Get list of questions * * retrieveBodyMassIndexQuestions returns an Observable from BodyMassIndexServices * that this method can subscribe to * * Once the Observable resolves, the method sets the property to the class and * fires an event to alert listening components who can then query property with getter */ public retrieveBodyMassIndexQuestions(): void { this._bodyMassIndexService.retrieveBodyMassIndexQuestions().subscribe( response => { this._questions = response; this._questionsUpdatedEvent.next(); } ); } /** * Submit answer list * * postBodyMassIndexAnswers returns an Observable from BodyMassIndexServices * that this method can subscribe to * * Once the Observable resolves, the method sets the property to the class and * fires an event to alert listening components who can then query property with getter */ public postBodyMassIndexAnswers(body: {}): void { this._bodyMassIndexService.postBodyMassIndexAnswers(body).subscribe( response => { this._bmiCalculation = response.bmi; this._postAnswersEvent.next(); } ); } }
Again we are doing many of the same things we did in the AuthenticationStore
. We have two methods that call methods in our BodyMassIndexService
and once resolved emit and event out to listening components. In this case it is our Body MassIndexComponent
which we create here soon. It should be noted that many components can listen to events and update at the same time using this subscription model.
Finally let's add the BodyMassIndexService
to our src/app/resources/body-mass-index/body-mass-index.module.ts
by adding it to our provides
array. By doing so, this will expose our BodyMassIndexService to our entire application.
import {NgModule} from '@angular/core'; import {BodyMassIndexService} from './body-mass-index.service'; @NgModule({ providers: [ BodyMassIndexService ] }) export class BodyMassIndexModule {}
From Angular docs (edited): A component controls a patch of screen called a view. You define a component's application logic — what it does to support the view — inside a class. The class interacts with the view through an API of properties and methods.
Create the following components:
ng generate component components/body-mass-index
ng generate component components/home
ng generate component components/login
This will create a component folder with an Angular component, .html, .css and a test .spec file. Now that we have our data ready to consume, we can start to create our views to display the information to the client.
ng generate module app-routing --flat --module=app
The --flat
flag creates the module without a folder and the --module
flag tells the Angular CLI to add it to the imports
array in the AppModule
.
Angular's built in router allows us to create different routes that a client can access within their browser. Here you can see our AuthenticationGuard
at work. All other routes are open but clients will not be able to access the body-mass-index route unless the AuthenticationGuard
resolves.
Open src/app/app-routing.module.ts
and replace with the following:
import {NgModule} from '@angular/core'; import {RouterModule, Routes} from '@angular/router'; import {BodyMassIndexComponent} from './components/body-mass-index/body-mass-index.component'; import {HomeComponent} from './components/home/home.component'; import {LoginComponent} from './components/login/login.component'; import {AuthenticationGuard} from './resources/authentication/authentication.guard'; /** * Create routes here and inject into RouterModule below in imports */ const routes: Routes = [ { path: '', redirectTo: '/', pathMatch: 'full' }, { path: '', component: HomeComponent }, { path: 'body-mass-index', canActivate: [AuthenticationGuard], component: BodyMassIndexComponent }, { path: 'login', component: LoginComponent } ]; @NgModule({ exports: [ RouterModule ], imports: [ RouterModule.forRoot(routes, { scrollPositionRestoration: 'enabled', anchorScrolling: 'enabled', scrollOffset: [0, 0] }) ], providers: [] }) export class AppRoutingModule {}
Open src/app/app.module.ts
and replace the code with the following:
import {BrowserModule} from '@angular/platform-browser'; import {NgModule} from '@angular/core'; import {ReactiveFormsModule} from '@angular/forms'; import {RouterModule} from '@angular/router'; import {AppRoutingModule} from './app-routing.module'; import {AppComponent} from './app.component'; import {BodyMassIndexComponent} from './components/body-mass-index/body-mass-index.component'; import {HomeComponent} from './components/home/home.component'; import {LoginComponent} from './components/login/login.component'; import {ResourcesModule} from './resources/resources.module'; @NgModule({ declarations: [ AppComponent, BodyMassIndexComponent, HomeComponent, LoginComponent ], exports: [ ReactiveFormsModule, RouterModule ], imports: [ AppRoutingModule, BrowserModule, ResourcesModule, ReactiveFormsModule, RouterModule ], providers: [], bootstrap: [ AppComponent ] }) export class AppModule {}
You might have noticed that we have snuck a few extra modules in here. We need to import and export the ReactiveFormModule
and the RouterModule
so that other components in our application can use them.
Open src/app/app.component.html
file and replace with the following:
<nav class="navbar navbar-expand-lg navbar-dark bg-dark"> <!-- routerLink is Angular's Router link syntax --> <a class="navbar-brand" routerLink="/"> Philips SmartSleep Analyzer Sample Application </a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav ml-auto"> <li class="nav-item"> <!-- routerLink is Angular's Router link syntax --> <a class="nav-link" routerLink="/"> Home </a> </li> <li class="nav-item"> <!-- routerLink is Angular's Router link syntax --> <a class="nav-link" routerLink="/body-mass-index"> Body Mass Index </a> </li> </ul> </div> </nav> <!-- Angular's Router uses this syntax to render routes --> <router-outlet></router-outlet>
We have added a boilerplate Bootstrap navigation bar and provided it a couple links. Notice that they are not using the href
attribute but rather the RouterModule
's routerLink
attribute. This allows the our routing to take effect which doesn't trigger a reload when navigating between routes. This way our data in our stores and components persist and we don't have to make a bunch of extra API calls every time we move to a new route
The <router-link></router-link>
element is where the router loads those components that we defined as the component for the route.
Open src/app/components/login/login.component.ts
file and replace with the following:
import {Component, OnInit} from '@angular/core'; import {Router} from '@angular/router'; import {FormControl, FormGroup, Validators} from '@angular/forms'; import {AuthenticationStore} from '../../resources/authentication/authentication.store'; @Component({ selector: 'app-login', templateUrl: './login.component.html', styleUrls: ['./login.component.css'] }) export class LoginComponent implements OnInit { /* -- CONSTRUCTOR -- */ constructor( private _router: Router, private _authenticationStore: AuthenticationStore ) {} /* -- PROPERTIES -- */ public form; public loading = false; private _controls = { client_id: new FormControl('', Validators.required), client_secret: new FormControl('', Validators.required), grant_type: new FormControl('client_credentials') }; /* -- PUBLIC METHODS -- */ public ngOnInit(): void { this._authenticationStore.authenticationEvent$.subscribe(() => this._redirectAfterLogin()); this.form = new FormGroup(this._controls, { updateOn: 'change' }); if (this._authenticationStore.client) { this._redirectAfterLogin(); } } public onSubmit(): void { if (this.form.invalid) { return; } this.loading = true; this._authenticationStore.login(this.form.value); } /* -- PRIVATE METHODS -- */ private _redirectAfterLogin() { this.loading = false; this._router.navigateByUrl('/body-mass-index'); } }
You are probably starting to see a lot of patterns by now. We have our constructor injecting the Router
module and the AuthenticationStore
.
We are going to use Angular's ReactiveFormModule
here to create a form model that our class can track. Angular has very powerful form controls as part of its core and we are going to tap into that power. We create some simple form controls for a login form.
Angular comes with lifecycle methods that a component will go through as it is instantiated and destroyed. Probably the most popular is the ngOnInit
method. We put logic that we want to happen when a component is first mounted. Here we are checking for a few things. First we subscribe to our AuthenticationStore
event that gets fired when the login action completes. This subscription takes a callback.
The _redirectAfterLogin()
method redirects client to our body-mass-index route after successful login.
We also create our form in ngOnInit
as well as check if the client is already logged in. If so we just take them right away to our authenticated route. Remember earlier we used the AuthenticationGuard
as another protection for our route.
"Client ID" becomes client_id in the request, which is provided via the "Key" field of an API Key in developer portal. "Client Secret" becomes client_secret in the request, which is provided via the "Secret" field of an API Key in the developer portal.
Open src/app/components/login/login.component.html
file and replace with the following:
<div class="container"> <div class="row"> <div class="col-md-6 offset-md-3"> <h1 class="mt-5">Login</h1> <p>"Client ID" becomes client_id in the request, which is provided via the "Key" field of an API Key in developer portal. "Client Secret" becomes client_secret in the request, which is provided via the "Secret" field of an API Key in the developer portal.</p> <!-- apply form property from class to [formGroup] directive to keep form properties in sync with class --> <!-- use Angular's (ngSubmit) method to submit form - onSubmit() must exist in class --> <form class="login-form" [formGroup]="form" (ngSubmit)="onSubmit()" class="mt-4"> <!-- [formControlName] maps the input to the class FormControl element in the FormGroup --> <div class="form-group"> <label>Client ID</label> <input formControlName="client_id" class="form-control"> </div> <!-- [formControlName] maps the input to the class FormControl element in the FormGroup --> <div class="form-group"> <label>Client Secret</label> <input formControlName="client_secret" class="form-control" type="password"> </div> <!-- [disabled] is an Angular directive that will add the html disabled attribute if condition is true --> <button type="submit" class="btn btn-primary" [disabled]="form.invalid || loading"> <span *ngIf="loading" class="spinner-border spinner-border-sm" role="status" aria-hidden="true"> </span> Login </button> </form> </div> </div> </div>
You will see here that we are using our LoginComponent
's form property on our form element with Angular's [formGroup]
directive. This assigns the form model we created in the component to the form elements by including the [formGroupName]
directive on each form element.
Open src/app/components/login/login.component.css
file and replace with the following code:
.login-form { width: 100%; }
Open src/app/components/home/home.component.html
file and replace with the following:
<div class="container pb-lg-5"> <div class="jumbotron mt-5"> <h1 class="display-4">Philips SmartSleep Analyzer Sample Application</h1> <p class="lead">This application is built in <a href="https://angular.io" target="_blank">Angular</a> 7 using Angular's <a href="https://cli.angular.io" target="_blank">CLI</a> tool, <a href="http://es6-features.org" target="_blank">ES6</a> and <a href="https://www.typescriptlang.org" target="_blank">TypeScript</a>. <a href="https://getbootstrap.com" target="_blank">Bootstrap</a> will be used for our HTML and CSS.</p> <hr class="my-4"> <p>Click the button below to see a demo of the tutorial.</p> <a class="btn btn-primary btn-lg" routerLink="/body-mass-index" role="button">See It In Action!</a> </div> </div>
Open src/app/components/body-mass-index/body-mass-index.component.ts
file and replace with the following:
import {Component, OnInit} from '@angular/core'; import {FormControl, FormGroup, Validators} from '@angular/forms'; import {BodyMassIndexStore} from '../../resources/body-mass-index/body-mass-index.store'; import {Question} from '../../resources/questions/questions.types'; @Component({ selector: 'app-body-mass-index', templateUrl: './body-mass-index.component.html', styleUrls: ['./body-mass-index.component.css'] }) export class BodyMassIndexComponent implements OnInit { /* -- CONSTRUCTOR -- */ /** * Inject any class dependencies that will be used in the class * @param _bodyMassIndexServices */ constructor( private _bodyMassIndexStore: BodyMassIndexStore ) {} /* -- PROPERTIES -- */ /** * Create properties on the class - these properties will * be available for life of the component * * Any public properties are available in the view */ public bmiCalculation = '--'; public form: FormGroup; public loading = true; public questions: Question[] = []; public submitting = false; /* -- PUBLIC METHODS -- */ /** * ngOnInit is an Angular lifecycle method * * Subscribe to events and perform any logic that should happen * when the component loads */ public ngOnInit(): void { // once the answers are posted and response is returned, execute callback this._bodyMassIndexStore.postAnswersEvent$.subscribe(() => this._getBmiCalculation()); // once the questions are retrieve and response is returned, execute callback this._bodyMassIndexStore.questionsUpdatedEvent$.subscribe(() => this._getQuestions()); // when component loads, retrieve questions this._bodyMassIndexStore.retrieveBodyMassIndexQuestions(); } /** * Submit form */ public onSubmit(): void { this.submitting = true; this._bodyMassIndexStore.postBodyMassIndexAnswers(this.form.value); } /* -- PRIVATE METHODS -- */ /** * Retrieve bmiCalculation and set on class property * @private */ private _getBmiCalculation(): void { this.submitting = false; this.bmiCalculation = (Math.round(this._bodyMassIndexStore.bmiCalculation * 10) / 10) + '%'; } /** * Retrieve questions and set on class property and create the form * @private */ private _getQuestions(): void { this.questions = this._bodyMassIndexStore.questions; this._createForm(); } /** * Create reactive form elements using Angular's ReactiveFormsModule * @private */ private _createForm(): void { const controlObject = {}; // loop through questions and create a FormControl for each element and add required validation // FormControl's are mapped to the view by adding their key (controlObject[question.id]) to // the [formControlName] directive: example - <input [formControlName]="question.id"> this.questions.forEach( question => controlObject[question.id] = new FormControl('', Validators.required) ); // create a FormGroup to track the form in the view this.form = new FormGroup(controlObject, { updateOn: 'change' }); // loading is set to false to stop the spinner and show the form this.loading = false; } }
Here again there are a lot of similar patterns to our LoginComponent
. We set up some event listeners in our ngOnInit
method and also send off a call to get our questions.
Once our events listeners fire their callbacks, we execute either creating the form after we get the questions or showing the body mass index calculation.
Open src/app/components/body-mass-index/body-mass-index.component.html
file and replace with the following:
<div class="container"> <div *ngIf="loading" class="d-flex justify-content-center align-items-center" [ngStyle]="{ height: 'calc(100vh - 100px)' }"> <div class="spinner-border text-primary" role="status"> <span class="sr-only">Loading...</span> </div> </div> <!-- *ngIf = only show element if condition exists --> <div *ngIf="questions.length" class="row"> <div class="col-md-6 offset-md-3"> <h2 class="mt-5"><i>Note: the Scoring API uses metric units for all calculations by default.</i></h2> <!-- apply form property from class to [formGroup] directive to keep form properties in sync with class --> <!-- use Angular's (ngSubmit) method to submit form - onSubmit() must exist in class --> <form [formGroup]="form" (ngSubmit)="onSubmit()" class="mt-5"> <!-- loop through questions and create inputs --> <div *ngFor="let question of questions" class="form-group"> <!-- [for] is Angular syntax for the html for attribute --> <label [for]="question.id"> <span [innerHTML]="question.questionText"></span></label> <!-- [id] is Angular syntax for the html id attribute --> <!-- [formControlName] maps the input to the class FormControl element in the FormGroup --> <input *ngIf="question.type === 'DoubleSenseValue'" type="number" class="form-control" [id]="question.id" [formControlName]="question.id"> </div> <!-- [disabled] is an Angular directive that will add the html disabled attribute if condition is true --> <button type="submit" class="btn btn-primary" [disabled]="form.invalid || submitting"> <span *ngIf="submitting" class="spinner-border spinner-border-sm" role="status" aria-hidden="true"> </span> Submit </button> </form> <h4 class="mt-5">Body Mass Index Calculation: <span [innerHTML]="bmiCalculation"></span></h4> </div> </div> </div>
This has a lot of the same patterns as out LoginComponent Template
. The difference here is that we don't know what our form elements are going to be so we use Angular's *ngFor
directive to loop through our question array and create the form dynamically.
One thing to note, generally you would display class properties between double curly braces, however we use the [innerHTML]
directive just in case the return information contains some markup or style.
Click on the Body Mass Index link in the header on the right and you will be taken to the login page. Here you will enter your credentials. Click submit and be patient, it may take a few seconds to authenticate your account.
Once logged in you will be redirected to the body-mass-index route. From there you can enter your information in the Body Mass Index form to calculate your Body Mass Index.


And then we started Javascript
Riiightt... This is week 4, yuss. So we had to start learning Javascript this week, which I was kind of looking forward to. The reason for that is that I'm not really good with design (nor I want to be), and HTML and CSS feel like design but instead of using Photoshop or something you have to use code and math (so... like really painful and hard). You can evidence this on the fact that I gave up on making this website look good for now. But enough "crying over spilled milk"* (*direct translation from Spanish), let's get onto those sweet Javascript facts.
How does Javascript compare to HTML and CSS?
Let's imagine a webpage is like a house again, shall we? So HTML is like the structure of the house, divided in rooms, kitchen, garage, bathroom, garden. You have some basic stuff built in and so forth. CSS is what gives it style and character: color, placements, positioning of things inside it, etc. Javascript is what makes all the interactive parts work, like the washing machine, fridge, sink, TV, etc.
Forget about the house and think of a website again: HTML simply tell the browser "this is a paragraph, this is a title, this text goes here", CSS tells the browser "when you see that paragraph display it using this font, this size in this position". With Javascript you can automate actions that will happen when the user does certain things or under certain circumstances like "pick up the 'contact name' and 'phone number' that this user has entered and add it to this database on this position".
What are control flow and loops?
 What happens if for example you are washing your delicate clothes? You will probably use cold water and a special setting, plus maybe you add fabric softener. We do these things because we have the analytical capacity to consider each case and make particular decisions accordingly.
When it comes to computers and programs you have to specify the different scenarios beforehand in what they call control flows. These control flows are what tell the program "if faced with the following situation then do this". A loop is an specific form of control flow in which certain activities repeat again and again (hence the name loop) until certain circumstance is met.
What is the difference between accessing data from arrays and object literals?
I like to think of arrays like numbered lists. You add your list of things like this: var sweets = ["chocolate", "candy", "ice cream"]
and the computer interprets it as 0.chocolate, 1.candy, 2.ice cream. So if you want the computer to tell you "candy" for example you have to 'call it' using the corresponding number: sweets[1]
. Objects however are more like tables to me (in an structural way) where you have a specific thing followed by it's value. For example var meals = {breakfast: "toast", lunch: "stir fry", dinner: "soup"}
. If you want to ask the computer what's for dinner you will do it this way: meals["dinner"]
.
What are functions and why are they useful?
To make it simple, a function is a set of code that performs certain action. You can think about it as an abstraction that we do in real life like for example "getting up": we use this expression to define a number of activities we do every morning before we are ready to face the world such as getting out of bed, getting a shower, putting clothes on, etc. We know that when somebody tells us to "get up" that we have to perform those activities. In programming we do this with functions, we define them by telling the computer "when I call this function I want you to run this code". Cool, huh?


Parkinsons trial
Press enter to continue
Place the index, middle, ring, little fingers of your right hand on keyboard keys g-h-j-k. Warm up by pressing the keys up and down in any order, but not simultaneously. Pay attention to the little finger, it should also comfortably press the corresponding key (k). Make sure you hear the tone of each key, at a comfortable sound level. Adjust the volume if you don’t hear the tones.
Now you are going to practice sequence 1, represented by this image:
Sequence 1 consists of four key presses, in this order:
g – j – h – k
(that is, index – ring – middle – little finger)
Press enter to continue
Sequence 1 consists of four key presses, in this order:
g – j – h – k
(that is, index – ring – middle – little finger)
Try it out at a comfortable speed, you can practice it slowly now, to make sure the order is clear.
Take a little break of 1-2 seconds between each performance of the sequence. You can practice it up to 10 times.
Press F1 to have the computer remind you of the sequenceWas it enough practice? Can you remember the sequence?
Press enter to continue
Try it out! Play it once at a time and wait for the computer to tell you whether it is correct.
Hint: It starts with the right index pressing keyboard letter g.
Now you are going to practice sequence 2, represented by this image:
Press enter to continue
Sequence 2 consists of four key presses, in this order:
k – g – j – h
(that is, little - index – ring – middle finger)
Press enter to continue
Sequence 2 consists of four key presses, in this order:
k – g – j – h
(that is, little - index – ring – middle finger)
Try it out at a comfortable speed, you can practice it slowly now, to make sure the order is clear.
Take a little break of 1-2 seconds between each performance of the sequence. You can practice it up to 10 times.
Press F1 to have the computer remind you of the sequenceWas it enough practice? Can you remember the sequence?
Press enter to continue
Try it out! Play it once at a time and wait for the computer to tell you whether it is correct.
Hint: It starts with the right index pressing keyboard letter g.
Now you will see the images representing sequence 1 and sequence 2 on the screen.
Now you will see the images representing sequence 1 and sequence 2 on the screen.

Now you will see the images representing sequence 1 and sequence 2 on the screen.

Then you will simply play the sequence you choose on that attempt.
Now you will see the images representing sequence 1 and sequence 2 on the screen.

Then you will simply play the sequence you choose on that attempt.
Your aim is to obtain as many points as possible at the end of this study, so play the sequence you think will more likely give you reward!
Now you will see the images representing sequence 1 and sequence 2 on the screen.

Then you will simply play the sequence you choose on that attempt.
Your aim is to obtain as many points as possible at the end of this study, so play the sequence you think will more likely give you reward!
Careful though: The reward (points) associated with each sequence will change from time to time. So pay attention and adapt your decisions if you think that the conditions changed.
Now you will see the images representing sequence 1 and sequence 2 on the screen.

Then you will simply play the sequence you choose on that attempt.
Your aim is to obtain as many points as possible at the end of this study, so play the sequence you think will more likely give you reward!
Careful though: The reward (points) associated with each sequence will change from time to time. So pay attention and adapt your decisions if you think that the conditions changed.
Press 1 (or click the purple icon) to choose sequence 1.
Press 2 (or click the yellow icon) to choose sequence 2.
Play sequence.
Something went wrong.
You earned 0 points.
Correct!
You get 10 points.
You ran out of time to play the sequence, and lost the points.
+
Your score:
In this round, you need to pick the correct icon and play the sequence. Be careful though! only one of the sequences will give you the maximum number of points.
Press 1 (or click the purple icon) to choose sequence 1.
Press 2 (or click the yellow icon) to choose sequence 2.


Your device / browser is automatically linked to this wallet. The existing link is broken.
MyEtherWallet is an online wallet that allows transactions to be carried out on the Ethereum blockchain..
Etherscan is a so-called blockchain explorer, which also allows interactions with smart contracts.
Metamask is a Chrome / Firefox extension that enables direct interaction with the Ethereum blockchain.


Asthma and the Environment in
Fresh Meadows
Asthma is a common lung disease and a leading cause of hospitalizations for children under 15 years old. This report provides a summary of asthma indicators by neighborhood. It also describes housing and neighborhood characteristics that can make asthma worse.
Download Report Data (opens in a new tab)
Neighborhood Information
Fresh Meadows is comprised of Zip codes 11365,11366,11367
Adult Asthma
Age-adjusted rates per 10,000 residents (or percent where indicated)
Social and Economic Risk Factors
These indicators describe conditions that make a neighborhood more at-risk for asthma.
Indoor Air Quality
Percentage of homes with potential sources of allergens and pollutants that can make asthma symptoms worse.
Health Burden: Fine Particles (PM2.5)
Estimated health events attributable to PM2.5 exposures, (average annual rate per 100,000 residents)


{% extends 'base.html' %} {% block content %} Book Shop A book worm’s paradise Sell a book Buy a book
A book worm’s paradise
Sell a book Buy a book
Description: {{ book.description.title }}
Quantity: {{ book.quantity }}
Price: ₱ {{ book.price }}
Author: {{ book.author }}
Genre: {{ book.genre }}
Seller: {{ book.seller.profile }}


Tastee
Sign in with Google
Find the best "Tasteeing" restaurants around!
{% for restaurant in restaurants %}
{{restaurant.name}}
Edit
Delete
{% endfor %}


This page exists to serve as a way for me to keep track of various items, and will likely not be of use to anyone else except as an example of a static web site. Although this is static, it loads pages written in Markdown and pages in raw text dynamically, when you click on one of the list names at the bottom. To see how this works, you can look at the source code on GitHub.
Lists on this site


WHO: 80 percent of adolescents don't exercise enough
by EUobserverA new report World Health Organization (WHO) reveals that more than 80 percent of adolescents worldwide are not active enough, putting their current and future health at risk. Globally, girls tend to be less active than boys. The prevalence of insufficient physical activity slightly decreased in boys between 2001 and 2016 (from 80 percent to 78 percent), but there was no change over time in girls (remaining around 85 percent).


(This make take up to 20 seconds to run (on slower browser), so you may ignore any 'script timeout' warnings)


Akka.Util Namespace
Classes
| Class | Description | |
|---|---|---|
| AtomicBoolean |
Implementation of the java.concurrent.util.AtomicBoolean type.
Uses [Interlocked.MemoryBarrier] internally to enforce ordering of writes
without any explicit locking. .NET's strong memory on write guarantees might already enforce
this ordering, but the addition of the MemoryBarrier guarantees it.
|
|
| AtomicCounter |
Class used for atomic counters and increments.
Used inside the [FSM{TS,TD}] and in parts of Akka.Remote.
|
|
| AtomicCounterLong |
Atomic counter that uses longs internally
|
|
| AtomicInteger | ||
| AtomicLong | ||
| AtomicReference<(Of <(<'T>)>)> |
Implementation of the java.concurrent.util AtomicReference type.
Uses [Interlocked.MemoryBarrier] internally to enforce ordering of writes
without any explicit locking. .NET's strong memory on write guarantees might already enforce
this ordering, but the addition of the MemoryBarrier guarantees it.
|
|
| Base64Encoding | ||
| BitArrayHelpers |
Extension method class to make it easier to work with BitArray instances
|
|
| ConcurrentSet<(Of <(<'T>)>)> | ||
| Murmur3 |
A Murmur3 implementation in .NET that doesn't suck. Imported from https://github.com/markedup-mobi/openmetrics
This is a C# port of the cannonical algorithm in C++, with some helper functions
designed to make it easier to work with POCOs and .NET primitives.
|
|
| StringFormat | ||
| Switch |
An atomic switch that can be either on or off
|
|
| ThreadLocalRandom |
Create random numbers with Thread-specific seeds.
Borrowed form Jon Skeet's brilliant C# in Depth: http://csharpindepth.com/Articles/Chapter12/Random.aspx
|
|
| TypeExtensions |
Class TypeExtensions.
|
|
| WildcardMatch | ||
| WildcardTree<(Of <(<'T>)>)> |
A searchable nested dictionary, represents a searchable tree structure underneath
|


Please check modules.zendframework.com before writing a new Module!
Modules best practices
Keep the ``init()`` and ``onBootstrap()`` methods lightweight.

Use a vendor prefix for module names
Allow to configure everything that needs to be configurable
Set your hard dependencies in constructor, avoid initializers and setters/getters
The service locator of Zend Framework 2 really allows to cleanly handle complex dependencies, mocking… it’s really a powerful tool that is not that hard to use once you understand it. However, ZF 2 shipped with something called initializers. I’m pretty sure you’ve encountered them already. For instance, they are ServiceLocatorAwareInterface, or EventManagerAwareInterface… Whenever a class implements those interfaces, the service manager will automatically inject (through setters) the dependencies.
While this is nice, it suffers from one problem that can lead to a lot of pain and bad use from your module’s users. For instance, in ZfrRest, we have classes that are used to parse HTTP request/response object. All those parsers extends an abstract class called AbstractParser. You can see the class here.
As an example, here is the constructor :
public function __construct(DecoderPluginManager $pluginManager)
{
$this->decoderPluginManager = $pluginManager;
}
Instead of the constructor, we could have written a setter/getter to set the DecoderPluginManager, and inject the dependency through the service manager or using an initializer. BUT this assumes that your user will effectively use the service manager to create your object.
Until the day someone create the parser like this:
$parser = new BodyParser();
$parser->parse($request);
And badaboom. He didn’t call setDecoderPluginManager nor didn’t create the instance through the service manager. The dependency is not set correctly and this code will throw an exception.
BECAUSE the DecoderPluginManager is an essential dependency of this object (it cannot work without this dependency), just ask to set the dependency directly through the constructor. So that people can’t use your object badly. Even if they want to.
Use service manager as much as possible to put dependencies
This advice closely follows the one on “allow to configure everything”. Sometimes, people really want really weird things. Trust me.  But they want.
And with ZF 2 architecture, this is really simple : create most of your objects through the service manager. For instance, in ZfrRest, we add some listeners that provide useful features in REST context. The first way to do it is simply this:
public function onBootstrap(EventInterface $e)
{
$application = $e->getTarget();
$serviceManager = $application->getServiceManager();
$eventManager = $application->getEventManager();
$eventManager->attach(new ZfrRest\Mvc\HttpExceptionListener());
}
However, think about this strange guy who want to also send a mail to his grand-mother whenever an exception is thrown. How can he do it currently ? Well… he can modify your module code, but this is not really good as whenever he will update your module, he will need to make the changes again.
Fortunately, using the Service Manager solves this:
public function onBootstrap(EventInterface $e)
{
$application = $e->getTarget();
$serviceManager = $application->getServiceManager();
$eventManager = $application->getEventManager();
$eventManager->attach($serviceManager->get('ZfrRest\Mvc\HttpExceptionListener'));
}
Now, the listener is pulled from the service manager. Of course, ZfrRest has a default and sane implementation of this listener, by adding an invokable to the service manager config:
// in the module.config.php
return array(
'service_manager' => array(
'invokables' => array(
'ZfrRest\Mvc\HttpExceptionListener' => 'ZfrRest\Mvc\HttpExceptionListener'
)
)
);
Now, if someone want to override the listener, he just needs to override the invokables in his own config file:
// in the module.config.php
return array(
'service_manager' => array(
'invokables' => array(
'ZfrRest\Mvc\HttpExceptionListener' => 'MyModule\Mvc\SendBananaListener'
)
)
);
public function onBootstrap($e)
{
$events = $e->getApplication()->getEventManager()->getSharedManager();
$events->attach('ZfcUser\Form\Register','init', function($e) {
$form = $e->getTarget();
// Do what you please with the form instance ($form)
});
$events->attach('ZfcUser\Form\RegisterFilter','init', function($e) {
$filter = $e->getTarget();
// Do what you please with the filter instance ($filter)
});
}
$ php path/to/zf2/bin/classmap_generator.php -w
Creating class file map for library in 'project/library'...
Wrote classmap file to 'project/library/autoload_classmap.php'
$ php path/to/zf2/bin/templatemap_generator.php -w
Creating template file map for library in 'project/library'...
Wrote templatemap file to 'project/library/template_map.php'


Section 17538.45 of the California Business and Professional Code allows Electronic Mail Service Providers to restrict or prohibit use of their equipment for Unsolicited Electronic Mail Advertising (UEMA), when the equipment is located in the state of California. It further provides for liquidated damages of $50 per message received. reddit.com uses equipment located in California, and the reddit.com policy is that Unsolicited Electronic Mail Advertising is prohibited.
Text of section 17538.45 of the Business and Professional Code of the State of California, copied on July 17th, 2008. Check with the California Law website for the current text (search for section 17538 or "unsolicited" in the Business and Professions Code).
17538.45. (a) For purposes of this section, the following words have the following meanings: (1) "Electronic mail advertisement" means any electronic mail message, the principal purpose of which is to promote, directly or indirectly, the sale or other distribution of goods or services to the recipient. (2) "Unsolicited electronic mail advertisement" means any electronic mail advertisement that meets both of the following requirements: (A) It is addressed to a recipient with whom the initiator does not have an existing business or personal relationship. (B) It is not sent at the request of or with the express consent of the recipient. (3) "Electronic mail service provider" means any business or organization qualified to do business in California that provides registered users the ability to send or receive electronic mail through equipment located in this state and that is an intermediary in sending or receiving electronic mail. (4) "Initiation" of an unsolicited electronic mail advertisement refers to the action by the initial sender of the electronic mail advertisement. It does not refer to the actions of any intervening electronic mail service provider that may handle or retransmit the electronic message. (5) "Registered user" means any individual, corporation, or other entity that maintains an electronic mail address with an electronic mail service provider. (b) No registered user of an electronic mail service provider shall use or cause to be used that electronic mail service provider's equipment located in this state in violation of that electronic mail service provider's policy prohibiting or restricting the use of its service or equipment for the initiation of unsolicited electronic mail advertisements. (c) No individual, corporation, or other entity shall use or cause to be used, by initiating an unsolicited electronic mail advertisement, an electronic mail service provider's equipment located in this state in violation of that electronic mail service provider's policy prohibiting or restricting the use of its equipment to deliver unsolicited electronic mail advertisements to its registered users. (d) An electronic mail service provider shall not be required to create a policy prohibiting or restricting the use of its equipment for the initiation or delivery of unsolicited electronic mail advertisements. (e) Nothing in this section shall be construed to limit or restrict the rights of an electronic mail service provider under Section 230(c)(1) of Title 47 of the United States Code, any decision of an electronic mail service provider to permit or to restrict access to or use of its system, or any exercise of its editorial function. (f) (1) In addition to any other action available under law, any electronic mail service provider whose policy on unsolicited electronic mail advertisements is violated as provided in this section may bring a civil action to recover the actual monetary loss suffered by that provider by reason of that violation, or liquidated damages of fifty dollars ($50) for each electronic mail message initiated or delivered in violation of this section, up to a maximum of twenty-five thousand dollars ($25,000) per day, whichever amount is greater. (2) In any action brought pursuant to paragraph (1), the court may award reasonable attorney's fees to a prevailing party. (3) (A) In any action brought pursuant to paragraph (1), the electronic mail service provider shall be required to establish as an element of its cause of action that prior to the alleged violation, the defendant had actual notice of both of the following: (i) The electronic mail service provider's policy on unsolicited electronic mail advertising. (ii) The fact that the defendant's unsolicited electronic mail advertisements would use or cause to be used the electronic mail service provider's equipment located in this state. (B) In this regard, the Legislature finds that with rapid advances in Internet technology, and electronic mail technology in particular, Internet service providers are already experimenting with embedding policy statements directly into the software running on the computers used to provide electronic mail services in a manner that displays the policy statements every time an electronic mail delivery is requested. While the state of the technology does not support this finding at present, the Legislature believes that, in a given case at some future date, a showing that notice was supplied via electronic means between the sending and receiving computers could be held to constitute actual notice to the sender for purposes of this paragraph. (4) (A) An electronic mail service provider who has brought an action against a party for a violation under Section 17529.8 shall not bring an action against that party under this section for the same unsolicited commercial electronic mail advertisement. (B) An electronic mail service provider who has brought an action against a party for a violation of this section shall not bring an action against that party under Section 17529.8 for the same unsolicited commercial electronic mail advertisement.


The Different Professional Regions
There are many different regions in professional play. The 4 main regions are LPL, LCK, LEC & LCS.
Each of these regions consists of 10 different teams fighting for the trophy.
The Regions
Click on one of these logos to scroll to their section
LoL Pro League - China
The LoL Pro League is the top level of professional League of Legends in China. The first season of the LPL was the 2013 Spring season. The top three finishers of the playoff tournament receive automatic bids to the League of Legends World Championship. Playoffs are an eight team single elimination with each step a best-of-five series. The total prize pool is ¥2,350,000. In 2014 Riot Games began providing an English language broadcast. The format is modeled after the League of Legends Champions Korea format in South Korea. In September 2015 it was announced that Riot Games was in negotiations with Tencent to take over operations of the league.
Highlights from finals 2019.
League of Legends Champions - Korea
is the primary competition for League of Legends esports in South Korea. Contested by ten teams, the
league runs two seasons per year and serves as a direct route to qualification for the annual League
of
Legends World Championship. The LCK is administered in cooperation between Riot Games and KeSPA.
The league was formerly named League of Legends Champions before undergoing a major restructuring in
late 2014, which saw a change in the competition's format and a rebranding to its current name. OGN
reserved exclusive broadcasting rights of the league until 2016 when rights were split with SPOTV
Games. In 2019, Riot Games took over the broadcasting of LCK.
The LCK is widely considered to be the strongest League of Legends competition in the world, with
the
game's World Championship having been won by teams from the league from 2013 through 2017; 2018 was
the
first season since 2013 where a team from the LCK did not win the World Championship. T1 are the
current
champions of the LCK, winning their ninth title on 25 April 2020 after beating Gen.G in the finals
of
the LCK Spring Split 2020.
Highlights from finals 2020.
League of Legends European Championship - Europe
The League of Legends European Championship (LEC), previously known as the European League of Legends
Championship Series (EU LCS), is the name of the professional League of Legends esports league run
by Riot Games, in which ten teams compete. Each annual season of play is divided into two splits,
spring and summer, both consisting of nine weeks of round-robin tournament play, which then conclude
with play-off tournaments between the top six teams. At the end of the season, the winner of the
summer split, the team with the most championship points, and the winner of the gauntlet tournament
qualify for the annual League of Legends World Championship. The LEC represents the highest level of
League of Legends play in Europe.
With the exception of some touring events, all games of the LEC are played live at Riot Games'
studio in Adlershof, Berlin, Germany. In addition to a small studio audience, all games are streamed
live in several languages on Twitch, YouTube and Azubu, with broadcasts regularly attracting over
300,000 viewers.
The popularity and success of the LEC has attracted significant media attention. On 30 September
2016, the French Senate unanimously adopted the last version of the Numeric Law, significantly
improving the visa process for LEC players and esports athletes in general, giving a legal frame to
esports contracts, introducing mechanisms to ensure payment of cash prizes, specifying rights for
minor esport athletes, and more. A few months before, France also introduced a new esports
federation, "France Esports", which has the duty to be a representative body of esports towards the
government and serve as a "partner of the French National Olympic and Sports Committee for all
matters relating to the recognition of electronic sports as sport in itself".
Spain did the same in November 2016, creating the Spanish Federation of Video Games and Esports
Spanish Federation of
Video Games and Esports. The LEC has attracted sponsorships from Acer Coca-Cola and
American Express.
Fnatic is the only team remaining that has played in every split since the inaugural 2013 Spring
Split.
Highlights from finals 2020.
League Championship Series - North America
The League of Legends Championship Series (LCS) is the top level of professional League of Legends in
the United States and Canada. The esports league is run by Riot Games and has ten franchise teams.
Each annual season of competition is divided into two splits, spring and summer, which conclude with
a double-elimination tournament between the top six teams. At the end of the season, the winner,
runners-up and third-place team of the summer playoffs qualify for the annual League of Legends
World Championship.
With the exception of some touring events, all games of the LCS are played live at Riot Games'
studios in Los Angeles, California. In addition to a small studio audience, all games are streamed
live in several languages on Twitch and YouTube, with broadcasts regularly attracting over 300,000
viewers. The U.S. government grants athlete visas for foreign LCS competitors. The first LCS
player to be awarded a P visa was Danny "Shiphtur" Le.
The LCS has attracted sponsorships from Acer Coca-Cola and American Express. "League of Legends
Championship Series" is a Delaware limited liability company.
Highlights from finals 2020


ventura: 1 posts
honolulu: 2 posts
boulder: 1 posts
kansascity: 1 posts
pakistan: 1 posts
newjersey: 1 posts
longisland: 2 posts
columbus: 2 posts
oklahomacity: 1 posts
grandrapids: 1 posts
sacramento: 2 posts
lasvegas: 1 posts
detroit: 1 posts
fortcollins: 1 posts
stlouis: 2 posts
minneapolis: 1 posts
manila: 1 posts
sandiego: 1 posts
rochester: 1 posts
tucson: 3 posts
washingtondc: 2 posts
pittsburgh: 2 posts
charlotte: 2 posts
atlanta: 1 posts
seattle: 1 posts
dayton: 1 posts
fortmyers: 1 posts
orangecounty: 4 posts
orlando: 2 posts
vancouver: 2 posts
southjersey: 1 posts
providence: 1 posts
portland: 1 posts
dallas: 2 posts
knoxville: 1 posts
toronto: 4 posts
jacksonville: 1 posts
baltimore: 1 posts
austin: 1 posts
lancaster: 1 posts
cnj: 1 posts
nashville: 1 posts
tampa: 1 posts
louisville: 1 posts
boston: 1 posts
saltlakecity: 1 posts
greenville: 1 posts
inlandempire: 1 posts
madison: 1 posts
tulsa: 1 posts
Sep 25 Classic ASP/PHP Programmer Needed - (Broken Arrow) img
Sep 24 Classic ASP dev needed - (Kansas City, MO)
Oct 31 Jr ASP.net - MVC Developer Needed - (Orlando, FL)
Oct 31 C# ASP.net - (Tucson)
Oct 31 ASP.NET/Web Developer Intern/Student - (Sacramento)
Oct 31 .Net Developer - ASP.Net - New! - (Knoxville, TN)
Oct 30 Need ASP Developer - (Speedway/Kolb)
Oct 30 C# .NET 4 Developer Needed for 1:1 Training - (Springfield)
Oct 30 Acer Aspire one - (Kentwood michigan)
Oct 30 ASP.Net Web Application Developer (C#, ASP.NET, WCF) -
Oct 30 ASP.NET Developer - (Irvine)
Oct 29 ASP.NET Web Developer - (Seattle WA)
Oct 29 ASP.NET MVC4 website needed -
Oct 29 ASP.NET MVC4 Project -
Oct 26 Long Term Contract - C#/ASP.Net/MVC/SQL Server 2008 - (Oklahoma City, Oklahoma)
Oct 26 ASP.NET Developer - (San Clemente)
Oct 25 Dot Net Developer - (Kentuckiana)
Oct 25 ASP, ASP.NET, Flash/Action Script - (Irvine - Newport Beach)
Oct 24 Senior ASP.Net Web Developer - (St. Louis, MO)
Oct 24 Entry level ASP.NET position - (Franklin, MA)
Oct 23 Web, .net, ASP, PHP, Developer - (Rochester)
Oct 23 Software Engineer (VB.NET/C#.NET and ASP.NET) Full Time position - (Columbus, OH)
Oct 23 Classic ASP Developer - (Lake Mary)
Oct 23 ASP.NET Developer - (Denver/Boulder)
Oct 23 .Net Developer (Must Know ASPX) - (Dallas)
Oct 22 Web Developer, ASP.Net - (Portland, OR)
Oct 21 ASP .NET Web Developer - (Northern Colorado)
Oct 19 Web Developer - ASP.NET/HTML (10321) - (Honolulu, HI)
Oct 18 Innovative Start-Up Looking For Aspiring Web Graphics Designer - (Garden City)
Oct 18 ASP.Net Programmer - (Secaucus, NJ)
Oct 18 ASP Programmer -
Oct 18 10 year asp.net developer looking for work - (St.Louis,MO)
Oct 17 ASP.NET Developer - Huge Opportunity - (Richardson, TX)
Oct 16 ASP.Net/Classic ASP Developer - (Charlotte, NC)
Oct 16 ASP.NET/HTML/CSS/JAVA/C# - (SWFL)
Oct 15 Web Developer - Classic ASP - (Pittsburgh)
Oct 15 SQL / ASP Web Expert - (Tampa)
Oct 15 ASP.NET Developer (2 positions and 1 Manager) - (Laurel near Rt 32/Rt 1 Intersection)
Oct 15 .Net Developer (ASP.Net MVC, C#, SQL) - (Franklin, TN)
Oct 14 Web Developer - Coldfusion and ASP - (USA)
Oct 12 PHP & Classic ASP Programmer - (Rochester, MI)
Oct 11 ASP Programmer - (Midtown NY)
Oct 10 GlasPac and Sales - img
Oct 08 ASP.NET Developer/Programmer - (Charlotte)
Oct 04 ASP.Net VB.Net Developer to join team on South Shore - (Stoughton, MA) img
Oct 03 2 ASP.NET Developers - (Pittsburgh PA)
Oct 02 Visual Basic .NET / ASP for Real Estate Software - (Westlake Village)
Oct 02 Coding a simple ASP smtp authentication - (long branch, nj)
Oct 02 ASP.Net Developer - (Philadelphia)
Oct 02 ASP.Net Developer - (Philadelphia)
Nov 05 Web Developer - ASP.NET/HTML (10321) - (Honolulu, HI)
Nov 05 Front-End Developer - ASP.NET / HTML / CSS - (Downtown)
Nov 05 ASP.Net/MS SQL Developer - (Stockton)
Nov 05 ASP.NET Developer - (Irvine)
Nov 04 Classic ASP/ASP.NET System Developer/Analyst - (Chantilly, VA)
Nov 02 Raspberry Pi Python development help - (Westerville, OH)
Nov 02 ASP.NET Developer - (Chantilly, VA)
Nov 01 Senior Programmer with PHP, C#, ASP.NET - (Las Vegas)
Nov 01 ASP.Net 4.0, XML Cascading Dropdown list - (Jacksonville)
Nov 01 ASP.NET Web Developer -
Nov 01 ASP.NET Web Developer - (Salt Lake City, UT)
31 Oct ASPDOTNET Storefront Developer Needed - (Any Location)
31 Oct ASP.NET C# Tutor required for few hours every week - (Mississauga - Toronto-Oakville)
26 Sep NEED HELP CONFIGURING/INSTALLING NEW Acer Aspire S5 - (north burnaby)
26 Sep NEED HELP CONFIGURING/INSTAL NEW acer Aspire s5 laptop - (North Burnaby)
24 Oct ASP.NET assignment for a university course - (home based)
02 Nov Web Developer/ASP.Net Expert contract opportunity - (Toronto)


Fourth hui with the Muslim Community Reference Group
by Royal Commission of Inquiry into Attack on ChChMEDIA RELEASE
The Royal Commission held its fourth hui with the Muslim Community Reference Group in Christchurch this month as part of an ongoing discussion with Muslim communities.
The hui included a focus on New Zealand’s National Security System, particularly its counter-terrorism function, with members sharing their direct experiences of the system.
"Many Reference Group members have significant lived experience of the National Security System and the agencies within it," said Commissioner Sir William Young. “We appreciate the openness from those sharing their personal experiences with us and each other.”
"The Royal Commission is looking at the National Security System as part of the wider focus on how State sector agencies prepare for, and respond to the risk of terrorism," said Commission Member Jacqui Caine.
The priority settings for counter-terrorism are also part of the Terms of Reference for the inquiry and this is an area where community experiences are particularly valuable.
An important aspect of engagement is a two-way conversation which involves sharing and testing information. The Muslim Community Reference Group is one of many ways the Royal Commission is engaging with communities.
The full day meeting in Christchurch was the fourth in a series of meetings planned for the Reference Group.
“We appreciate the feedback we have received from communities and will ensure that those community voices inform the analysis of evidence and the formulation of recommendations for the future," said Jacqui Caine.
-ENDS-


Spring greens are tossed in a homemade shallot vinaigrette creating a light and refreshing salad for lunch or dinner.
Wild salmon is naturally rose-tinted, a delicious side effect of the shrimp and krill in its diet. But because farmed salmon subsists on feed pellets made from ground fish and soy, its flesh is naturally beige.
A cupcake is a small cake designed to serve one person,which is ii basically use birtparty or small purpose of Occasion .


Just a little background: I've had chronic pain for about 6 months, and nothing but opioids have worked for me. I've dabbled with hydrocodone, oxycodone, hydromorpone, morphine, tramadol(basically sugar pill compared to everything else), once a small amount of codeine (negligible effect, And that's all for opioids. For non-opioids, just butalbital,pregabalin, DXM, diphenhydramine, and dimenhydrinate. All of those (sans the OTCs and the hydrocodone, which was also my dad's and I used during a pain crisis, were presribed to me in the last 6 months).
My love of opioids began when I was 13 and tried my very first pill: percocet (hell of a drug to start out with, especially for a 13 year old) and I knew I was in love. I subsequently proceeded to use the rest, seeing as my parent had long forgotten there were still some left. I recently considered cold water extraction, so I decided to try it with the 6 fioricet w/ codeine pills I had gotten from the ER yesterday when I went in for a migraine I've been on this at least 3 times in the past (and it has done nothing) so I decided to try cold water extraction to get the acetaminophen out so I could take a larger dose in hopes of some pain relief.
+0:00: Ingested bitter cold water extraction mix.
+0:010: Feeling the codeine and possibly some butalbital coming on, got a pleasant buzz going and of course the beginnings of the warmth associated with opiates.
+0:20: Definite opioid feelings of warmth and a slight euphoria, although I am not a big fan of what I am assuming to be the butalbital feelings, my head is very foggy. Inserted a 25mg promethazine suppository about now, this should increase the efficacy of the codeine and help with any nausea or itchiness that might occur. Finding it a little bit hard to type, not because of disorientation but because of how clouded my brain feels. Naturally a little bit tired after not sleeping last night due to pain. Haven't noticed any caffeine effects as of yet. Slight pain reduction :) although not much euphoria :(
+0:40 Not much has changed, just laying down listening to music, feeling essentially the same. Still just very mild euphoria, but that's codeine I guess, mild.
+1:00 Not much has changed so far, head is slightly less cloudy though :)
+1:35 Still nothing, pain is basically at its average of 5 1/2 of possible 10, feeling a bit more alert, possibly the caffeine?
+2:00 Pretty much nothing. I feel like I wasted 45 minutes on the whole extraction process. Oh well.
+2:05 Starting to feel the come down effects, not too bad.
+3:10 Wow, over so soon.
My overall review of codeine is although I've heard it's a good starter opioid, it doesn't really do the others justice, anesthetically or euphorically. I'd recommend it only if you have a mild headache or just feel like getting a bit of a buzz.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Package: SB-UNICODE¶
public: algorithms for Unicode data
Constant¶
Function¶
AGE
ALPHABETIC-P
BIDI-CLASS
BIDI-MIRRORING-GLYPH
BREAK-LIST-AT
CANONICALLY-COMPOSE
CANONICALLY-DECONFUSE
CASE-IGNORABLE-P
CASED-P
CASEFOLD
CHAR-BLOCK
CHAR-DECOMPOSITION-INFO
CHAR-DECOMPOSITION
CHAR-FOLDCASE
CHAR-LOWERCASE
CHAR-TITLECASE
CHAR-UPPERCASE
COLLATION-KEY
COMBINING-CLASS
COMPOSITION-HANGUL-SYLLABLE-TYPE
CONFUSABLE-P
DECIMAL-VALUE
DECOMPOSE-CHAR
DECOMPOSE-STRING
DEFAULT-IGNORABLE-P
DIGIT-VALUE
EAST-ASIAN-WIDTH
GENERAL-CATEGORY
GET-USER-LOCALE
GRAPHEME-BREAK-CLASS
GRAPHEMES
HANGUL-SYLLABLE-TYPE
HAS-CASE-P
HEX-DIGIT-P
IDEOGRAPHIC-P
LDELETE
LINE-BREAK-ANNOTATE
LINE-BREAK-CLASS
LINE-PREBREAK
LINES
LLENGTH
LOWERCASE-P
LOWERCASE
LREF
LSTRING
MAP-GRAPHEME-BOUNDARIES
MAP-GRAPHEMES
MAP-LEGACY-GRAPHEME-BOUNDARIES
MAP-LEGACY-GRAPHEMES
MATH-P
MIRRORED-P
NORMALIZE-STRING
NORMALIZED-P
NUMERIC-VALUE
ORDERED-RANGES-MEMBER
ORDERED-RANGES-POSITION
PRIMARY-COMPOSITION
PROPLIST-P
SCRIPT
SENTENCE-BREAK-CLASS
SENTENCE-PREBREAK
SENTENCES
SOFT-DOTTED-P
SORT-KEY
STRING-SOMETHINGCASE
SVREF-OR-NULL
TITLECASE
UNICODE<=
UNICODE<
UNICODE=
UNICODE>=
UNICODE>
UNICODE-1-NAME
UNICODE-EQUAL
UNPACK-COLLATION-KEY
UPPERCASE-P
UPPERCASE
VARIABLE-P
VECTOR<
WHITESPACE-P
WORD-BREAK-CLASS
WORDS