I'm sure google can provide you with discussions on both the problems and the various ways tried and proposed.
You can ask a new question or answer this question.