Yzh "неБлог" | Статьи | Three Man in a Boat | TODO Tree | Обо мне
Флэш в Беларуси: BAFPUG | Ventur | No Title flash | Flastar | Samoiloff | gorodalive.by
RSS | Хроники | Прототип | Скачать исходники

Проект TODO Tree. От идеи до прототипа.

Краткое резюме (если вам лень читать многобукв)

Проект -- прототип программы для ведения TODO-списков, организованных в нечто более сложное, чем иерархическое дерево. В основе программы -- попытка объеденить преимущества иерархического дерева и облака тегов. Проект, конечно, на haXe, и, конечно, open source.

Придумываем Идею

Представим себе, что у нас есть больше количество неких объектов -- файлов, фотографий, книг -- чего угодно. Их несколько сотен а то и тысяч. Чтобы как-то в них ориентироваться, их нужно организовать в какую-то систему. Ни для кого не секрет, что наиболее распространены два способа организации информации -- иерархическое дерево и облако тегов.

Долгое время иерархическое дерево было для меня основным средством организации больших объемов данных. Он повсюду, будь то файловая система, или структура пакетов и классов проекта, или DOM-модель HTML (XML) документа, или известный шаблон проектирования -- Компоновщик (Composite).

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

Но кардинально решает эту проблему облако тегов. Оно становится все более распространенным и начинает вытеснять более традиционное иерархическое дерево, особенно в веб-сервисах, где оно стало практически неотъемлемой их частью.

Но и облако тегов не свободно от недостатков. Оно хорошо, пока тегов не слишком много. В определенный момент число тегов достигает некой критической массы, и в них становится трудно ориентироваться. Они уже сами по себе требуют какой-то упорядоченности. Теги принято организовывать по частоте использования или по алфавиту, но в итоге получается простой линейный список (даже если он облако), который не очень хорош, если элементов несколько сотен.

И тот и другой способ имеют свои достоинства и недостатки. Идея как-то объединить их в одну систему напрашивается сама собой. А сделать это достаточно легко -- нужно разрешить узлу иерархического дерева иметь не одного родителя, а несколько. Мы получим некую сеть, в которой любой узел может иметь (или не иметь) несколько родителей и несколько потомков.

Такую сеть можно рассмотреть как наложение нескольких иерархических деревьев, или как облако тегов (родителей узла можно рассматривать как теги к нему). Каждый узел является одновременно и информационной единицей, и тегом.

И саму эту структуру можно визуализировать по разному -- нарисовать всю сеть; нарисовать отдельное дерево, как подмножество этой сети, построив его от любого узла вниз; нарисовать облако тегов, как подмножество сети, выбрав теги от любого узла вверх. Это удобно для пользователя, так как он сможет выбрать привычное для себя представление информации, или переключаться между разными представлениями.

Отказавшись от одного родителя, мы сохраним иерархические отношения между узлами -- любые два связанных узла будут являться родителем и потомком по отношению друг к другу. Иерархия не даст сети превратиться в хаос.

Находим практическое применение

Есть очень хорошая софтина для ведения планирования работы -- ToDoList. Ее фишка -- организация задач в виде иерархического дерева с неограниченной вложенностью. Все другие программы такого рода, будь то Outlook, или TODO view в Eclipse, или десятки разнообразных персональных органайзеров предлагают лишь двухуровневую иерархию -- категория/задача (или вообще обходятся без иерархии, предлагая линейный список). Лично мне этого не хватает.

К сожалению, софтинка только под винду. Я долго искал нечно подобное для линукс, но не нашел. Единственная программа, предлагающая иерархическое дерево -- Project Management, клон Microsoft Project, по умолчанию входящая в дистрибутив Fedora. Но это явно избыточная для меня программа и не совсем удобна.

И опять напрашивается идея, раз нет такой программы, ее нужно написать. И сделать ее не на основе иерархического дерева (ибо это уже сделано, и значит делать не интересно), а на основе иерархической сети. Ничего подобного я не видел. Возможно эта идея пока никем не реализована, и потому работать по ней будет интересно.

Прототип

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

Так что я начал такой проект (конечно на haXe) и готов предложить вашему вниманию прототип TODO Tree. Такое название -- каламбур в некотором роде. Вышеназванный ToDoList организует информацию деревом, а не списком, несмотря на название. У меня данные будут организованы в сеть, а не деревом, несмотря на название.

RSS | Хроники | Прототип | Скачать исходники
Всякое-разное: haxe.org | osflash.org | AlternativaPlatform | flash-ripper.com | haxe.ru | Айкидо в Беларуси | delicious/yzh44yzh