It is illegal to smoke in any public "facility" such as bars, restaurants, stores, hotels, etc.
You may smoke outdoors but must be 50' away from any public building or any building with an open window. I believe they also banned smoking on beaches but have not personally seen any specific amendment to the law, so not sure about that.
It is not illegal to smoke on the street provided you are the required 50' away from any building.
As for pot smoking, you can expect to be arrested immediately. Depending upon the quantity in your possession, the penalties can be quite severe and could involve jail time. As already advised, you are best to stick to beer, wine or spirits while visiting.