Saturday's Bets of the Day: Selections for horse racing, football and golf
by Sporting LifeIt's a Grade One Saturday in the world of horse racing, where the best bets are on the undercard, while we've also tips for football and golf.
- Click on tipster name for full preview
- Click on selection to populate betslip
Racing
The Nigel Twiston-Davies-trained KAPGARRY absolutely bolted up at Wetherby at the start of the month and seemed to leave his Warwick run well behind.
The handicapper has reacted by shunting him up 9lb but he’s still rated below his peak mark achieved over hurdles and he looks capable of becoming a better chaser still based on his bloodless success in West Yorkshire.
He’s going up in grade on Saturday in a race packed with interesting potential improvers but this lightly-raced six-year-old is the kind of horse Twiston-Davies will have plenty of fun with over the winter.
In addition, following all Tom Bellamy’s rides for the yard in the past would have yielded a tidy £1 level stakes profit of £19.74.
BOLD PLAN looks worth backing in the Betfair Exchange Handicap Hurdle at Haydock on Saturday.
Evan Williams’ horse had some really good form as a novice last season and he hinted that he might be well treated off Saturday’s mark of 130 when he beat everything bar Poker Play off that rating in handicap company at Uttoxeter in March.
He could’ve gone novice chasing this campaign on the back of that but he turned out over hurdles at Chepstow last month and it’s interesting that Williams perseveres with him over timber despite being well beaten in 10th.
It looks likely that he needed that run badly and he’s come down a few pounds, too, so it could be worth taking a chance that he comes on significantly for the outing as he looked such a good prospect last season.
He’s a very good jumper and Haydock should be ideal, while Robbie Power is an interesting jockey booking and his quiet riding style could suit this horse very well indeed.
Claiming rider William Marshall has a decent mount in the Betfair Exchange Handicap Hurdle aboard Falcon Sun, beaten eight lengths by Benny's Bridge at Cheltenham last month.
However, in the same race, WHOSHOTTHESHERIFF was travelling like a winner before over-jumping and coming down at the second last.
Promising when trained by Gordon Elliot in Ireland, the five-year-old had won his previous two starts for new handler Phil Kirby at Sedgefield (2m4f) and Carlisle (2m1f) and could rate much higher in the future.
Football
Before the events on late Tuesday/early Wednesday, this would really have been a tough one to call with both sides out of form, but with Jose Mourinho taking charge of his first game as spurs boss (that still feels weird to type!), you can only see it going one way now.
As the Portuguese said on his arrival, he has a quality squad at his disposal and there should be a positive reaction to his appointment. Throw in the London derby atmosphere and this could be a great game to come back to after the international break.
With their poor performances of late, it remains to be seen whether Manuel Pellegrini's side will score, but the odds-against price available on SPURS TO WIN WITH OVER 1.5 GOALS in the game looks too good to turn down.
It's the big one of the weekend and about as intriguing as big games get as Manchester City go into the game in unfamiliar circumstances, coming off a bad defeat and sitting in fourth in the table - looking up at Chelsea a point above them.
City's defence was a shambles at Anfield and, as good as they are going forward, if they're that bad against Frank Lampard's flying Blues then they'll have their hands full again. Chelsea have won six on the spin in the league and are the top scorers on the road - while nobody has scored more at home than City.
Everywhere you look there are goals - amazingly Chelsea's away games average five goals per match this season, and with Tammy Abraham, Mason Mount and Christian Pulisic all looking dangerous they'll fancy their chances up at the Etihad.
City always seem to score though, and Pep Guardiola normally gets a response out of his side after a loss, although he's had a little too much practice of that this season already. It's tough to call, and 5/1 on a Chelsea win looks huge given the run they're on, but preference always has to go to City at home - probably even more so when they've a point to prove.
So while we're not quite confident enough to predict a Chelsea win, there's at least a goal here for them, maybe more, and with City coming flying out of the traps, that goal could well come on the break early, in what we're anticipating to be a breathless first 45 minutes. Back BOTH TEAMS TO SCORE in the first half at close to 3/1.
After last week's welcome 12/1 winner, Saturday's Sporting Life Accumulator is an 18/1 four-fold which covers three divisions of the EFL.
Stoke, Rotherham, Peterborough and Forest Green are our selected quartet, for reasons given in the preview you can access by clicking the below image.
Golf
Ben Coley
The concern with JON RAHM coming into the DP World Tour Championship was that, after a seven-week hiatus, he might struggle to keep tabs on the likes of Rory McIlroy over the first couple of days.
After a second round which saw him pick up four shots over the closing five holes, Rahm has answered the big question and set himself up perfectly for a weekend charge from three behind - the same margin he trailed en route to victory here in 2017.
Then as is the case now, Tommy Fleetwood was playing under the pressure of a Race to Dubai battle and the feeling is that Rahm is better equipped to cope as the pair go off in pursuit of surprise halfway leader Mike Lorenzo-Vera.
The Frenchman has played wonderfully well so far but, as was the case with Zander Lombard last weekend, the pressure is sure to tell. He's yet to win on the European Tour and to do so in an event with a winner's cheque of $3million would be quite something.
If Lorenzo-Vera falters, that leaves Rahm as by far the most likely to capitalise, the three shots he has in hand over McIlroy likely to prove decisive. He's favourite - none of the above is controversial - but at best prices of 5/2 he's still underestimated.
Rahm should also benefit from being in the penultimate group alongside Tom Lewis, and he is fancied to take control of the tournament from here and perhaps even lead into Sunday.


Jason Tilley
About
Portfolio
Contact
(current)
Portfolio
GitHub - Weather-Trips
Weather Trips
GitHub - Weather Dashboard
Weather Dashboard
GitHub - BillBoards
BillBoard Budget
GitHub - Work Day Planner
Workday Planner
GitHub - Burger
Eat Da Burger!
GitHub - Note Taker
Note Taker


People and Organizations¶
The People/Organizations tab is used to capture information about the people and organizations important for your experiment.
Organizations¶
Organizations can include the research institute or university managing the LTE; the farm where the experiment is located; organizations funding the LTE.
For each organisation you must provide a Name and select organizations the Role from the drop down list.
Optionally you can specify contact methods for the organization. You can add multiple contact methods using the Add another contact method button.
People¶
People can include the LTEs Principal Investigator; Data Manager; Farm Manager; a general contact email.
For each person you must provide a Name.
The Affiliation and Role are both recommended.
You should make one of your persons a contact by checking the Is contact person for this experiment box. For this person you must select at least one contact method. You can add multiple contact methods (e.g. email and phone) using the ‘Add another contact method’ button.
If, instead of a named person, your main contact is a generic email (e.g<EMAIL_ADDRESS>you should add this a person with a ‘dummy’ name e.g ‘Contact us’.


NEET to be scrapped? Madras High Court asks Centre why it should not be
Why can't NEET be scrapped, Madras HC asks Centre
by IANSThe Madras High Court on Monday questioned Central government why the National Eligibility-cum-Entrance Test (NEET) brought in by the earlier Congress government should not be scrapped by it.
Hearing the petition relating to impersonation in NEET, the court said while the Central government is reversing various schemes brought in by the earlier government, why it could not reverse the decision on the medical entrance exam or NEET.
The court observed it is impossible to get medical college admission without going for private coaching centres to clear the NEET. The court asked how poor students can get admission as only the moneyed class can clear NEET.
According to the court, while it was said NEET would reduce the cost of medical education, it seems now the money is earned by the coaching centres.


Gets the file/SMB shares on the local computer.
Get-FileShare [[-Name] <String>] [<CommonParameters>]
The Get-FileShare
function uses WMI to get the file/SMB shares on the current/local computer. The returned objects are Win32_Share
WMI objects.
Use the Name
paramter to get a specific file share by its name. If a share with the given name doesn't exist, an error is written and nothing is returned.
The Name
parameter supports wildcards. If you're using wildcards to find a share, and no shares are found, no error is written and nothing is returned.
Get-FileShare
was added in Carbon 2.0.
| Name | Type | Description | Required? | Pipeline Input | Default Value |
|---|---|---|---|---|---|
| Name | String | The name of a specific share to retrieve. Wildcards accepted. If the string contains WMI sensitive characters, you'll need to escape them. |
false | false |
Get-FileShare
Demonstrates how to get all the file shares on the local computer.
Get-FileShare -Name 'Build'
Demonstrates how to get a specific file share.
Get-FileShare -Name 'Carbon*'
Demonstrates that you can use wildcards to find all shares that match a wildcard pattern.


Quiz Details
Quiz no: {{quizNo}}
Quiz Name
{{quiz.name}}
Date
{{quiz.date | date}}
Duration
{{quiz.duration}} hours
help
Questions for this quiz
0 questions
1 question
1">{{questions?.length}} questions
done
Quiz is
Active
1 question
close
Quiz is
Inactive
1 question
assignment_turned_in
Add New Question to quiz
Quiz no: {{quizNo}}
Questions
| Questions | Answers | Correct Answer | |
|---|---|---|---|
| {{question.question}} |
{{answer}} |
{{question.correctAnswer}} |


| The coolest calculator on the web | Calculate | Convert | About us | Contact us | Download | Preferences | | |
Unit Conversions
History
All your previous conversions will be displayed here |
| Calculate | Convert | About us | Contact us | Download | Preferences |
| Copyright © 2007. All rights reserverd. |


|
|
IFXMarker Class ReferenceThe IFXMarker interface provides i/o control of components within the scenegraph database.
More...
Inheritance diagram for IFXMarker:
List of all members.
Detailed Description
The IFXMarker interface provides i/o control of components within the scenegraph database.
- Note:
- If Mark() or Marked() is called on a component that has not been initialized(), an IFX_E_NOT_INITIALIZED error will be returned.
Member Function Documentation
| virtual void IFXAPI IFXMarker::GetExternalFlag |
( |
BOOL * |
bExternalFlag |
) |
[pure virtual] |
|
|
|
Returns flag indicating if object was loaded from external refernced file.
Implemented in CIFXMarker. |
| virtual U32 IFXAPI IFXMarker::GetPriority |
( |
void |
|
) |
[pure virtual] |
|
|
|
Gets the streaming sequence relative to other components.
Implemented in CIFXMarker. |
| virtual IFXRESULT IFXAPI IFXMarker::GetSceneGraph |
( |
IFXSceneGraph ** |
ppOutSceneGraph |
) |
[pure virtual] |
|
|
|
Returns the scenegraph that was last passed into Initialize().
Implemented in CIFXMarker. |
| virtual IFXRESULT IFXAPI IFXMarker::Mark |
( |
void |
|
) |
[pure virtual] |
|
| virtual IFXRESULT IFXAPI IFXMarker::Marked |
( |
BOOL * |
pbOutMarked |
) |
[pure virtual] |
|
|
|
Determines whether a component is marked.
Implemented in CIFXMarker. |
| virtual void IFXAPI IFXMarker::SetExternalFlag |
( |
BOOL |
bExternalFlag |
) |
[pure virtual] |
|
|
|
Sets flag to indicate if object was loaded from external referenced file or not.
Implemented in CIFXMarker. |
| virtual void IFXAPI IFXMarker::SetPriority |
( |
U32 |
uInPriority, |
|
|
BOOL |
bRecursive = IFX_TRUE , |
|
|
BOOL |
bPromotionOnly = IFX_TRUE |
|
) |
[pure virtual] |
|
|
|
Set the streaming priority ( zero = initial load segment ) The two default, optional arguments are used in the following way:
- by default, bRecursive == TRUE, indicating that components should propagate the SetPriority() call to any subordinate (child) components.
If bRecursive == FALSE, the SetPriority() only applies to the component upon which the method was called (i.e. local only).
- by default, bPromotionOnly == TRUE, indicating that the specified priority (uInPriority) is only applied if it is a greater priority (lower U32) than the current priority of the component. In other words, by default, you cannot lower a components priority. If bPromotionOnly == FALSE, then the component accepts the new priority irregardless of its value relative to its old priority.
Implemented in CIFXMarker, CIFXModel, CIFXNode, CIFXShaderLitTexture, and CIFXTextureObject. |
| virtual IFXRESULT IFXAPI IFXMarker::SetSceneGraph |
( |
IFXSceneGraph * |
pInSceneGraph |
) |
[pure virtual] |
|
|
|
Declares database ownership.
Implemented in CIFXAuthorCLODResource, CIFXGlyph2DModifier, CIFXAuthorLineSetResource, CIFXAuthorPointSetResource, CIFXMarker, CIFXModel, CIFXMotionResource, CIFXNode, CIFXView, CIFXViewResource, and CIFXShaderLitTexture. |
© 1999 - 2006 Intel Corporation. All rights reserved.
* Other names and brands may be claimed as the property of others.
|
|


Forms are relatively easy to create. At the bare minimum, each element or fieldset requires a name; typically, you’ll also provide some attributes to hint to the view layer how it might render the item. The form itself will also typically compose an InputFilter– which you can also conveniently create directly in the form via a factory. Individual elements can hint as to what defaults to use when generating a related input for the input filter.
Form validation is as easy as providing an array of data to the setData() method. If you want to simplify your work even more, you can bind an object to the form; on successful validation, it will be populated from the validated values.
If nothing else, you can simply start creating elements, fieldsets, and forms and wiring them together.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | use Zend\Captcha;
use Zend\Form\Element;
use Zend\Form\Fieldset;
use Zend\Form\Form;
use Zend\InputFilter\Input;
use Zend\InputFilter\InputFilter;
$name = new Element('name');
$name->setLabel('Your name');
$name->setAttributes(array(
'type' => 'text'
));
$email = new Element\Email('email');
$email->setLabel('Your email address');
$subject = new Element('subject');
$subject->setLabel('Subject');
$subject->setAttributes(array(
'type' => 'text'
));
$message = new Element\Textarea('message');
$message->setLabel('Message');
$captcha = new Element\Captcha('captcha');
$captcha->setCaptcha(new Captcha\Dumb());
$captcha->setLabel('Please verify you are human');
$csrf = new Element\Csrf('security');
$send = new Element('send');
$send->setValue('Submit');
$send->setAttributes(array(
'type' => 'submit'
));
$form = new Form('contact');
$form->add($name);
$form->add($email);
$form->add($subject);
$form->add($message);
$form->add($captcha);
$form->add($csrf);
$form->add($send);
$nameInput = new Input('name');
// configure input... and all others
$inputFilter = new InputFilter();
// attach all inputs
$form->setInputFilter($inputFilter);
|
As a demonstration of fieldsets, let’s alter the above slightly. We’ll create two fieldsets, one for the sender information, and another for the message details.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $sender = new Fieldset('sender');
$sender->add($name);
$sender->add($email);
$details = new Fieldset('details');
$details->add($subject);
$details->add($message);
$form = new Form('contact');
$form->add($sender);
$form->add($details);
$form->add($captcha);
$form->add($csrf);
$form->add($send);
|
Regardless of approach, as you can see, this can be tedious.
You can create the entire form, and input filter, using the Factory. This is particularly nice if you want to store your forms as pure configuration; you can simply pass the configuration to the factory and be done.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | use Zend\Form\Factory;
$factory = new Factory();
$form = $factory->createForm(array(
'hydrator' => 'Zend\Stdlib\Hydrator\ArraySerializable',
'elements' => array(
array(
'spec' => array(
'name' => 'name',
'options' => array(
'label' => 'Your name',
),
'type' => 'Text',
)
),
array(
'spec' => array(
'type' => 'Zend\Form\Element\Email',
'name' => 'email',
'options' => array(
'label' => 'Your email address',
)
),
),
array(
'spec' => array(
'name' => 'subject',
'options' => array(
'label' => 'Subject',
),
'type' => 'Text',
),
),
array(
'spec' => array(
'type' => 'Zend\Form\Element\Textarea',
'name' => 'message',
'options' => array(
'label' => 'Message',
)
),
),
array(
'spec' => array(
'type' => 'Zend\Form\Element\Captcha',
'name' => 'captcha',
'options' => array(
'label' => 'Please verify you are human.',
'captcha' => array(
'class' => 'Dumb',
),
),
),
),
array(
'spec' => array(
'type' => 'Zend\Form\Element\Csrf',
'name' => 'security',
),
),
array(
'spec' => array(
'name' => 'send',
'type' => 'Submit',
'attributes' => array(
'value' => 'Submit',
),
),
),
),
/* If we had fieldsets, they'd go here; fieldsets contain
* "elements" and "fieldsets" keys, and potentially a "type"
* key indicating the specific FieldsetInterface
* implementation to use.
'fieldsets' => array(
),
*/
// Configuration to pass on to
// Zend\InputFilter\Factory::createInputFilter()
'input_filter' => array(
/* ... */
),
));
|
If we wanted to use fieldsets, as we demonstrated in the previous example, we could do the following:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | use Zend\Form\Factory;
$factory = new Factory();
$form = $factory->createForm(array(
'hydrator' => 'Zend\Stdlib\Hydrator\ArraySerializable',
'fieldsets' => array(
array(
'spec' => array(
'name' => 'sender',
'elements' => array(
array(
'spec' => array(
'name' => 'name',
'options' => array(
'label' => 'Your name',
),
'type' => 'Text'
),
),
array(
'spec' => array(
'type' => 'Zend\Form\Element\Email',
'name' => 'email',
'options' => array(
'label' => 'Your email address',
),
),
),
),
),
),
array(
'spec' => array(
'name' => 'details',
'elements' => array(
array(
'spec' => array(
'name' => 'subject',
'options' => array(
'label' => 'Subject',
),
'type' => 'Text',
),
),
array(
'spec' => array(
'name' => 'message',
'type' => 'Zend\Form\Element\Textarea',
'options' => array(
'label' => 'Message',
),
),
),
),
),
),
),
'elements' => array(
array(
'spec' => array(
'type' => 'Zend\Form\Element\Captcha',
'name' => 'captcha',
'options' => array(
'label' => 'Please verify you are human. ',
'captcha' => array(
'class' => 'Dumb',
),
),
),
),
array(
'spec' => array(
'type' => 'Zend\Form\Element\Csrf',
'name' => 'security',
),
),
array(
'spec' => array(
'name' => 'send',
'type' => 'Submit',
'attributes' => array(
'value' => 'Submit',
),
),
),
),
// Configuration to pass on to
// Zend\InputFilter\Factory::createInputFilter()
'input_filter' => array(
/* ... */
),
));
|
Note that the chief difference is nesting; otherwise, the information is basically the same.
The chief benefits to using the Factory are allowing you to store definitions in configuration, and usage of significant whitespace.
The default Form implementation is backed by the Factory. This allows you to extend it, and define your form internally. This has the benefit of allowing a mixture of programmatic and factory-backed creation, as well as defining a form for re-use in your application.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | namespace Contact;
use Zend\Captcha\AdapterInterface as CaptchaAdapter;
use Zend\Form\Element;
use Zend\Form\Form;
class ContactForm extends Form
{
protected $captcha;
public function __construct(CaptchaAdapter $captcha)
{
$this->captcha = $captcha;
// add() can take either an Element/Fieldset instance,
// or a specification, from which the appropriate object
// will be built.
$this->add(array(
'name' => 'name',
'options' => array(
'label' => 'Your name',
),
'type' => 'Text',
));
$this->add(array(
'type' => 'Zend\Form\Element\Email',
'name' => 'email',
'options' => array(
'label' => 'Your email address',
),
));
$this->add(array(
'name' => 'subject',
'options' => array(
'label' => 'Subject',
),
'type' => 'Text',
));
$this->add(array(
'type' => 'Zend\Form\Element\Textarea',
'name' => 'message',
'options' => array(
'label' => 'Message',
),
));
$this->add(array(
'type' => 'Zend\Form\Element\Captcha',
'name' => 'captcha',
'options' => array(
'label' => 'Please verify you are human.',
'captcha' => $this->captcha,
),
));
$this->add(new Element\Csrf('security'));
$this->add(array(
'name' => 'send',
'type' => 'Submit',
'attributes' => array(
'value' => 'Submit',
),
));
// We could also define the input filter here, or
// lazy-create it in the getInputFilter() method.
}
}
|
You’ll note that this example, the elements are added in the constructor. This is done to allow altering and/or configuring either the form or input filter factory instances, which could then have bearing on how elements, inputs, etc. are created. In this case, it also allows injection of the CAPTCHA adapter, allowing us to configure it elsewhere in our application and inject it into the form.
Validating forms requires three steps. First, the form must have an input filter attached. Second, you must inject the data to validate into the form. Third, you validate the form. If invalid, you can retrieve the error messages, if any.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $form = new Contact\ContactForm();
// If the form doesn't define an input filter by default, inject one.
$form->setInputFilter(new Contact\ContactFilter());
// Get the data. In an MVC application, you might try:
$data = $request->getPost(); // for POST data
$data = $request->getQuery(); // for GET (or query string) data
$form->setData($data);
// Validate the form
if ($form->isValid()) {
$validatedData = $form->getData();
} else {
$messages = $form->getMessages();
}
|
You can get the raw data if you want, by accessing the composed input filter.
1 2 3 4 | $filter = $form->getInputFilter();
$rawValues = $filter->getRawValues();
$nameRawValue = $filter->getRawValue('name');
|
Often, you’ll create elements that you expect to behave in the same way on each usage, and for which you’ll want specific filters or validation as well. Since the input filter is a separate object, how can you achieve these latter points?
Because the default form implementation composes a factory, and the default factory composes an input filter factory, you can have your elements and/or fieldsets hint to the input filter. If no input or input filter is provided in the input filter for that element, these hints will be retrieved and used to create them.
To do so, one of the following must occur. For elements, they must implement Zend\InputFilter\InputProviderInterface, which defines a getInputSpecification() method; for fieldsets, they must implement Zend\InputFilter\InputFilterProviderInterface, which defines a getInputFilterSpecification() method.
In the case of an element, the getInputSpecification() method should return data to be used by the input filter factory to create an input. Every HTML5 (email, url, color…) elements have a built-in element that use this logic. For instance, here is how the Zend\Form\Element\Color element is defined:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | namespace Zend\Form\Element;
use Zend\Form\Element;
use Zend\InputFilter\InputProviderInterface;
use Zend\Validator\Regex as RegexValidator;
use Zend\Validator\ValidatorInterface;
class Color extends Element implements InputProviderInterface
{
/**
* Seed attributes
*
* @var array
*/
protected $attributes = array(
'type' => 'color',
);
/**
* @var ValidatorInterface
*/
protected $validator;
/**
* Get validator
*
* @return ValidatorInterface
*/
protected function getValidator()
{
if (null === $this->validator) {
$this->validator = new RegexValidator('/^#[0-9a-fA-F]{6}$/');
}
return $this->validator;
}
/**
* Provide default input rules for this element
*
* Attaches an email validator.
*
* @return array
*/
public function getInputSpecification()
{
return array(
'name' => $this->getName(),
'required' => true,
'filters' => array(
array('name' => 'Zend\Filter\StringTrim'),
array('name' => 'Zend\Filter\StringToLower'),
),
'validators' => array(
$this->getValidator(),
),
);
}
}
|
The above would hint to the input filter to create and attach an input named after the element, marking it as required, and giving it a StringTrim and StringToLower filters and a Regex validator. Note that you can either rely on the input filter to create filters and validators, or directly instantiate them.
For fieldsets, you do very similarly; the difference is that getInputFilterSpecification() must return configuration for an input filter.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | namespace Contact\Form;
use Zend\Form\Fieldset;
use Zend\InputFilter\InputFilterProviderInterface;
use Zend\Validator;
class SenderFieldset extends Fieldset implements InputFilterProviderInterface
{
public function getInputFilterSpecification()
{
return array(
'name' => array(
'required' => true,
'filters' => array(
array('name' => 'Zend\Filter\StringTrim'),
),
),
'email' => array(
'required' => true,
'filters' => array(
array('name' => 'Zend\Filter\StringTrim'),
),
'validators' => array(
new Validator\EmailAddress(),
),
),
);
}
}
|
Specifications are a great way to make forms, fieldsets, and elements re-usable trivially in your applications. In fact, the Captcha and Csrf elements define specifications in order to ensure they can work without additional user configuration!
Note
If you set custom input filter specification either in getInputSpecification() or in getInputFilterSpecification(), the Zend\InputFilter\InputInterface set for that specific field is reset to the default Zend\InputFilter\Input.
Some form elements may need a particular input filter, like Zend\Form\Element\File: in this case it’s mandatory to specify the type key in your custom specification to match the original one (in ex. for the file element it’s Zend\InputFilter\FileInput).
As noted in the intro, forms in Zend Framework bridge the domain model and the view layer. Let’s see that in action.
When you bind() an object to the form, the following happens:
This is easier to understand in practice.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | $contact = new ArrayObject;
$contact['subject'] = '[Contact Form] ';
$contact['message'] = 'Type your message here';
$form = new Contact\ContactForm;
$form->bind($contact); // form now has default values for
// 'subject' and 'message'
$data = array(
'name' => 'John Doe',
'email' =><EMAIL_ADDRESS>'subject' => '[Contact Form] \'sup?',
);
$form->setData($data);
if ($form->isValid()) {
// $contact now looks like:
// array(
// 'name' => 'John Doe',
// 'email' =><EMAIL_ADDRESS>// 'subject' => '[Contact Form] \'sup?',
// 'message' => 'Type your message here',
// )
// only as an ArrayObject
}
|
When an object is bound to the form, calling getData() will return that object by default. If you want to return an associative array instead, you can pass the FormInterface::VALUES_AS_ARRAY flag to the method.
1 2 | use Zend\Form\FormInterface;
$data = $form->getData(FormInterface::VALUES_AS_ARRAY);
|
Zend Framework ships several standard hydrators, and implementation is as simple as implementing Zend\Stdlib\Hydrator\HydratorInterface, which looks like this:
1 2 3 4 5 6 7 8 | namespace Zend\Stdlib\Hydrator;
interface HydratorInterface
{
/** @return array */
public function extract($object);
public function hydrate(array $data, $object);
}
|
As noted previously, forms are meant to bridge the domain model and view layer. We’ve discussed the domain model binding, but what about the view?
The form component ships a set of form-specific view helpers. These accept the various form objects, and introspect them in order to generate markup. Typically, they will inspect the attributes, but in special cases, they may look at other properties and composed objects.
When preparing to render, you will likely want to call prepare(). This method ensures that certain injections are done, and will likely in the future munge names to allow for scoped[array][notation].
The simplest view helpers available are Form, FormElement, FormLabel, and FormElementErrors. Let’s use them to display the contact form.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | <?php
// within a view script
$form = $this->form;
$form->prepare();
// Assuming the "contact/process" route exists...
$form->setAttribute('action', $this->url('contact/process'));
// Set the method attribute for the form
$form->setAttribute('method', 'post');
// Get the form label plugin
$formLabel = $this->plugin('formLabel');
// Render the opening tag
echo $this->form()->openTag($form);
?>

<?php
$name = $form->get('name');
echo $formLabel->openTag() . $name->getOption('label');
echo $this->formInput($name);
echo $this->formElementErrors($name);
echo $formLabel->closeTag();
?>

<?php
$subject = $form->get('subject');
echo $formLabel->openTag() . $subject->getOption('label');
echo $this->formInput($subject);
echo $this->formElementErrors($subject);
echo $formLabel->closeTag();
?>

<?php
$message = $form->get('message');
echo $formLabel->openTag() . $message->getOption('label');
echo $this->formTextarea($message);
echo $this->formElementErrors($message);
echo $formLabel->closeTag();
?>

<?php
$captcha = $form->get('captcha');
echo $formLabel->openTag() . $captcha->getOption('label');
echo $this->formCaptcha($captcha);
echo $this->formElementErrors($captcha);
echo $formLabel->closeTag();
?>

<?php echo $this->formElement($form->get('security')) ?>
<?php echo $this->formElement($form->get('send')) ?>
<?php echo $this->form()->closeTag() ?>
|
There are a few things to note about this. First, to prevent confusion in IDEs and editors when syntax highlighting, we use helpers to both open and close the form and label tags. Second, there’s a lot of repetition happening here; we could easily create a partial view script or a composite helper to reduce boilerplate. Third, note that not all elements are created equal – the CSRF and submit elements don’t need labels or error messages necessarily. Finally, note that the FormElement helper tries to do the right thing – it delegates actual markup generation to other view helpers; however, it can only guess what specific form helper to delegate to based on the list it has. If you introduce new form view helpers, you’ll need to extend the FormElement helper, or create your own.
However, your view files can quickly become long and repetitive to write. While we do not currently provide a single-line form view helper (as this reduces the form customization), the simplest and most recommended way to render your form is by using the FormRow view helper. This view helper automatically renders a label (if present), the element itself using the FormElement helper, as well as any errors that could arise. Here is the previous form, rewritten to take advantage of this helper :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <?php
// within a view script
$form = $this->form;
$form->prepare();
// Assuming the "contact/process" route exists...
$form->setAttribute('action', $this->url('contact/process'));
// Set the method attribute for the form
$form->setAttribute('method', 'post');
// Render the opening tag
echo $this->form()->openTag($form);
?>

<?php
$name = $form->get('name');
echo $this->formRow($name);
?>

<?php
$subject = $form->get('subject');
echo $this->formRow($subject);
?>

<?php
$message = $form->get('message');
echo $this->formRow($message);
?>

<?php
$captcha = $form->get('captcha');
echo $this->formRow($captcha);
?>

<?php echo $this->formElement($form->get('security')) ?>
<?php echo $this->formElement($form->get('send')) ?>
<?php echo $this->form()->closeTag() ?>
|
Note that FormRow helper automatically prepends the label. If you want it to be rendered after the element itself, you can pass an optional parameter to the FormRow view helper :
1 2 3 4 5 |

<?php
$name = $form->get('name');
echo $this->formRow($name, **'append'**);
?>

|
HTML5 brings a lot of exciting features, one of them being a simplified client form validations. Adding HTML5 attributes is simple as you just need to add specify the attributes. However, please note that adding those attributes does not automatically add Zend validators to the form’s input filter. You still need to manually add them.
1 2 3 4 5 6 7 8 9 10 11 | $form->add(array(
'name' => 'phoneNumber',
'options' => array(
'label' => 'Your phone number'
),
'attributes' => array(
'type' => 'tel'
'required' => 'required',
'pattern' => '^0[1-68]([-. ]?[0-9]{2}){4}$'
)
));
|
View helpers will automatically render those attributes, and hence allowing modern browsers to perform automatic validation.
Note
Although client validation is nice from a user experience point of view, it has to be used in addition with server validation, as client validation can be easily fooled.
Sometimes you want to validate only a subset of form elements. As an example, let’s say we’re re-using our contact form over a web service; in this case, the Csrf, Captcha, and submit button elements are not of interest, and shouldn’t be validated.
Zend\Form provides a proxy method to the underlying InputFilter‘s setValidationGroup() method, allowing us to perform this operation.
1 2 3 4 5 6 | $form->setValidationGroup('name', 'email', 'subject', 'message');
$form->setData($data);
if ($form->isValid()) {
// Contains only the "name", "email", "subject", and "message" values
$data = $form->getData();
}
|
If you later want to reset the form to validate all, simply pass the FormInterface::VALIDATE_ALL flag to the setValidationGroup() method.
1 2 | use Zend\Form\FormInterface;
$form->setValidationGroup(FormInterface::VALIDATE_ALL);
|
When your form contains nested fieldsets, you can use an array notation to validate only a subset of the fieldsets :
1 2 3 4 5 6 7 8 9 10 11 12 | $form->setValidationGroup(array(
'profile' => array(
'firstname',
'lastname'
)
));
$form->setData($data);
if ($form->isValid()) {
// Contains only the "firstname" and "lastname" values from the
// "profile" fieldset
$data = $form->getData();
}
|
Creating a complete forms solution can often be tedious: you’ll create some domain model object, an input filter for validating it, a form object for providing a representation for it, and potentially a hydrator for mapping the form elements and fieldsets to the domain model. Wouldn’t it be nice to have a central place to define all of these?
Annotations allow us to solve this problem. You can define the following behaviors with the shipped annotations in Zend\Form:
To use annotations, you simply include them in your class and/or property docblocks. Annotation names will be resolved according to the import statements in your class; as such, you can make them as long or as short as you want depending on what you import.
Note
Form annotations require Doctrine\Common, which contains an annotation parsering engine. The simplest way to install Doctrine\Common is if you are using Composer; simply update your composer.json and add the following line to the require section:
1 | "doctrine/common": ">=2.1",
|
Then run php composer.phar update to install the dependency.
If you’re not using Composer, visit the Doctrine project website for more details on installation.
Here’s a simple example.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | use Zend\Form\Annotation;
/**
* @Annotation\Name("user")
* @Annotation\Hydrator("Zend\Stdlib\Hydrator\ObjectProperty")
*/
class User
{
/**
* @Annotation\Exclude()
*/
public $id;
/**
* @Annotation\Filter({"name":"StringTrim"})
* @Annotation\Validator({"name":"StringLength", "options":{"min":1, "max":25}})
* @Annotation\Validator({"name":"Regex", "options":{"pattern":"/^[a-zA-Z][a-zA-Z0-9_-]{0,24}$/"}})
* @Annotation\Attributes({"type":"text"})
* @Annotation\Options({"label":"Username:"})
*/
public $username;
/**
* @Annotation\Type("Zend\Form\Element\Email")
* @Annotation\Options({"label":"Your email address:"})
*/
public $email;
}
|
The above will hint to the annotation build to create a form with name “user”, which uses the hydrator Zend\Stdlib\Hydrator\ObjectProperty. That form will have two elements, “username” and “email”. The “username” element will have an associated input that has a StringTrim filter, and two validators: a StringLength validator indicating the username is between 1 and 25 characters, and a Regex validator asserting it follows a specific accepted pattern. The form element itself will have an attribute “type” with value “text” (a text element), and a label “Username:”. The “email” element will be of type Zend\Form\Element\Email, and have the label “Your email address:”.
To use the above, we need Zend\Form\Annotation\AnnotationBuilder:
1 2 3 4 | use Zend\Form\Annotation\AnnotationBuilder;
$builder = new AnnotationBuilder();
$form = $builder->createForm('User');
|
At this point, you have a form with the appropriate hydrator attached, an input filter with the appropriate inputs, and all elements.
Note
You’re not done
In all likelihood, you’ll need to add some more elements to the form you construct. For example, you’ll want a submit button, and likely a CSRF-protection element. We recommend creating a fieldset with common elements such as these that you can then attach to the form you build via annotations.
The source code of this file is hosted on GitHub. Everyone can update and fix errors in this document with few clicks - no downloads needed.


Event Location:
Ohio Dominican University
1216 Sunbury Road
Columbus, Ohio
Abstract:
This is an expanded and updated version of the session I presented at the SQL Rally in Orlando. We will cover Tactical Data Governance and in detail specific code examples, using Stock and Custom SSIS Transforms ,Data Models, SSAS Cubes used to create and populate a Metadata Mart as defined by Michael Belcher(Gartner). We will demonstrate incorporating complete custom Data Profiling capabilities (SSIS Transform Scripting, TSQL) capable of Profiling any Source and Targeting any destination. In addition we will implement Data Quality(Address Correction, Fuzzy Matching) and Visualization via PowerPivot , Excel and QlikView. Last will will demonstrate code generation.
Speaker(s): Ira Warren,
Abstract:
Change Data Capture (CDC) is one of the newest features available for SQL Server 2008 which allows you to easily track and keep history of all DML (Data Manipulation Language) changes on user tables such as INSERT, DELETE, and UPDATE without additional overhead. One of the most important benefits of this feature is that it allows you to see the data before after an UPDATE statement which allows you to recover data overwritten or deleted quickly without the need of a database restore. On this presentation we will go over the steps necessary to configure CDC and do an overview of some real world scenarios where this feature can be applied such as Business Intelligence, Disaster Recovery, Auditing, Debugging, Documentation and more.
Speaker(s): Jose Chinchilla,
Abstract:
If you follow baseball you will notice that the Pittsburgh Pirates (this speaker’s favorite team) has to do more with less to be successful. This trend can also exist within IT shops. If you need to improve the performance of your SQL Server instances and cannot purchase 3rd party tools this session is for you. Learn to improve your performance tuning process by using several free tools. This session will cover wait stats, dynamic management objects, perfmon, PAL, SQL Trace, ClearTrace, SQL Nexus and SQLDiag. This session assumes some knowledge of code tuning and performance tuning and general knowledge about performance counters and SQL Server traces.
Speaker(s): John Sterrett,
Abstract:
As the most prolific inventor in American history, Thomas Edison was a master of “Best Practices!” Edison’s creations were not just novel and commercially successful, but many launched entire new industries including electric light and power, sound recording, motion pictures and industrial cement and concrete manufacture. At the heart of Edison’s remarkable record of innovation was his categorization of the innovation process into “competencies,” or bundles of skills supporting the achievement of success in a particular area of endeavor. In this session, we will look at ways that we can use many of these broad success secrets to bring powerful tools and strategies to the recurring implementation of business intelligence.
Speaker(s): William E Pearson III,
Abstract:
Life is all about choices, and when it comes to SQL Server it is no different. If you don't have a methodology for researching questions and resolving issues then you need to get one, and soon.
Speaker(s): Thomas LaRock,
Abstract:
The XML Functionality embedded into SQL Server 2005 and 2008 is one of its most powerful yet least understood features. This seems to be primarily because DBA's shy away from it and developers prefer to work with XML in their code. In this session we will explore the XML features of SQL Server and how we can bridge these two worlds. Topics covered will include retrieving relational data as XML, storing XML in the database using the XML Datatype, XML indexes, and the XQuery functions included in SQL Server. We will also look at using XML as stored procedure parameters as a way to pass large amounts of complex data between client and server.
Speaker(s): Randy Knight,
Abstract:
A high level overview of the SQL Server stack for non-database professionals. We will review some of the most critical things that IT Pros will need to know when managing a SQL Server when there is no professional DBA to be found. Some tips on How and Where to reach out for help with problems and questions, and common gotchas and problems you may see in the field.
Speaker(s): Craig Purnell,
Abstract:
What’s going on in your physical data model? How many people can or will update it to match the reality of what’s going on in your databases? Who actually decides what goes into the database design? How do you choose your primary keys? How do you implement them? Are your datatypes the right ones for the data? In this presentation we discuss five physical data modeling mistakes that cost you dearly: performance snags, development delays, bugs, and professional respect.
Speaker(s): Karen Lopez,
Abstract:
In this session, we'll cover the basics of setting up SQL Server Service Broker from the ground up with lots of demos. We'll discuss some pros and cons to using Service Broker, some common problems encountered when using it, and some example use cases. If you've ever been curious about Service Broker, need to send data between databases or instances, or are wondering if Service Broker is right for your organization, then you won't want to miss this session.
Speaker(s): Adam Belebczuk,
Abstract:
Indexes make queries run faster, right? Not always, no. And finding the right indexes for your needs is often more of an Art than a Science. Attend this session as we take a visual tour of how indexes are laid out and the way data is accessed when indexes are utilized. We will discuss clustered indexes as well as non-clustered indexes and also when to use indexed views along with some other variations.
Speaker(s): Wendy Pastrick,
Abstract:
Many new DBA's are unaware of the power of SQL Profiler. Many don't know it exists. And better yet, it's FREE. This session will generalize the importance of using Profiler to troubleshoot and tune your SQL queries. By demonstrating Profiler on a running server, attendees will get a look at what SQL is currently executing. This session will show how to discover query duration, reads, writes, locks, deadlocks, stored procedure executions and more.
Speaker(s): Jason Spangler,
Abstract:
In this presentation Aaron will cover how to collect data from multiple SQL Servers using SQL Server 2008 Integration Services (SSIS). Then he will use SQL Server Reporting Services (SSRS) to report detail on that data. After that he will use SQL Server Analysis Services (SSAS) to create a KPI. Finally he’ll present that KPI on a dashboard via a web page. The goal of this presentation is to show how seamless the Microsoft Business Intelligence products are. If you’ve only used a few of these products, you’ll appreciate seeing them together all at once. Code will be provided.
Speaker(s): Aaron King,
Abstract:
Every SQL Server instance relies on the tempdb database. Whether through explicit use with #temp tables or @table variables, or implicit use through working space for many other operations, most tempdb databases get quite a workout. This session will dig into many of the otherwise-hidden issues that can kill server performance. After this session, you will be able to spot tempdb performance issues, drill into the causes, and take the steps necessary to solve them.
Speaker(s): Eddie Wuerch,
Abstract:
SQL Server 2012 adds a new object to our arsenal called a sequence that can will give us the capability to implement automatically incrementing values. However, it cannot replace a lot of functionality that we have used a numbers table and windowing functions for (though they can be complimentary to one another). In this session I will demonstrate the uses and performance characteristics of sequences, including how they compliment the use of number tables and windowing functions to create surrogate key and sorting values, and more.
Speaker(s): Louis Davidson,
Abstract:
Ralph Kimball wrote extensively about the difference between transaction facts and balance facts, and rightly so, because transactional facts are additive in time and balance facts are not. But experience with these two seemingly disparate fact types reveals that they are actually identical cousins! This presentation will use a common personal concept -- the checking account -- to show that these facts are closely related and how to think appropriately about their relationship conceptually and with examples using SQL Server.
Speaker(s): Dave Rodabaugh,
Abstract:
It’s one thing to know to look for scans instead of seeks, but if you really want to know what’s going on in an execution plan, you need to dive deep. This session will cover reading execution plans from the basics, but goes way beyond the basics to cover as much of the information available within an execution plan as you might possibly ever need. We’ll go into how to understand how to interpret parameter sniffing and spot when a join operation is not performing the way you would want. We’ll use the graphical plan and the XML behind to thoroughly explore execution plans.
Speaker(s): Grant Fritchey,
Abstract:
PowerShell has been emerging on the scene as Microsoft's command-line shell and scripting language for server administration. The System Admins can tell you how they can automate routine admin tasks for a multitude of servers with a PowerShell script and the click of button. Microsoft also threw us DBAs a bone for our admin tasks as well as development within SQL Server. In this session we will look at what it takes to get started with PowerShell from the perspective of a DBA or SQL developer.
Speaker(s): Kevin Bullen,
Abstract:
What exactly does it mean to parallelize a query? Why would the optimizer do this and what are the benefits and what are the drawbacks?? Is it always faster? Can it cause problems? Are there reasons we might NOT want parallelization? What can prevent it's use by the engine? These are some of the topics we will cover as we dig into this facet of the SQL Server relational engine.
Speaker(s): Kevin Boles,
Abstract:
SharePoint is a rapidly growing application that relies heavily on SQL Server. In this session, we will discuss what a DBA needs to know to successfully manage instances hosting SharePoint databases. What configurations options are best for a SharePoint workload? What kind of maintenance shoule be performed? How should databases be provisioned?  We will also discuss some nomenclature and key components of SharePoint to help better communicate with SharePoint application teams.
Speaker(s): Lisa Gardner,
Abstract:
As with most things in the IT world there is more than one way to skin the SSIS configuration cat.* I'll focus on SQL Server 2008 methods (being called Package Deployment method in SQL 2012) and show how to use 1)XML config files or 2)an environment variable or registry entry that points to a config database. I'll also give a brief overview of the new project deployment method in SQL 2012. *[No cats were skinned in the making of this presentation.]
Speaker(s): MIKE DONNELLY,
This is a list of speakers from the XML Guidebook records. The details and URLs were valid at the time of the event.
LinkedIn: http://www.linkedin.com/in/eddiewuerch
Contact: http://www.indydba.com
Eddie Wuerch has 20 years of experience as a SQL Server specialist in a much-longer IT career. A Microsoft Certified Master, Eddie spends his days in the Salesforce Marketing Cloud, focusing on performance, scale, and uptime for the massive SQL Server backend. These SQL Servers churn billions of transactions daily against trillions of rows of data in a 24x7 continuously-available online system accessed by millions worldwide every day.
LinkedIn: http://www.linkedin.com/in/johnsterrett
Contact: https://johnsterrett.com/community/
John Sterrett is a MCSE: Data Platform, Principal Consultant, and the Founder of Procure SQL LLC. John has experience presenting at community events, including Microsoft Ignite, PASS Member Summit, SQLRally, 24 Hours of PASS, SQLSaturdays, PASS Chapters, and Virtual Chapter meetings. John is a leader of the Austin SQL Server User Group and is the founder of the HADR Virtual Chapter. John's community activities can be found at https://johnsterrett.com/community/
LinkedIn: http://www.linkedin.com/in/karenlopez
Contact: http://datamodel.com
Karen Lopez is a Sr. Project Manager and Architect for InfoAdvisors. A frequent speaker at conferences and local user groups, she has 20+ years of experience in project and data management on large, multi-project programs. Karen is a chronic volunteer, a Data Platform MVP, and an active advocate for science, technology, engineering, and mathematics (STEM) education and data quality. Karen’s presentations are known for their lively and interactive approach to learning. Her motto: “Love Your Data!”
Contact: http://wendyverse.blogspot.com
Wendy Pastrick is from Chicago, IL, and for the past 15 years has served as a Database Administrator supporting both development and production environments. Her many years of involvement with PASS include WIT Virtual Chapter and the Chicago Suburban User Group, serving as Regional Mentor, and as a PASS Board member since 2013. Wendy has organized several highly successful SQLSaturday events in Chicago.
LinkedIn: https://www.linkedin.com/e/fpf/252170891
Contact: https://mvp.support.microsoft.com/profile=02C5CD07-7511-4151-A678-3A4A3451F85E
Bill Pearson created Island Technologies Inc. in 1997, and has developed a large and diverse customer base since. Bill#39;s background as a CPA, Internal Auditor, Management Accountant, and SQL Server MVP (BI) enables him to provide value to clients as a liaison between Accounting / Finance and Information Services.  Since 2001, he has been a full time DBA with additional duties in Altiris, Sharepoint, and software development. For 12 years, he has also been a volunteer Firefighter and EMT helping his community through fire prevention and teaching firefighting and vehicle extrication techniques to new firefighters.
LinkedIn: http://linkedin.com/in/craigpurnell
Contact: http://www.craigpurnell.com/
Craig Purnell is a career database professional, trainer, and community activist. He has spent over 10 years as the Database Administrator at a large Midwestern law firm. He has been in IT for 15 years and has spent his entire career working with enterprise databases and ERP systems. Craig is an active member of the Ohio North SQL Server User Group and has presented at many user groups, SQLSaturdays, and the PASS Summit in 2012 and 2013
LinkedIn: https://www.linkedin.com/in/kevinbullen/
Kevin has been working with SQL Server since 2006, as a application developer, SQL developer, and Database Administrator. He is currently a Premiere Field Engineer at Microsoft. When he's not working, he's usually hiding in his garage working on one of his jeeps.
LinkedIn: http://www.linkedin.com/in/scarydba
Contact: http://scarydba.com
Grant Fritchey is a Data Platform MVP with over 20 years’ experience in IT, including time spent in support and development. He has worked with SQL Server since 6.0 back in 1995. He has also developed in VB, VB.NET, C#, and Java. Grant has written books for Apress and Simple-Talk. Grant presents at conferences and user groups, large and small, all over the world. He joined Redgate Software as a product evangelist in January 2011.
LinkedIn: http://www.linkedin.com/in/thesqlguru
Kevin Boles is a SQL Server expert, working exclusively with the product since v6.5. With over 25 years of database experience and over 45,000 man hours of SQL Server engine experience, he holds many related certifications, is an MCT and was a SQL Server MVP from 2007 to 2012. Kevin has been a very successful independent consultant for over 20 years. His passion is the relational engine, especially designing, building, analyzing and tuning high-performance database applications.
LinkedIn: http://www.linkedin.com/in/louisdavidson
Contact: https://www.red-gate.com/simple-talk/author/louis-davidson/
Louis Davidson has worked in the IT industry for over 25 years as a corporate database developer and architect. He has been a Microsoft SQL Server MVP for 15 years and has written five books on database design, and contributed to many other SQL Server books as an author and tech editor. He has a bachelor's degree in Computer Science from the University of Tennessee at Chattanooga. You can read more about Louis at http://drsql.org.
LinkedIn: http://www.linkedin.com/in/josechinchilla
Contact: http://www.sqljoe.com
Jose Chinchilla is an experienced data analytics professional with multiple certifications including Microsoft Certified Database Administration (MCSE), Microsoft Certified Data Management and Analytics (MCSE), and Microsoft Certified Trainer (MCT). Jose specializes in Data Warehouse and Data Lake Architecture and Development as the Data Analytics Practice Lead at AgileThought, a full-service custom software and analytics consulting firm based in Tampa, FL. Jose is a book author (SQL 2012 Bible, Professional SQL Server 2012 Administration, Exam Ref 70-767 Implementing a SQL Data Warehouse 2016) and leads the Tampa Bay BI Data Analytics PASS Chapter in Tampa, FL.
LinkedIn: http://www.linkedin.com/in/randyknight
Contact: http://www.sqlsolutionsgroup.com/blog
Randy Knight is a data professional who has worked with Microsoft technology for over 25 years, focusing on SQL Server since 1997. He has worked in a variety of settings, including 6 years as a database architect for match.com. In 2010, he founded SQL Server Solutions Group LLC, a boutique SQL Server consultancy. A Microsoft Certified Master (MCM) in SQL Server, he speaks often at events all over the country including the PASS Summit, SQLIntersections, and numerous SQLSaturday and User Groups.
LinkedIn: http://www.linkedin.com/in/itacb
Contact: http://www.sqldiablo.com/
Adam Belebczuk is the Owner amp; Principal Consultant at Belebczuk Consulting Services, LLC and has more than 10 years of experience in IT, ranging from customer service to server/network administration to software and database development and administration. Adam is the Chapter Leader for the Ohio North SQL Server Users Group, a frequent speaker and volunteer at PASS events, and specializes in SQL Server development, performance tuning, high availability, and disaster recovery.
LinkedIn: http://www.linkedin.com/in/melsar93
Contact: http://sqlmd.wordpress.com
Michael Donnelly has been working with SQL Server for 15+ years and holds the MCSE: Data Platform certification. He is an avid runner, blogger, and a wannabe gourmet chef. Currently living the SQL Life on the Jersey Shore.
Contact: http://blogs.msdn.com/sqlgardner
Lisa Gardner is a Microsoft Premier Field Engineer based in Columbus, Ohio. She has been with Microsoft since early 2011 and has been a DBA and database developer since 1998. Throughout her DBA years, she also worked with Sybase and DB2, although SQL Server has always been her favorite RDBMS. Lisa’s passion for working with customers comes from many years of supporting high-profile production systems and wanting to help others gain from her experience.
LinkedIn: https://www.linkedin.com/in/trendoid
Contact: http://www.aaronstanleyking.com
Aaron King is an application architect specializing in enterprise web applications and very large databases. He has helped several successful startups move to the software plus services model. He is currently working as an independent consultant on several long term engagements. Aaron is also a community leader and active in Indy PASS.
Over 35 years experiences in Software Sevelopemt, IT Management and BI Architecture.
LinkedIn: http://www.linkedin.com/in/sqlrockstar/
Contact: http://thomaslarock.com
Thomas LaRock is a Head Geek at SolarWinds and a Microsoft Certified Master, Data Platform MVP, VMware vExpert, and a Microsoft Certified Trainer. He has over 15 years’ experience in the IT industry in roles including programmer, developer, analyst, and database administrator.
Located in Columbus, Ohio, Dave Rodabaugh has over a decade of experience doing one thing: data warehousing and business intelligence using the Microsoft suite of products. His background as an engineer and exclusive focus on business intelligence has helped clients be successful in both initial-effort and rescued BI projects. He co-owns Atlas Analytics, through which he consults to clients in Ohio and beyond.
The following is a list of sponsors that helped fund the event.


Two residents in Lowdham scoop £1,000 in Postcode Lottery
The neighbours are in the money
by Phoebe RamTwo people in Nottinghamshire are celebrating after bagging a £1,000 cash prize thanks to their lucky postcode.
The Lambley Road neighbours pocketed the cash when their postcode was announced as a Daily Prize winner with People’s Postcode Lottery on Tuesday, November 19.
People’s Postcode Lottery ambassador Danyl Johnson sent his congratulations to the winners and said: “This is such a great surprise for our players in Nottingham! I’m so happy for them and I hope they enjoy their winnings.”
A spokesman for the Postcode Lottery said: "A minimum of 32% of ticket sales goes directly to charities and players of People’s Postcode Lottery have raised £486 million to date for thousands of good causes in Britain and beyond.
"This draw was promoted by Friends of the Earth, which has received over £7.2 million in funding from the players of People’s Postcode Lottery.
"This support helps it campaign for environmental and social causes around the world."
Many good causes close to the winners have also benefitted from players support, and the next opportunity local charities will have to apply for funding will be early next year.


This test passes if there is a gray rectangle with a numbered list, as described below.
The numbers for the list should be outside the rectangle and all items should render at the same indentation level.
The second and third items in the list should be blue and numbered using roman numerals, CI and C, respectively. All the other items in the list should be black and numbered with decimal numbers corresponding to the item text.
The final numbering of this list should be: 3, CI, C, 2, 1, 10, 11, 12, 13.


West Highlands 0891 500 441 Trossachs, Argyll, Lochaber, NW Highlands and SkyeScottish services include information on snow and avalanche conditions.East Highlands 0891 500 442 Grampians East of Rannoch Moor and Cairngorms
Snowdonia 0891 500 449
Calls cost 39p per minute cheap rate, 49p per minute at all other times.


--- tags: - 基础算法-递推 grammar_cjkRuby: true catalog: true layout: post header-img: "img/header/P11.jpg" preview-img: "/img/preview/P11.jpg" ---
标签：递推，DP
Ivan hasan array consisting of n differentintegers. He decided to reorder all elements in increasing order. Ivan lovesmerge sort so he decided to represent his array with one or several increasingsequences which he then plans to merge into one sorted array.
Ivanrepresent his array with increasing sequences with help of the followingalgorithm.
Whilethere is at least one unused number in array Ivan repeats the followingprocedure:
· iterate through array from the left to theright;
· Ivan only looks at unused numbers on currentiteration;
· if current number is the first unused numberon this iteration or this number is greater than previous unused number oncurrent iteration, then Ivan marks the number as used and writes it down.
Forexample, if Ivan's array looks like [1, 3,2, 5, 4] then he will perform two iterations. On first iterationIvan will use and write numbers [1, 3, 5], and onsecond one — [2, 4].
Write aprogram which helps Ivan and finds representation of the given array with oneor several increasing sequences in accordance with algorithm described above.
Input
The firstline contains a single integer n (1 ≤ n ≤ 2·105) — the number ofelements in Ivan's array.
The secondline contains a sequence consisting of distinct integers a1, a2, ..., an (1 ≤ ai ≤ 109) — Ivan'sarray.
Output
Printrepresentation of the given array in the form of one or more increasingsequences in accordance with the algorithm described above. Each sequence mustbe printed on a new line.
Example
Input
5
1 3 2 5 4
Output
1 3 5
2 4
Input
4
4 3 2 1
Output
4
3
2
1
Input
4
10 30 50 101
Output
10 30 50 101
类似于noip1999拦截导弹那题
为了防止TLE，只好先前加入判断了，这样可以避免一部分的双重循环，时间复杂度O(n*cnt)
//cnt代表输出答案的行数
Code
#include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) #define dep(i,a,b) for(int i=a;i>=b;i--) using namespace std; inline int read() { intf=1,x=0;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} returnx*f; } struct data{int num,x;}a[200005]; int n,cnt=1,Max[200005]; inline int cmp(data a,data b) { if(a.num==b.num)return a.x<b.x; elsereturn a.num<b.num; } int main() { n=read(); rep(i,1,n)a[i].x=read(); rep(i,1,n){ if(a[i].x<Max[cnt]){Max[++cnt]=a[i].x;a[i].num=cnt;continue;} rep(j,1,cnt)if(a[i].x>Max[j]){Max[j]=a[i].x;a[i].num=j;break;} } sort(a+1,a+1+n,cmp); printf("%d",a[1].x); rep(i,2,n){ if(a[i].num!=a[i-1].num)printf("\n"); printf("%d",a[i].x); } return0; }


HELLO........!!!
Shoob long water shoob wow very biscit extremely cuuuuuute pupper ruff woofer, doggorino stop it fren doggorino what a nice floof. Bork ruff shoob super chub doing me a frighten, very jealous pupper such treat very taste wow. Doggo you are doin me a concern long woofer porgo the neighborhood pupper, boofers very hand that feed shibe heckin angery woofer.


Inherits <NSObject>.
| - (void) F2View: |
|
(F2AppView *) |
appView |
| appFinishedLoading: |
|
(NSError *) |
error |
|
|
| |
|
optional |
Use this delegate method to get notified when the app is finished generating the app. (The javascript in the app its self might still be loading or running)
- Parameters
-
| appView | F2AppView |
| error | an error if occured or NULL if success |
| - (void) F2View: |
|
(F2AppView *) |
appView |
| messageRecieved: |
|
(NSString *) |
message |
| withKey: |
|
(NSString *) |
key |
|
|
| |
|
optional |
Use this delegate method will get called when the javascript funcion called sendMessageToNativeMobileApp(_key, _val) is called from the webView.
- Parameters
-
| appView | F2AppView |
| message | the message recieved |
| key | the key used when registering the event |
- See Also
- registerEvent:key:dataValueGetter:
The documentation for this protocol was generated from the following file:


WELCOME TO A NEW WORLD OF DOM MANIPULATION
look at this beautiful list
it has items
they are unordered
Clicky
Enter some text:
Check this box if you want the box to be checked:


THE COLOR OF PARADISE (Rang-e khoda)
Reviewed by Harvey Karten Sony Pictures Classics Director: Majid Majidi Writer: Majid Majidi Cast: Mohsen Ramezani, Hossein Mahjoub, Salime Feizi, Elham Sharifi, Farahnaz Safari
The 16th Century French writer Henri Estienne once said "Dieu mesure le froid a la brebis tondue," which translates as "God tempers the wind to the shorn lamb." Similarly, Mahatma Gandhi insisted in the last century that God reserves a special spot in His heart for the untouchables, whom he called harijan--children of God. Does the Almighty really retain a special rank for those who through no fault of their own suffer great misfortune? That notion is tested severely in Majid Majidi's "Color or Paradise," a cinematically glorious, emotionally heartwrenching film that deserves the accolades it garnered at the New York and Toronto film festivals. Majidi follows up on his big box office success "Children of Heaven," his 1997 tale of a young boy trying to replace his sister's pink shoes, a movie showing the importance of family and honor which became Iran's first Oscar contender for Best Foreign Language film. His current work centers like that one on an eight- year-old boy--this time on one who cannot yet believe that he is one of God's chosen. Blind since birth, young Mohammad (Mohsen Ramezani) attends a school for the sightless in Tehran, but when the three-months' summer vacation begins, he rightly suspects that his father, Hashem (Hossein Mahjoub), would like to discard him.
Majidi is not unlike Jean-Jacques Rousseau, the French philosopher who in his "Emile" extolled children as creatures of nature, uncorrupted by the complexities of the world including its politics, hatreds, and other evils. Early on, we wonder though about Mohammad. As he awaits his father, he wanders about the school grounds, hissing away a cat and even throwing a rock to scare the feline animal away for good. But we see why. Using his acute sense of hearing (presumably one of God's ways of tempering the handicap of sightlessness), Mohammad feels about the ground until he discovers a young chick that had fallen out of his nest. Climbing a tree with great difficulty, he lovingly replaces the bird in his home.
 At one point during a rainstorm, he whimpers and cries out to Granny (Salime Feizi), wondering about the very existence of God--who has made him a widower and has given him a handicapped son. We discover later on that Hashem's dilemma is not that he is unable to take care of the boy but that the child's existence could threaten his proposed marriage to a much younger woman (Masoomeh Zeinati), whose own father looks to a future in which his daughter would be burdened with the care of an old and sickly husband.
Mohammad, then, despite his blindness and his desolation at the thought that nobody loves him because of his condition, lives in a happier world than his father. Attuned to nature, Mohammad joyfully witnesses the sounds of woodpeckers in the forest chipping away at trees in much the way that the local blind carpenter (Morteza Fatemi) sculpts with his wood. He glories in the song of the seagulls which dart about among the rapids of the starkly beautiful hilltops of the northern countryside while his grandma, who shares the simplicity of rural life, returns a trapped fish to deeper waters just as her grandson had saved the life of a little bird.
While Majidi's 1997 "Children of Heaven" was filmed exclusively in Tehran, the writer-director opens us to the glories of nature in his present work, featuring the rushing rapids of the local river, the mist that forms among the many hills, the land which seems removed by centuries from the dust and traffic and commerce of the capital city. The final moment is a quiet blockbuster, if you will, vindicating the story that leads up to a striking image. "Color of Paradise" lets us know in this painfully exquisite labor of love that we may doubt God's existence from time to time given the many tragedies that befall us, but when the chips are down, we know that He is with us.
Not Rated. Running Time: 90 minutes. (C) 2000 Harvey Karten<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Home
About us
Page
Shop
Blog
Contact us
Affordable Paris Tours
city tours/tour tickets/tour guides
New collection
add to cart
Blue Tshirt
$26
add to cart
Woman shirt
$31
add to cart
Yellow tshirt
$21
add to cart
Cool lingerie
$56


Hi many name is shiridi. I'm a computer science engineering student and i'm currently pursuing my Graduation in Kalasalingam academy of research and education. . I love problem solving and i regularly participate code chef long challenges and also solve problems in hackerrank. My technical interests include Machine learning and deep learning and i also want to learn Full stack. I did my schooling in Cal public school and intermediate education in sri chaitanya educational instituion.
I have started learning Python programming from my 1st year and also got gold +elite certificate in NPTEL joy of computong using python course . . I have done online courses on deep learning and machine learning concepts and also had practical experince using Tensorflow library in python and later i along with my team published a research paper in IEEE xplore. I'm currently learning web devolopment .I knows of html ,css and javascript and coming to backend programming i know basics of python flask framework.
I'm Currently very much interested in this field and already had been diving into it looking for more in it.
I started my web devolopment journey from my 4th semester and curently i'm still learning it and i have also made this Portfolio as a part of it from scratch
Though i currently don't have good knowledge on computer vision but i'm always interested in this field and will definitely dive into this in future
When it comes to cloud computing concepts i really didn't had much exposure to it but i'm really interested in learning them and will definitely look into it soon


Introduction to Probability Models
Lecture 12
Qi Wang, Department of Statistics
Sep 17, 2018
Expected Value of A Discrete Random Variable
- Definition: Weighted average of the possible values,
$$E[X] = \sum_x x \times p_X(x)$$
- Expected value can be positive or negative
- It does NOT have to be an integer
Some Properties of Expected Value
- c is a constant, $E[cX] = cE[X]$
- $E[X + Y] = E[X] + E[Y]$
Example 1
$X \sim p_X(x) = P(X = x) = k(5 - x), x \in \{0, 1, 2, 3, 4\}$, if X
has the valid pmf, find the expected value of X
Variance of A Discrete Random Variable
- Definition:measures of spread, relates how far a particular value of the r.v. is from the average
(i.e. expected value) of the r.v $$Var(X) = E[(X - E[X])^2] = E[X^2] - (E[X])^2$$
- The variance will NEVER be negative.
- Standard Deviation: Square root of the variance $SD(X) = \sqrt{Var(X)}$
Some Properties of Variance
- c is a constant, $Var(cX) = c^2 Var(X)$
- If X and Y are independent, $Var(X + Y) = Var(X) + Var(Y)$
Example 2
For the unfair coin problem in Lecture 11, find $E[3X - 2]$, $SD[3X - 2]$
Example 3
Suppose X and Y are random variables with $E[X] = 3, E[Y] = 4$ and $Var(X) = 2$. Find
- $E[2X + 1]$
- $E[X – Y] $
- $E[X^2]$
- $E[X^2 – 4]$
- $E[(X – 4)^2]$
- $Var(2x – 4)$


magneticalc.Wire_Presets.Wire_Presets
class documentationmagneticalc.Wire_Presets
(View In Hierarchy)
Wire_Presets class.
| Class Variable | StraightLine | Undocumented |
| Class Variable | SingleSquareLoop_Offset | Undocumented |
| Class Variable | SingleSquareLoop_Centered | Undocumented |
| Class Variable | CompensatedDoubleSquareLoop_Offset | Undocumented |
| Class Variable | CompensatedDoubleSquareLoop_Centered | Undocumented |
| Class Variable | SingleCircularLoop_Offset | Undocumented |
| Class Variable | SolenoidCircularLoops4 | Undocumented |
| Class Variable | SolenoidCircularLoops8 | Undocumented |
| Class Variable | CompensatedSolenoidCircularLoops4 | Undocumented |
| Class Variable | CompensatedSolenoidCircularLoops8 | Undocumented |
| Class Variable | List | Undocumented |
| Static Method | get_by_id | Selects a preset by name. |


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object edu.cmu.sphinx.frontend.frequencywarp.MelFilter
Defines a triangular mel-filter.
The MelFrequencyFilterBank
creates mel-filters and filters spectrum data using the method
filterOutput
.
A mel-filter is a triangular shaped bandpass filter. When a
mel-filter is constructed, the parameters leftEdge
,
rightEdge
, centerFreq
,
initialFreq
, and deltaFreq
are given to
the Constructor
. The first three arguments to the
constructor, i.e. leftEdge
, rightEdge
,
and centerFreq
, specify the filter's slopes. The total
area under the filter is 1. The filter is shaped as a
triangle. Knowing the distance between the center frequency and
each of the edges, it is easy to compute the slopes of the two
sides in the triangle - the third side being the frequency
axis. The last two arguments, initialFreq
and
deltaFreq
, identify the first frequency bin that falls
inside this filter and the spacing between successive frequency
bins. All frequencies here are considered in a linear scale.
Figure 1 below shows pictorially what the other parameters mean.
MelFrequencyFilterBank
| Constructor Summary | |
MelFilter(double leftEdge,
double centerFreq,
double rightEdge,
double initialFreq,
double deltaFreq)
Constructs a filter from the parameters. |
| Method Summary | |
double |
filterOutput(double[] spectrum)
Compute the output of a filter. |
| Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
public MelFilter(double leftEdge, double centerFreq, double rightEdge, double initialFreq, double deltaFreq) throws java.lang.IllegalArgumentException
leftEdge
- the filter's lowest passing frequencycenterFreq
- the filter's center frequencyrightEdge
- the filter's highest passing frequencyinitialFreq
- the first frequency bin in the pass banddeltaFreq
- the step in the frequency axis between
frequency bins
java.lang.IllegalArgumentException
| Method Detail |
public double filterOutput(double[] spectrum)
spectrum
- the input power spectrum to be filtered
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


A typical Couch Potato component might look something like this:
define(['app', 'lodash', 'myService', function(app, _) { app.registerController('myController', ['$scope', '$timeout', '$myService', function($scope, $timeout, $myService) { $scope.concattedAlphas = ''; _.each(['a', 'b', 'c'], function(val) { $scope.concattedAlphas += val; }); $timeout( function() { $scope.aValueFromMyService = $myService.aValue; }, 1000 ); } ]); });
That really silly controller depends on the AMD modules "lodash" and "myService".
lodash is just the lodash utility library. It knows nothing about Couch Potato (or Angular) and doesn't need to. This is regular RequireJS here.
On the other hand, "myService" is itself (or at least might be) a Couch Potato AMD module. It is defined similarly to the one we're defining here (i.e. app.registerService(...)). Note the use of the word "might". It's also entirely possible that myService was configured as a non-lazy component. In fact, when you use Couch Potato and you define components as modules like the one above, you are in control of whether they end up being loaded lazily or built into your application as part of a RequireJS compilation/minification build step (e.g in a grunt task).
Both modules are required as part of requiring myController. In practical terms, this means that:
In this way, Couch Potato components can depend on each other. This follows the "AMD way" of expressing dependencies, so that users of myController (e.g. routes or states) are not forced to know what components the controller requires -- the controller module is tracking that, and RequireJS is ensuring that everything it needs is prepped and ready to go.
You may have noticed that we have not discussed the "app" dependency. It's the application module. It deserves some discussion.
These AMD modules run outside the context of Angular. There needs to be a way to tie back into your app in order to register the component with Angular. The application module is the bridge.
It turns out that in order to make it possible for Couch Potato to do its work, we've prepared the application module with some sugary functions that expose the Couch Potato services. Later, we'll see what those sugary functions look like. For now, just know that app.registerController is a function that's using Couch Potato to get the controller registered.
The rest of the code in this module is just standard Angular stuff. The only real difference is the define function that wraps it and the call to app.registerController instead of app.controller.
Ok, with components out of the way, let's loop back and look at the app module again to understand how it's enabling this app.registerController business. Read about setting up the app module.


Result
Name
Md Rubel Amin
Roll
871569
College Name
Chittagong Science and Technology Institute
Exam Name
BSC in CSE
Result
4.00
Grade
A++
Education Board


Interpretability and Explainability of Machine Learning
Why?
- Impact of decisions medical
- Regulations UE 2018, USA Report 2016
Why you should care?*
- Understanding mistakes better models
- Usefulness adoption, extending knowl.
* and not just beat the state of the art performance
Definitions
-
Explainability:
What is the rationale behind the decision made?
-
Interpretability:
What in the model structure explains its functioning?
Explainability
Interpretability
Solutions
Generally there are two approaches:
interpretable models and surrogate models.
- Fuzzy rules before DL
- Visualization image classification
- LIME - Local Interpretable Model-Agnostic
- …
Research direction for my thesis
Thanks you for your attention!
Questions?


Asserts that two GraphDef
s are (mostly) the same.
tf.compat.v2.test.assert_equal_graph_def
tf.test.assert_equal_graph_def( expected, actual )
Compares two GraphDef
protos for equality, ignoring versions and ordering of
nodes, attrs, and control inputs. Node names are used to match up nodes
between the graphs, so the naming of nodes must be consistent. This function
ignores randomized attribute values that may appear in V2 checkpoints.
expected
: The GraphDef
we expected.actual
: The GraphDef
we have.AssertionError
: If the GraphDef
s do not match.TypeError
: If either argument is not a GraphDef
.


{% load la_facebook_tags %} {% if friends %}
None of your Facebook friends are here yet. Get them here!


!DOCTYPE html
# Binge ## The drinking game app ### Colors - ![#ff3b30](https://placehold.it/15/ff3b30/000000?text=+) `#ff3b30` - ![#ff9500](https://placehold.it/15/ff9500/000000?text=+) `#ff9500` - ![#ffcc00](https://placehold.it/15/ffcc00/000000?text=+) `#ffcc00` - ![#4cd964](https://placehold.it/15/4cd964/000000?text=+) `#4cd964` - ![#5ac8fa](https://placehold.it/15/5ac8fa/000000?text=+) `#5ac8fa` - ![#007aff](https://placehold.it/15/007aff/000000?text=+) `#007aff` - ![#5856d6](https://placehold.it/15/5856d6/000000?text=+) `#5856d6` - ![#ff2d55](https://placehold.it/15/ff2d55/000000?text=+) `#ff2d55` - ![#000000](https://placehold.it/15/000000/000000?text=+) `#000000` - ![#ffffff](https://placehold.it/15/ffffff/000000?text=+) `#ffffff` ### Fonts - [Avenir Next](https://www.fonts.com/font/linotype/avenir-next?QueryFontType=Web&src=GoogleWebFonts) - [San Francisco](https://developer.apple.com/fonts/) - [Raleway](https://fonts.google.com/specimen/Raleway) ### Inspiration - [UI Design](https://dribbble.com/prakhar) - [Logo Design](https://dribbble.com/vadimcarazan) - [Design Language](https://dribbble.com/Adamsay) - [Genereal Inspiration](https://unidentifiedorganization.github.io/hortenmk/) --- Copyright 2017 Unidentified Organization Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


Modern Dodge Coronet Concept Looks Better Than Most Muscle Cars
by Andrei TutuMention the name of the Dodge Coronet and chances are that enthusiasts will think of the fifth-generation model. Sadly, unlike the Challenger and the Charger, this badge remains confined to the history books, at least for the time being. Of course, the Internet will never agree with this, which is how we ended up with the rendering that brought us here.
This pixel work portrays a modern-day incarnation of the Coronet - the work uses the mild facelift of the 1970 model (for the 1968 major redesign) as a starting point.
Coming to us via digital artist The Sketch Monkey, the visual stunt does a pretty good job, coming up with a contraption that seems to make a convincing showroom mate for the said pair of Mopar machines.
Of course, the eye candy isn't perfect, since, for one thing, it appears to skip the true split grille of the original, replacing this with a V-angled grille - while this is much closer to the production elements seen nowadays, perhaps a solution for a true nod to the original could've been found.
Even so, the result appears to be closer to the Gold Era muscle cars and be more of an eye candy piece than many modern machines of the sort, with examples including the latest Chevrolet Camaros and even the 2020 Ford Mustang Shelby GT500 - so, there you have it ladies and gentlemen drivers, the explanation for the second part of the title.
Now, those of you who happen to be in a rush can simply zoom in on the screenshots found in the gallery above. However, you should know that the piece of footage below takes you through the Photoshop birth process of this redesign - Marouane (this is the actual name of the artist) also drops a few details on the history of the Coronet, while sharing a few designer impressions with us. 🏁