Портировал Сказку на Python 3.
Хочу поделиться опытом портирования проекта с Python 2.7 на Python 3.5. Необычными засадами и прочими интересными нюансами.
Немного о проекте:
Хочу передать благодарность разработчикам платёжного API AppStore, за то, что в пятницу в 19 вечера мне пришла ужасная бага «не работают платежи».
Ошибка оказалась не страшной и заключалась в том, что эплы хитро сломали своё API (минимум второй раз за полгода!). Сломали очень «удачно» для нашей системы, нарушив сразу два своих же соглашения по формату данных.
На самом деле, аналогичные законы все принимают, поэтому я не про РФ, а «вообще».
Кому, с большего, плевать на этот налог:
Малый бизнес взвоет, выругается и пойдёт биться головой о стену. Потому что, если твоя ЦА размазана по планете и каждый местный князёк начинает требовать от тебя странного, то ты просто физически не сможешь удовлетворить все хотелки. Либо закрывайся либо становить преступником.
Вход в индустрию для новичков усложняется с каждым годом. Уже давно нельзя просто написать хороший софт и пойти его продавать.
Между тем, одним из главных достоинств интернета для бизнеса была, как раз, доступность ЦА. Можно было делать крутые нишевые штуки. Раньше можно было делать. На текущий момент общего пространства для бизнеса считай что и нет.
На этой неделе столкнулся с замечательным примером того, что даже умные люди способны реализовать одну и туже функциональность в одном и том же случае тремя разными способами (наверняка даже большим количеством, но нам пока только три потребовалось).
Речь пойдёт о non-consumable покупках/товарах в мобильных магазинах Apple, Google и Amazon. Non-consumable — это разовые покупки, которые нет необходимости повторять. Например: наборы уровней, вечный VIP, отключение рекламы. Consumable, наоборот — это расходники — золото, энергия, сундуки и прочий f2p шлак.
На работе потребовалось сформулировать задачи для DevOps. Эта роль протянула свои щупальца почти во все аспекты разработки ПО, и человеческим языком описать её задачи оказалось довольно сложно. В итоге получился такой вот перечень (конечно, это задачи именно melesta-вского DevOps):