Евгений Степанищев

Эксперт в области разработки веб-приложений и безопасности в интернете. Каждый месяц мой блог посещают около 90 тысяч человек. Работаю техническим директором в «Системах документооборота», занимаюсь электронным правительством.

Всё в защиту буквы «ё»

Все знают, что я за повсеместное употребление «ё»? Относиться к ней можно по-разному, но есть случаи, когда писать её необходимо. Например, в топонимах.

Ещё одно место, где «ё» надо писать однозначно — слово «всё». Для того, чтобы однозначно отличать его от «все». Те, кто думают иначе, никогда не читали большие тексты вслух. Я иногда что-то зачитываю жене и каждый раз, встречая «все», вместо «всё», понимаю свою ошибку только через несколько слов, запинаюсь и перечитываю место заново, потому что звучит коряво.
21 комментарий
25 декабря 2011 23:40

«Домашняя бухгалтерия» со скидкой 30%

Кстати, лучшая, на мой взгляд, программа для ведения домашней бухгалтерии «Домашняя бухгалтерия» до 31 декабря продаётся со скидкой в 30% (за 350 рублей).

У неё есть два недостатка — она только под Винду (есть версия под «Виндоуз Мобайл») и интерфейс у неё страшненький (правда, это чистая вкусовщина, я очень требовательный). В своё время я попробовал несколько программ, в итоге приобрёл эту (стоит отметить, что в течение 30 дней программу можно использовать бесплатно).
23 комментария
25 декабря 2011 22:29

Обработка данных интернет-клиента «Альфа-банка»

Накидал небольшую программу для обработки данных из интернет-клиента «Альфа-банка». Первым параметром указывается CSV-файл, выгруженный из клиента, на выходе три столбца — дата операции, сумма и описание.

Программа на Пайтоне:
# coding: utf-8
import sys
import re
from datetime import date
from itertools import islice

output = []

with open(sys.argv[1], 'r') as f:
    for line in islice(f, 1, None):
        n, detail, arr, flow = line.decode('cp1251').split(';')[4:8]

        if n[:4] == 'BERR' or n[:6] == 'CASHIN': continue
        flow = float(flow.replace(',', '.'))

        if flow > 0:
            dates = re.findall(r'\d{2}\.\d{2}\.\d{2}', detail, re.UNICODE)

            if dates:
                d = min(date(*(int(x) for x in d.split('.')[::-1])) for d in dates)
                output.append({
                    'detail': detail,
                    'flow': flow,
                    'date': d,
                })

for k in sorted(output, lambda x, y: cmp(x['date'], y['date'])):
    data = zip(('y', 'm', 'd',), k['date'].timetuple()[:3]) + k.items()

    print "%(d)02d.%(m)02d.%(y)02d %(flow)09s %(detail)s" % dict(data)
2 комментария
25 декабря 2011 15:09

Интернет-клиент «Альфа-банка»

выписка «Альфа-банк» (39.45КБ)

Хоть убейте, не понимаю почему интернет-клиент «Альфа-банка» так все хвалят. Там чёрт ногу сломит, вот я регулярно ломаю. Это единственная банковская карточка, с которой у меня постоянно не сходится домашняя бухгалтерия. А всё от того, что итоговая сумма скачет по непонятным законам — то зарезервированные средства в неё включены, то нет, платежи в «Эпл стор» снимаются с конвертацией по одному курсу, потом пересчитываются по-другому.

Ещё и навязанная услуга — «Альфа-чек», с которой у меня руки не доходят разобраться, без неё не проходят безопасные платежи через интернет. За неё берут деньги, но SMS об этом не приходит и сумма в бухгалтерии начинает неожиданно расходиться.

Или вот, взгляните на скриншот, вы можете сказать какого числа я сходил в «Максимилианс» поесть? Первого? Четвёртого? Шестого? Наверное первого, а остальные даты мне зачем? Сортируется всё по первому столбцу, это какая-то техническая дата «Альфа-банка», до котором мне дела нет, в итоге все платежи перепутаны местами и я ничего не понимаю.
13 комментариев
25 декабря 2011 13:38