--- layout: post title: "Domain modelling with REST" description: "Make illegal states unrepresentable by using hyperlinks as the engine of application state." date: 2016-12-07 09:15 UTC tags: [Software Design, Services, REST, Architecture] image: "/content/binary/graph-of-payment-paths.png" image_alt: "Graph of payment options, including a start node, and end node, and a node for each of the three payment types" --- {% include JB/setup %}
{{ page.description }}
Every piece of software, whether it's a web service, smart phone app, batch job, or speech recognition system, interfaces with the world in some way. Sometimes, that interface is a user interface, sometimes it's a machine-readable interface; sometimes it involves rendering pixels on a screen, and sometimes it involves writing to files, selecting records from a database, sending emails, and so on.
Programmers often struggle with how to model these interactions. This is particularly difficult because at the boundaries, systems no longer adhere to popular programming paradigms. Previously, I've explained why, at the boundaries, applications aren't object-oriented. By the same type of argument, neither are they functional (as in 'functional programming').
If that's the case, why should you even bother with 'domain modelling'? Particularly, does it even matter that, with algebraic data types, you can make illegal states unrepresentable? If you need to compromise once you hit the boundary of your application, is it worth the effort?
It is, if you structure your application correctly. Proper (level 3) REST architecture gives you one way to structure applications in such a way that you can surface the constraints of your domain model to the interface layer. When done correctly, you can also make illegal states unrepresentable at the boundary.
In my previous article, I demonstrated how to use (static) types to model an on-line payment domain. To summarise, my task was to model three types of payments:
"StartRecurrent" : "false" |
"StartRecurrent" : "true" |
|
|---|---|---|
"OriginalTransactionKey" : null |
Individual | Parent |
"OriginalTransactionKey" : "1234ABCD" |
Child | (Illegal) |
StartRecurrent
to true
. The other three combinations, on the other hand, are valid.
As I demonstrated in my previous article, you can easily model this with algebraic data types.
At the boundary, however, there are no static types, so how could you model something like that as a web service?
A major advantage of REST is that it gives you a way to realise your domain model at the application boundary. It does require, though, that you design the API according to level 3 of the Richardson maturity model. In other words, it's not REST if you're merely tunnelling JSON (or XML) through HTTP. It's still not REST if you publish URL templates and expect clients to fill data into specific place-holders of those URLs.
It's REST if the only way a client can interact with your API is by following hyperlinks.
If you follow those design principles, however, it's easy to model the above payment domain as a RESTful API.
In the following, I will show examples in XML, but it could as well have been JSON. After all, a true REST API must support content negotiation. One of the reasons that I prefer XML is that I can use XPath to point out various nodes.
A client must begin at a pre-published 'home' resource, just like the home page of a web site. This resource presents affordances in the shape of hyperlinks. As recommended by the RESTful Web Services Cookbook, I always use ATOM links:
<home xmlns="http://example.com/payment" xmlns:atom="http://www.w3.org/2005/Atom"> <payment-methods> <payment-method> <links> <atom:link rel="example:pay-individual" href="https://example.com/gift-card" /> </links> <id>gift-card</id> </payment-method> <payment-method> <links> <atom:link rel="example:pay-individual" href="https://example.com/credit-card" /> <atom:link rel="example:pay-parent" href="https://example.com/recurrent/start/credit-card" /> </links> <id>credit-card</id> </payment-method> </payment-methods> </home>
A client receiving the above response is effectively presented with a choice. It can choose to pay with a gift card or credit card, and nothing else, however much it'd like to pay with, say, PayPal. For each of these payment methods, zero or more links are available.
Specifically, there are links to create both an individual or a parent payment with a credit card, but it's only possible to make an individual payment with a gift card. You can't set up a long-term, automated payment relationship with a gift card. (This may or may not make sense, depending on how you look at it, but it's fundamentally a business decision.)
Links are defined by relationship types, which are unique identifiers present in the rel
attributes. You can think of them as equivalent to the human-readable text in an HTML a
tag that suggests to a human user what to expect from clicking the link; only, rel
attribute values are machine-readable and part of the contract between client and service.
Notice how the above XML representation only gives a client the option of making an individual or a parent payment with a credit card. A client can't make a child payment at this point. This follows the domain model, because you can't make a child payment without first having made a parent payment.
If a client wishes to make an individual payment, it follows the link identified by
/home/payment-methods/payment-method[id = 'credit-card']/links/atom:link[@rel = 'example:pay-individual']/@href
In the above XPath query, I've ignored the default document namespace in order to make the expression more readable. The query returns https://example.com/credit-card
, and the client can now make an HTTP POST request against that URL with a JSON or XML document containing details about the payment (not shown here, because it's not important for this particular discussion).
If a client wishes to make a parent payment, the initial procedure is the same. First, it follows the link identified by
/home/payment-methods/payment-method[id = 'credit-card']/links/atom:link[@rel = 'example:pay-parent']/@href
The result of that XPath query is https://example.com/recurrent/start/credit-card
, so the client can make an HTTP POST request against that URL with the payment details. Unlike the response for an individual payment, the response for a parent payment contains another link:
<payment xmlns="http://example.com/payment" xmlns:atom="http://www.w3.org/2005/Atom"> <links> <atom:link rel="example:pay-child" href="https://example.com/recurrent/42" /> <atom:link rel="example:payment-details" href="https://example.com/42" /> </links> <amount>13.37</amount> <currency>EUR</currency> <invoice>1234567890</invoice> </payment>
This response echoes the details of the payment: this is a payment of 13.37 EUR for invoice<PHONE_NUMBER>. It also includes some links that a client can use to further interact with the payment:
example:payment-details
link can be used to query the API for details about the payment, for example its status.example:pay-child
link can be used to make a child payment.example:pay-child
link is only returned if the previous payment was a parent payment. When a client makes an individual payment, this link isn't present in the response, but when the client makes a parent payment, it is.
Another design principle of REST is that cool URIs don't change; once the API has shown a URL like https://example.com/recurrent/42
to a client, it should honour that URL indefinitely. The upshot of that is that a client can save that URL for later use. If a client wants to, say, renew a subscription, it can make a new HTTP POST request to that URL a month later, and that's going to be a child payment. Clients don't have to hack the URL in order to figure out what the transaction key is; they can simply store the complete URL as is and use it later.
Using a design like the one sketched above, you can make illegal states unrepresentative. There's no way for a client to make a payment with StartRecurrent = true
and a non-null transaction key; there's no link to that combination. Such an API uses hypermedia as the engine of application state.
It shouldn't be surprising that proper RESTful design works that way. After all, REST is essentially a distillate of the properties that make the World Wide Web work. On a human-readable web page, the user follows links to other pages, and a well-designed web site will only enable a link if the destination exists.
You can even draw a graph of the API I've sketched above:
In this diagram, you can see that when you make an individual payment, that's all you can do. You can also see that the only way to make a child payment is by first making a parent payment. There's also a path from parent payments directly to the end node, because a client doesn't have to make a child payment just because it made a parent payment.
If you think that this looks like a finite state machine, then that's no coincidence. That's exactly what it is. You have states (the nodes) and paths between them. If a state is illegal, then don't add that node; only add nodes for legal states, then add links between the nodes that model legal transitions.
Incidentally, languages like F# excel at implementing finite state machines, so it's no wonder I like to implement RESTful APIs in F#.
Truly RESTful design enables you to make illegal states unrepresentable by using hypermedia as the engine of application state. This gives you a powerful design tool to ensure that clients can only perform correct operations.
As I also wrote in my previous article, this, too, is no silver bullet. You can turn an API into a pit of success, but there are still many fault scenarios that you can't prevent.
If you were intrigued by this article, but are having trouble applying these design techniques to your own field, I'm available for hire for short or long-term engagements.


To withdraw from MT5 Financial Account please Authenticate your Champion-FX.com account.
Please send us the following documents in order to verify your identity and authenticate your account:
Kindly send us these documents within 5 days to keep your account active.
If you have any questions, kindly contact our Customer Support team at support@champion-fx.com.


TARZAN A film review by Steve Rhodes Copyright 1999 Steve Rhodes RATING (0 TO ****): *** 1/2
So what is it that makes the new TARZAN so special?
TARZAN, Disney's big, animated, summer movie, has great songs, nearly perfect casting, and some funny dialog that make it a wonderful choice for the entire family. But it is the movie's animation, a technological tour de force that uses computers to enhance, not replace, traditional drawings, that almost upstages everything else.
The animators use a new computer technique that the Disney Studios call "Deep Canvas" to make the background images at once more stunningly realistic and imaginatively abstract. Words don't do it justice, but I'll try. Picture a foreground with carefully drawn, brightly-colored characters, one in which you can feel the painstaking work that animators put into every cel. That they researched and rethought every human and animal movement is obvious with their incredible attention to detail.
These foreground figures are then integrated into a lavish background that is the picture's piece de resistance. With equal parts of van Gogh and Renoir, the lush, fog-shrouded, green-forested jungle looks so lovely and believable that you want to reach out and touch it, half expecting that a museum guard will arrest you if you try.
According to the press notes, "Tarzan" is the second most adapted book ever. Its 47 adaptations are exceeded only by "Dracula." It also points out that the author of "Tarzan," Edgar Rice Burroughs, suggested in a letter to his son way back in 1936 that an animated version might be best suited to realizing his vision. His only caveat was that "It must approximate Disney excellence." Talk about having your dreams come true. How about a movie made by Disney that exceeds even their own high standards? Welcome to Disney's breathtaking instantiation of the Tarzan legend.
Glenn Close, a five-time Oscar nominee, is an acting chameleon, taking on roles from sexual predators to nurturing mothers. If you were going to be raised by an ape mother, Glenn Close would be the type you'd want, which is exactly what Disney thought, so they cast her as Kala, Tarzan's adopted ape mother.
As the story opens, Kala loses her ape baby to a tiger. This same tiger kills Tarzan's parents, so, much to the chagrin of Kerchak (Lance Henriksen), the patriarch of her gorilla family, Kala adopts the orphan Tarzan.
Probably better than any other TARZAN, this version does an extremely convincing job of giving Tarzan animal characteristics. It is easy to get so mesmerized by Tarzan's movements that you lose track of everything else. Glen Keane, Disney's star animator (Beast, Aladdin, Ariel and Pocahontas among others), is the genius behind Tarzan's looks and movements. His inspiration came from two unlikely sources, his teenage son's skateboarding and the old surfer song "Wipe Out." Keane's energetic Tarzan doesn't just swing from the vines, he surfs the branches. This single piece of inspiration gives Tarzan's movements an unbounded and joyous spirit that is exciting to watch.
Phil Collins is equally inventive, using a closet full of household items to create a magical set of jungle rhythms. With one exception, the songs are performed, as they were in TOY STORY, not by the characters but as a backdrop to the action. This frees Tarzan and the others to do what they do best without having to stop their action to break into song.
The casting of the show is particularly inspired. Tony Goldwyn, as the adult Tarzan, breathes life and charm into his part without overpowering it with needless bravado. (Alex D. Linz plays the younger Tarzan.) The scene in which Tarzan mimics Jane is the film's comedic high point.
The bulk of the film's comedic legwork is done by Minnie Driver as Jane and Rosie O'Donnell as Terk, Tarzan's gorilla pal. Jane is a proper young English lady who's an independent free spirit. The charismatic Driver is wonderfully appealing as the vulnerable but tough Jane. Just as sidesplittingly funny is O'Donnell, who says she always thought of herself as an ape. They both steal every scene they are in. Too bad they aren't in many scenes together as it would have made for an interesting comedic contest.
Disney, as it has done from BAMBI to THE LION KING, has dared to introduce genuine tragedy into a kids' movie. When the nefarious Clayton (Brian Blessed) begins to hunt the gorillas, you know that something bad will happen, and it does. Life is like that. But the story doesn't dwell on it, and the film is the stronger for its introduction into the storyline.
Tarzan's fast paced, high-spirited high jinks are certain to delight one and all. Visually astounding, the film is a mesmerizing treat worthy to be counted among Disney's best.
TARZAN runs 1:29. It is rated G. Although there some moments during the gorilla hunt that might briefly scare the youngest viewers, the picture is fine for all ages.
My son Jeffrey, age 10, said he was impressed by Disney's work on the film and gave it ***. He liked the way young Tarzan and Terk looked and thought that they were really cute together. One of his favorite parts was the way that they took you into a gorilla's family. His only complaint was about the sad part. His friend Nickolas, also 10, thought the movie was okay and gave it **. He said that he liked everything but the ending.
Email<EMAIL_ADDRESS>Web: http://www.InternetReviews.com
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


Channel layer- Browser , Mobile and Edge features
Channel Gateway- Gateway services, Throttling, Auth Microservices Proxy , Discovery etc
Components Layer - Rich set of configurable Microservices for common functions like Secure Vault Config, reporting , logging etc
Rich domain model that uses patterns like Property Groups, Logical Data Models, Remoting to abstract and simplify data access and lifecycle management
Infra as Code-Once clock deploy scripts to Cloud Platforms through Containers-Kubernetes, Pivotal Cloud Foundry and Rancher
Out of the Box CI/CD integration based on Jenkins Blue Ocean
UI based Configuration of layers
Data layer that moves beyond simple ORM and enables modelling of complex cloud native cognitive applications !
Based practice Security model built on Spring Boot 2.0 and Spring Security 5.0
Integration with Kubernetes, PCF and Rancher !
Thymeleaf based suport wih batteries for Progressive Web Apps.!


runZoned<R>
function
- R body(
- {Map<
Object, Object> zoneValues, - ZoneSpecification zoneSpecification,
- @Deprecated("Use runZonedGuarded instead") Function onError}
Runs body
in its own zone.
Creates a new zone using Zone.fork based
on zoneSpecification
and
zoneValues
, then runs body
in that zone and returns the
result.
If onError
is provided, it must have one of the types
void Function(Object)
void Function(Object, StackTrace)
and theonError
handler is used both to handle asynchronous errors by overriding ZoneSpecification.handleUncaughtError inzoneSpecification
, if any, and to handle errors thrown synchronously by the call tobody
.
If an error occurs synchronously in body
,
then throwing in the onError
handler
makes the call to runZone
throw that error,
and otherwise the call to runZoned
attempt to return null
.
If the zone specification has a handleUncaughtError
value or the onError
parameter is provided, the zone becomes an error-zone.
Errors will never cross error-zone boundaries by themselves. Errors that try to cross error-zone boundaries are considered uncaught in their originating error zone.
var future = new Future.value(499);
runZoned(() {
var future2 = future.then((_) { throw "error in first error-zone"; });
runZoned(() {
var future3 = future2.catchError((e) { print("Never reached!"); });
}, onError: (e, s) { print("unused error handler"); });
}, onError: (e, s) { print("catches error of first error-zone."); });
Example:
runZoned(() {
new Future(() { throw "asynchronous error"; });
}, onError: (e, s) => print(e)); // Will print "asynchronous error".
It is possible to manually pass an error from one error zone to another
by re-throwing it in the new zone. If onError
throws, that error will
occur in the original zone where runZoned
was called.
Implementation
R runZoned<R>(R body(),
{Map<Object?, Object?>? zoneValues,
ZoneSpecification? zoneSpecification,
@Deprecated("Use runZonedGuarded instead") Function? onError}) {
ArgumentError.checkNotNull(body, "body");
if (onError != null) {
// TODO: Remove this when code have been migrated off using [onError].
if (onError is! void Function(Object, StackTrace)) {
if (onError is void Function(Object)) {
var originalOnError = onError;
onError = (Object error, StackTrace stack) => originalOnError(error);
} else {
throw ArgumentError.value(onError, "onError",
"Must be Function(Object) or Function(Object, StackTrace)");
}
}
return runZonedGuarded(body, onError,
zoneSpecification: zoneSpecification, zoneValues: zoneValues) as R;
}
return _runZoned<R>(body, zoneValues, zoneSpecification);
}


Vim documentation: os_dos
main help file*os_dos.txt* For Vim version 7.2. Last change: 2006 Mar 30 VIM REFERENCE MANUAL by Bram Moolenaar *dos* *DOS* This file documents the common particularities of the MS-DOS and Win32 versions of Vim. Also see |os_win32.txt| and |os_msdos.txt|. 1. File locations |dos-locations| 2. Using backslashes |dos-backslash| 3. Standard mappings |dos-standard-mappings| 4. Screen output and colors |dos-colors| 5. File formats |dos-file-formats| 6. :cd command |dos-:cd| 7. Interrupting |dos-CTRL-Break| 8. Temp files |dos-temp-files| 9. Shell option default |dos-shell|
1. File locations *dos-locations* If you keep the Vim executable in the directory that contains the help and syntax subdirectories, there is no need to do anything special for Vim to work. No registry entries or environment variables need to be set. Just make sure that the directory is in your search path, or use a shortcut on the desktop. Your vimrc files ("_vimrc" and "_gvimrc") are normally located one directory up from the runtime files. If you want to put them somewhere else, set the environment variable $VIM to the directory where you keep them. Example: set VIM=C:\user\piet Will find "c:\user\piet\_vimrc". Note: This would only be needed when the computer is used by several people. Otherwise it's simpler to keep your _vimrc file in the default place. If you move the executable to another location, you also need to set the $VIM environment variable. The runtime files will be found in "$VIM/vim{version}". Example: set VIM=E:\vim Will find the version 5.4 runtime files in "e:\vim\vim54". Note: This is _not_ recommended. The preferred way is to keep the executable in the runtime directory. If you move your executable AND want to put your "_vimrc" and "_gvimrc" files somewhere else, you must set $VIM to where you vimrc files are, and set $VIMRUNTIME to the runtime files. Example: set VIM=C:\usr\piet set VIMRUNTIME=E:\vim\vim54 Will find "c:\user\piet\_vimrc" and the runtime files in "e:\vim\vim54". See |$VIM| and |$VIMRUNTIME| for more information. Under Windows 95, you can set $VIM in your C:\autoexec.bat file. For example: set VIM=D:\vim Under Windows NT, you can set environment variables for each user separately under "Start/Settings/Control Panel->System", or through the properties in the menu of "My Computer", under the Environment Tab.
2. Using backslashes *dos-backslash* Using backslashes in file names can be a problem. Vi halves the number of backslashes for some commands. Vim is a bit more tolerant and does not remove backslashes from a file name, so ":e c:\foo\bar" works as expected. But when a backslash occurs before a special character (space, comma, backslash, etc.), Vim removes the backslash. Use slashes to avoid problems: ":e c:/foo/bar" works fine. Vim replaces the slashes with backslashes internally to avoid problems with some MS-DOS programs and Win32 programs. When you prefer to use forward slashes, set the 'shellslash' option. Vim will then replace backslashes with forward slashes when expanding file names. This is especially useful when using a Unix-like 'shell'.
3. Standard mappings *dos-standard-mappings* The mappings for CTRL-PageUp and CTRL-PageDown have been removed, they now jump to the next or previous tab page |<C-PageUp>| |<C-PageDown>| If you want them to move to the first and last screen line you can use these mappings: key key code Normal/Visual mode Insert mode CTRL-PageUp <M-N><M-C-D> H <C-O>H CTRL-PageDown <M-N>v L$ <C-O>L<C-O>$ Additionally, these keys are available for copy/cut/paste. In the Win32 and DJGPP versions, they also use the clipboard. Shift-Insert paste text (from clipboard) *<S-Insert>* CTRL-Insert copy Visual text (to clipboard) *<C-Insert>* CTRL-Del cut Visual text (to clipboard) *<C-Del>* Shift-Del cut Visual text (to clipboard) *<S-Del>* These mappings accomplish this (Win32 and DJGPP versions of Vim): key key code Normal Visual Insert Shift-Insert <M-N><M-T> "*P "-d"*P <C-R><C-O>* CTRL-Insert <M-N><M-U> "*y Shift-Del <M-N><M-W> "*d CTRL-Del <M-N><M-X> "*d Or these mappings (non-Win32 version of Vim): key key code Normal Visual Insert Shift-Insert <M-N><M-T> P "-dP <C-R><C-O>" CTRL-Insert <M-N><M-U> y Shift-Del <M-N><M-W> d CTRL-Del <M-N><M-X> d When the clipboard is supported, the "* register is used.
4. Screen output and colors *dos-colors* The default output method for the screen is to use bios calls. This works right away on most systems. You do not need ansi.sys. You can use ":mode" to set the current screen mode. See |:mode|. To change the screen colors that Vim uses, you can use the |:highlight| command. The Normal highlight group specifies the colors Vim uses for normal text. For example, to get grey text on a blue background: :hi Normal ctermbg=Blue ctermfg=grey See |highlight-groups| for other groups that are available. A DOS console does not support attributes like bold and underlining. You can set the color used in five modes with nine terminal options. Note that this is not necessary since you can set the color directly with the ":highlight" command; these options are for backward compatibility with older Vim versions. The |'highlight'| option specifies which of the five modes is used for which action. :set t_mr=^V^[\|xxm start of invert mode :set t_md=^V^[\|xxm start of bold mode :set t_me=^V^[\|xxm back to normal text :set t_so=^V^[\|xxm start of standout mode :set t_se=^V^[\|xxm back to normal text :set t_us=^V^[\|xxm start of underline mode :set t_ue=^V^[\|xxm back to normal text :set t_ZH=^V^[\|xxm start of italics mode :set t_ZR=^V^[\|xxm back to normal text ^V is CTRL-V ^[ is <Esc> You must replace xx with a decimal code, which is the foreground color number and background color number added together: COLOR FOREGROUND BACKGROUND Black 0 0 DarkBlue 1 16 DarkGreen 2 32 DarkCyan 3 48 DarkRed 4 64 DarkMagenta 5 80 Brown, DarkYellow 6 96 LightGray 7 112 DarkGray 8 128 * Blue, LightBlue 9 144 * Green, LightGreen 10 160 * Cyan, LightCyan 11 176 * Red, LightRed 12 192 * Magenta, LightMagenta 13 208 * Yellow, LightYellow 14 224 * White 15 240 * * Depending on the display mode, the color codes above 128 may not be available, and code 128 will make the text blink. When you use 0, the color is reset to the one used when you started Vim (usually 7, lightgray on black, but you can override this. If you have overridden the default colors in a command prompt, you may need to adjust some of the highlight colors in your vimrc---see below). This is the default for t_me. The defaults for the various highlight modes are: t_mr 112 reverse mode: Black text (0) on LightGray (112) t_md 15 bold mode: White text (15) on Black (0) t_me 0 normal mode (revert to default) t_so 31 standout mode: White (15) text on DarkBlue (16) t_se 0 standout mode end (revert to default) t_czh 225 italic mode: DarkBlue text (1) on Yellow (224) t_czr 0 italic mode end (revert to default) t_us 67 underline mode: DarkCyan text (3) on DarkRed (64) t_ue 0 underline mode end (revert to default) These colors were chosen because they also look good when using an inverted display, but you can change them to your liking. Example: :set t_mr=^V^[\|97m " start of invert mode: DarkBlue (1) on Brown (96) :set t_md=^V^[\|67m " start of bold mode: DarkCyan (3) on DarkRed (64) :set t_me=^V^[\|112m " back to normal mode: Black (0) on LightGray (112) :set t_so=^V^[\|37m " start of standout mode: DarkMagenta (5) on DarkGreen (32) :set t_se=^V^[\|112m " back to normal mode: Black (0) on LightGray (112)
5. File formats *dos-file-formats* If the 'fileformat' option is set to "dos" (which is the default), Vim accepts a single <NL> or a <CR><NL> pair for end-of-line (<EOL>). When writing a file, Vim uses <CR><NL>. Thus, if you edit a file and write it, Vim replaces <NL> with <CR><NL>. If the 'fileformat' option is set to "unix", Vim uses a single <NL> for <EOL> and shows <CR> as ^M. You can use Vim to replace <NL> with <CR><NL> by reading in any mode and writing in Dos mode (":se ff=dos"). You can use Vim to replace <CR><NL> with <NL> by reading in Dos mode and writing in Unix mode (":se ff=unix"). Vim sets 'fileformat' automatically when 'fileformats' is not empty (which is the default), so you don't really have to worry about what you are doing. |'fileformat'| |'fileformats'| If you want to edit a script file or a binary file, you should set the 'binary' option before loading the file. Script files and binary files may contain single <NL> characters which Vim would replace with <CR><NL>. You can set 'binary' automatically by starting Vim with the "-b" (binary) option.
6. :cd command *dos-:cd* The ":cd" command recognizes the drive specifier and changes the current drive. Use ":cd c:" to make drive C the active drive. Use ":cd d:\foo" to go to the directory "foo" in the root of drive D. Vim also recognizes UNC names if the system supports them; e.g., ":cd \\server\share\dir". |:cd|
7. Interrupting *dos-CTRL-Break* Use CTRL-Break instead of CTRL-C to interrupt searches. Vim does not detect the CTRL-C until it tries to read a key.
8. Temp files *dos-temp-files* Only for the 16 bit and 32 bit DOS version: Vim puts temporary files (for filtering) in the first of these directories that exists and in which Vim can create a file: $TMP $TEMP C:\TMP C:\TEMP current directory For the Win32 version (both console and GUI): Vim uses standard Windows functions to obtain a temporary file name (for filtering). The first of these directories that exists and in which Vim can create a file is used: $TMP $TEMP current directory
9. Shell option default *dos-shell* The default for the 'sh' ('shell') option is "command.com" on Windows 95 and "cmd.exe" on Windows NT. If SHELL is defined, Vim uses SHELL instead, and if SHELL is not defined but COMSPEC is, Vim uses COMSPEC. Vim starts external commands with "<shell> /c <command_name>". Typing CTRL-Z starts a new command subshell. Return to Vim with "exit". |'shell'| |CTRL-Z| If you are running a third-party shell, you may need to set the |'shellcmdflag'| ('shcf') and |'shellquote'| ('shq') or |'shellxquote'| ('sxq') options. Unfortunately, this also depends on the version of Vim used. For example, with the MKS Korn shell or with bash, the values of the options should be: DOS 16 bit DOS 32 bit Win32 'shellcmdflag' -c -c -c 'shellquote' " 'shellxquote' " For Dos 16 bit this starts the shell as: <shell> -c "command name" >file For Win32 as: <shell> -c "command name >file" For DOS 32 bit, DJGPP does this internally somehow. When starting up, Vim checks for the presence of "sh" anywhere in the 'shell' option. If it is present, Vim sets the 'shellcmdflag' and 'shellquote' or 'shellxquote' options will be set as described above. top - main help file


Alex
Platinum member
House Type
Room No.
Address
Current Energy Plan
Plan ID
Retailor Name
Plan Name
Tariff Type
Contract Period
Estimated price
Alex
Platinum member
House Type
Room No.
Address
Current Energy Plan
Plan ID
Retailor Name
Plan Name
Tariff Type
Contract Period
Estimated price


CONVERT-LY(1) User Commands CONVERT-LY(1) NAME convert-ly - manual page for convert-ly 2.14.2 SYNOPSIS convert-ly [OPTION]... FILE DESCRIPTION Update LilyPond input to newer version. By default, update from the ver‐ sion taken from the \version command, to the current LilyPond ver‐ sion.Examples: $ convert-ly -e old.ly $ convert-ly --from=2.3.28 --to=2.5.21 foobar.ly > foobar-new.ly OPTIONS --version show version number and exit -h, --help show this help and exit -f, --from=VERSION start from VERSION [default: \version found in file] -e, --edit edit in place -n, --no-version do not add \version command if missing -c, --current-version force updating \version number to 2.14.2 -d, --diff-version-update only update \version number if file is modified -s, --show-rules show rules [default: -f 0, -t 2.14.2] -t, --to=VERSION convert to VERSION [default: 2.14.2] -w, --warranty show warranty and copyright REPORTING BUGS Report bugs via http://post.gmane.org/post.php?group=gmane.comp.gnu.lily‐ pond.bugs SEE ALSO The full documentation for convert-ly is maintained as a Texinfo manual. If the info and convert-ly programs are properly installed at your site, the command info convert-ly should give you access to the complete manual. convert-ly 2.14.2 February 2013 CONVERT-LY(1)


USER_READ_PLAYBACK_STATE
Read access to a user’s player state.
Visible to users: Read your currently playing track and Spotify Connect devices information.


The Medicines Company News: MDCO Stock Rockets 22% on Novartis Deal
Novartis is paying $9.7B for MDCO
The Medicines Company (NASDAQ:MDCO) is seeing MDCO stock flying high Monday on news of a deal with Novartis (NYSE:NVS).
The Medicines Company news is that Novartis is planning to acquire the company. This will have it paying out $85 per share in cash for MDCO stock. That has it spending $9.70 billion to bring the company into its fold.
The offer price of $85 per share is also great The Medicines Company news for holders of MDCO stock. It is roughly 45% higher than the stock’s price prior to news of a possible deal. It’s also 57% premium compared to the stock’s unaffected one-week average price.
Alexander Denner, Chairman of MDCO’s Board of Directors, says this about The Medicines Company news.
“Not so long ago, The Medicines Company was at a crossroads due to the loss of its key revenue driver. I am proud of the company’s transformation under a reconstituted board into a lean, highly focused team successfully advancing an exciting new therapy and creating tremendous value for patients and shareholders.”
Novartis will be using a cash tender offer to buy all outstanding shares of MDCO stock. Once this is complete, The Medicines Company will merge with a wholly-owned subsidiary of Novartis AG.
So long as everything goes well, The Medicines Company new release notes that it is expecting the deal to close during the first quarter of 2020. The deal still needs to complete customary closing conditions.
MDCO stock was up 22.34% and NVS stock was up close to 1% as of Monday afternoon.
As of this writing, William White did not hold a position in any of the aforementioned securities.


GET /teams/:team_id/discussions
(:read)POST /teams/:team_id/discussions
(:write)GET /teams/:team_id/discussions/:discussion_number
(:read)PATCH /teams/:team_id/discussions/:discussion_number
(:write)DELETE /teams/:team_id/discussions/:discussion_number
(:write)GET /teams/:team_id/discussions/:discussion_number/comments
(:read)POST /teams/:team_id/discussions/:discussion_number/comments
(:write)GET /teams/:team_id/discussions/:discussion_number/comments/:comment_number
(:read)PATCH /teams/:team_id/discussions/:discussion_number/comments/:comment_number
(:write)DELETE /teams/:team_id/discussions/:discussion_number/comments/:comment_number
(:write)GET /teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions
(:read)POST /teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions
(:write)GET /teams/:team_id/discussions/:discussion_number/reactions
(:read)POST /teams/:team_id/discussions/:discussion_number/reactions
(:write)


Preparation time
less than 30 mins
Cooking time
30 mins to 1 hour
Serves
Serves 4
Preheat the oven to 180C/350F/Gas 4.
For the southern fried chicken, remove the skin from the chicken pieces and slash the flesh with the tip of a sharp knife.
Lightly whisk the egg whites together in a bowl and add the chicken, mixing well to coat.
Place all the breadcrumbs, lemon zest, cayenne pepper, garlic salt, dried thyme, dried oregano, cracked black pepper and sea salt into a bowl and mix until well combined. Dip the chicken pieces in the breadcrumb mixture, ensuring all of the chicken is well coated.
Heat the vegetable oil in a deep fat fryer to 170C/338F, checking the temperature with a digital thermometer. Alternatively, half-fill a deep, heavy-based pan with the vegetable oil and heat until a breadcrumb dropped in sizzles and turns golden-brown in 30 seconds. (CAUTION: Hot oil can be dangerous. Do not leave unattended.)
Cook the chicken, a few pieces at a time, in the oil for 6-10 minutes (depending on the size of each piece), or until golden-brown and crisp, turning the pieces over occasionally. Remove with a slotted spoon and place onto a baking tray, then cook the chicken in the oven for 15 minutes, or until cooked through (the juices should run clear when the chicken is pierced in the thickest part with a skewer). Keep warm.
For the spicy tomato ketchup, place the vinegar, chilli, star anise and sugar into a heavy-based, non-reactive pan and bring to a simmer. Add the tomatoes, then all of the other remaining ketchup ingredients, apart from the cornflour and water mixture. Bring to the boil, stirring frequently to prevent the mixture from catching on the bottom of the pan.
Reduce the heat to a simmer and cook for 30 minutes, stirring occasionally to ensure the mixture doesn't stick to the bottom of the pan.
Transfer the ketchup mixture to a food processor and blend to a smooth purée. Strain the mixture through a fine sieve, discarding any solids.
If the ketchup is too thin for your liking, return the ketchup to a clean pan and bring to the boil. Stir in the cornflour and water mixture and cook until thickened to the desired consistency.
For the coleslaw, place the egg yolks, vinegar and mustard into a food processor with a pinch of salt and blend until smooth. With the motor running, slowly pour in the oils through the feeder, alternating between them as you go, until the mixture thickens to the consistency of mayonnaise.
Whisk in the water and lemon juice and season, to taste, with salt and freshly ground black pepper.
Place the carrots, cabbage, onion and parsley into a bowl and add enough mayonnaise to lightly coat.
To serve, divide the chicken pieces among four serving plates and spoon the coleslaw alongside. Spoon the tomato ketchup into small ramekins or sauce bowls and serve alongside.


--- layout: page title : About header : About IPRUG group: navigation ---
Ipswich Ruby User Group was set up to discuss the latest and greatest in the Ruby Community (and to get together for beer and burgers and a good chat about all things technical).
Since then several other tech groups have sprung up in Ipswich, and we've now semi-merged with FESuffolk. The talks (including Ruby, and not just front end-related) happen on the traditional FESuffolk night (the UCS venue is much more suitable), and what was IPRUG is now a general social meetup for any kind of developers. We might do some hands-on hacky type things sometimes – we'll see.
We meet at the Brewery Tap one Tuesday a month, two weeks after FESuffolk. That makes it 15 days after the last Monday in the month, but it's much easier to just work it out based on the FESuffolk date!
Now there aren't any formal talks, it doesn't really matter what time you turn up, but there'll probably be people there from 6.30 or 7 pm.
Contact Kerry for more information.
Follow @iprug on Twitter or join the Google group to keep up-to-date.


The first version will be a simple one using English language words, which assumes that a single letter is represented by a single glyph. When I am happy that the algorithm is working, I'll change it to support dau-glyphs as well.
Version 1
This version will write the grid out to the console. There will be no web representation....Version 2
This version is converted to oo style. And can take dau-glyphs. Still no web representation...This should run automatically, look to the console for results


| Development Autocad |
Developing maps in Autocad |
$40.00 |
80 |
$3,200.00 |
| Development animation in Blender |
Developing animation in Blender |
$40.00 |
80 |
$3,200.00 |
| Rendering in Sketchup PRO |
Rendering in Sketchup PRO |
$40.00 |
80 |
$3,200.00 |
| Development Windows 7 driver |
Development Windows 7 driver |
$40.00 |
80 |
$3,200.00 |
| Development Windows 10 driver |
Development Windows 10 driver |
$40.00 |
80 |
$3,200.00 |
| Development Linux driver |
Development Linux driver |
$40.00 |
80 |
$3,200.00 |
| Development Android application |
Development Android application |
$40.00 |
80 |
$3,200.00 |
| Development IOS application |
Development IOS application |
$40.00 |
80 |
$3,200.00 |
| Development Cloud application |
Development Cloud application |
$40.00 |
80 |
$3,200.00 |
| Development Communication protocol |
Development TCP/IP Communication protocol |
$40.00 |
80 |
$3,200.00 |
| Accomodation costs |
Accomodation costs in USA |
$40.00 |
80 |
$3,200.00 |
| SEO |
Optimize the site for search engines (SEO) |
$40.00 |
20 |
$800.00 |
| Testing |
14 Months test period |
$400.00 |
14 |
$6400.00 |
| Maintanance |
10 Changes of web page on demand |
$100.00 |
1 |
$100.00 |


PHENOMENON A film review by David N. Butterworth Copyright 1996 David N. Butterworth/The Summer Pennsylvanian
Directed by Jon Turteltaub Rating: ** (Maltin scale)
In "Phenomenon," John Travolta stars as George Malley, a big-hearted, small-town auto mechanic who goes from everyman to einstein overnight. This ersatz drama strives for depth and meaning but instead drips like corn syrup.
There's a birthday party for George at the local watering hole. All his best friends are there. During a chess game, George steps outside for some air. It's late. He's alone. He's had a few to drink. There's a blinding flash, a starburst, some celestial bolt of energy. George is knocked flat on his back. When he comes to he wanders back into the bar. Checkmate! George's first miracle. From thereon, George acquires an insatiable appetite for knowledge. Suddenly he's a 2-3 books a day man. By the end of the film he's a 4-5 books a day freakshow. He can perform telekinetic party tricks with pens and pencils and other paraphenalia. He can break mirrors, predict earthquakes, and feel other people's pain, but he can no longer sleep at night. George's newfound skill set unbalances the equilibrium of the sleepy market town. He alientates his friends with his cosmic powers. They're scared of what he can do, but they're much more interested in what the UFO looked like than in his brilliant new ideas and inventions. Naturally enough, George is soon picked up by the FBI which considers him a security risk. They want to poke him and prod him, have him crack codes and name as many mammals as he can in sixty seconds (he does so alphabetically, which I suspect most people can). A Berkeley man is also interested.
George might be able to unravel high-speed morse patterns but he can't decipher women. Lace (Kyra Sedgwick) is a case in point.  About men, generally. About her husband, specifically, who walked out on her. Sure, she has every right to spurn George's advances. Once or twice, maybe, or even a dozen times. But after about fifty or so you wonder if they had to make a **movie** about it!
Sedgwick is pensive and furrowed and a little bit dour. Hers is essentially a non-part; we learn more about Lace's kids than we do about her. She makes artistically-challenged chairs but that's about it. Travolta's George tries to win her over with that irresistible teddy bear grin of his: "I'd love to get my hands on your carburetor" he tells her. Yes, he actually says that.
Travolta is as darling as ever; Forest Whitaker (as George's pig-farming friend Nate, who carries a torch for Diana Ross) and Robert Duval (the town's crusty general practitioner) are typically solid in support; Sedgwick, as discussed, is wasted.
"Phenomenon" is occasionally cute and mostly inoffensive but its soundtrack is truly grating. Not so much Thomas Newman's high fructose score, but more the preponderance of "hit" songs that conveniently punctuate the visuals just when the movie starts to drag. Peter Gabriel's "I Have the Touch," for example. Duh! Another bonehead ballad underscores a haircutting sequence that's about as close to "Ghost" as you're gonna get, with scissors and shaving cream standing in for potter's wheel and wet clay.
Billed as a feel-good movie, "Phenomenon" coddles the viewer for near on two hours with picturesque scenes of rolling farmland, heartfelt human situations, poignancy, expectation and hope. It observes for long periods of time without muscling in on anything. It bides its time. Then, finally, it beats you about the face and neck with its message about the human spirit in some revelatory denouement that is at once flagrant and unnecessary.
Cut the songs, beef up Sedgwick's role, don't sit the fence between fantasy and reality, and you've got yourself a better movie already. Failing that re-edit, "Phenomenon" should be avoided by anyone with an intolerance to saccharine.
-- David N. Butterworth
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


NodeMCU - HTTP Server
Configuration - Please Wait...
Firmware Update
0%
Drag & Drop firmware file here
-or-
Click to open the file Browser
π


Ocean [aj79], ocean, in Crystal Sea
Last updated Turn #111
Ocean [aj79], ocean, in Crystal Sea
------------------------------------------------------------------------
16: Pleasure Sloop [v5n], ship, 30 hulls, 1 rowing port, 90 sails,
16: 10% damaged, arrived from Ocean [ak79], owner:
16: Dorothy [v1b], Pen, with one worker, 28 soldiers, 94 sailors,
16: accompanied by:
16: Cindy [z1c], Pen, with 14 peasants, 42 soldiers
18: Dorothy [v1b] caught 50 fish.
19: Pleasure Sloop [v5n], ship, 30 hulls, 1 rowing port, 90 sails,
19: 10% damaged, departed for Ocean [ai79].
Routes leaving Ocean:
North, to Ocean [ai79], 6 days
East, to Ocean [aj80], 6 days
South, to Ocean [ak79], 6 days
West, to Ocean [aj78], 6 days


|
Hello #{user.firstName} #{user.lastName},
We’ve received your request to cancel your Kinsu policy. Your coverage will run until the end of the month when it will officially be cancelled. As always,
contact us you have any questions or concerns.
With kindness,
Kinsu Support
Email:
<EMAIL_ADDRESS>Phone:
+44 (0)<PHONE_NUMBER>
Kinsu is a trading style of Advent Solutions Management, Ltd. Advent Solutions Management, Ltd is authorised and regulated by the Financial Conduct Authority. (FCA reference number: 308751.)
|
|
|


CON
About
Speakers
Schedule
News
BUY TICKET
CONFERENCE
Business Conference
The sky was cloudless and of a deep dark blue spectacle before us was indeed sublime
BUY TICKET


Use this app to quickly measure your cutter length using the pressure sensitive z zero plate accessory.
Your Handibot comes with a number of variables with preset values that it uses in operations to assist you. These variables all have default values, but you are able to modify them to suit your specific needs. After you change them, the values will persist even when the tool is turned off. These preference settings are conceptually at a higher, use-and-utility level than the values set in the System Configuration available in the left side pull out; the latter define the actual motion and mechanical operation of the tool.
The preference settings are saved using a system of "persistent variables". There are several ways these persistent variables can be modified directly or by job files, but for the moment the simplest approach is to just change them here.
Handibots are a new kind of power tool. They are intrinsically safer than manual power tools. But please read the safety information to understand the precautions you should observe with these new tools.
The Handibot Manual provides information on getting-started, setting-up, and using your Handibot.
Additional resources and help are available on the Handibot User Forum.
The following is a listing of the current, system-wide configuration tree for the FabMo digital fabrication platform that is running on your Handibot. It can be useful for diagnostics:


Cardflight Demo
Shuttle Reader Demo
Insert the Shuttle Reader to get started.
Card Information
Type:
Empty
Card Type:
Empty
Last Four:
Empty
Zip Code:
Empty
Charge Information
Token:
Empty
Amount:
$
Status
Captured:
Empty
Voided:
Empty
Refunded:
Empty


Shameless, Villainous, and Wicked: a Keller Family History
The Story
This is my dad’s version of the West Point Hazing Scandal of 1900.
One hundred years ago, in an underground boxing match at West Point, my great-grandfather Frank Keller beat up a schoolmate named Oscar Booz so badly that Booz dropped out, moved home, and died.
The death looked like hazing: Keller was a senior, Booz was a freshman, and West Point had a well-known history of allowing upperclassmen to discipline new students. The media caught wind of it, the US Congress convened an investigatory committee, and then my great-grandfather, suddenly embroiled in a national scandal, had no choice but to travel to the capital to clear his name.
A trumpet screams and a headline spins into focus: Frank Keller, West Point cadet, interrogated by US congressional committee! My dad is always quick to assure me and my sisters that Keller was eventually cleared of all guilt. But the point, he says, is that it was by the fists of our great-grandfather that the people of the United States uncovered a systematic network of violence in their nation’s most prestigious military academy.
In conclusion, what a guy.
Like all family histories, this one has some holes. Chief among them is the resolution: if my great-grandfather really did beat up a classmate so badly that he died, shouldn’t he have been found guilty of something?
For an answer I looked to the online digital archives of the New York Times. The paper had extensive coverage of the scandal. From these records I learned that, in the courtroom and in the press, the man who ended up being put on trial wasn’t my great-grandfather, who had been cruel enough to punch a young schoolmate in the face and gut until he blacked out.
It was his opponent, freshman Oscar Booz—who had been too cowardly to fight back.
The Military Inquiry
On December 19, 1900, cadet Rigby Valiant described how he had been hazed at West Point:
[Valiant] had taken part in pillow fights and a “rat funeral.” The latter was held in his tent. The body of a dead rat was placed on top of a box and a towel laid over it. Four lighted candles were placed on the corners of the box. A high priest was appointed… Flowers were placed around the body of the rat. The services lasted about half an hour. Several upper-class men took photographs of the proceedings, after which the rodent was buried.
Who listened to this curious testimony? Not a congressional committee, it turns out, but rather a panel of judges on a military court of inquiry. The hazing scandal my dad described actually consisted of two investigations: the first by the US Department of War, the second by the US Congress. This double-investigation struck some people as unnecessary. John A.T. Hull, Chairman of the Committee of Military Affairs, said that military inquiry would already be exhaustive and critical and that “it was erroneous to believe that the army was interested in shielding West Point.” Unsurprisingly, nobody fell for that.
And with good reason, too, as the military inquiry into the death of a young man quickly devolved in a series of breezy chats with good boys about their madcap misadventures at boarding school. Cadets confessed to the court that they were forced to stand on their heads in bathtubs, crow like roosters, and eat pineapples soaked in quinine. Cadet Orfield Tyler said that sometimes the older students would sneak into the rooms of freshmen late at night, remove their socks, and proceed to drip candle wax on their bare feet. Cadet M. Shinkle of Ohio introduced everyone to the ‘Sammy Race,’ a ritual that was later described in an edition of the monthly magazine Judge’s Library:
Spoons were placed in the right hands of the victims. Both began to ladle out molasses and pretend to feed each other. It was nothing but pretense, for Willetts, by a good guess, daubed the whole of his spoonful over Griscomb’s shirt-front. Griscomb retaliated by smearing Willett’s trousers… It is the idea of the ‘Sammy Race’ to have the cadets unintentionally plaster each other with molasses.
An atmosphere of almost absurd merriment settled over the proceedings. Cadet Benjamin F. Miller, who had known Booz even before attending West Point and might have been expected to feel some remorse about his death, took the stand and talked about hazing “with his face wreathed in smiles.” Cadet Charles McEby told a funny joke:
[Examiner] Did you ever see a man faint while undergoing any of these exercises?
[Witness] Well, I have known a man to feign.
[Examiner] Under what form of exercise?
[Witness] Eagling, I think, Sir.
[Examiner] How long did he exercise?
[Witness] I can’t exactly say, about five or six minutes, I think.
[Examiner] Who was that man?
[Witness] Myself, Sir.
This reply caused laughter, in which the women spectators joined.
 For at least some members of the audience, the inquiry of hundreds of West Point cadets served as a free, weeklong beefcake parade. When Cadet James M. Hobson testified, the reporter from the New York Times observed that “the women in the gallery stared at him and never took their eyes off the witness until he left the room.”  This “caused the women in the gallery to titter audibly.”
Booz and Keller didn’t fade entirely to the background. While on the stand, many witnesses made sure to remind the court that, objectively, Booz was big sissy—an opinion which met with a general consensus. On the second day of the inquiry fourteen cadets took the stand, and “all of them who knew Booz declared that his standing with his classmates was not very high, as they looked upon him as a coward.” Cadet McEby, the cadet who had pretended to faint when he was supposed to exercise, said that Booz remained a wuss until the very end: he “had not shown courage in his fight with Keller.”
In fact, over the course of the inquiry Booz was methodically stripped of any redeeming qualities. He was dumb: he was in the lowest section of math classes and about to fail out; according to his foreign language teacher, he “looked like a man who the more he had to learn the less he seemed to know.” He was dishonest: Cadet James Prentice claimed to have caught him hiding a book inside a Bible. He was feeble: according to Cadet Wade Carpenter, Booz’s eyes were weak and his legs were small and, if you thought about it, he “was not a strong man.” As ever with Booz, the cadets at West Point pulled no punches.
 He retaliated against the upperclassmen who antagonized him. His big misstep came one night when he was on guard duty. Booz had been instructed to remain silent by West Point staff but was being prodded by an older cadet to speak; Booz eventually broke down and told the older cadet to go to hell. The upperclassmen understood this sullenness as arrogance and immediately arranged the boxing match to teach Booz a lesson. They drafted Keller to be his opponent.
To a reasonable person, the idea of beating up a guy for being a brat may seem extreme, but it became clear over the course of the inquiry that the cadets were unanimously unreasonable in one important way: they were obsessed with the idea of “conceit.” The social divides that marked American society were supposed to dissolve at the gates of West Point. As one graduate told the press, “the sons of a washerwoman and of a millionaire are on the same footing when they enter the academy.” The cadets who testified at the inquiry reiterated this point but, importantly, they offered it less as a statement of fact and more as a statement of purpose. They knew West Point wouldn’t become a beacon of equality by accident. It was their duty to make it one.
The methodology the cadets designed to achieve this goal was simple. First, select a freshman with an overlarge ego. Second, force him to undertake an embarrassing or slightly uncomfortable task. Third, prove to him that he is no better than his peers, and then fourth, welcome him back into the fold of warm, loving brotherhood. This process served its purpose for many students. For them, hazing was simply a small painful step on the road to popularity. Cadet Fred Deen, for example, admitted that as a freshman he had been badly bruised in a fifty-eight round boxing match with an upperclassman, but that it wasn’t that bad because “he came out of the fight with glory.” Another cadet pointed out that popular cadets were subjected to more harassment than their unpopular peers, and that being ignored was much worse than being abused.
But the cadets’ discipline system broke down for Booz. The abuses he suffered did not gain him entrance into a heady ring of fraternal bonhomie. Rather, according to the testimony given during the military inquiry, all he achieved in his match with Keller was an affirmation of his across-the-board awfulness. Even immediately after the fight, two cadets continued to provoke Booz. Cadet Orfield Tyler told him that he had not “acted exactly fair” during the match, and Cadet John Herr chided him “that his actions were cowardly and were so regarded by the others.” To give a sense of how universally disliked Booz was, Tyler and Herr were the cadets Booz had selected to be his seconds in the boxing match, two schoolmates he evidently felt close to at the academy (a feeling that Cadet Tyler was sure to confirm was in no way mutual, assuring the court that he only served as Booz’s second because Booz had asked and he “could not well refuse”).
Booz was left alone after his loss to Keller. He withdrew from school a few months later. At the close of the military inquiry into his death, the judges found no reason to censure anybody at West Point.
The Congressional Committee
The congressional investigation convened about two weeks after the conclusion of the military inquiry. The atmosphere was markedly more confrontational. The charge against West Point was led by congressman Edmund H. Driggs from Brooklyn, a second-term Democrat who would sometimes decline to question a witness and instead shout broadsides at him:
[Driggs] You are satisfied that you hazed Mr. Macarthur?
[Cadet Dockery] Yes, Sir.
[Driggs] Did you think it was cruel?
[Cadet Dockery] Yes, Sir.
[Driggs] Well, young man, for your information I will tell you that I think it was atrocious, base, detestable, disgraceful, dishonorable, disreputable, heinous, ignominious, ill-famed, nefarious, odious, outrageous, scandalous, shameful, shameless, villainous, and wicked.
In the words of a New York Times journalist, who I suspect had been sitting on this one for weeks, Driggs handled all the witnesses he faced “without gloves on.” He sneered that one cadet was having a “convenient memory” when he forgot the details of how he had hazed underclassmen. He detained another cadet on the stand for hours until the witness almost broke into tears. One day, he badgered a cadet so brutally that the congressional chamber had to be cleared because all of the spectators were hissing.
The congressional committee quickly discovered that hazing at West Point was not the lark it appeared to be during the military inquiry. Cadets reluctantly confessed to physical exhaustion, hysterical convulsions, hospital visits, and nights passed in dark tents listening to their whimpering classmates. One cadet described a boxing match he had participated in during his first month at the academy:
Shannon hit me a couple of times on the jaw and I was knocked down. I don’t remember anything more until I came to lying on the ground. My seconds told me the fight was over and Shannon had won. Then I dressed myself and returned to camp. My jaw was sore and swollen. I could not eat anything at breakfast, and I went to the hospital. The surgeon there examined me and said my jaw was broken. I was in hospital for two weeks.
The investigation revealed a system of hazing that was not only brutal, but complex and institutionalized. Upon entering West Point, freshmen were assigned upperclassmen to whom they would act as manservants. A young cadet was expected to sweep his superior’s tent, make his bed, do his laundry, prepare his clothes, and discharge any other duties as necessary. Breaches in conduct were referred to an elite standing committee of upperclassmen. If the crime was deemed severe enough, this “Fighting Committee” would assign an upperclassman to face the freshman in a secret boxing match. If he wanted, the freshman could nominate another classmate to replace him or simply refuse to participate. But the costs were high: any student who didn’t fight “would be cut and ostracized by the whole corps.”
The cadets doubled down on the defenses they had put forward during the military inquiry: hazing eliminated weakness and purged arrogance. They said it was for the benefit of new students, teaching them “the necessity of prompt and unquestioned obedience.” They held that it wasn’t that severe; one cadet pointed out that regular assignments at West Point were much more taxing, recalling a summer night when, during a parade, thirteen men had fainted from exhaustion. And, of course, they repeated the line that had worked so well with the military judges: any man who was afraid of a little horseplay was a coward and had no business in the army.
The members of the congressional committee did not take this opportunity to remind the cadets that cowardice was not grounds for assault; far from it, they threw themselves into the fray and started identifying all the people they thought were cowards. Congressman Driggs, having established his macho man credentials through his encyclopedic knowledge of boxing, denounced the code for fighting at West Point as “infamous and unmanly.” The cowards, he said, were the upperclassmen who allowed the hazing to continue. So fervent was his belief that at one point he stood up, leaned against the bench, waved his finger at the witness, and bellowed that the culture he had revealed at West Point was nothing more than “brutal bullyism.”
Ironically, perhaps because Congressman Drigg’s examinations revealed several instances of abuse much worse than had been inflicted on Booz, the fight between Keller and Booz (and the variety of other small abuses that Booz had suffered) received relatively little attention from the court. A few cadets noted that Keller was a pretty small guy and a bad fighter, hardly the sort who could kill a man in a single blow. One cadet who witnessed the fight between Keller and Booz believed that Booz was never knocked out—he just fell down and chose not to get up. In its final report, the congressional committee decided that Booz’s death could not be formally attributed to his mistreatment at West Point.
But the judges did offer a general indictment of the hazing practices they had uncovered, saying that “something at the academy has benumbed the consciences of most of these otherwise creditable young men as to the treatment due from the strong and experienced to the weak, the embarrassed, and the inexperienced.” They had zeroed in on the central contradiction of hazing at West Point: in an effort to create a society in which everyone was equal and nobody was conceited, the cadets had actually built a system of informal indentured servitude enforced by physical abuse. The result of hazing wasn’t the elimination of arrogance among underclassmen—it was just the enablement of cruelty among upperclassmen.
Some cadets were unimpressed with this interpretation. Unrepentant, too; in the words of cadet Charles Burnett, “I would like to say that Congress and the people do not understand West Point.”
The Fight
So what about my great-grandfather—did he kill Booz?
On the afternoon of August 6th, 1898, a group of West Point cadets gathered at Fort Putnam, a secluded spot on campus. Three sentinels were dispatched to watch for any approaching faculty members. Frank Keller and Oscar Booz entered a small boxing ring, the boundaries of which had been created by the bodies of their classmates. Both fighters had stripped to the waist.
Although Keller and Booz had been matched for size, Booz was still slightly taller, broader, and heavier. Keller had never been in a fight before. The result of the match was not preordained—Keller’s classmates told him he would have a “tough customer.”
When the timekeeper called for the first round to begin, Booz immediately launched a volley of punches. He landed several blows on Keller’s shoulders. Keller fended off this attack without serious harm, and after about thirty seconds he saw an opening: he landed a hit under Booz’s left eye. Booz started bleeding. When he saw the blood, he started crying.
Booz stopped fighting in the second round. He turned his back and tried to run away, but the barricade of human bodies surrounding the ring was unmovable. Keller yelled at Booz, threatening to punch him in the back if he continued to show cowardice. Booz didn’t respond. The spectators taunted Keller. They demanded that he put an end to the match.
So Keller punched Booz in the back. And then he did it again two or three times.  Booz turned around to face Keller and got punched in the right eye. Again, the referee lifted him up and instructed him to continue. The final blow was delivered to Booz’s stomach. Keller believed that it “was neither a knock-down nor a knockout blow,” but Booz remained motionless on the floor until the round had finished and he had officially surrendered.
Afterwards, Keller crossed the ring and extended his hand to his opponent. Booz, one hundred miles away from home and bleeding on the ground, took it. According to my great grandfather, he was smiling.
Did he think it was over?


England fans slate Trent Alexander-Arnold after Kosovo clash
Trent Alexander-Arnold started both games for England.
by Jay WilliamsTrent Alexander-Arnold’s latest performance for England has attracted criticism on social media.
England beat Kosovo 4-0 to add gloss to their qualifying campaign. The Three Lions had already qualified for Euro 2020 after the 7-0 win against Montenegro last Thursday.
Alexander-Arnold picked up his eighth and ninth international caps over the break. He was preferred to Kieran Trippier in the starting line-up for both matches.
England fans blast TAA
The 21-year-old also got the nod ahead of Aaron Wan-Bissaka, Kyle Walker and Reece James, who all missed out on the first-team squad. But his performance did not impress some England fans.
Alexander-Arnold was not able to replicate his Liverpool form during the match against Kosovo. He is normally so reliable bombing up and down the right-wing and providing excellent crosses.
However, England fans have been critical of Alexander-Arnold’s display. With a number of other right-backs pushing for the starting spot, he might need to improve his international game sooner rather than later.
Here are some tweets from England supporters discussing Alexander-Arnold’s showing against Kosovo.
Have something to tell us about this article?
Let us know


|
Please create an account for your application to faciliate
your logging onto the system again in the future. You will need
to provide your username and password every time you wish to access your application.
Please note that your username and password should consist of
alphabets and numeric characters only without any spaces, and
your password is case-sensitive.
IMPORTANT: Please complete and submit your application
within 4 weeks from the date
of the creation of your account. If you do not submit your application
by that time, all records you have entered into the system will
be deleted.
* Required fields
|


- saturate(double) - Static method in class engine.util.Util
-
Ensures val
is in the range of 0.0 to 1.0.
- save(String, String) - Method in class engine.rendering.ArrayBitmap
-
Saves an ArrayBitmap to a file.
- save(String, String) - Method in class engine.rendering.LightMap
-
Saves this LightMap to a file.
- scale(double, double, double) - Method in class engine.space.AABB
-
Creates a new AABB equivalent to this, but scaled away from the origin by
a certain amount.
- scaleToARGB(double) - Method in class engine.rendering.Color
-
Returns a 32-Bit ARGB version of this color, with intensity scaled by
scaleAmt.
- Scene - Class in engine.core
-
Represents an entire game scene, including any objects or players.
- Scene(ISpatialStructure<Entity>) - Constructor for class engine.core.Scene
-
Creates a new Scene.
- set(int, int, int) - Method in class engine.rendering.ArrayBitmap
-
Sets a pixel at a specific location.
- setFlipX(boolean) - Method in class engine.components.SpriteComponent
-
Sets whether the sprites is flipped on X
- setFlipY(boolean) - Method in class engine.components.SpriteComponent
-
Sets whether the sprites is flipped on Y
- setFrame(int) - Method in class engine.components.SpriteComponent
-
Sets which frame of animation this is currently on.
- setIntensity(double) - Method in class engine.components.LightComponent
-
Sets the intensity of the light
- setMenuStack(MenuStack) - Method in class engine.util.menu.Menu
-
Sets the MenuStack for this menu.
- setTransparency(double) - Method in class engine.components.SpriteComponent
-
Sets the transparency of this sprite.
- setVal1(double) - Method in class engine.util.DoublePair
-
Sets the first double.
- setVal2(double) - Method in class engine.util.DoublePair
-
Sets the second double.
- setVolume(double) - Method in class engine.audio.Sound
-
Sets the volume of this sound to a new value.
- setVolume(String, double) - Method in class engine.components.AudioComponent
-
Sets the volume of a sound to a particular value.
- Sound - Class in engine.audio
-
Represents a playable sound.
- Sound(IAudioDevice, SoundData, double, double, boolean) - Constructor for class engine.audio.Sound
-
Creates a new Sound.
- SoundData - Class in engine.audio
-
Represents audio data for a particular audio device.
- SoundData(IAudioDevice, String) - Constructor for class engine.audio.SoundData
-
Creates a new SoundData object.
- SoundFactory - Class in engine.util.factory
-
A factory for creating Sounds.
- SoundFactory(IAudioDevice, String) - Constructor for class engine.util.factory.SoundFactory
-
Creates a new Sound Factory
- SpriteComponent - Class in engine.components
-
Draws a sprite where this entity is.
- SpriteComponent(Entity, double, double, SpriteSheet, int, Color) - Constructor for class engine.components.SpriteComponent
-
Creates a new SpriteComponent
- SpriteComponent(Entity, double, double, SpriteSheet, double, Color) - Constructor for class engine.components.SpriteComponent
-
Creates a new SpriteComponent
- SpriteComponent(Entity, double, double, SpriteSheet, int[], double, Color) - Constructor for class engine.components.SpriteComponent
-
Creates a new SpriteComponent
- SpriteComponent(Entity, double, double, SpriteSheet[], int[], double, Color) - Constructor for class engine.components.SpriteComponent
-
Creates a new SpriteComponent
- SpriteComponent(Entity, double, double, SpriteSheet[], int[], double[], int[], Color) - Constructor for class engine.components.SpriteComponent
-
Creates a new SpriteComponent
- SpriteSheet - Class in engine.rendering
-
A 2D sheet containing various sprites.
- SpriteSheet(Texture, int, int, int) - Constructor for class engine.rendering.SpriteSheet
-
Creates a SpriteSheet
- SpriteSheetBorderMaker - Class in engine.util.preprocessing
-
Generates borders on an existing sprite sheet with no borders.
- SpriteSheetBorderMaker() - Constructor for class engine.util.preprocessing.SpriteSheetBorderMaker
-
- SpriteSheetFactory - Class in engine.util.factory
-
A factory for creating SpriteSheets.
- SpriteSheetFactory(TextureFactory) - Constructor for class engine.util.factory.SpriteSheetFactory
-
Creates a new Sprite Sheet Factory.
- start() - Method in class engine.core.CoreEngine
-
Begins running the game engine and all it's various components
- stop(int) - Method in interface engine.audio.IAudioDevice
-
Stops playing an audio object through this device and resets its position
to the start of the audio.
- stop(int) - Method in class engine.audio.openal.OpenALAudioDevice
-
- stop() - Method in class engine.audio.Sound
-
Stops playing this sound and resets its position to the start of the
audio.
- stop(String) - Method in class engine.components.AudioComponent
-
Stops playing this sound and resets its position to the start of the
audio.
- stretch(double, double) - Method in class engine.space.AABB
-
Creates a new AABB equivalent to this, but stretched by a certain amount.


{% extends 'welcomepage/base.html' %} {% load staticfiles %} {% block content %} Event Creation Event Management Event Promotion {% endblock %}


An app can host one or more careers sites, e.g. one for graduate recruitment, one for a specific country, etc.
Each site might support:
A tenant can designate (via some settings app) any site as the "primary", i.e. the main careers site.
Other apps will typically target the primary board when they create links to jobs (or to the site itself), e.g. links in:
If your app hosts any board that the tenant may want to mark as the primary board (even in the future), or that other apps may want to generate links to, then it must declare some details about that board to other apps by producing (as non-SoT):
GET /careerSites/forApp
Response:
Most sites have some kind of header or common area at the top of the page where the candidate's login status etc. is displayed.
Your site should inject HTML for the general buttons in this area, by consuming:
GET /actions/byCandidate/anonymous/general
Response:
or if the candidate is logged in:
GET /actions/byCandidate/me/general
Your site likely serves a "job details page" where the candidate can read the job description and click to apply.
If your site supports login (a site that doesn't should only display publicly visible jobs), then this page should sit behind a loggedIn filter (as per conventions).
This way a candidate who was logged in at another app (e.g. UberApply) and then linked to here (e.g. by clicking "View job details"), will be asked to log in, which should happen invisibly, and can then (for example) see internal details for the job if they are an internal.
Your site should parse the job's ID from the URL, then use it to consume APIs to get details about the job:
GET /jobs/byID/{job}
Response:
GET /jobs/byID/{job}/description
You should display an indicator to show if the job is internal only (to guide internals not to share it).
Your site can render the job using the following logic to handle internal candidates:
- if your site supports login - if the candidate is logged in - if the candidate is internal - if the job is visible internally - render the job, with its internal details - else - render "sorry, this job is not available to internal candidates" message - else (public job seeker) - if the job is visible externally - render the job, with its external details - else - render "sorry, this job is not visible to external candidates" message - else - if the job is visible externally - render job, with its external details - else if the job is visible internally - redirect to self with loggedIn param (they may be internal) - the loggedIn filter fires and forces login - else (not visible at all) - render "sorry, this job is no longer available" message
The job's description is in safe markdown and needs to be converted to HTML before display.
Your site should retrieve details of all of the job-related actions (apply button, share button, etc.) and render them:
GET /actions/byCandidate/anonymous/jobs/{job}
or if the candidate is logged in:
GET /actions/byCandidate/me/jobs/{job}
Most sites will display a screen something like this to allow the user to search for jobs:
Location: |_Balclutha_______|V]
Expertise: |_Sales roles_____|V]
Type: |_Part-time_______|V]
Keywords: [______]
[Search]
To populate a search UI like this, your board can consume the category APIs:
GET /categories
Response:
GET /categories/byID/{category}/values
Response:
To search/fetch lists of jobs, your site consumes one of:
GET /jobs
POST /jobs/searches
Response:
Your site should make sure not to display the wrong jobs to the wrong candidates by restricting for availableInternally or availableExternally depending on whether a candidate is logged in and if so whether they are internal or not. This restriction could be done:
Obviously for security reasons it must not be done client-side.
Normally your site should handle trackers as described in tracker.
This means:


As an augmentation to, or a complete replacement for, kernel virtual terminals, this package also allows you to set up user-space virtual terminals. A user-space virtual terminal comprises four things:
a pseudo-terminal
a TUI login service that has the pseudo-terminal as its controlling terminal
a console-terminal-emulator process, that conects the pseudo-terminal to a display buffer and an input FIFO
one or more realizer processes, that connect the display buffer and input FIFO to real I/O devices of some kind
In a plain system, the TUI login service, the terminal emulator process, and the realizer process all run as ordinary services.
This package comes with service bundles for running three user-space virtual terminal emulators (vc1
, vc2
, and vc3
), multiplexed onto a single realizer (head0
) through a multiplexor.
In a containerized system, the TUI login services and the terminal emulation services run in the container.
The realizer and console multiplexor services, conversely, run outwith the container.
One simply directs the (external) console multiplexor service to include the contained user-space virtual terminal devices, alongside any that it already has.
With the console-multiplexor@head0
service bundle that comes in this package, simply symbolically link the contained user-space virtual terminal directories into the multiplexor's service directory before starting it.
This is nothing more than an instance of the general-case procedure for adding another user-space virtual terminal to a multiplexor service.
ln -s /var/container/run/dev/vc1 /var/sv/console-multiplexor@head0/service/vc9 ln -s /var/container/run/dev/vc2 /var/sv/console-multiplexor@head0/service/vc10 ln -s /var/container/run/dev/vc3 /var/sv/console-multiplexor@head0/service/vc11
Each user-space virtual terminal has one service, running console-terminal-emulator
.
This duplicates the function of the old-style kernel terminal emulator code, but as an application-mode process outwith the kernel.
It is explicitly not an emulator for any model of real terminal.
Its function is to correctly cope with the outputs of programs that are using (according to operating system) the linux
, wsvt25
, or xterm
entries in the termcap/terminfo databases; those being the entries that are used for kernel terminal emulators.
In other words, one should be able to switch from a kernel virtual terminal to a user-space virtual terminal without changing the terminal type used in the ttylogin service.
It is the terminal emulator service that creates the tty
device file, and so the terminal emulator service must start before any TUI login service for that terminal does.
A<EMAIL_ADDRESS>must be ordered before its corresponding<EMAIL_ADDRESS>in the startup sequence with an appropriate symbolic link in the latter's service bundle's after/
directory, for example.
Terminal emulator services do not require superuser privileges at any stage; and for best security should be run under the aegis of an unprivileged account dedicated to the service(s).
The relationship between realizers and terminals is many-to-many. A realizer may be a simple realizer, that handles just one user-space virtual terminal. Or it may be a complex realizer that handles multiple user-space virtual terminals, multiplexing their displays onto its output device, and allowing the user to switch amongst virtual terminals with a hotkey sequence, or a mouse action of some kind. One can also attach multiple display-only realizers to a single user-space virtual terminal with no ill-effects. All realizers will operate concurrently.
The lifetimes of realizers do not affect the lifetimes of the associated virtual terminals. One can detach all realizers from a user-space virtual terminal, and it will continue operating, its output stored in its display buffer file, unaffected. This differentiates user-space virtual terminals from, say, X Window System terminal programs, which signal hangup to the session leader programs running in the terminal when rendering is commanded to close its window.
Realizers only require access to the files of the user-space virtual terminals that they are attached to, and to the various I/O devices that they are realizing the virtual terminal with. The exact security model depends from the kind of realizer, and there are many possible kinds; one could have:
console-ncurses-realizer
—
a realizer that uses wide character ncurses (ncursesw) to render one user-space virtual terminal on the console that the realizer itself is attached to.
This realizer needs no additional privileged access to anything apart from the files of the user-space virtual terminal.
console-fb-realizer
—
a realizer that uses a framebuffer device, and mouse and keyboard input devices, realizing one user-space virtual terminals.
This realizer needs additional privileged access to the device files, in order to open them at startup, but needs no more privileges than that.
a realizer that realizes multiple user-space virtual terminals using X Window System windows, and allowing one to switch amongst them using hotkeys and mouse actions. This realizer initially needs no additional privileged access.
a realizer that realizes one user-space virtual terminal on a Braille device. This realizer initially needs additional privileged access to the Braille device file, in order to open it, but can drop privileges afterwards.


{% extends "bootstrap_layout.html" %} {% set active_page = "movie_form" %} {% block content %}
Find a new movie without the hassle of scrolling through endless streaming services!


Login/Logout
Home
Front Page
Issue Template
If you can see this, something is broken (or JS is not enabled)!!.


|
You are free to use the content from this site
for personal or commercial use. A link back to
More on Code would be most appreciated.
|
Codetopia, LLC
Fauxcabulary.org
Legal Stuff
|
Content powered by Jekyll
with help from JekyllBootstrap
and is hosted by GitHub Pages
|


{% extends "workshop_step.html" %} {% block step_content %}
We now should have set up a full CI pipeline. Whenever you:
Then the tests will be automatically run, a code coverage report will be generated, and if the tests passed the app will be automatically deployed.
Since we have a well-tested application, we want to show off that we did a great job! For this purpose, we can add some shiny badges to our README.
Navigate to shields.io, and grab yourself these badges:
We prepared a branch (contactform) that adds a new page, but did not add unittests to it.
You should open up a Pull Request on your own repository using this branch, and check out the impact that is reported by the code coverage tool.
Then you should decide if you want to merge this Pull Request or not...
In this section you will add some new content to the website, to see the impact of new code with unittests on the application and deployment process
We'd like to see a page added to this site where you can get a random joke selected from a table that contains only good jokes.
Now that you can display a random, good joke, we also want to be able to add jokes. Every logged-in user should be able to add their own (mediocre) jokes to the list.
In case you want to experiment some further, here are some suggestions for things you can try to out to experience the utility of the pipeline:


:- Correct Value
:- Wrong Value
The Deisgn of this site is under construction!! Rest you can play the game


Configure PushBullet notifications for:
Enabled
PushBullet Auth Token:
Auth key for your application
Test Notification
Save
Cancel


This subpart provides the principles for determining the cost of research and development, training, and other work performed by educational institutions under contracts with the Government.
The OMB Uniform Guidance at 2 CFR part 200, subpart E and appendix III, provides principles for determining the costs applicable to research and development, training, and other work performed by educational institutions (defined as institutions of higher education in the OMB Uniform Guidance at 2 CFR part 200, subpart A, and 20 U.S.C. 1001) under contracts with the Government.
(a) Contracts that refer to this subpart 31.3 for determining allowable costs under contracts with educational institutions (defined as institutions of higher education in the OMB Uniform Guidance at 2 CFR part 200, subpart A, and 20 U.S.C. 1001) shall be deemed to refer to, and shall have the allowability of costs determined by the contracting officer in accordance with, the OMB Uniform Guidance at 2 CFR part 200, subpart E and appendix III, in effect on the date of the contract.
(b) Agencies are not expected to place additional restrictions on individual items of cost.


Welcome to My New Project Page. Let me know if you enjoy it.
This project will span as i gain knowledge of html / scripting languages If you enjoy this be sure to inform me below
I Dont know as much as i would like, but i am learning slowly but surely. i am on again off again going into this so i hope to keep everything short and sweet that way your not bored out of your mind.
I Plan on Putting this website Live as my main and every "Project" i work on will be posted here as i see fit.


longdesc
)Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C liability, trademark and document use rules apply.
This specification defines a longdesc
attribute (based on
the longdesc
attribute of HTML 4) to link descriptions to
images in HTML5 content.
By allowing a hyperlink inside another one, this document explicitly redefines the HTML concept of hyperlink in a limited set of circumstances.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This document was developed through the HTML Accessibility Task Force, and is published by the HTML Working Group with approval by the Protocols and Formats Working Group as a W3C Candidate Recommendation. If you wish to make comments regarding this document, please send them to<EMAIL_ADDRESS>(subscribe, archives). All feedback is welcome. Bugs can also be filed directly into the W3C Bug tracker for this specification. This Candidate Recommendation is expected to end no sooner than 26 August 2014.
The disposition of comments from the Last Call Working Draft is available.
Significant changes between successive public drafts are tracked in the Change History section.
This document is intended to become a W3C Recommendation.
Publication as a Candidate Recommendation does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
Text alternatives are used to make visual information accessible by describing
the information or function represented in an image. The alt
attribute is designed to provide a concise description or functional equivalent
for an image. For some images and contexts, more detail is required to convey
all the information contained in the image. The longdesc
attribute
is designed as a means to provide this level of detail.
HTML 4 provided a longdesc
attribute for the img
element that enabled a machine-discoverable description of an image to
be linked to the image. This extension specification defines a longdesc
attribute to provide that functionality for HTML5.
Example: (Informative)

All authoring guidelines, diagrams, examples, notes, and sections marked "informative" in this specification are informational. Everything else in this specification is "normative" as described in [QAFRAME].
The key words "must", "should", "should not" and "may" in this specification are to be interpreted as described in [RFC2119].
The Interface Definition Language (IDL) fragments in this specification must be interpreted as required for conforming IDL fragments, as described in the Web IDL specification. [WEBIDL]
The terms "valid non-empty URL potentially surrounded by spaces", "hyperlink", and "reflect", used in this specification are defined in [HTML5], although this specification modifies the semantics of the term "hyperlink" in allowing hyperlinks to be nested in certain specific circumstances.
This document uses the terms accessible and accessibility in the sense of ensuring people with disabilities can use the Web. Further information is available, e.g. Introduction to Web Accessibility.
The longdesc
attribute gives authors a mechanism for referencing a long text
description for images which cannot be adequately described using shorter description
mechanisms, such as in the following use cases.
longdesc
AttributeThis extension changes the definition of a hyperlink in HTML,
by allowing a longdesc
attribute to occur inside a
hyperlink.
Zero or one longdesc
attributes may
be added to any img
element.
The longdesc
attribute must
contain a valid
non-empty URL potentially surrounded by spaces. The URL is a hyperlink
to a description of the image that the parent img
element represents.
The linked description should be in a broadly accessible format.
This section is informative
Best practices for checking descriptions of images are beyond the scope of this document, but there are many resources available. For further guidance authoring tool developers can consult e.g. Appendix A-3: Long text descriptions of [ATAG].
High quality implementation in authoring and content management tools is likely to include checking for common errors, such as including a description instead of a URL in the attribute, or pointing to a resource that is an image or plain text, which are often poor choices for a high-quality description. Additional examples of error checking and repair options can be found in Appendix B: Levels of Checking Automation and Appendix C: Levels of Repair Automation of [ATAG]
When a description is only part of the target document, authors should link to a container element in the target document that contains the entire description.
Example: (Informative)

Image foo.png

Description of the image...

This section is informative
Best practices for full descriptions of images are beyond the scope of this document, but there are many resources available.
Authors should not rely solely on longdesc where standards exist to provide direct, structured access.
This section is informative
For example a MathML version of mathematical content, or an SVG image that uses the accessibility features of SVG, can provide direct accessibility to users with appropriate technology. In such cases, it is appropriate to use those techniques in combination with longdesc.
If the longdesc
value is valid, User agents must
make the link available to all users through the regular user
interface(s).
If the longdesc
value is valid, User agents must
expose the link to relevant APIs, especially accessibility-oriented
APIs.
User agents should enable users to discover when images in a page contain a long description.
This section is informative
longdesc
can be present on an image within a
hyperlink. This does not change the requirements on user agents,
which must still enable the hyperlink to be followed.
Complete documentation of best practices for implementation is beyond the scope of this document. These notes are offered to help minimize the impact of common mistakes.
A common mistake in the past has been to use a description, instead of a URL that links to a description. Converting such values to data: URLs is a repair strategy for user agents that can help users to recover in cases where authors have made this mistake.
It is usually helpful when the behavior for finding, reading, and returning from a long description to the image described is a consistent experience.
Further information on making user agents accessible can be found in [UAAG].
HTMLImageElement
Interface
partial interface HTMLImageElement {
attribute DOMString longdesc;
};
longdesc
of type DOMStringThe longdesc
IDL attribute must be a valid
non-empty URL potentially surrounded by spaces. It defines a
hyperlink to a detailed description of the image its parent HTMLImageElement
represents.
The longdesc
IDL attribute must
reflect
the HTML content attribute longdesc
.
This section is informative
image.longdesc
[ = value ]
Returns a DOMString that represents the attribute's contents.
Can be set, to replace the contents of the attribute with the given string.
Example: (Informative)
/*Make the first internal longdesc reference absolute*/
var baseURL = document.location.origin + document.location.pathname
var someImage = document.querySelector('img[longdesc^=#]');
someImage.longdesc = baseURL + someImage.longdesc;
Example: (Informative)
/*Open new windows for each longdesc found*/
var describedImages = document.querySelectorAll('img[longdesc]');
for (i in describedImages) {
if (i.longdesc)
window.open(i.longdesc);
}
Example: (Informative)
/*Tries to repair errors where the longdesc isn't a URI*/
var describedImages = document.querySelectorAll('img[longdesc]');
for (i in describedImages) {
if (i.longdesc && !(validURL(i.longdesc)) { //assumes some URL validating function
var theData = encodeURIComponent(i.longdesc);
i.longdesc = "data:text/plain;charset=";
i.longdesc += document.charset;
i.longdesc += theData;
}
}
This section is informative
Thanks to the HTML Working Group of the late 1990s for the original specification of longdesc, to those who have implemented it in various kinds of software, and to many many people involved with the development of HTML5 (including but not limited to those who discussed "ISSUE-30" in the HTML Working Group, the Protocols and Formats Working Group, the W3C Advisory Board, and around countless dinner tables, coffee breaks, and elsewhere) for the ideas, discussions and contributions that led to the initial draft of this specification. With the exception of Laura Carlson, who did far more very valuable work than it took me to produce this specification, I haven't named them: the list might be larger than the content of the specification.
For specific comments and suggestions that led to improvements over successive drafts of this specification, thanks to the W3C's HTML Accessibility Task Force, the W3C Internationalization Working Group, and to Jonathan Avila, Robin Berjon, James Craig, Paul Cotton, Steve Faulkner, John Foliot, Geoff Freed, Peter Gruzca, Richard Ishida, Anne van Kesteren, David MacDonald, Michelle McManus, Chris Mills, Jay Munro, Devarshi Pant, Marta Pawlowska, Silvia Pfeiffer, Wendy Seltzer, Leif Halvard Silli, Mathew Turvey, Klaas 'Z4us' V, and Boris Zbarsky. The code examples are rendered with Lea Verou's prism tools. Any errors are despite, not as a result of, their efforts.
This section is informative
Editorial changes include:
longdesc
attribute.Editorial changes include:
longdesc
makes a limited
change to the semantics of the term "hyperlink" in HTMLSubstantive changes include:
longdesc
should be "accessible".longdesc
.longdesc
.longdesc
was changed to reflect
the HTML content attribute longdesc
.Editorial changes include:


UPL share price falls 7% after profit dips 67% in Q2
Revenue of the company rose 83.6 percent at Rs 7,817 crore against Rs 4,257 crore.
Shares of UPL shed more than 7 percent intraday on November 7 after the company reported 67 percent fall in its September quarter numbers.
The company's Q2FY20 consolidated net profit stood at Rs 89 crore versus Rs 270 crore in a year-ago period.
Revenue of the company rose 83.6 percent at Rs 7,817 crore against Rs 4,257 crore, in the same period last year.
Earnings before interest, tax, depreciation and amortisation (EBITDA) was up 83.4 percent at Rs 1,539 crore, while EBITDA margin was flat at 19.7 percent, year-on-year (YoY).
The share touched its 52-week high of Rs 709.25 and a 52-week low of Rs 390.33 on July 5, 2019, and October 26, 2018, respectively.
Currently, it is trading 20.56 percent below its 52-week high and 44.34 percent above its 52-week low.Special Thursday Expiry on 10th 7th Nov
Early Closure to The Great Diwali Discount. Last Chance to get Moneycontrol PRO for a year @ Rs. 289/- only
Coupon code: DIWALI


FCC chairman to propose dividing spectrum between auto safety, Wi-Fi use
Federal Communications Commission chairman Ajit Pai will propose on Wednesday splitting a key band of spectrum that had been set aside for auto safety between Wi-Fi use and automakers, sources said.
REUTERS: Federal Communications Commission chairman Ajit Pai will propose on Wednesday splitting a key band of spectrum that had been set aside for auto safety between Wi-Fi use and automakers, sources said.
A block of 75 megahertz of spectrum was reserved in 1999 in the 5.9 GHz band for automakers to develop technology to allow vehicles to talk to each other but it has gone largely unused, Pai has said. Pai plans to propose shifting 45 MHz of the band for Wi-Fi use and use the remaining spectrum for auto safety communications, the sources said.
The U.S. Transportation Department argued the spectrum block is critical to future auto safety advances and should not be split.
(Reporting by David Shepardson, Editing by Franklin Paul)


Data Extension
External Key
Keys
Key 1:
Key 2:
Key 3:
Key 4:
Fields to update
Field 1:
Value 1:
Field 2:
Value 2:
Field 3:
Value 3:
Field 4:
Value 4:
Event Key: