Соединяя глубину мысли с ясностью воплощения.

Максим Викулов ikhlasulov

Рейтинг: 63
Паспорт верифицирован
Всего отзывов: 0
  • Работ в портфолио: 3
  • Типовых услуг: 6
  • Работ на продажу: 0
Был на сайте:

Критическое исправление ошибки в исламской библиотеке расчета времени молитв PrayTimes

Описание

Клиент (я) обнаружил критическую ошибку в библиотеке PrayTimes, используемой для расчёта исламских молитвенных времён. Ошибка сохранялась в коде более 10 лет и приводила к неточным расчётам времени молитв. Основная цель — исправить эту фундаментальную проблему, обеспечить точность расчётов и добавить корректную атрибуцию исправлений в соответствии с лицензией GNU LGPL v3.0.

Решение

1. Анализ ошибки:

- Выявлено, что в методе инициализации __init__ происходила перезапись параметра method во время итерации по словарю methods.

- Ошибка в setMethod: обращение self.methods[method].params вместо корректного self.methods[method]['params'].

2. Ключевые исправления:

- Сохранение исходного значения method в переменную initial_method до начала итерации.

- Замена имени переменной итерации с method на key во избежание конфликта имён.

- Исправление обращения к параметрам метода через ['params'] вместо .params.

- Добавление явной атрибуции исправлений в комментариях кода и блоке лицензии.

3. Оптимизация:

- Улучшена читаемость кода за счёт добавления комментариев-индикаторов.

- Упрощена логика обработки параметров методов.

Результат

Повышение точности расчётов:

- Исправление гарантирует корректную инициализацию методов расчёта (MWL, ISNA и др.).

- Устранена ошибка, влиявшая на расчёты времени молитв для миллионов пользователей.

Практическое применение:

- Библиотека теперь возвращает точные времена молитв (Фаджр, Зухр, Аср и т.д.).

- Разработчики могут обновлять код с учётом требований лицензии (атрибуция исправлений).

- Пример использования в коде остаётся совместимым:

times = prayTimes.getTimes(date.today(), (43, -80), -5)
print(times['fajr']) # Корректное время утренней молитвы

Распространение:

- Исправленная версия доступна для интеграции в мусульманские приложения, веб-сервисы и IoT-устройства (например, умные часы с напоминаниями о молитвах).

Ссылки на примеры реализации

 ikhlasulov.unaux.com/viewtopic.php?t=10

Презентация проекта

Снимок экрана_20250711_162849.png

Оценили проект:

0