Какова лучшая структура данных для календаря / ежедневника? - PullRequest
2 голосов
/ 09 декабря 2011

Я программист среднего уровня. Я очень хорошо знаю C, немного хорошо знаю Java, и только что выполнил базовое программирование на Python, Shell и Applescript. Я пишу программу для Mac OSX.

Я хотел бы создать приложение, которое планирует мой день для меня, и позволяет мне планировать сроки для различных проектов.

Идея в том, что я мог бы сообщить программе, что у меня есть крайний срок для выполнения задания 1 апреля 2012 года, и что это займет около 80 часов. Затем программа выберет часы и дни для планирования блоков времени, выделенных для выполнения задачи, на основании ряда факторов.

Что это значит, мне нужно, чтобы программа имела точные знания времени по большому количеству дат. Мне нужно как минимум 30-минутные интервалы для каждого дня, на который нужно разделить Каждый 30-минутный блок должен быть проверен, если задача запланирована на это время, и возможность назначить задачу этому блоку.

Таким образом, эти 30-минутные блоки должны существовать для каждого дня, и, очевидно, будет много дней, о которых программа будет знать, как минимум, год или 365 дней.

Я просто на распутье, как хранить данные. У меня еще не было никакого опыта работы с базами данных, поэтому я не уверен, что это решение или что к нему относится.

Как бы вы подошли к проблеме? Мои предпочтительные языки для этой проблемы будут C и / или Python.

Спасибо за любые идеи.

1 Ответ

1 голос
/ 09 декабря 2011

Я бы рекомендовал использовать sqlite3. Взгляните на API для Python здесь http://www.python.org/dev/peps/pep-0249/.

Вы можете использовать другой реляционный БД с тем же API, но для масштаба вашего приложения sqlite3 дает некоторые преимущества в простоте использования, и вы всегда можете переключить БД. Это просто и понятно для вашего приложения. Кроме того, это более типичная реляционная база данных, поэтому вы сможете найти много информации.

Вы можете использовать один из наиболее популярных нереляционных типов, например http://www.mongodb.org/,, и если у вас нет опыта работы с SQL, это может быть легче понять (хотя я не уверен в этом, но посмотрите сами .) Mongo поддерживает несколько драйверов (http://www.mongodb.org/display/DOCS/Drivers),, но я рекомендую использовать Python для чего-то подобного для простоты реализации. То есть. http://docs.python.org/library/calendar.html очень приятно.

Кроме того, есть также такие вещи, как https://storm.canonical.com/Tutorial для sqlite3 и http://mongoengine.org/ для MongoDB. В зависимости от вашего опыта и масштабов проекта их может быть очень полезно изучить. На самом деле, по мере того, как все становится больше и сложнее, использование слоя ORM становится все более стоящим. С другой стороны, если вы хорошо знакомы с SQL и схемами реляционных баз данных, то, возможно, не стоит усилий по изучению нового API для индивидуального проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...