Recently I read a lot about how to train dogs, these days there are new insights.
The best thing, they say, is to never say 'NO' to a dog as it does not get it and research showed that they become insecure, scared AND, they perform commands less well than dogs who never hear 'no'.
The idea now is to make circumstances so that they can't show undesired behaviors, adjust the environment if needed - never leave food unguarded on a low table, don't let them greet visitors so they can jump up against them, place a fence so they won't go into the part of your garden you don't want them to dig in.
Also, ignore unpleasant behavior as much as possible, just take the sock from them without a word and without even looking at them, simply pick them up from the couch you don't want them to sit on, again without a word or a glance at them, and if they jump up at you, don't say anything and just turn your back toward them.
And to reward and praise them if they do something right - if they sit calmly while you talk to a friend on the street, praise them, give them attention instead of scolding them if they get bored and start to whine. Give them a treat and a compliment when they perform a task well.'Gooood boy!' 'Well done!' and pat them on the back.
Dogs are in some respects, more intelligent than some people I know... so why not let this work for us, too?
So, ignore the undesired behaviors, and praise the desired ones!
Prevent mishaps by not leaving enticing food on the table (or, in the house!). If you fail and overeat, ignore it, don't say one bad word to yourself about it, pay no attention to it! But if you stay on your plan, drink your water, get your exercise, praise yourself extensively! Tell yourself you're pleased with what you did and pat yourself on the back!