16 ноября 2016 г.

jarvis

А потом начался Второй Большой Рефакторинг. Поскольку дом и бот – это два раздельных процесса, которые умеют посылать сообщения в Телеграм, то очевидно, что логику посылки надо выносить в отдельный модуль. А там богато: подписки/отписки от определённых типов сообщений, широковещательные рассылки, отключение звука сообщений по ночам и ещё бог знает что. Ну и в качестве user id исторически использовался потайной номер из Телеграм, что теперь стало фиговато, поскольку дома есть люди, не пользующиеся Телеграмом. Кроме того, опять встал наиважнейший вопрос питониста про использование строк: Unicode или str? Коммьюнити, разумеется, за юникод. И в третьем питоне юникод по умолчанию. Но третий питон натыкается на старые, но нужные библиотеки, которые под него никто не переписал, а юникод натыкается на то, что его ни напечатать, ни в файл вывести, ни по сети послать без приседаний нельзя. Зато при обработке исключения юникод может выкинуть исключение, чтобы ты мог обработать исключение, пока обрабатываешь исключение. Exception UnicodeError, разумеется, наследуется от ValueError, что позволяет полдня рвать волосы в попытках понять, что же там за неправильное значение, чтобы потом выяснить, что это, сука, ‘ascii’ codec can’t encode character – сообщение, которое вызывает желание УБИВАТЬ. Короче, с юникодом во втором питоне не очень. Так что ну его нахрен. Только str, только хардкор и тотальный контроль типов строк на границах. Уф, всё, перелопатил шесть тысяч строк, все поправил. И тут выясняется, что json.loads принципиально возвращает структуры в юникоде. И нет никакой возможности заставить его так не делать. Су-у-у-у-ка! #Jarvis

Комментариев нет:

Отправить комментарий