Lethal Weapon 4 (1998, R)
Directed by Richard Donner
Written by Channing Gibson
Story by Jonathan Lemkin, Alfred Gough, and Miles Millar
Starring Mel Gibson, Danny Glover, Rene Russo, Joe Pesci, Chris Rock, and Jet Li
The equation for the number of new major players in the Lethal Weapon series is simple. Take the number that the movie is in the series and add one. Hence, Lethal Weapon has two cast members, Lethal Weapon 2 has three, Lethal Weapon 3 has four, and Lethal Weapon 4 has five. This time out, the new addition is that of Chris Rock, who functions as a much less annoying Joe Pesci and is able to slip easily into the idea of a buddy action-comedy, despite having never gone into that uncharted territory.
Sure, he's a comedian, and comedians don't normally make a one-time switch to a buddy-action comedy (in the case of people like Martin Lawrence, it's more of a permanent move), but the Lethal Weapon series has always been far from typical. It practically spawned the buddy action-comedy back in 1987 with its first outing and has been redefining the genre of its own creation ever since.
Lethal Weapon 4, like all of the other Lethal Weapon films, is timely. This one concerns illegal immigration from China, something that has drastically increased since Hong Kong was handed over in 1997. The fall of Hong Kong also comes into play, but I opt not to give away what little bit of mystery there is to the plot. Also in the mix is the fact that Martin Riggs (Mel Gibson) is facing the prospect of parenthood along with IAD Sergeant Lorna Cole (Rene Russo). And, compounding the multiple family problems that Roger Murtaugh (Danny Glover) already has, his daughter Rianne is going to be a mother… but who's the father?
The characters, already developed over the past 14 years of the saga, continue to grow and expand in the fourth (and perhaps final) installment. Herein lies the separating aspect of the series: as we all know, action movies are really supposed to have either plot or characters. Yet, in Lethal Weapon 4 (and all of the other Lethal Weapon films), not only do we have characters that we know and like, but we have a continuing and ever-expanding dynamic. We have a sharply written script. We have a tightly directed film. In short, we have everything we don't expect.
For those who target Lethal Weapon 4 as being formulaic, remember that in fact they invented the formula. They are working with, and altering, their own creation as they go. As proof of this I offer the dozens of great lines that pop up throughout the film, each of which would qualify as bad dialogue did we not know the characters so well as to have their ability to think up good responses and joke under pressure down to an art. Also, the standard of most action movies (grabber sequence, plot development, action sequence, repeat) was started with Lethal Weapon yet is not always utilized by it. Lethal Weapon 4 often blends plot development and action sequences together, or separates them so little as to never allow the viewer to get bored.
Going with my formula of a positive review, I begin the problems paragraph with my constant: As always, I have my gripes. The acting is as bad as it ever was. Gibson may be furnished with a great character to work with, but that does nothing for his thespian abilities. Chris Rock isn't quite as funny as he always has been, and this falls to the fault of the writers who tried to inhibit his native comic genius by making him do the standard bits (i.e. the "They screw you with…" bit that appears in every movie from Lethal Weapon 2 on). Joe Pesci continues being Joe Pesci… an annoying person. Whether this is intended or not, it gets on the viewers nerves.
My final complaint comes in the form of the message that it tries to insert. I do like my action movies timely, but I don't like them to be political. With its overwhelming message about the importance of family, Lethal Weapon 4 serves to waste about twenty minutes of screen time.
Were those twenty minutes cut, we would have had a really great action film on our hands. As it is, we have to settle for a pretty good action film.
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


{% extends "account/base.html" %} {% load bootstrap3 %} {% block title %}Email{% endblock %} {% block header %}
The following e-mail addresses are associated with your account:
{% else %}Warning: You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.
{% endif %}


Guidance
Details about the academy conversion grant for local authorities, including guidance on how to apply.
ODT , 51.3KB
This file is in an OpenDocument format
Information about the academy conversion grant for local authorities, including:
The deadline for applying is 10 February 2017.
Read more guidance about opening an academy .
Published: 27 January 2017
From: Department for Education
Part of: Opening an academy or free school


In this proof of concept (currently only tested and working in Chrome 24+) I've split the mp3 in 25 parts by using the unix split command.
The moment the first part is loaded then the playback starts immediately and it loads the second part.
When the second part is loaded then I create a new AudioBuffer by combining the old and the new,
and I change the buffer of the AudioSourceNode with the new one. At that point I start playing again
from the new AudioBuffer.
A lot of thanks to Paul (@aerotwist) for his suggestions and to Theo for letting me use his awesome track Breathe In.
Download source or see the progject on Github
Debug:


Match Play. Double Match Point. How should Red play 11?
pips Red=73 White=118
(CorrectAnswer= 0/0, ErrorScore= 0)
For money 7/5(2)* would be clear because it wins many more gammons.
However, at DMP gammons are irrelevant and Red needs to make the play that wins the most games. 7/6(2), 4/3(2) wins 2% more games than 7/5(2)* so it gets the nod.
Once you think about the move is clear but in the heat of the moment it is oh so easy to play 7/5(2)*.
However, at DMP gammons are irrelevant and Red needs to make the play that wins the most games. 7/6(2), 4/3(2) wins 2% more games than 7/5(2)* so it gets the nod.
Once you think about the move is clear but in the heat of the moment it is oh so easy to play 7/5(2)*.
1. Cubeful 2-ply 7/6(2) 4/3(2) Eq.: +0.721 0.860 0.118 0.004 - 0.140 0.001 0.000 2. Cubeful 2-ply 7/5*(2) Eq.: +0.645 (-0.076) 0.822 0.261 0.013 - 0.178 0.001 0.000 3. Cubeful 2-ply 7/5*/4 7/6 Eq.: +0.643 (-0.078) 0.821 0.178 0.009 - 0.179 0.002 0.000 4. Cubeful 2-ply 6/5*(2) 4/3(2) Eq.: +0.563 (-0.158) 0.781 0.218 0.009 - 0.219 0.011 0.000 5. Cubeful 2-ply 6/5*(3) 4/3 Eq.: +0.554 (-0.166) 0.777 0.216 0.010 - 0.223 0.016 0.000


--- layout: default title: GreenMail - Email Test Servers ---
GreenMail WebappGreenMail Webapp provides a lightweight Java web application.Like the GreenMail JBoss Service, the usage szenario is a development or test environment where a real mail server is too much overhead. The webapp is application server neutral - you should be able to use it on any JEE application server running und Java 5. With the GreenMail mail service each developer has its own local mail server sandbox - so there's no danger for accidentally leaking test mails into the Internet.Deploy the webappSimply deploy the webapp like any other Java web application.For Tomcat, just drop the webapp into $CATALINA_HOME/webapps directory. Alternatively, you can create a $CATALINA_HOME/webapps/greenmail, unpack the WAR here and configure the GreenMail service. Configuring the webappYou can configure the active mail services and available users by editing WEB-INF/web.xml in the WAR file and modifying the context params. A ServletContextListener starts and stops the GreenMail service when deploying/undeploying.Context Parameters
Here's a code sample of a configured web.xml: Have fun! We welcome any feedback. |


Jquery is a one of the Javascript libraries which have been around for a long time and most of the other Javascript libraries depend on it. Please find below sample code to use with Svolve Site-Search.
Results : { {results.numFound}} Found.


public interface SSHConstants
General constants for the SSH library.
| Modifier and Type | Field and Description |
|---|---|
static int |
DEFAULT_SSH_PORT
Default port for SSH connections over TCP/IP.
|
static String |
KNOWN_HOSTS
Default path where known host keys are stored locally.
|
static String |
LOCALHOST
Constant for localhost address "<IP_ADDRESS>".
|
static String |
SSH_VERSION_1_99
Constant for standard version SSH 2.0 with backwards compatability
with older 1.x SSH versions used during client/server version
exchange.
|
static String |
SSH_VERSION_2_0
Constant for standard version SSH 2.0 used during client/server
version exchange.
|
static final int DEFAULT_SSH_PORT
Default port for SSH connections over TCP/IP.
When used over TCP/IP, the server normally listens for connections on port 22. This port number has been registered with the IANA, and has been officially assigned for SSH.
RFC 4253 - The Secure Shell (SSH) Transport Layer Protocol: Use over TCP/IP
static final String LOCALHOST
static final String KNOWN_HOSTS
static final String SSH_VERSION_2_0
Constant for standard version SSH 2.0 used during client/server version exchange.
RFC 4253 - The Secure Shell (SSH) Transport Layer Protocol: Protocol Version Exchange
static final String SSH_VERSION_1_99
Constant for standard version SSH 2.0 with backwards compatability with older 1.x SSH versions used during client/server version exchange.
Server implementations MAY support a configurable compatibility flag that enables compatibility with old versions. When this flag is on, the server SHOULD identify its 'protoversion' as "1.99". Clients using protocol 2.0 MUST be able to identify this as identical to "2.0".
RFC 4253 - The Secure Shell (SSH) Transport Layer Protocol: Compatibility With Old SSH Versions
Copyright © 2015. All rights reserved.


I am truly honoured and humbled to have this opportunity to speak to, and for you, today through this valediction.
While today is indeed a celebration of our achievements, commencement is also proud moment for the family of those, who like me, are first generation graduates. More importantly, commencement is also an opportune moment for us to individually reflect on our time in NUS and to look forward to our future.
Please indulge me and allow me to share the 3 things that my personal reflection has brought to mind.
The Unsung Role of Luck
First, I want to talk about luck. We don’t usually think of life this way, but we are all actually immensely lucky.
We would very much like to attribute our success in university solely to our own abilities and hard work but those are often only part of the equation. We erroneously discount the importance of luck in our lives.
We are lucky to be born and raised in a time of relative peace and an era of prosperity, which frees us to pursue higher education. The world was not always that way. We are lucky to live in a country that values quality higher education and makes it affordable for its people. During our time as students, we were lucky to have been challenged and guided by top professors in what must be one of the world’s fastest rising universities. Closer to our hearts, we were also lucky to have had the friendship and support of our friends, girlfriends, boyfriends, and peers through our journey in university.
Most of you are luckier than me in one aspect – to have your parents support you through all your challenges in NUS. My mom and dad would have wanted to be here with me today but it will always be a great regret that they will never get to see me graduate. Sadly, they passed away before I started university. I hope they are proud of me and I will always be guided by their words and teachings.
I know what life is without parents. So believe me when I say that we should never discount the importance of our parents or ever take them for granted.  I urge you to take your parents out for a good dinner with your first pay cheques.
I invite you to join me now in a round of applause to express our heartfelt gratitude to them.
The Role of Knowledge
This brings me to my second point. Let me talk about knowledge. When I speak of knowledge, I refer to acquired skills rather than the accumulation of factual information. Factual information will eventually be forgotten but acquire skills stay with us.
There will be a good number of us not be practising as engineers. Some of us will educate, some of us will join the financial sector, some of us will be entrepreneurs, and then some of us will be in public service. That is the reality and that speaks to the quality and versatility of one of the best chemical engineering programmes in the world today.
We now can ask questions, explore possibilities, and seek for creative solutions. Our education has embedded deep within us a systems level of engineering knowledge, thinking, and analysis that is now second nature to us.
The best example of that is the diverse set of proposals we generated for the design project. In less than 3 months, we went from having no knowledge of the Cumene-to-Phenol process to becoming basic technical consultants.
The world has grown increasingly complex but our critical and systems thinking will enable us to venture beyond the fog to see the bigger picture. I am confident that our acquired knowledge will most definitely serve us well whatever our future careers.
Our Shared Responsibility to Society
Let me now move on to my third and final point. Having been lucky enough to go to and do well in university, and now becoming freshly minted graduates brimming with knowledge, we have a responsibility to society.
I speak of responsibility both in terms of our roles as future employees and in reference to our memberships in society.
This is what I mean: As employees, I’m optimistic that we will use our education and knowledge well. I am sure the petrochemical engineers in our midst will have the professional ethics to speak out in times of safety and environmental lapses to help our employers enhance their operations. I am certain the pharmaceutical researchers amongst us will have the moral courage to speak out when internal testing procedures would benefit from improvement. I am sure the educators in this group will mentor and develop our future generations to the best of their ability to help them achieve their dreams. Above all, I am certain that whatever our future profession, we give our very best.
Moreover, as members of society, we also have a responsibility to those who were not as lucky as us. By a stroke of luck, their paths in life were more arduous. We most definitely can and should help the less fortunate. There will be times when we may be tempted to turn a blind eye, or delude ourselves that its someone else’s problem, or convince ourselves that our time is scarce to justify inaction. But I am convinced and optimistic we will use our education to overcome those temptations.
My optimism is not misplaced. We have consistently shown our willingness to give our time and money for worthy causes.
I am especially heartened by the success of Project Cheway, a community initiative to Cambodia, which was started by members of this very graduating cohort sitting in the audience today. The 2 groups of chemical engineers that travelled to Cambodia in 2012 and 2013 have resisted temptation and found time in the midst of our academic pursuits to help the less fortunate. The rest of us can too.
I am also happy to report numerous positive responses to my personal call for donations to NUS Giving to secure the financial futures of our chemical engineering juniors. All these prove that we are indeed a caring group of engineers and that we will diligently discharge our responsibilities to society.
All in all, my personal reflection leads me to this conclusion: Education has granted us the knowledge and ability to do many things, but empathy will grant us the wisdom to do meaningful things in service of others, well beyond what is asked of us.
My friends, we are chemical engineers first, but members of society always.


{{body}}
Cheques payable to Auto Union Warranties Ltd, to be paid within 14 days of the date of this invoice.
Bank Details- Sort Code: 30-95-96 Account Number: 20888260
Company Reg No: 10332077, VAT Registration Number: 249273287


HAL-GET-PROPERTY(1) HAL-GET-PROPERTY(1) NAME hal-get-property - get a property from a device object SYNOPSIS hal-get-property [options] DESCRIPTION hal-get-property retrieves a property from a device object in the HAL device database. For more information about both the big picture and spe‐ cific HAL properties, refer to the HAL spec which can be found in /usr/share/doc/hal-doc/spec/hal-spec.html depending on the distribution. OPTIONS The following options are supported: --udi The UDI (Unique Device Identifier) of the device object. --key The name of the property. --hex Show int32/uint64 values in hex (without a leading 0x). --verbose Verbose output. --help Print out usage. --version Print the version. RETURN VALUE If both the property and device object exists the value of the property is printed on stdout and the program will exit with exit code 0. Other‐ wise the exit code will be non-zero. BUGS Please send bug reports to either the distribution or the HAL mailing list, see http://lists.freedesktop.org/mailman/listinfo/hal on how to subscribe. SEE ALSO hald(8), lshal(1), hal-set-property(1), hal-find-by-property(1), hal- find-by-capability(1) AUTHOR Written by David Zeuthen<EMAIL_ADDRESS>with a lot of help from many others. HAL-GET-PROPERTY(1)


Newborn Session
Price will be quoted
Maternity Photoshoot
Price will be quoted
Outdoor Photoshoot
Price will be quoted
The following packages are offered for babies that can sit on their own - adults.
Package 1
$85.00
Package 2
$95.00
Package 3
$110.00
Package 4
$125.00
Package 5
$150.00
All above prices are for regular photos. There is an extra charge for digitally added items. Prices will be quoted based on theme and number of added items. Ex. Fairy Wings / Harry Potter theme items etc.
When enhanced photos are completed, you will receive an email with a link and password to view and download your images from a gallery. We use ShootProof to share your precious photographs and hope you enjoy every one.
Should you encounter any problems viewing your images, please contact us and we will walk you through the steps to receive your images.
*We hold all rights to images
*Images may be used for promotional purposes
*Please let us know at time of session if you do not want your photos to appear on Facebook or promotional items
**Prices subject to change at any time


/*
This file is part of Ext JS 4
Copyright (c) 2011 Sencha Inc
Contact: http://www.sencha.com/contact
Commercial Usage
Licensees holding valid commercial licenses may use this file in accordance with the Commercial Software License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Sencha.
If you are unsure which license is appropriate for your use, please contact the sales department at http://www.sencha.com/contact.
*/
/**
* @docauthor Jason Johnston<EMAIL_ADDRESS>*
* A file upload field which has custom styling and allows control over the button text and other
* features of {@link Ext.form.field.Text text fields} like {@link Ext.form.field.Text#emptyText empty text}.
* It uses a hidden file input element behind the scenes to allow user selection of a file and to
* perform the actual upload during {@link Ext.form.Basic#submit form submit}.
*
* Because there is no secure cross-browser way to programmatically set the value of a file input,
* the standard Field `setValue` method is not implemented. The `{@link #getValue}` method will return
* a value that is browser-dependent; some have just the file name, some have a full path, some use
* a fake path.
*
* **IMPORTANT:** File uploads are not performed using normal 'Ajax' techniques; see the description for
* {@link Ext.form.Basic#hasUpload} for details.
*
* # Example Usage
*
* @example
* Ext.create('Ext.form.Panel', {
* title: 'Upload a Photo',
* width: 400,
* bodyPadding: 10,
* frame: true,
* renderTo: Ext.getBody(),
* items: [{
* xtype: 'filefield',
* name: 'photo',
* fieldLabel: 'Photo',
* labelWidth: 50,
* msgTarget: 'side',
* allowBlank: false,
* anchor: '100%',
* buttonText: 'Select Photo...'
* }],
*
* buttons: [{
* text: 'Upload',
* handler: function() {
* var form = this.up('form').getForm();
* if(form.isValid()){
* form.submit({
* url: 'photo-upload.php',
* waitMsg: 'Uploading your photo...',
* success: function(fp, o) {
* Ext.Msg.alert('Success', 'Your photo "' + o.result.file + '" has been uploaded.');
* }
* });
* }
* }
* }]
* });
*/
Ext.define("Ext.form.field.File", {
extend: 'Ext.form.field.Text',
alias: ['widget.filefield', 'widget.fileuploadfield'],
alternateClassName: ['Ext.form.FileUploadField', 'Ext.ux.form.FileUploadField', 'Ext.form.File'],
uses: ['Ext.button.Button', 'Ext.layout.component.field.File'],
/**
* @cfg {String} buttonText
* The button text to display on the upload button. Note that if you supply a value for
* {@link #buttonConfig}, the buttonConfig.text value will be used instead if available.
*/
buttonText: 'Browse...',
/**
* @cfg {Boolean} buttonOnly
* True to display the file upload field as a button with no visible text field. If true, all
* inherited Text members will still be available.
*/
buttonOnly: false,
/**
* @cfg {Number} buttonMargin
* The number of pixels of space reserved between the button and the text field. Note that this only
* applies if {@link #buttonOnly} = false.
*/
buttonMargin: 3,
/**
* @cfg {Object} buttonConfig
* A standard {@link Ext.button.Button} config object.
*/
/**
* @event change
* Fires when the underlying file input field's value has changed from the user selecting a new file from the system
* file selection dialog.
* @param {Ext.ux.form.FileUploadField} this
* @param {String} value The file value returned by the underlying file input field
*/
/**
* @property {Ext.Element} fileInputEl
* A reference to the invisible file input element created for this upload field. Only populated after this
* component is rendered.
*/
/**
* @property {Ext.button.Button} button
* A reference to the trigger Button component created for this upload field. Only populated after this component is
* rendered.
*/
/**
* @cfg {String} [fieldBodyCls='x-form-file-wrap']
* An extra CSS class to be applied to the body content element in addition to {@link #fieldBodyCls}.
*/
fieldBodyCls: Ext.baseCSSPrefix + 'form-file-wrap',
/**
* @cfg {Boolean} readOnly
* Unlike with other form fields, the readOnly config defaults to true in File field.
*/
readOnly: true,
// private
componentLayout: 'filefield',
// private
onRender: function() {
var me = this,
inputEl;
me.callParent(arguments);
me.createButton();
me.createFileInput();
// we don't create the file/button til after onRender, the initial disable() is
// called in the onRender of the component.
if (me.disabled) {
me.disableItems();
}
inputEl = me.inputEl;
inputEl.dom.removeAttribute('name'); //name goes on the fileInput, not the text input
if (me.buttonOnly) {
inputEl.setDisplayed(false);
}
},
/**
* @private
* Creates the custom trigger Button component. The fileInput will be inserted into this.
*/
createButton: function() {
var me = this;
me.button = Ext.widget('button', Ext.apply({
ui: me.ui,
renderTo: me.bodyEl,
text: me.buttonText,
cls: Ext.baseCSSPrefix + 'form-file-btn',
preventDefault: false,
style: me.buttonOnly ? '' : 'margin-left:' + me.buttonMargin + 'px'
}, me.buttonConfig));
},
/**
* @private
* Creates the file input element. It is inserted into the trigger button component, made
* invisible, and floated on top of the button's other content so that it will receive the
* button's clicks.
*/
createFileInput : function() {
var me = this;
me.fileInputEl = me.button.el.createChild({
name: me.getName(),
cls: Ext.baseCSSPrefix + 'form-file-input',
tag: 'input',
type: 'file',
size: 1
}).on('change', me.onFileChange, me);
},
/**
* @private Event handler fired when the user selects a file.
*/
onFileChange: function() {
this.lastValue = null; // force change event to get fired even if the user selects a file with the same name
Ext.form.field.File.superclass.setValue.call(this, this.fileInputEl.dom.value);
},
/**
* Overridden to do nothing
* @hide
*/
setValue: Ext.emptyFn,
reset : function(){
var me = this;
if (me.rendered) {
me.fileInputEl.remove();
me.createFileInput();
me.inputEl.dom.value = '';
}
me.callParent();
},
onDisable: function(){
this.callParent();
this.disableItems();
},
disableItems: function(){
var file = this.fileInputEl,
button = this.button;
if (file) {
file.dom.disabled = true;
}
if (button) {
button.disable();
}
},
onEnable: function(){
var me = this;
me.callParent();
me.fileInputEl.dom.disabled = false;
me.button.enable();
},
isFileUpload: function() {
return true;
},
extractFileInput: function() {
var fileInput = this.fileInputEl.dom;
this.reset();
return fileInput;
},
onDestroy: function(){
Ext.destroyMembers(this, 'fileInputEl', 'button');
this.callParent();
}
});


The main purpose of the keyboards is to provide a wide range of keying options, so many characters can be entered in multiple ways. If you are typing and make a mistake and use the backspace key to delete characters, the keyboard remembers the context.
| Character: | α | β | γ | δ | ε | ζ | η | θ | ι | κ | λ | μ | ν | ξ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Type: | a | b | g | d | e | z | j, e=, e~ or e^ | q or th | i | k | l | m | n | x |
| Character: | ο | π | ρ | σ, ς | τ | υ | φ | χ | ψ | ω |
|---|---|---|---|---|---|---|---|---|---|---|
| Type: | o | p | r | s | t | u | f or ph | c , ch or kh | y or ps | w , o= , o~ or o^ |
The keyboard automatically chooses the correct code for the sigma depending upon the encoding and the context, so the correct final form is used when appropriate.
| Characters | γγ | γκ | γξ | γχ |
|---|---|---|---|---|
| Type | ngg | nk | nx | nc(h) |
When gamma occurs before another gamma, it can be typed as ng, meaning that ἀγγελος can be typed (space) anggelos. When gamma occurs before kappa, xi or chi, it can be typed as n. Note that ng alone produces νγ, as in μενουνγε.
| Characters | ά | ᾶ | ὰ | ᾳ | ϊ |
|---|---|---|---|---|---|
| Type | ' or / | ^ , ~ or = | ` or \ | !, | , + or _ | " |
Diacritics are usually typed after vowels, but may also be typed before word-initial vowels and should be typed before uppercase letters. They can be combined in any order. If you accidentally type the wrong diacritic, you can change it by typing the correct one immediately.
| Characters | ἀ | ἁ |
|---|---|---|
| Type | > | h or < |
A smooth breathing is automatically added to a word-initial vowel and a rough breathing to a word-initial rho. To get a rough breathing on an initial vowel, type h, e.g. huper for ὑπερ . If you type a word that is all uppercase, the initial breathing mark is automatically removed.
Like other diacritics, they are usually typed after vowels, but may be typed before word-initial vowels. They can also be combined with other diacritics by typing them in any order after the base character. If you type a diphthong, any breath marks and accents on the first vowel are correctly moved to the second vowel.
For example, to type Οὐκ εἰμι ἐγω ὁ Χριστος. (ΙΩΑΝΝΗΝ 3 28) you only need to press the following keys:
O u k SPACE e i m i SPACE e g w SPACE h o SPACE C r i s t o s PERIOD SPACE ( I W A N N J N SPACE 3 : 2 8 )
You can also press * to remove the breathing mark from a vowel or rho.
In a few words, a vowel with dieresis follows an accented vowel. You will need to type @ before the vowel with dieresis to get the right behavior. For example, to get Ἰάϊρος, type Ia/@i"ros.
| Characters | , | . | ; | ̓ | |
|---|---|---|---|---|---|
| Type | , | . | : | ; or ? | ' ' (two) |
To type an apostrophe following a vowel (as in δι ̓ αὐτοῦ) press the quote key twice.
The following characters are available for typing directly:
| & | ( | ) | - | 0 | ... | 9 | [ | ] | { | } |
Others can be typed by preceding them with @ (the @ produces .):
| Characters | ! | « | » | * | + | — em-dash |
– en-dash |
|---|---|---|---|---|---|---|---|
| Type | @! | @( | @) | @* | @+ | @~ | @- |
| Characters | / | : | < | = | > | \ |
|---|---|---|---|---|---|---|
| Type | @/ | @: | @< | @= | @> | @\ or % |


BARCELONA, Spain (AP) — Lionel Messi is still going strong but Barcelona’s club president has already started to look ahead to that unwanted day when the club’s all-time great steps off Camp Nou’s field for the very last time.
Josep Bartomeu tells The Associated Press that “we are preparing this post-Messi era.”
Like all Barcelona fans, Bartomeu shares the same concerns over how the Catalan club will cope when the 32-year-old Messi starts to slow down. Bartomeu said that goal No. 1 for the club’s transition plan is to ensure that Messi retires in a Barca shirt.
Bartomeu says “I have no doubts that after Messi finishes his career as footballer he will remain linked to this club for the rest of his life.”
___
More AP soccer https://apnews.com/Soccer and https://twitter.com/AP_Sports


Welcome to the Portal, {{ user.name }}!
Hi, {{ user.name }}!
How can we help you?
I would like to report an Incident
Describe your needs
Preview


Please Click Here to authorize access to your Medicare data
| Sequence | Code | Quantity | Category | Service Period |
| {{svcLine.sequence}} | {{svcLine.serviceCode}} | {{svcLine.quantity}} | {{svcLine.categoryDisplay}} | {{svcLine.servicePeriodStart}} to {{svcLine.servicePeriodEnd}} |


Mombasa Marathon
Mombasa KEN
Race Winners
(33 runnings)
27
May
2007
14
May
2006
01
May
2005
02
May
2004
2003
---
---
15
Sep
2002
3:00:17
2001
---
---
2000
---
---
04 Jul
1999
20 Jun
1998
1997
---
---
1996
---
---
04
Jun
1995
19
Jun
1994
---
11
Jul
1993
---
07
Jun
1992
07
Jul 1991
08
Jul
1990
09
Jul
1989
1988 ---
---
1987
---
---
1986
---
---
1985
---
---
Notes: The inaugural year was 1985. In 2004, the runners went off-course
and may have run a kilometer or more over the distance. Most of the courses
from 1999 to 2010 were probably quite short except for 2004 which was reported
as run up to 5 km long, i.e., if the runners hadn't run off course, they would
have run a rather short course.
24 Sep
2017
2:19:46
Cosmos Koech Kimutai
(KEN)
2:42:30
Shelmith Muriuiki
Nyawira-2
25 Sep
2016
2:12:13
Paul Maina Theuri-2
2:40:01
Nancy Koech Chebet (KEN)
27 Sep
2015
2:19:47
Victor Kiplagat Serem
(KEN)
2:51:45
Shelmith Muriuiki
Nyawira (KEN)
2014
2:11:
Paul Kangogo (KEN)
---
Fridah Lodepa Chepkite
(KEN)
25 Aug
2013
2:14:21
Solomon Mutai (UGA)
2:43:53
Sally Lagat (KEN)
26 Aug
2012
2:12:26
Paul Maina
Theuri
(KEN)
2:37:16
Helen Wanjiru Mugo (KEN)
15 May
2011
2:13:00
Wilson Loyanai (KEN)
2:39:01
Roseline Nyangacha Kerubo
(KEN)
09
May 2010
2:08:05
James Kariuki Mbugwa (KEN)
2:36:04
Tabitha Kibet (KEN)
17 May
2009
2:13:44
Amos Choge (KEN)
2:54:38
Nelly Cheptoo (KEN)
25 May
2008
2:12:46
Peter Mutisiya (KEN)
2:49:16
Phyllis Chelegat (KEN)
2:09:21
Peter Kemboi (KEN)
2:52:49
Juliet Chepchirchir (KEN)
2:11:06
Philip Kemei (KEN)
2:39:53
Jane Wandahi (KEN)
2:12:08
Johnstone Kemboi (KEN)
2:49:30
Oliver Mugoma (KEN)
2:22:01+
Alex Malinga (UGA)
3:08:13+
Jane Omoro Moraa-2
n/a
n/a
2:13:57
Josephat Rop (KEN)
Jane Omoro
Moraa (KEN)
n/a
n/a
n/a
n/a
2:11:09
Benjamin Matolo (KEN)
2:34:00
Grace
Chebet-3
2:11:13
Timothy Moni (KEN)
2:38:44
Grace
Chebet-2
n/a
n/a
n/a
n/a
2:14:03
Abel Gisemba (KEN)
3:04:35
Grace Chebet (KEN)
2:12:12
Zachariah Nyambaso (KEN)
n/a
2:13:16
Nicolas Kioko (KEN)
n/a
2:17:50
Samuel Okemwa (KEN)
3:37:42
Florence Wangecki-2
2:20:09
Daniel Nzioka-3
2:51:41
Maria Grazia Navacchia (ITA)
2:17:06
Daniel Nzioka-2
2:59:39
Blanka James (TAN)
2:15:54
Daniel Nzioka (KEN)
2:59:34
Florence Wangecki (KEN)
n/a
n/a
n/a
n/a
n/a
n/a
n/a
n/a
Most Wins
(1986-date)
Men
3
Daniel Nzioka (KEN)
1989-91
Women
3
Grace Chebet (KEN)
1995,1998-99
Prize Money
(ADR qualified runners)
Year Men Women Total 2017 $4,760 $4,760 $9,520 .... 2015 23,950 23,950 47,900 .... 2012 4,160 4,160 8,320 2011 2,915 2,915 5,830 .... 2004 $641 n/a $641 Sums $36,426 $35,785 $72,211
Race Time Bias (sec/km)
Year Men Women 2006 -10.3 n/c .... 1999 -3.9 n/c Avgs -7.1 n/c
Competitive Level
(1990-date)
Insufficient data to calculate the competitive level.
Quality Performances
Men <2:12 2 <2:13 10 <2:14 19 <2:15 24 <2:16 28 <2:17 32 <2:18 37 <2:19 41 <2:20 50 Women <2:38 2 <2:40 5 <2:42 6 <2:44 10 <2:46 15 <2:48 18 <2:50 21
Last Updated on
04 Dec 2017
Contributors: Franco Civai (13), Kip Evans (10), Enzo Rivas (1), Marty Post (5)


addki
Log out
Print
Print
Words
Language
Two-character language code. Leave blank for automatic language detection.
Collect
Showing
to
of
Previous
Previous
Next
Next
ID
Status
Updated
Language
Word
Definition
Alternate Form
Additional Info
Pronunciation
Contexts
Tags
Error Message


Dax Designer
Colour 1:
Colour 2:
Natural
Stylish
Party time
Student
Royalty
Hairy
Hide identity
Save


Now we will be partitioning a line much like how we partition into intervals. An interval with one side extending indefinitely corresponds to a ray. An interval with both sides bounded corresponds to a line segment.
We will start with rays and then move on to line segments.
Ray and Opposite Ray
For any point, $P$, on a line $l$, the points can be divided into a ray (call it $r$) and its opposite (denoted $r^{op}$).
The converse, which is that a ray and its opposite also form a line, can be proven.
Corollary 2.1: Union of a ray and its opposite
The union of a ray and its opposite is a line.
Statement
Proof
Suppose a ray $\overrightarrow{BC}$ and its opposite $\overrightarrow{BA}$ form two distinct lines, $l_1$ and $l_2$
Given
A point, $B$, divides a line, $l$ to a ray, $\overrightarrow{BA}$, and its opposite, $\overrightarrow{BC}$
Definition of a Ray and its Opposite
$A$, $B$, $C$ are collinear
Statement 2
$\overleftrightarrow{AB}$ (or $l_1$) and $\overleftrightarrow{BC}$ (or $l_2$) are the same line
Definition of Collinearity, Proof by Contradiction
Line Segment
For any two points, $A$ and $B$, the line segment is the set of points, $P$, where $\overleftrightarrow{APB}$.
The line segment could be thought of as an infinite number of points lined up to form a line with $A$ and $B$ forming the two boundaries. It could also be thought of as a closed interval on a number line.
Axiom of Congruence
Axiom
Illustration
I. If $A$ and $B$ are distinct points and if $A'$ is any point, then for each ray, $r$, radiating from $A'$ there is a unique point, $B'$, such that $\overline{AB}\cong \overline{A'B'}$ (Segment Construction Axiom)
II. If $\overline{AB}\cong \overline{CD}$ and $\overline{AB}\cong \overline{EF}$, then $\overline{CD}\cong \overline{EF}$ (Transitivity of Segment Congruence)
III. If $A$, $B$, $C$ are collinear and $A'$, $B'$, $C'$ are also collinear and $\overline{AB}\cong \overline{A'B'}$ and $\overline{BC}\cong \overline{B'C'}$, then $\overline{AC}\cong \overline{A'C'}$ (Segment Addition Axiom)
One very useful case of the segment construction axiom is given by this corollary
Corollary 2.2: Congruence of Line Segments with the Same Endpoints
For any points $A$ and $B$ on a ray, $r$, $\overline{AB}\cong \overline{AB}$.
The relationship between rays and line segments is drawn from this corollary
Corollary 2.3: Intersection of a ray, $\overrightarrow{AB}$ and $\overrightarrow{BA}$
Intersection of a ray, $\overrightarrow{AB}$ and $\overrightarrow{BA}$ is the line segment, $\overline{AB}$.
Statement
Proof
Suppose there is a set of collinear points, $P$, that bound the ray at endpoints, $\overrightarrow{AB}$
Given, Definition of Line Segment
Suppose there is another set of collinear points, $Q$, that bound the ray at endpoints, $\overrightarrow{BA}$
Given, Definition of Line Segment
The two set of collinear points, $P$ and $Q$, are equivalent
Congruence of Line Segments with the Same Endpoints
A very important property of congruence is illustrated in the following theorem
Theorem 2.4: Congruence Preserves Order
If $\overline{A_1A_2A_3...A_n}$ and $B_1$, $B_2$, $B_3$..., $B_n$ exist such that $\overline{A_1A_2}\cong \overline{B_1B_2}$ and $\overline{A_2A_3}\cong \overline{B_2B_3}$ and ... and $\overline{A_{n-1}A_{n}}\cong \overline{B_{n-1}B_{n}}$, then $\overline{B_1B_2B_3...B_n}$
Base Case: If $\overline{A_1A_2}$ and $B_1$ and $B_2$ exist such that $\overline{A_1A_2}\cong \overline{B_1B_2}$, then $\overline{B_1B_2}$
Statement
Proof
$\overline{A_1A_2}$ and $B_1$ and $B_2$ exist such that $\overline{A_1A_2}\cong \overline{B_1B_2}$
Given
$\overline{B_1B_2}$
Statement 1
Inductive Step: Suppose, $\overline{A_1...A_kA_{k+1}}$ and $B_k$ and $B_{k+1}$ exist such that $\overline{A_kA_{k+1}}\cong \overline{B_kB_{k+1}}$, then $\overline{B_1B_2...B_kB_{k+1}}$. It is also true that $\overline{A_{k+1}A_{k+2}}$ and $B_{k+1}$ and $B_{k+2}$ exist such that $\overline{A_{k+1}A_{k+2}}\cong \overline{B_{k+1}B_{k+2}}$, then $\overline{B_1B_2...B_{k+1}B_{k+2}}$.
Statement
Proof
$\overline{A_kA_{k+1}}$ and $B_k$ and $B_{k+1}$ exist such that $\overline{A_kA_{k+1}}\cong \overline{B_kB_{k+1}}$, then $\overline{B_1B_2...B_kB_{k+1}}$
Given
$\overline{A_{k+1}A_{k+2}}$ and $B_{k+1}$ and $B_{k+2}$ exist such that $\overline{A_{k+1}A_{k+2}}\cong \overline{B_{k+1}B_{k+2}}$
Given
$\overline{A_{k}A_{k+2}}\cong \overline{B_{k}B_{k+2}}$ because $\overline{A_{k}A_{k+1}}\cong \overline{B_{k}B_{k+1}}$ and $\overline{A_{k+1}A_{k+2}}\cong \overline{B_{k+1}B_{k+2}}$
Segment Construction Axiom
$\overline{A_{k-1}A_{k+2}}\cong \overline{B_{k-1}B_{k+2}}$ because $\overline{A_{k-1}A_{k+1}}\cong \overline{B_{k-1}B_{k+1}}$ and $\overline{A_{k+1}A_{k+2}}\cong \overline{B_{k+1}B_{k+2}}$
Statement 3, Segment Construction Axiom
$\overline{A_{k-2}A_{k+2}}\cong \overline{B_{k-2}B_{k+2}}$ because $\overline{A_{k-2}A_{k+1}}\cong \overline{B_{k-2}B_{k+1}}$ and $\overline{A_{k+1}A_{k+2}}\cong \overline{B_{k+1}B_{k+2}}$
Statement 3 and 4, Segment Construction Axiom
$\overline{A_{k-3}A_{k+2}}\cong \overline{B_{k-3}B_{k+2}}$ because $\overline{A_{k-3}A_{k+1}}\cong \overline{B_{k-3}B_{k+1}}$ and $\overline{A_{k+1}A_{k+2}}\cong \overline{B_{k+1}B_{k+2}}$
Statement 3 and 4 and 5, Segment Construction Axiom
...
Statement 3 and 4 and 5 and ..., Segment Construction Axiom
$\overline{A_1A_{k+2}}\cong \overline{B_1B_{k+2}}$ because $\overline{A_1A_{k+1}}\cong \overline{B_1B_{k+1}}$ and $\overline{A_{k+1}A_{k+2}}\cong \overline{B_{k+1}B_{k+2}}$
Statement 3 and 4 and 5 and ... and $k+2$, Segment Construction Axiom
Suppose $\overline{B_1...B_{j-1}B_{k+2}B_j...B_{k+1}}$, then $\overline{B_1...B_{j-1}B_{k+2}B_j}\cong \overline{A_1...A_{j-1}A_{k+2}A_j}$ but $\overline{A_1...A_{j-1}A_j...A_{k+1}}$
Statement 3 and 4 and 5 and ... and $k+2$, Segment Construction Axiom, Proof by Contradiction
Theorem 2.4: Congruence Preserves Order
If $\overline{A_1A_2A_3...A_n}$ and $B_1$, $B_2$, $B_3$..., $B_n$ exist such that $\overline{A_1A_2}\cong \overline{B_1B_2}$ and $\overline{A_2A_3}\cong \overline{B_2B_3}$ and ... and $\overline{A_{n-1}A_{n}}\cong \overline{B_{n-1}B_{n}}$, then $\overline{B_1B_2B_3...B_n}$


Class: Aws::SageMaker::Types::HyperParameterTuningJobConfig
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Struct
|
|
|
Instance Chain:
self,
::Aws::Structure ,
Struct
|
|
| Inherits: |
Struct
|
| Defined in: | gems/aws-sdk-sagemaker/lib/aws-sdk-sagemaker/types.rb |
Overview
Configures a hyperparameter tuning job.
Constant Summary
Instance Attribute Summary
-
#hyper_parameter_tuning_job_objective ⇒ Types::HyperParameterTuningJobObjective
rw
The [HyperParameterTuningJobObjective][1] specifies the objective metric used to evaluate the performance of training jobs launched by this tuning job.
-
#parameter_ranges ⇒ Types::ParameterRanges
rw
The [ParameterRanges][1] object that specifies the ranges of hyperparameters that this tuning job searches over to find the optimal configuration for the highest model performance against your chosen objective metric.
-
#random_seed ⇒ Integer
rw
A value used to initialize a pseudo-random number generator.
-
#resource_limits ⇒ Types::ResourceLimits
rw
The [ResourceLimits][1] object that specifies the maximum number of training and parallel training jobs that can be used for this hyperparameter tuning job.
-
#strategy ⇒ String
rw
Specifies how hyperparameter tuning chooses the combinations of hyperparameter values to use for the training job it launches.
-
#strategy_config ⇒ Types::HyperParameterTuningJobStrategyConfig
rw
The configuration for the
Hyperband
optimization strategy. -
#training_job_early_stopping_type ⇒ String
rw
Specifies whether to use early stopping for training jobs launched by the hyperparameter tuning job.
-
#tuning_job_completion_criteria ⇒ Types::TuningJobCompletionCriteria
rw
The tuning job's completion criteria.
Instance Method Summary
::Aws::Structure
- Included
| #to_hash | Alias for Aws::Structure#to_h. |
Instance Attribute Details
#hyper_parameter_tuning_job_objective ⇒ Types::HyperParameterTuningJobObjective (rw)
The HyperParameterTuningJobObjective specifies the objective metric used to evaluate the performance of training jobs launched by this tuning job.
# File 'gems/aws-sdk-sagemaker/lib/aws-sdk-sagemaker/types.rb', line 20492
class HyperParameterTuningJobConfig < Struct.new( :strategy, :strategy_config, :hyper_parameter_tuning_job_objective, :resource_limits, :parameter_ranges, :training_job_early_stopping_type, :tuning_job_completion_criteria, :random_seed) SENSITIVE = [] include Aws::Structure end
#parameter_ranges ⇒ Types::ParameterRanges (rw)
The ParameterRanges object that specifies the ranges of hyperparameters that this tuning job searches over to find the optimal configuration for the highest model performance against your chosen objective metric.
# File 'gems/aws-sdk-sagemaker/lib/aws-sdk-sagemaker/types.rb', line 20492
class HyperParameterTuningJobConfig < Struct.new( :strategy, :strategy_config, :hyper_parameter_tuning_job_objective, :resource_limits, :parameter_ranges, :training_job_early_stopping_type, :tuning_job_completion_criteria, :random_seed) SENSITIVE = [] include Aws::Structure end
#random_seed ⇒ Integer
(rw)
A value used to initialize a pseudo-random number generator. Setting a random seed and using the same seed later for the same tuning job will allow hyperparameter optimization to find more a consistent hyperparameter configuration between the two runs.
# File 'gems/aws-sdk-sagemaker/lib/aws-sdk-sagemaker/types.rb', line 20492
class HyperParameterTuningJobConfig < Struct.new( :strategy, :strategy_config, :hyper_parameter_tuning_job_objective, :resource_limits, :parameter_ranges, :training_job_early_stopping_type, :tuning_job_completion_criteria, :random_seed) SENSITIVE = [] include Aws::Structure end
#resource_limits ⇒ Types::ResourceLimits (rw)
The ResourceLimits object that specifies the maximum number of training and parallel training jobs that can be used for this hyperparameter tuning job.
# File 'gems/aws-sdk-sagemaker/lib/aws-sdk-sagemaker/types.rb', line 20492
class HyperParameterTuningJobConfig < Struct.new( :strategy, :strategy_config, :hyper_parameter_tuning_job_objective, :resource_limits, :parameter_ranges, :training_job_early_stopping_type, :tuning_job_completion_criteria, :random_seed) SENSITIVE = [] include Aws::Structure end
#strategy ⇒ String
(rw)
Specifies how hyperparameter tuning chooses the combinations of hyperparameter values to use for the training job it launches. For information about search strategies, see How Hyperparameter Tuning Works.
# File 'gems/aws-sdk-sagemaker/lib/aws-sdk-sagemaker/types.rb', line 20492
class HyperParameterTuningJobConfig < Struct.new( :strategy, :strategy_config, :hyper_parameter_tuning_job_objective, :resource_limits, :parameter_ranges, :training_job_early_stopping_type, :tuning_job_completion_criteria, :random_seed) SENSITIVE = [] include Aws::Structure end
#strategy_config ⇒ Types::HyperParameterTuningJobStrategyConfig (rw)
The configuration for the Hyperband
optimization strategy. This
parameter should be provided only if Hyperband
is selected as the
strategy for HyperParameterTuningJobConfig
.
# File 'gems/aws-sdk-sagemaker/lib/aws-sdk-sagemaker/types.rb', line 20492
class HyperParameterTuningJobConfig < Struct.new( :strategy, :strategy_config, :hyper_parameter_tuning_job_objective, :resource_limits, :parameter_ranges, :training_job_early_stopping_type, :tuning_job_completion_criteria, :random_seed) SENSITIVE = [] include Aws::Structure end
#training_job_early_stopping_type ⇒ String
(rw)
Specifies whether to use early stopping for training jobs launched
by the hyperparameter tuning job. Because the Hyperband
strategy
has its own advanced internal early stopping mechanism,
TrainingJobEarlyStoppingType
must be OFF
to use Hyperband
.
This parameter can take on one of the following values (the default
value is OFF
):
OFF
: Training jobs launched by the hyperparameter tuning job do not use early stopping.
AUTO
: ::Aws::SageMaker
stops training jobs launched by the hyperparameter
tuning job when they are unlikely to perform better than
previously completed training jobs. For more information, see
Stop Training Jobs Early.
# File 'gems/aws-sdk-sagemaker/lib/aws-sdk-sagemaker/types.rb', line 20492
class HyperParameterTuningJobConfig < Struct.new( :strategy, :strategy_config, :hyper_parameter_tuning_job_objective, :resource_limits, :parameter_ranges, :training_job_early_stopping_type, :tuning_job_completion_criteria, :random_seed) SENSITIVE = [] include Aws::Structure end
#tuning_job_completion_criteria ⇒ Types::TuningJobCompletionCriteria (rw)
The tuning job's completion criteria.
# File 'gems/aws-sdk-sagemaker/lib/aws-sdk-sagemaker/types.rb', line 20492
class HyperParameterTuningJobConfig < Struct.new( :strategy, :strategy_config, :hyper_parameter_tuning_job_objective, :resource_limits, :parameter_ranges, :training_job_early_stopping_type, :tuning_job_completion_criteria, :random_seed) SENSITIVE = [] include Aws::Structure end


---
layout: post
title: Android SQLite Journal Information Disclosure (CVE-2011-3901)
date: '2012-05-03T16:11:00.001+03:00'
author: Roee Hay
tags:
modified_time: '2012-05-03T16:12:45.435+03:00'
thumbnail: https://img.youtube.com/vi/oCXLHjmH5rY/default.jpg
---
Recently I detected a security vulnerability in Android’s SQLite engine which can be exploited by a non-privileged application in order to disclose sensitive information. It enables a malicious application to eavesdrop on database activities performed by any other application using SQLite, allowing unauthorized access to information such as URL history, messages, and contacts.


{% include 'defaultHead.html' %}
{% include 'menu.html' %}
Grab
Select the users, browsers and profiles you want to grab the cookies of.
{% include "grabable.html"%}


The new method does not test for a base case.
I can't allow a chapter to go by without reminding you of this: A recursive definition has two parts:
Our seriously wrong drawStar()
method does not test
for a base case. Look at it again:
// Grievously Awful Method
//
private void drawStar( int x, int y, int size )
{
int endX, endY ;
// Six lines radiating from (x,y)
for ( int i = 0; i<6; i++ )
{
endX = x + (int)(size*Math.cos( (2*Math.PI/6)*i ));
endY = y - (int)(size*Math.sin( (2*Math.PI/6)*i ));
graph.drawLine( x, y, endX, endY );
drawStar( endX, endY, size/3 ) ;
}
}


hansel
explore your world through digital breadcrumbs
Share you favourite places in the form of digital breadcrumbs. Leaving a trail for others to follow. Let them experience the magic of each location and the journey you took to get there.
The app
Clean and simple. hansel is easy to use. Allowing you to focus on creation and exploration without getting in the way.
hansel is currently in the protoyping stage but things are looking good. If you are interested in following our progress sign up to our mailing list.


Our luxurious compound is a short 45-minute cab ride from General Mitchell International Airport. We currently offer a discount when you use Rusty's Cab Cars from the airport. Just mention the discount password "Superfancyfragilisticexpialadocious."


Useful Links
Tritonlink
TritonEd
CSE Moodle
SourceGrade
GradeScope
Github Link
GitLab Link
Upload Resume


This structures can be assigned or passed as a parameter or stacked.
Iterations
Memory management
When you have two objects that have a reference to each other, use this convention to avoid release locks: Downlinks member instance use retain. Uplinks member instance don’t use retain.


| New requests |
$$INFO_2W-AGO_NEWREQUESTS$$ |
$$INFO_1W-AGO_NEWREQUESTS$$ |
$$INFO_1W-AGO_NEWREQUESTS__DELTAIMG$$$$INFO_1W-AGO_NEWREQUESTS_DELTAVALUE$$
|
| Closed requests |
$$INFO_2W-AGO_CLOSEDREQUESTS$$ |
$$INFO_1W-AGO_CLOSEDREQUESTS$$ |
$$INFO_1W-AGO_CLOSEDREQUESTS__DELTAIMG$$$$INFO_1W-AGO_CLOSEDREQUESTS_DELTAVALUE$$
|
| Unresolved requests |
$$INFO_2W-AGO_UNRESOLVEDREQUESTS$$ |
$$INFO_1W-AGO_UNRESOLVEDREQUESTS$$ |
$$INFO_1W-AGO_UNRESOLVEDREQUESTS__DELTAIMG$$$$INFO_1W-AGO_UNRESOLVEDREQUESTS_DELTAVALUE$$
|
| Waiting for customer |
$$INFO_2W-AGO_WAITINGREQUESTS$$ |
$$INFO_1W-AGO_WAITINGREQUESTS$$ |
$$INFO_1W-AGO_WAITINGREQUESTS__DELTAIMG$$$$INFO_1W-AGO_WAITINGREQUESTS_DELTAVALUE$$
|
| Being handled by support agent |
$$INFO_2W-AGO_WORKINGREQUESTS$$ |
$$INFO_1W-AGO_WORKINGREQUESTS$$ |
$$INFO_1W-AGO_WORKINGREQUESTS__DELTAIMG$$$$INFO_1W-AGO_WORKINGREQUESTS_DELTAVALUE$$
|
|
Support SLA
|
| Unresolved % |
$$INFO_2W-AGO_SLA_UNRESOLVEDPCT$$ |
$$INFO_1W-AGO_SLA_UNRESOLVEDPCT$$ |
$$INFO_SLA_UNRESOLVEDPCT_DELTAIMG$$$$INFO_SLA_UNRESOLVEDPCT_DELTAVALUE$$ |
| Average time to resolution |
$$AVG_TIMETORESOLUTION_PRIORWEEK$$ |
$$AVG_TIMETORESOLUTION_LASTWEEK$$ |
$$AVG_TIMETORESOLUTION_DELTAIMG$$$$AVG_TIMETORESOLUTION_DELTAVALUE$$ |
|
Top 3 support request reasons last week
|
| 1. $$INFO_1W-AGO_TOP_REASON_1$$ |
$$INFO_1W-AGO_TOP_REASON_1_COUNT$$ |
| 2. $$INFO_1W-AGO_TOP_REASON_2$$ |
$$INFO_1W-AGO_TOP_REASON_2_COUNT$$ |
| 3. $$INFO_1W-AGO_TOP_REASON_3$$ |
$$INFO_1W-AGO_TOP_REASON_3_COUNT$$ |
|
Open support requests status
|
$$ONCALL_STATUSREPORT$$


Cysteine 144 is a key residue in the copper reduction by the beta-amyloid precursor protein.
The beta-amyloid precursor protein (beta-APP) contains a copper-binding site localized between amino acids 135 and 156 (beta-APP(135-156)). We have employed synthetic beta-APP peptides to characterize their capacities to reduce Cu(II) to Cu(I). Analogues of the wild-type beta-APP(135-156) peptide, containing specific amino acid substitutions, were used to establish which residues are specifically involved in the reduction of copper by beta-APP(135-156). We report here that beta-APP's copper-binding domain reduced Cu(II) to Cu(I). The single-mutant beta-APP(His147-->Ala) and the double-mutant beta-APP(His147-->Ala/His149-->Ala) showed a small decrease in copper reduction in relation to the wild-type peptide and the beta-APP(Cys144-->Ser) mutation abolished it, suggesting that Cys144 is the key amino acid in the oxidoreduction reaction. Our results confirm that soluble beta-APP is involved in the reduction of Cu(II) to Cu(I).


Signup
We do not share your personal details with anyone.
First Name
First Name is required.
Last Name
Last Name is required.
Email
email is required.
Please enter a valid email.
Password
password is required.
password must be at least 6 characters long.
password must have a number and alphabet
Confirm Password
password is required.
both password should Match
Signup


This document is the first introduction for ValOS voyagers - the first
adopters, entrepreneurs and evangelists - to the ValOS ecosystem, its
philosophy and its ultimate goals.
This document is part of the vault workspace @valos/kernel
(of domain @valos/kernel) which has the description:
`ValOS common infrastructure tools and libraries monorepository`.
§ How do I discover opportunities and enlighten others?
As a voyager you have stakes that matter. Whether you were to
invest on a ValOS collaborator as a financier, to adopt ValOS as
technology as an executive or just to commit your personal time and
energy on a ValOS project you need to see forward.
To make sound decisions and to position yourself proactively you
need to understand the big picture and philosophy of the ValOS
ecosystem. Only then you can enlighten others.
You use tailored but real-world ValOS demo setups to illustrate
how ValOS a solution could be configured to meet the needs at hand.


Welcome
We have a token, but have not yet checked the signature
make a secure request to the spring sever


Now we show and explain three sample programs written using Ocamlyacc: a reverse polish notation calculator, an algebraic (infix) notation calculator, and a multi-function calculator. These examples are simple, but Ocamlyacc grammars for real programming languages are written the same way.
The first example is that of a simple double-precision reverse polish notation calculator (a calculator using postfix operators). This example provides a good starting point, since operator precedence is not an issue. The second example will illustrate how operator precedence is handled.
The source code for this calculator is named rpcalc.mly. The .mly extension is a convention used for Ocamlyacc input files.
Here are the Ocaml and Ocamlyacc declarations for the reverse polish notation calculator. By default, comments are enclosed between /* and */ (as in C) except in Ocaml code.
/* file: rpcalc.mly */ /* Reverse polish notation calculator. */ %{ open Printf %} %token <float> NUM %token PLUS MINUS MULTIPLY DIVIDE CARET UMINUS %token NEWLINE %start input %type <unit> input %% /* Grammar rules and actions follow */
The header section (see The Header Section) has a code of openning "Printf" module.
The second section, Ocamlyacc declarations, provides information to Ocamlyacc about the token types (see The Ocamlyacc Declarations Section). Each terminal must be declared here. The first terminal symbol is the token type for numeric constants which has a value of float The possible arithmetic operators are PLUS, MINUS, MULTIPLY, DIVIDE, CARET for exponetiation and UMINUS for unary minus. These operator terminals don't have any value with it. The last terminal is NEWLINE, a token type for the newline character.
You must give the names of the start symbols and their types, too. In this examples, there is one start symbol named input which has type of unit. For each start symbol, the parser function with the same name is generated.
Here are the grammar rules for the reverse polish notation calculator.
input: /* empty */ { } | input line { } ; line: NEWLINE { } | exp NEWLINE { printf "\t%.10g\n" $1; flush stdout } ; exp: NUM { $1 } | exp exp PLUS { $1 +. $2 } | exp exp MINUS { $1 -. $2 } | exp exp MULTIPLY { $1 *. $2 } | exp exp DIVIDE { $1 /. $2 } /* Exponentiation */ | exp exp CARET { $1 ** $2 } /* Unary minus */ | exp UMINUS { -. $1 } ; %%
The groupings of the rpcalc ``language'' defined here are the expression (given the name exp), the line of input (line), and the complete input transcript (input). Each of these nonterminal symbols has several alternate rules, joined by the | punctuator which is read as ``or''. The following sections explain what these rules mean.
The semantics of the language is determined by the actions taken when a grouping is recognized. The actions are the Ocaml code that appears inside braces. See Actions.
You must specify these actions in Ocaml, but Ocamlyacc provides the means for passing semantic values between the rules. In each action, the semantic value for the grouping that the rule is going to construct should be given. The semantic values of the components of the rule are referred to as $1, $2, and so on.
Consider the definition of input:
input: /* empty */ | input line ;
This definition reads as follows: ``A complete input is either an empty string, or a complete input followed by an input line''. Notice that ``complete input'' is defined in terms of itself. This definition is said to be left recursive since input appears always as the leftmost symbol in the sequence. See Recursive Rules.
The first alternative is empty because there are no symbols between the colon and the first |; this means that input can match an empty string of input (no tokens). We write the rules this way because it is legitimate to type Ctrl-d right after you start the calculator. It's conventional to put an empty alternative first and write the comment /* empty */ in it.
The second alternate rule (input line) handles all nontrivial input. It means, ``After reading any number of lines, read one more line if possible.'' The left recursion makes this rule into a loop. Since the first alternative matches empty input, the loop can be executed zero or more times.
The parser function input continues to process input until a grammatical error is seen or the lexical analyzer says there are no more input tokens; we will arrange for the latter to happen at end of file.
Now consider the definition of line:
line: NEWLINE { } | exp NEWLINE { printf "\t%.10g\n" $1; flush stdout } ;
The first alternative is a token which is a newline character; this means that rpcalc accepts a blank line (and ignores it, since there is no action). The second alternative is an expression followed by a newline. This is the alternative that makes rpcalc useful. The semantic value of the exp grouping is the value of $1 because the exp in question is the first symbol in the alternative. The action prints this value, which is the result of the computation the user asked for.
As you can see, the semantic value associated with the line is unit.
The exp grouping has several rules, one for each kind of expression. The first rule handles the simplest expressions: those that are just numbers. The second handles an addition-expression, which looks like two expressions followed by a plus-sign. The third handles subtraction, and so on.
exp: NUM { $1 } | exp exp PLUS { $1 +. $2 } | exp exp MINUS { $1 -. $2 } ... ;
We have used | to join all the rules for exp, but we could equally well have written them separately:
exp: NUM { $1 }; exp: exp exp PLUS { $1 +. $2 }; exp: exp exp MINUS { $1 -. $2 }; ...
All of the rules have actions that compute the value of the expression in terms of the value of its parts. For example, in the rule for addition, $1 refers to the first component exp and $2 refers to the second one. The third component, PLUS, has no meaningful associated semantic value, but if it had one you could refer to it as $3. When the parser function recognizes a sum expression using this rule, the sum of the two subexpressions' values is produced as the value of the entire expression. See Actions.
The formatting shown here is the recommended convention, but Ocamlyacc does not require it. You can add or change whitespace as much as you wish. For example, this:
exp: NUM { $1 } | exp exp PLUS { $1 +. $2 } | ...
means the same thing as this:
exp: NUM { $1 } | exp exp PLUS { $1 + $2 } | ...
The latter, however, is much more readable.
The lexical analyzer's job is low-level parsing: converting characters or sequences of characters into tokens. The Ocamlyacc parser gets its tokens by calling the lexical analyzer. See The Lexical Analyzer Function.
Only a simple lexical analyzer is needed for the RPN calculator. This lexical analyzer reads in numbers as float and returns them as NUM tokens. It recognizes '+', '-', '*', '/', '^', 'n' as operators and returns the corresponding token: ADD, MINUS, MULTIPLY, DIVIDE, CARET and UMINUS. When it meets '\n', the returning token is NEWLINE. Spaces and unknown characers are skipped.
The return value of the lexical analyzer function is a value of the concrete token type. The same text used in Ocamlyacc rules to stand for this token type is also a Ocaml expression for the value for the type. Token type is defined by Ocamlyacc as a constructor of the concrete token type. In this example, therefore, NUM, PLUS, ... become values for the lexer function to use.
The semantic value of the token (if it has one) is returned with it. In this example, only NUM has a semantic value.
Here is the code for the lexical analyzer:
(* file: lexer.mll *) (* Lexical analyzer returns one of the tokens: the token NUM of a floating point number, operators (PLUS, MINUS, MULTIPLY, DIVIDE, CARET, UMINUS), or NEWLINE. It skips all blanks and tabs, unknown characters and raises End_of_file on EOF. *) { open Rtcalc (* Assumes the parser file is "rtcalc.mly". *) } let digit = ['0'-'9'] rule token = parse | [' ' '\t'] { token lexbuf } | '\n' { NEWLINE } | digit+ | "." digit+ | digit+ "." digit* as num { NUM (float_of_string num) } | '+' { PLUS } | '-' { MINUS } | '*' { MULTIPLY } | '/' { DIVIDE } | '^' { CARET } | 'n' { UMINUS } | _ { token lexbuf } | eof { raise End_of_file }
In keeping with the spirit of this example, the controlling function is kept to the bare minimum. To start the process of parsings, the only requirement is that it call parser function Parser.input with two argumenst: lexical analyzer function Lexer.token and lexbuf of Lexing.lexbuf type.
(* file: main.ml *) (* Assumes the parser file is "rtcalc.mly" and the lexer file is "lexer.mll". *) let main () = try let lexbuf = Lexing.from_channel stdin in while true do Rtcalc.input Lexer.token lexbuf done with End_of_file -> exit 0 let _ = Printexc.print main ()
When ther parser function detects a syntax error, it calls a function named parse_error with the string "syntax error" as argument. The default parse_error function does nothing and returns, thus initiating error recovery (see Error Recovery). The user can define a customized parse_error function in the header section of the grammar file such as:
let parse_error s = (* Called by the parser function on error *) print_endline s; flush stdout
After parse_error returns, the Ocamlyacc parser may recover from the error and continue parsing if the grammar contains a suitable error rule (see Error Recovery). Otherwise, the parser aborts by raising the Parsing.Parse_error exception. We have not written any error rules in this example, so any invalid input will cause the calculator program to raise exception. This is not clean behavior for a real calculator, but it is adequate for the first example.
Before running Ocamlyacc to produce a parser, we need to decide how to arrange all the source code in source files. For our example, we make three files: rpcalc.mly for Ocamlyacc grammar file, lexer.mll for Ocamllex input file, main.ml which contains main function which calls our parser function.
You can use the following command to convert the parser grammar file into a parser file:
ocamlyacc file_name.mly
In this example the file was called rpcalc.mly (for ``Reverse Polish CALCulator''). Ocamlyacc produces a file named file_name.ml. The file output by Ocamlyacc contains the source code for parser function input. The additional functions in the input file (parse_error) are copied verbatim to the output.
Here is how to compile and run the parser file and lexer file:
# List files in current directory. $ ls .depend Makefile lexer.mll main.ml rpcalc.mly # Compile the Ocamlyacc parser. $ make ocamlyacc rpcalc.mly ocamlc -c rpcalc.mli ocamllex lexer.mll 15 states, 304 transitions, table size 1306 bytes ocamlc -c lexer.ml ocamlc -c rpcalc.ml ocamlc -c main.ml ocamlc -o rpcalc lexer.cmo rpcalc.cmo main.cmo rm rpcalc.mli lexer.ml rpcalc.ml # List files again. $ ls ./ .depend lexer.cmo main.cmi main.ml rpcalc.cmi rpcalc.mly ../ Makefile lexer.cmi lexer.mll main.cmo rpcalc* rpcalc.cmo
The file rpcalc now contains the executable code. Here is an example session using rpcalc.
$ rpcalc 4 9 + 13 3 7 + 3 4 5 *+- -13 3 7 + 3 4 5 * + - n Note the unary minus, n 13 5 6 / 4 n + -3.166666667 3 4 ^ Exponentiation 81 ^D End-of-file indicator $


| File | Statements | Branches | Functions | Lines | |||||
|---|---|---|---|---|---|---|---|---|---|
| app.js | 58.9% | 129/219 | 55.26% | 42/76 | 46.67% | 7/15 | 58.53% | 127/217 | |
| config.js | 40% | 4/10 | 7.14% | 1/14 | 100% | 0/0 | 40% | 4/10 | |
| create_button.js | 100% | 30/30 | 100% | 0/0 | 100% | 6/6 | 100% | 30/30 | |
| firebase.js | 13.18% | 17/129 | 0% | 0/22 | 2.56% | 1/39 | 13.49% | 17/126 | |
| localUserAPI.js | 18.18% | 2/11 | 0% | 0/6 | 0% | 0/3 | 18.18% | 2/11 | |
| messenger.js | 31.43% | 11/35 | 0% | 0/12 | 18.18% | 2/11 | 32.35% | 11/34 | |
| result.js | 100% | 17/17 | 100% | 0/0 | 100% | 1/1 | 100% | 17/17 | |
| summary.js | 100% | 51/51 | 96.88% | 31/32 | 100% | 4/4 | 100% | 48/48 | |
| utill_array.js | 100% | 25/25 | 100% | 4/4 | 100% | 5/5 | 100% | 25/25 |


Menu
3
My To Do List
Add
Finish yesterday's work
Make faculty table
Work in the backend
Organize office
2
Your message 1
Your message 2
3
Your Notification 1
Your Notification 2
Your Notification 3
[Logout]
×
Are you sure you want to logout?
×
Dashboard
Show All Schedule
Show Top routes
Contact
Search Bus
click
Showing Top routes
Baddi Campus to Pinjore
Baddi Campus to Pinjore
Baddi Campus to Pinjore
Baddi Campus to Pinjore
Baddi Campus to Pinjore
Baddi Campus to Pinjore
Baddi Campus to Pinjore
Baddi Campus to Pinjore
Baddi Campus to Pinjore


Mindfulness in Practice
In Conversation
Something I've wanted to do for a while is connect with someone living on the street, hear their perspective
on life and their own position. When I pass someone begging in the street I never know how to behave.
How much need are they in? Do they have places to go? How did they get there?
I set myself a challenge here
to go out and share lunch with someone I pass who's begging and listen to them for a while...
This was really interesting. I walked down Cuba st until I saw someone with a hat out and asked if they wanted some lunch.
I sat down to eat sushi with them and did my best to listen to whatever they said, asking as little as possible. Some things I noticed:
-
I started finding what they were saying more interesting the more deliberately and carefully I listened.
-
I noticed that at each point where I could have said something, but instead stayed waiting and listening, or asked a relevant question, they could tell I was paying attention and they started to speak more openly.
-
It was initially a bit uncomfortable for me and maybe for them (who is this guy?), but that didn't last long, afterwards I felt like there'd been a real point of connection. It didn't matter so much that we were different people, that there was no reason for us to speak, we could just talk person to person without need for more context than that.
-
If someone's telling me their opinion on something, I find it actually quite hard to listen if I disagree, it depends how strongly I feel about the subject, but it doesn't take much. I start having an urge to reply and convince them to see things another way.
-
After a while I was thinking about leaving and heading back. I noticed that as long as I felt like I was staying in conversation by choice, listening was easier. A few moments I wanted to leave but had to wait for an opening and wasn't there by choice, as soon as this happened I stopped taking in what they were saying.
Which of the suggested techniques will you use?
I enjoyed the walking. Especially taking a break from coding, going out and just wandering about town slowly,
paying attention to my body and also surroundings, the people passing. Maybe in what I did my attention was more outward than what was suggested,
but I really enjoyed it. Going to be wandering some more.
Also...
Do less than you can.Going to put this on my wall. I think it's equally important to push limits and capacity at times. But for the long game, taking action that supports curiousity, enjoyment and drive is much more important than pushing hard for short term growth or gain if it's going to erode that core motivation.
Other musings
At times I'm reading thinking 'I know this already, this can't offer me anything.' And in a way I have already been exposed
to the ideas, but in practise meditation/mindfulness has felt inaccessible for a while and coming into contact with a basic re-introduction through this
book and possibly knowing that I'm connected to a group that's also doing their own experiments - I'm finding it feels a bit more workable and enjoyable again.
The term 'mindfulness' feels bloated with association. I find myself not wanting to write it even! I'd rather write 'attentive listening' than
'mindful listening'. I've heard much more talk than I've seen good examples of it and I get sick of hearing it.


Oklahoma outlasts TCU with controversial first-down call from refs
by Zac Al-KhateebFor the second time this season, Oklahoma staved off an upset-minded opponent to keep its Big 12 and College Football Playoff hopes alive. And for the second time, that win came in controversial fashion.
On Saturday, the victory was secured after an iffy spot by officials, who awarded Sooners quarterback Jalen Hurts a first down that allowed Oklahoma to run the clock out instead of punting the ball to TCU for one final drive.
Oklahoma ended up winning 28-24 and securing a berth in a fourth consecutive Big 12 championship game (2010, 2017-19).
MORE: How Oregon's loss affects Playoff race
Here's a replay of the pivotal spot. The video seems to show Hurts was stopped well short of the line to gain on third down.
Officials gave Hurts the first down on the field and, after a lengthy review, said the call on the field stood. It was yet another controversial call by Big 12 officials in an OU game; refs failed to call what looked to be defensive pass interference by Oklahoma on Iowa State's 2-point conversion attempt in the final seconds of the Sooners' 42-41 win on Nov. 9.
Regardless, Oklahoma advanced to 10-1 (7-1 Big 12) with the victory. Hurts finished the game with 318 combined yards and four touchdowns (and two turnovers that nearly cost his team dearly).
Here are some of the reactions from the controversial first-down spot:


Next.js automatically determines that a page is static (can be prerendered) if it has no blocking data requirements. This determination is made by the absence of getServerSideProps
and getInitialProps
in the page.
This feature allows Next.js to emit hybrid applications that contain both server-rendered and statically generated pages.
Statically generated pages are still reactive: Next.js will hydrate your application client-side to give it full interactivity.
One of the main benefits of this feature is that optimized pages require no server-side computation, and can be instantly streamed to the end-user from multiple CDN locations. The result is an ultra fast loading experience for your users.
If getServerSideProps
or getInitialProps
is present in a page, Next.js will switch to render the page on-demand, per-request (meaning Server-Side Rendering).
If the above is not the case, Next.js will statically optimize your page automatically by prerendering the page to static HTML.
During prerendering, the router’s query
object will be empty since we do not have query
information to provide during this phase. After hydration, Next.js will trigger an update to your application to provide the route parameters in the query
object.
Note: Parameters added with dynamic routes to a page that’s using
getStaticProps
will always be available inside thequery
object.
next build
will emit .html
files for statically optimized pages. For example, the result for the page pages/about.js
would be:
And if you add getServerSideProps
to the page, it will then be JavaScript, like so:
App
with getInitialProps
then this optimization will be turned off in pages without Static Generation.Document
with getInitialProps
be sure you check if ctx.req
is defined before assuming the page is server-side rendered. ctx.req
will be undefined
for pages that are prerendered.


By default, IntelliJ IDEA automatically inserts backslash escape symbols (\) when you paste text into a JavaScript string. Clear the checkbox to suppress automatic text escaping.
\


The front end for the Research Hub, built with Angular and Angular Material.
Follow steps 1 and 2 in the research-hub-deploy README.
To experience the full functionality of the app, you also need to run research-hub-api and research-hub-db whilst developing. Follow the instructions on the following pages:
Navigate to the research-hub-web folder (this command assumes you're in the research-hub-deploy
folder):
cd build/research-hub-web
Install dependencies:
npm install
Then run npm run start
for a dev server. Navigate to http://localhost:4200/
. The app will automatically reload if you
change any of the source files.
To test run the app in production mode, run npm run test-prod
.
Run npm run ng generate component component-name
to generate a new component. You can also use npm run ng generate directive|pipe|service|class|module
.
Run npm run build
to build the project. The build artifacts will be stored in the dist/
directory.
Run npm run build-prod
to build the project in production mode.
You can also visualise the size of the webpack output files with webpack bundle analyzer,
an interactive zoomable treemap. To do this, once the build has finished, run npm run bundle-report
.
Run npm run test
to execute the unit tests via Karma.
Run npm run e2e
to execute the end-to-end tests via Protractor.
Before running the tests make sure you are serving the app via npm run start
.
Run npm run compodoc
to generate new documentation via Compodoc.
To get more help on the Angular CLI use npm run ng help
or go check out the Angular CLI README.


Rebecca is senior in Medill studying Marketing Communications and Political Science. She is from Burlingame, CA and enjoys watching ice hockey and playing softball. She contributed to the researching, reporting and creation of the NSH portion of the site.
Nick is a senior in Medill studying Marketing Communications and Economics. Originally from McLean, VA, Nick is a diehard Washington D.C. sports fan and can only hope for a championship. As a member of the team working on this site, Nick was in charge of the Farley Center timeline, as well as the Q&A with Sam Faycurry.
Haley is a junior from Warsaw, IN studying journalism and political science. When she isn't spending time out by Lake Michigan, Haley loves to watch (and re-watch) her favorite Aaron Sorkin shows. She contributed to the Design For America portion of this project.


I am back again :D
I have just started my new job, so recently had little time to update my blog (Too Lazy…).
Here are the plans for my next several posts. First I will review SVM to finish the writing of fundamental ML algorithms part. Then I will move forward to deep learning.
All right, today let me talk about what is SVM. I decide to divide this topic into two posts: the first one aims to have an introduction about what is the relationship between SVM and Logistic Regression, what optimization problem it needs to solve; the second post will talk about kernel trick, slack variable and the loss function of SVM.

1. Introduction
SVM is one of the most popular algorithms among decades. Even if its name is quite obscure, the idea behind it is quite easy to understand. Essentially, we aim to find a good classifier that maximizes the margin.
1.1 Relationship with Logistic Regression
Based on our previous post, we know logistic regression uses sigmoid function to map feature combination to \((0,1)\) and we can use logit to decide which class the new data point belongs to: \[ln(\frac{P(y=1|X)}{P(y=0|X)}) = ln(\frac{1}{e^{-\theta^T X}})=ln(e^{\theta^TX})=\theta^TX\] If \(\theta^TX>0\), we assign \(y=1\), otherwise we assign \(y = 0\).
Let me do some transformation about the logit: \[\theta^Tx_i = \theta_0+\theta_1x_{i1}+\theta_2x_{i2}+\cdots + \theta_px_{p1}\] We define \(\theta_0 = B\), \([\theta_1,\theta_2,\cdots,\theta_p ]=w^T\), then we have: \[\begin{align*} \theta^Tx_i &= \theta_0+\theta_1x_{i1}+\theta_2x_{i2}+\cdots + \theta_px_{p1} \\ &=B + w^Tx_i \end{align*}\] It is just the expression of a hyperplane. In the end, we just change the final mapping a little bit:
if \(B + w^Tx_i > 0\), we assign \(y = 1\); otherwise we assign \(y = -1\)
So, we can see that logistic regression and SVM use almost the same discriminant approach, and they both are linear classifier. So, not need to say sometimes they can obtain quite similar results. However, their differences are also very obvious, I will list here for now, hopefully we can understanding them clearly after reading this post.
- Loss function is different
- SVM only use SV to decide its decision boundary whereas LR will use all the data
- In most cases, SVM will use kernel trick but LR not.
- SVM need normalized data whereas LR doesn't need
- SVM has the function called Structural Risk Minimization (SRM) since its cost function contains regularization term. But LR's doesn't.
2. Model Structure
Next let us talk about the key part of SVM. Basically, the target of SVM is to find a hyperplane linearly separates two classes. Thus, to solve this problem, we need to figure out two things:
- How to define the goodness of a hyperplane
- How to find the best hyperplane based on the metric from question 1
2.1 Maximal Margine Metric
The most intuitional measure of the goodness of a hyperplane is to maximize the margin. But how to define it? Here, we use geometric margin as our distance measure. Suppose our hyperplane is \(w^Tx + b = 0\), then the geometric margin is: \[\hat{r} = \frac{y_p(w^Tx_p + b)}{||w||}\] To make it more clear, the distance between a point and a hyperplane has the fomular: \[dist = \frac{|w^Tx_i+b|}{||w||}\] Here we use \(y(w^T+b)\) to replace \(|w^T+b|\) because: \[if \ (w^T+b)>0 \ y=1 \\ if \ (w^T+b)<=0 \ y=-1\] so \(y(w^T+b)\) will always larger than or equal to zero, it not only gives us the distance between point and hyperplane, but also have some benefits when we introduce slack variable.
2.2 Optimization
2.2.1 Objective Function
After defining our metric, we can then summarize our goal as below in a more mathematic way: \[Max \ \hat{r} \\ s.t. \hat{r_i} \ge \hat{r} \ \ for \ i=1,..,n\] Where \[\hat{r_i} = \frac{y_i(w^Tx_i + b)}{||w||} \ge \frac{y_p(w^Tx_p + b)}{||w||}=\hat{r} \\=> y_i(w^Tx_i + b) \ge y_p(w^Tx_p + b)\] Here \(x_p\) represents the support vectors.
Since \((w^Tx + b)=0\) and \(c(w^Tx + b)=0\) define the same plane, so we have the freedom to choose the normalization of \(w\). In order for the convenience, we choose \(y_p(w^Tx_p + b)=1\), which means \(\hat{r}=\frac{1}{||w||}\). The following is a good illustration about this:
Then our optimization problem changes to: \[ Max \ \frac{1}{||w||} \\ s.t. y_i(w^Tx_i + b) \ge 1 \ \ for \ i=1,..,n \]
2.2.2 Optimization Method
After knowing our objective function, next we need to figure out how to solve this optimization problem. I will not have a whole mathematical proof here, but knowing the whole process is a necessity for better understanding what the kernel trick is.
Let us first further transform our objective function a little bit: \[ Min \ \frac{1}{2}||w||^2 \\ s.t. y_i(w^Tx_i + b) \ge 1 \ \ for \ i=1,..,n \] Which is equivalent to our previous objective function. Now our objective function is a quadratic function and at the same time the constraint is linear. The purpose is that we can then use Lagrange Duality and transform our problem to a dual problem.
I know it sounds very complicated, but basically, we add a Lagrange multiplier \(\alpha\) to our constraint and define the Lagrange function that describe our optimization problem by itself: \[L(w,b,\alpha)=\frac{1}{2}||w||^2-\sum_{i=1}^{n}\alpha_i(y_i(w^Tx_i + b)-1)\] And \[\theta(w)=max_{\alpha_i \ge 0}L(w,b,\alpha)=\lbrace^{\frac{1}{2}||w||^2 \ when \ y_i(w^Tx_i + b)-1 \ge 0} _{+ \infty \ when \ y_i(w^Tx_i + b)-1 < 0}\]
So our final objective function changes to: \[min_{w,b}\theta(w)\] I ignore all the steps for solving this optimization problem, and here are the results:
- \(w^{*} =\sum_{i=1}^{n}\alpha_iy_ix_i\)
- \(b^{*} = -\frac{max_{i,y_i=-1}w^{*T}x_i+min_{i,y_i=1}w^{*T}x_i}{2}\)
So, we substitute these optimal value into our original function: \[f(x) = (\sum_{i=1}^{n}\alpha_iy_ix_i)^Tx+b^* =\sum_{i=1}^{n}\alpha_iy_i\langle x_i,x \rangle + b^*\] Notice that \(x_i\) is our training data, and \(x\) is the new data point. Based on our previous discussion, if \(f(x) > 0\), then we will assign it to class 1. So we could see the only part that decides the classification result is \(\langle x_i,x \rangle\), the inner prodution. This finding is one of the most important result for SVM.
It can be said that the reason kernel trick is used easily in SVM is because of this result. So what kernel trick is? and how does SVM deals with data that cannot be classified perfectly? Let us see in the next post.
Reference:
An Introduction to Statistical Learning
http://www.robots.ox.ac.uk/~az/lectures/ml/lect2.pdf
http://www.robots.ox.ac.uk/~az/lectures/ml/lect3.pdf
支持向量机通俗导论 https://www.zhihu.com/question/26768865/answer/34078149


About Me:
- Biography:
- Job Experience:
- Protective Services Project Coordinator
Security Industry Specialists
08/2016 – 12/2018
Duties included acting as a first responder and providing admin /communications to the client Executive Protection team for any event impacting or threatening the executive staff. This role included providing administrative support to the Executive Protection team, which included finance responsibilities, contractor management, logistics, and intelligence gathering and reporting.
- Intelligence Program Manager / Assistant Operations Coordinator for US Defense Attache Office, Lisbon Portugal
Defense Intelligence Agency
01/2012 – 05/2015
Organized, provided and managed executive support for the Senior Defense Official and Attaches. Duties included coordinating operational management, managing unit intel collection and intel assets, maintaining all unit security and safety training and requirements, coordinating all visits to Portuguese territories made by US military warships, aircraft, and personnel, Co-chairing the US Embassy Lisbon Overseas housing assignment board, and coordinating surveys used in determining the overseas cost of living allowance for all US military members stationed in Portugal.
- Special Operations Forces Public Affairs and Navy Special Warfare Group One Combat Visual Media Cell
NSWG-1
09/2009 – 06/2011
Provided photographic, public affairs, and video support to ten NSW tenant commands including SEAL teams 1, 3, 5, and 7.
- Technological Surveillance and Reconnaissance Specialist
Navy Special Warfare Support Activity One
06/2008 – 09/2009
Responsible for the maintenance, application, and distribution of all technical surveillance equipment including deployment, training, and exercise support for all NSWG-1 SEAL squadrons. Deployed to Iraq in 2009 with SEAL Squadron 7 where I was the technological surveillance and recon specialist providing recon support for multiple missions.
- Education:
- Defense Attache Training Course, Washington DC
03/2015
The Joint Military Attaché School trains members of the five uniformed services and Department of Defense civilians for duty in DIA’s Defense Attaché System (DAS).
- SERE, Warner Springs CA
01/2009
Survival, Evasion, Resistance, and Escape (SERE) is a program, best known by its military acronym, that provides U.S. military personnel, U.S. Department of Defense civilians, and private military contractors with training in evading capture, survival skills, and the military code of conduct.
- Procinctu Group Tactical Training, Riverside CA
01/2009
Anti-terrorism, force protection, Personal Security Detail (PSD), tactical weaponry, instinctive vehicle operations, convoy security, urban and maritime close quarters battle, and technical security training.
- US Navy Photojournalism Specialist Course, Defense Information Course, Fort Meade MD
10/2009
Defense Information School’s Intermediate Photojournalism specialist course provides US Navy personnel with the experience necessary to excel in providing the US Armed Forces with photojournalism and public affairs support.
- US Navy Mass Communication Specialist Course, Fort Meade MD
01/2008
Defense Information School’s Mass Communication Specialist training provides US sailors with a basis in photojournalism, videography, journalism, graphic design, and public affairs.
- Goals:
PLACE BIO HERE
The Guessing Game :
- 1. Have I ever jumped out of a plane?
- A.
- 2. Have I ever crashed a humvee?
- A.
- 3. Have I been to more than 20 countries?
- A.
- 4. Have I been spearfishing?
- A.
- 5. Do I like crab?
- A.
- 6. How many continents have I been to?
- A.
- 7. What states have I lived in?
- A.