Как я оплачиваю интернет вовремя

Долгое время у меня была проблема. Наступает первое число месяца и интернет дома пропадет. Первого числа провайдер снимает деньги и если в этот момент на счете их недостаточно, то интернет исчезает.

Чуть больше года у меня есть решение этой проблемы, и это решение для меня прекрасно работает.

Мое решение — оплачивать интернет на несколько месяцев вперед, плюс я написал маленький скрипт с помощью которого стало очень просто проверить «а не пришло ли время оплачивать интернет?»

Сейчас у меня интернет оплачен на 3 месяца вперед. Даже если я совершенно забуду про оплату, то 3 месяца он будет работать. А для того чтобы не забыть, у меня есть специальный программа.

Я много работаю с языком программирования Perl и мне его удобно использовать. Я написал и выложил в open source Perl библиотеку Akado::Account, которая показывает сколько денег осталось на счете у провайдера Акадо и сколько спишут за следующий месяц (к сожалению, у Акадо нет API, библиотеке приходится прикидываться браузером).

# Создаем объект.
# При создании объект логинится в личный кабинет с помощью указанных
# данных и забирает нужные числа.
my $aa = Akado::Account->new({
    login => 'ваш логин от личного кабинета https://office.akado.ru',
    password => 'ваш пароль',
});

# получили число-сколько рублей есть на счете
my $balance = $aa->get_balance();

# получили число-сколько нужно будет заплатить за следующий месяц
my $payment = $aa->get_next_month_payment();

Я использовал эту библиотеку для того чтобы написать Perl тест который проверяет что интернет у меня оплачен на 3 месяца вперед. В экосистеме Perl очень много внимания уделяется тестам и есть очень простые инструменты для их написания, поэтому Perl тесты писать легко и приятно.

Получилась вот такая штука. Я могу запустить этот тест и если интернет оплачен на 3 месяца вперед то я увижу что все хорошо:

Perl test completed with success

А если интернет оплачен меньше чем на 3 месяца, то я увижу ошибку:

Perl test completed with fail

В сообщении об ошибке есть вся нужная инфа. Есть данные о том сколько сейчас на счете, сколько стоит месяц интернета и сколько нужно заплатить для того чтобы интернет был оплачен на 3 месяца вперед. Так же показывается номер счета, так что для оплаты нужно просто открыть сайт Яндекс.Денег в браузере, скопипастить номер счета и сумму для оплаты.

Недавно в разных сервисах стали появляться новые инструменты, которые позволяют решить проблему "Забыл оплатить вовремя".

Появилась возможность ежемесячно переводить одну и ту же сумму на счет провайдера — я не пользуюсь этой возможностью по нескольким причинам: 1. провайдеры иногда меняют тарифы. Перед тем как платить, я обычно проверю, а не появился ли новый более дешевый тариф и если появился, то перехожу на него. 2. автооплаты добавляет дополнительную сложность — нужно сделать чтобы на счете были деньги, если денег на счете нет, то все полетит в тартараты.

Еще для решения этой же проблемы есть уведомления — приходит sms или email с напоминанием что нужно оплатить интернет, но эта вещь для меня не работала — обычно это сообщение приходит в самое неудобное время — я читаю это сообщение, но прямо сейчас платить не могу — сообщение только отвлекает, а не приносит какую-то пользу.

Система, которая реализована у меня, работает замечательно — иногда я вспоминаю что неплохо бы проверить как там дела и запускаю тесты — тесты показывают что все хорошо, или что есть ошибки. Если есть ошибки, то я их исправляю. Тест на проверку оплаты интернета — это всего лишь часть моей системы. У меня еще есть проверки что все мои домены оплачены больше чем на 2 месяца, что мои сайты работают и еще некоторое количество проверок.

Мне нравится назвать эту систему — FDD — Fail Driven Development — сделать так чтобы проблемы не были критичными, и в удобное время чинить все некритичные поломки, если что-то сломалось.

Критика этого поста

После того как я написал этот пост, в фейсбуке была небольшая дискуссия о целесообразности всего того что я тут отписал. Разговор проходил в этих двух постах:

Спасибо всем участникам этих дискуссий.

Из этих дискуссий я вытащил следующие тезисы:

А еще из этих тредов я вытащил интересный пример когда автоплатежи не работают:

Иван Бессарабов
ivan@bessarabov.ru

2 января 2014

Edit this post on GitHub