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

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

Libmapi писали индусы?

Есть ощущение, что некоторые части libmapi писали индусы. Напоминаю, что libmapi — библиотека для общения с Microsoft Exchange Server, к которой я пишу биндинг в Python с использованием ctypes.

Некоторые вызовы я предпочёл переписать на Python, так как код содержит баги и глупости. Например, мне приходит (в терминах Python) массив событий. Приходят два «слова», два числа, которые содержат дату/время старта и окончания. Числа приходят в минутах, например, чтобы узнать какой там указан день, нужно нацело разделить число на 1440 (количество минут в сутках) и прибавить один.

В итоге, я вычисляю всё вот так (часовой пояс я ещё не умею определять):
        last   = event_end - event_start
        day    = event_start // 1440
        hour   = (event_start - day * 1440) // 60
        minute = event_start % 60
        day += 1
Авторы libmapi делают куда затейлевее:
 for (hour = 0; hour < 24; hour++) {
    if (!((event_start - (60 * hour)) % 1440)) {
        // значит мы нашли час, который указан в событии

        day = ((event_start - (60 * hour)) / 1440) + 1;
        last = event_end - event_start;
    }
}
7 комментариев
26 декабря 2008 17:44