Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Разработка редактора с древовидной структурой

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

xcode



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предлагаю перенести сюда обсуждение разработки редактора с древовидной структурой нового поколения
Также - обсуждение разрабатываемой мной системы многопользовательского аутлайнера, основанного на системах контроля версий, с интеграцией в системы программирования, системы плагинов для этого аутлайнера и других фич.
Близкие темы:  Редакторы с древовидной структурой - выбираем лучший
 
Здесь будет собрано описание как можно большего количества функций подобных редакторов, функции будут разгруппированы по логическим группам. Предлагайте свои функции с описанием области их применения

Всего записей: 240 | Зарегистр. 25-12-2005 | Отправлено: 23:28 03-11-2008 | Исправлено: xcode, 00:48 10-11-2008
SFC



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не знаю планируете ли вы в чем-то повторять функционал ToDoList'а, но есть одно пожелание, оно скорее для ToDoList'а, но так как он на С++, то может это будет тебе под силу - в любом случае - откоментируй ПЛС сложность такой работы:
1. Есть ToDoList, есть плагин для него - Календарь - ссылка на той же странице где он и сам. Есть написанная на С++ программа CALIZO - живет на sf.net (т.е. также open source как и все вышеперечисленные).
2. Надо сделать viewer (можно и плагин) для файлов .ics (файлов iCalendar) которые экспортируются из ToDoList.
3. Что должно отображаться (в сравнении с тем, что уже делается в Calizo):
- название задачи
- дата начала, дата окончания
- порядок следования задач должен быть аналогичный как в ТДЛ (а не как их оптимизирует кализо)
- каждой задаче должно соответствовать справа бар-диаграмма - timeline (or simple Gantt chart) можно полностью аналогично как у CALIZO
4. Если задача кажется вам решаемой - я напишу еще нюансов и сделаю желаемые скриншоты
5. Что это даст: сейчас нет простой и наглядной программы по отображению файлов ТДЛ в виде диаграмм ганта, (одна требует Явы - GanttProject, другая отображает не в том виде)
Написание такого вьюера дало бы возможность полноценно использовать ТДЛ - как средство управления проектами

----------
[ offline ]

Всего записей: 1663 | Зарегистр. 21-01-2003 | Отправлено: 12:00 04-11-2008
Jenyay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Перенесу сюда то, что писал в предыдущей теме с исправлениями.
 
Требования к программе.
 
1. Не Web-интерфейс.
2. Должна быть портабельная (работать без установки с флешек).
3. Основные функции должны быть в ядре, а дополнительный добавляться с помощью плагинов.
4. К каждой странице можно прикреплять файлы (в WikidPad можно прикреплять файлы, но все они лежат в куче).
5. Неограниченная вложенность записей.
6. В разных ветках могут быть разные страницы с одинаковыми названиями. Это, кстати, одна из вещей, которые мне не нравится в WikidPad, что не может быть разных страниц с одинаковыми названиями.
7. Есть мысль сделать так, что в качестве хранилища всех страниц использовать не один файл, а папку, в которой каждая страница хранится в отдельном текстовом файле. Вложенность реализуется с помощью подпапок. Как вариант, вместо папки использовать zip-архив.
8. Возможность для плагинов подключать внешние генераторы картинок, как сделано в WikidPad с MikTex и GraphViz.
9. Раскраска кода (в виде плагина).
10. Возможность шифровать отдельные страницы (в виде плагина).
11. На каждой странице используется визуальный редактор.

----------
http://jenyay.net - софт, исходники и фото

Всего записей: 1773 | Зарегистр. 13-10-2001 | Отправлено: 12:36 04-11-2008
xcode



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SFC, в обсуждении в теме "Редакторы с древовидной структурой - выбираем лучший" вроде решили, что все будет на плагинах. Пока я плохо представляю себе, что такое ToDoList и как он работает, но идея добавить к разработке еще и функционал средства управления проектами (а также и багтрекера) - хорошая. Тут все зависит от того, насколько грамотно будет продумана и реализована базовая архитектура системы.  
 
Поэтому в этой теме также предполагается собирать и струткурировать теоретический материал по разным функциям подобного софта.
 
Jenyayх, в ближайшее время я постараюсь перенести сюда свои идеи с rsdn

Всего записей: 240 | Зарегистр. 25-12-2005 | Отправлено: 12:40 04-11-2008 | Исправлено: xcode, 12:43 04-11-2008
Jenyay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
И немного о плагинах
 
Плагины представляют собой dll-ки, которые содержат обработчики событий, посылаемые движком.
 
Плагины должны иметь возможность:
    1. Изменять страницу после ее прочтения (например, расшифровывать зашифрованные страницы)
    2. Изменять страницу перед ее записью на диск (например, шифровать)
    3. Вставлять на страницы свои элементы, которые затем могут изменяться с помощью этого плагина (например, редактор формул)
    4. Возможность вставлять элементы, не видимые на странице (например, метки для страниц, по которым в будущем можно будет осуществлять поиск)
    5. Возможность изменять интерфейс окна программы (добавлять кнопки на панель задач, добавлять разные виды для одних и тех же страниц, например, просмотр сырого HTML. Но об этом стоит поговорить отдельно)


----------
http://jenyay.net - софт, исходники и фото

Всего записей: 1773 | Зарегистр. 13-10-2001 | Отправлено: 12:49 04-11-2008
xcode



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот примерно третья часть требований к начальному этапу Все вроде просто, но мне очень важно разобраться с файловой организацией, иначе я не смогу сделать то что хочу так что для начала попробую сделать часть 4 - даже без html, на простых текстовых файлах.
 
Реализация
Проект разбивается на несколько этапов реализации
Разработка ведется на C++
 
Этап 1 - многопользовательский аутлайнер
Основные требования
1. Многопользовательская система; т.е. одновременно с базой могут работать несколько пользователей с разных компьютеров, объедиеннных в сеть;  
в качестве средства реализации для начала предполагатеся использовать систему контроля версий (например Subversion или распределенную VCS); в дальнейшем (на этапе >=4) возможно появление своих протоколов
 
2. Интерфейс
2.1. В основе организации данных лежит иерархическое дерево. Каждый элемент этого дерева имеет пользовательское имя (произвольное), внутреннее имя (уникальное в пределах текущего уровня текущего узла дерева), и - опционально - вложенное поддерево.  
Т.е. почти полная аналогия с файловой системой: внутреннее имя = имя файла/директории, пользовательское имя = содержимое файла, вложенное поддерево = список файлов внутри директории.
2.2. К каждому элементу дерева привязан некоторый файл - "страничка". Файлы могут быть разных типов. На первом этапе используется единственный тип - "html document".  
2.4. Для страниц типа "html" предусмотрены команды РАЗМЕТКИ и ФОРМАТИРОВАНИЯ; при этом предусмотрено создание ИМЕНОВАННЫХ СТИЛЕЙ разметки; каждому стилю разметки можно сопоставить определенные настройки форматирования. Предусмотрено создание кнопок быстрой разметки (к каждой кнопке можно привязать свой стиль) и предполагается, что пользователи будут пользоваться именно разметкой, но предумсотрена также и панель непосредственного форматирования.  
Список возможностей разметки и форматирования:
* h1, h2, h3, h4, h5
* number list, marked list
* horizontal line
* table
* hyperlink
* attach object
* insert image
* insert external object
* bold, italic, underline
* font, font size
* text color, back text color, paragraph fill color
* text alignment - by left, center, right, width
* pre-formatted text
* table formatting
 
2.5. Архитектура построена по принципу MDI, т.е. в одном окне можно открыть сразу несколько страниц; предусматривается общая панель закладок, с помощью которых можно переключаться между страницами; Изменения в странице могут сохраняться как автоматически при потере фокуса (как в аутланерах), так и командой Save (как в редакторах);
2.6. Предусматриваются разные способы открытия страницы:
* как в аутлайнерах: загрузка страницы в текущее окно по одинарному щелчку на узле в дереве; загрузка страницы в новое окно по щелчку при удерживаемой клавише (Ctrl).
* как в IDE: загрузка страницы в новое окно по двойному щелчку на узле в дереве;
Предусматривается также откытие страницы во внешнем текстовом редакторе типа notepad; для этого используется контекстое меню узла дерева. Изменения, внсененные во внешнем редакторе, вносятся в отображение текущей страницы автоматически по получении фокуса.
 
3. Переносимость.
3.1. Система не требует инсталляции, не использует реестр для хранения каких-либо данных; все необходимое для ее функционирования включается в один exe-файл; все пользовательские настройки хранятся в xml-файле, который находится в той же папке что и exe.
3.2. Все плагины хранятся в подпапках папки plugins, расположенной в той же диреткории что и exe; таким образом, каждый плагин имеет собственную папку, в которой размещены все необходимые для него файлы.
 
4. Файловая организация
4. Файловая организация
4.1. Каждая страничка хранится в виде отдельного файла (html, в дальнейшем - другие форматы);  
4.2. Каждый узел дерева хранится в отдельном файле xml; за счет этого появляется возможность открывать части базы как самостоятельные базы.  
4.3. Принцип раздельного хранения файлов выбран для обеспечения работы системы контроля версий: скорее всего, разные пользователи будут редактировать разные страницы / узлы дерева; даже если они редактируют одну страницу, в большинстве случаев формат html и xml позволит произвести автоматическое слияние; в случае конфликта формат html и xml лучше всего ориентирован на ручное разрешение конфликтов.
4.4. Нет жесткой привязки базы к файловой системе; тем ни менее, есть настраиваемые стратегии размещения файлов базы в файловой системе базы. Т.е. возможно разместить, например, все файлы базы в одной папке без вложенности, но по умолчанию будет иерархическая стратегия размещения. Это связано с одним из основных назначений системы - интеграции базы знаний с исходниками больших программных проектов, у которых уже есть сформировашаяся стурктура файлов и папок. При создании новой странички пользователь должен иметь возможность выбрать папку размещения этой странички, но должна быть также и стратегия по умочанию (создание странички по умолчанию = одно нажатие клавиши!)
 

Всего записей: 240 | Зарегистр. 25-12-2005 | Отправлено: 13:51 04-11-2008
Jenyay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
4.1. Каждая страничка хранится в виде отдельного файла (html, в дальнейшем - другие форматы);  
4.2. Каждый узел дерева хранится в отдельном файле xml; за счет этого появляется возможность открывать части базы как самостоятельные базы.  

 
А чем узел отличается от страницы? В одном узле может быть несколько страниц?  
 
Еще, наверное, понадобятся дополнительные файлы, которые будут хранить какие-то настройки для каждой страницы. Или их хранить в тексте самой страницы?
 


----------
http://jenyay.net - софт, исходники и фото

Всего записей: 1773 | Зарегистр. 13-10-2001 | Отправлено: 14:03 04-11-2008
xcode



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Узел - это элемент дерева, запись в xml файле, описывающем часть дерева (в простейшем варианте - путь к странице и имя страницы)
Страница - это файл в котором хранится собственно информация
Одному узлу соответствует одна страница определенного типа
 
Настройки для страницы... хорошая идея, я почему-то об этом не подумал. А что за настойки?

Всего записей: 240 | Зарегистр. 25-12-2005 | Отправлено: 14:47 04-11-2008
Jenyay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
А что за настойки?  

 
Например, те же метки для страниц. Или настройки, которые показывают надо ли шифровать страницу. Или иконка для страницы в дереве, цвет, которым рисуется страница в дереве. Может быть ссылки на внешние CSS. Если узлы хранятся отдельно от содержимого, то, пожалуй,  настройки стоит хранить в узле, но тогда плагины должны уметь изменять эти настройки.

----------
http://jenyay.net - софт, исходники и фото

Всего записей: 1773 | Зарегистр. 13-10-2001 | Отправлено: 14:55 04-11-2008 | Исправлено: Jenyay, 14:55 04-11-2008
GingerFox



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://www.amlpages.com/Rus/ - Aml Pages. Вот, пожалуйста. Движок уже есть, SDK есть, пишите плагины какие душе угодно. Программа не бесплатная, но 595 рублей, не так уж и дорого, если инструмент действительно нужен.

Всего записей: 317 | Зарегистр. 06-11-2003 | Отправлено: 20:04 04-11-2008
xcode



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
http://www.amlpages.com/Rus/ - Aml Pages

Еще один аутлайнер Опять все в единой базе, опять rtf
Конечно, встраивание в IE и сохранение страниц в базе - это хорошо (хотя я пользуюсь оперой)... это тоже хорошая идея для будущих плагинописателей.
Изначально (до публикации этой темы) весь проект рассматривался мной как плагин к Visual Studio для интерактивного документирования исходных текстов программ, навигации по этим исходникам и ведения корпопативной базы знаний по проекту. Ничего подобного просто не существует. Все аутлайнеры, за исключением TreePadX MultiUser edition - принципиально однопользовательские, в IDE не встраиваются и хранят все файлы в одной базе.
Сейчас есть экспериментальная IDE, с подсветкой синтаксиса, с редактором на основе CrystalEdit, чтением основных файлов проектов (vcproj, dsp, dsw, sln) и т.д. А после публикации сообщения возникла идея расширить функциональность и добавить функции как минимум многопользовательского аутлайнера, MindMapper'а и сделать все это на системе плагинов - просто потому, что так удобнее, многие функции которые предлагает Jenyay, мне не нужны, и наоборот, а плагины позволят все это реализовать без особых проблем. В любом случае, плагинная архитектура способствует более грамотному программированию.
Теперь предстоит долгая работа по собиранию всех этих кусочков воедино (ибо времени нет вообще), затем публикация какой-то беты, эксперименты с плагинами и т.д.

Всего записей: 240 | Зарегистр. 25-12-2005 | Отправлено: 22:46 04-11-2008
xcode



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кстати, за ссылку на AMI pages спасибо. Там хорошая документация на плагины, и даже примеры исходников есть, будет с кого содрать

Всего записей: 240 | Зарегистр. 25-12-2005 | Отправлено: 12:41 05-11-2008
GingerFox



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xcode
А на чем собственно писать-то кстати? Может на Java? ПортАбельность будет изначально...

Всего записей: 317 | Зарегистр. 06-11-2003 | Отправлено: 19:21 05-11-2008
Jenyay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
GingerFox
 
Скорее всего C++, а портабельность пока имеется в виду, что можно прогу носить на флешке и работать она должна без установки.

----------
http://jenyay.net - софт, исходники и фото

Всего записей: 1773 | Зарегистр. 13-10-2001 | Отправлено: 22:06 05-11-2008
xcode



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проект будет состоять (и уже состоит) предположительно из следующих частей:
ядро - чисто алгоритмическая библиотека на С++ (компонуется как static library); ядро по сути кроссплатформенное, т.е. должно собираться под любой ОС любым компилятором;
tinyxml - кроссплатформенная библиотека для работы с xml, компонуется как static library;
GUI оболочка - С++/MFC, так удобнее потому что под MFC больше компонентов на сайтах типа CodeProject; распределение функциональности между ядром и оболочкой будет построено так: все что можно запихнуть в ядро без нарушения принципа кроссплатформенности - запихивается в ядро, остальное в оболочке;
плагины - C++/WinAPI, возможно C++/WTL, в виде динамических библиотек;
компилятор и IDE - Visual Studio 2005
интеграция с IDE (VS2005,2008) - C#, кроме интеграции с Visual Studio 6.0; там - минимальная интеграция на C++/COM (одна панель инструментов)
 
т.е. на выходе имеем две независимые части: портабельную exe-шку с плагинами и непортабельные интеграции в IDE
 
Java - не надо, видел я софт на яве, хотя если например кому-то захочется написать  интеграцию с Eclipse или другими Java-IDE, то естественно писать будут на яве.

Всего записей: 240 | Зарегистр. 25-12-2005 | Отправлено: 10:13 06-11-2008 | Исправлено: xcode, 10:22 06-11-2008
igvis

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
автор Braintank
Общие требования к персональной СУБЗ
* работа со съёмных носителей без установки, с сохранением предпочтений как в реестре, так и в виде дискового файла  
* работа с базами до 4 Гбайт  
* ввод метаданных для всех ЕХ (также и нетекстовых) и поиск по ним  
* индексирование всех текстовых ЕХ и метаданных (описание текстовой информации в терминах машинного языка запросов для упрощения и ускорения поиска)  
* сканирование результатов поиска без закрытия диалогового окна с возможностью по результатам изменить критерии  
* использование «интеллектуальных схем» для обработки собранной информации (mind mapping, tag cloud)  
* морфологический поиск  
* фразовый поиск, позволяющий находить ЕХ со сходными фразами (использование механизмов неполного соответствия)  
* автоматическое сравнение версий двух раздельно пополнявшихся БЗ с возможностью полуавтоматической синхронизации под управлением пользователя  
* корректный, без потерь и изменений, вывод отдельной или подмножества ЕХ, а также нетекстовых элементов ЕХ в основные текстовые, графические и гибридные файловые форматы  
* автоматическая идентификация ЕХ в базе при сохранении похожей ЕХ  
* ссылки на внешние файлы, как находящиеся на локальном диске, так и на удалённые ресурсы  
* импорт в активную базу других баз как целиком, так и в виде отдельных указанных пользователем подмножеств ЕХ  
* подключение сторонних средств проверки правописания  
* использование всех сложившихся приёмов ускорения и упрощения профессиональной обработки текстов: наращивание выделения по числу щелчков мышью (слово-строка-абзац-гранка), ускорение навигации посредством Ctrl + стрелки, грамотное удаление посредством Ctrl + Del, отображение символов форматирования и операции с ними…  
Ввод информации
* перетаскивание из окон других программ и в эти окна  
* вставка из буфера обмена (включая накопительное слежение за буфером)  
* импорт с локального и удалённого диска документов текстовых, графических и гибридных форматов  
* наличие интегрируемого в браузеры инструментария агрегации данных с веб-страниц, их первичной чистки и сведения к единому стилевому формату  
Вывод информации
* перетаскивание ЕХ или любого её фрагмента в окна других программ  
* экспорт (как отдельных ЕХ, так и всей БЗ / любого её фрагмента) в дисковые файлы самой СУБЗ, в гипертекстовые форматы, в TXT, RTF и т.д.  
* экспорт отдельных выбранных нетекстовых объектов в дисковый файл  
* печать всех ЕХ или по выбору  
Минимально приемлемый набор форматов
* RTF и TXT с автоматическим распознаванием или контрольным просмотром для ручного указания исходного способа кодирования оригинала  
* BMP, JPEG, PNG, GIF, WMF, EMF  
* HTML и RTF c таблицами, растровыми и векторными графическими элементами  
Обработка текстовых данных
* полная поддержка Юникода  
* полная поддержка табличного представления данных (преобразование таблиц в текст и текста в таблицы, создание таблиц вручную  
* использование всех возможностей гипертекстовой разметки  
* использование абзацных и символьных стилей с возможностью изменения части параметров стиля глобально для указанного фрагмента текста  
Графические данные
* удобный ввод (как части EX) данных в графических и мультимедийных файловых форматах (перетаскиванием, через буфер обмена и импортом)  
* объём БЗ при импорте графики должен увеличиваться на объём добавленного файла + небольшой процент  
* графика должна храниться в неизменном виде и сжиматься без потерь, без перекодировки в текст  
* введенная в базу графическая и мультимедийная информация должна корректно отображаться (или воспроизводиться посредством внешних программ)  
* введенные в базу файлы должны легко, без дополнительных манипуляций извлекаться в прежнем виде
 
Добавлено:
-------------------------
Для создания благоприятных условий предлагается сформулировать ряд требований к софту.  
1. Спецификация стандарта базы.  
...Определив стандарт базы мы тем самым существенно снижаем требовательность к софту. Любой софт который поддержит стандарт позволит не потерять однажды вложенные усилия на создание базы. Существенно упрощается написание всяких конвертеров и поддержки другими нестандартными системами. Спецификация базы это основа всей дальнейшей работы.  
2. Мелочи уровня конкретного софта как-то функциональность в порядке приоритета.  
3. Вариант базы online. Но эта разработка выходит за рамки данного проекта как интернет за рамки обычного телефона.  
 
Для спецификации базы можно предложить следующие элементы.  
1. База является совокупностью объектов и хранится одним файлом.  
2. Каждый объект имеет метку (идентификатор) и спецификацию (тип, архивный, удалённый, только чтение, шифрация или много чего ещё).  
3. В заголовке базы присутствует версия базы и версия программы последний раз базу сохранявшая.  
4. Индексный модуль в начале или ещё где удобнее. Дополнительно может сохранятся отдельно.  
5. Модуль ссылок (кто чей родитель, кто на кого ссылается) также там где удобнее. Дополнительно может сохранятся отдельно.
------------------------------------------------------------------------
О причинах моего внимания к стандарту базы можно зачитать на форуме

Всего записей: 16 | Зарегистр. 04-02-2008 | Отправлено: 07:48 09-11-2008
xcode



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Супер! Практически все и планируется сделать так как здесь расписано Причем, благодаря выбранной архитектуре, многие вещи получаются автоматически
 
Только вот база однозначно будет храниться НЕ единым файлом, а как раз наоборот - все что можно разбить на кусочки, будет разбито. Обоснование этому я вроде приводил - база изначально задумывается как многопользовательская и многомашинная, для синхронизации будут использоваться системы контроля версий (Subversion или какие-то из распределенных VCS). Городить огороды с собственными протоколами синхронизации в ближайшее время не планируется... тем более что есть замечательное решение - VCS, прекрасно работающие для огромных C++ солюшенов с десятками проектов и тысячами файлов.  
 
В очень далеком будущем есть идея сделать на базе этой архитектуры пиринговую базу знаний по типу MSDN Library, в которую юзеры закладывали бы переведенные в html электронные книги, журналы и обработанные сайты, и обменивались бы ими через протокол типа BitTorrent. Но это - в будущем, не раньше чем будет релиз "Аутлайнер + Плагины + Интеграция в Visual Studio".
 
Форматы - или xml, или xml-совместимый html. Это обусловлено все той же причиной - системы контроля версий умеют соединять text-based форматы автоматически. Например, если два юзера одновременно правят один файл, и Юзер1 вставил строчку в начало файла, а Юзер2 - в конец, то VCS в общем случае сама сможет слить эти две файла в один.
Рисунки, мультимедиа, естественно, будут в своих обычных форматах... Также в обычных форматах будут всякие pdf, djvu, doc, но без возможности редактирования из базы. Т.е. хочешь отредактировать рисунок - пожалуйста, двойной щелчек на рисунке - и он открывается в любимом графическом редакторе. Можно свободно делать с ним все что угодно, кроме переименования файла. Т.к. база основана на файловой системе, НИКАКИХ заморочек с встраиванием, BLOB'ами и прочими прелестями COM-технологии не будет.
 
Все что можно оформить в xml, будет оформлено в xml. На втором этапе планируется как минимум сделать "векторный редактор" для подготовки различных диаграмм - UML, MindMaps, блок-схем и т.д. Такие диаграммы прекрасно сохраняются в xml.  
 
Сейчас я изучаю оптимальные варианты размещения файлов на базе файловой системы. Где хранить документы, ноды дерева, аттачи и т.д., пишу код для загрузки дерева и управления этим деревом (добавление, удаление элементов и т.д.)
 
ЗЫ: долго думал что такое "ЕХ". Полез в оригинальный пост, оказалось - "единица хранения". На самом деле можно назвать проще - "документ"

Всего записей: 240 | Зарегистр. 25-12-2005 | Отправлено: 22:23 09-11-2008
igvis

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2 xcode

Цитата:
В очень далеком будущем есть идея сделать на базе этой архитектуры пиринговую базу знаний по типу MSDN Library, в которую юзеры закладывали бы переведенные в html электронные книги, журналы и обработанные сайты, и обменивались бы ими через протокол типа BitTorrent.

 
Так-так, отсюда поподробнее. У меня есть пара проектов (как идея) которые хочется свести в один. Первый проект представляет собой глобальное хранилище файлов на базе 2p2 технологий.
Основные принципы организации сети Схрон.
Сеть состоит из узлов. Узел предоставляет в качестве ресурса место на своём диске, канал и процессор. В сети присутствуют два типа узлов.  Информационные (обрабатывающие) узлы (и-узел) и файловые (раздающие) (ф-узел). Особенностью сети является разбиение выкладываемых файлов на части и хранение этих частей на разных узлах.

Второй проект не привязан к технологии 2p2, но его необходимо привязать для защиты от государств и прочих организация. Как это сделать пока не представляю. Проблематика:
Интернет предоставляет доступ к огромному массиву знаний накопленных людьми. Но вот проблема. Найти нужные знания непросто даже при наличии таких поисковых гигантов как Google. Приходится тратить намало времени на поиск и анализ найденного. Кроме того, существует проблема достоверности найденной с таким трудом информации. Даже если вы нашли что-то нужное нет никакой гарантии что это нужное является реальным решением вашей проблемы. И, таким образом, перед нами актуализируется следующая задача: построение системы предоставляющей легкодоступную, точную и достоверную, структурированную и упорядоченную информацию.
И так далее. С моей точки зрения, оба этих проекта, если их получится реализовать, окажут громадное влияние на социум. Влияние сравнимое с появлением инета. Этот проект делает ненужным любые аутлайнеры. Ну почти Общественная база знаний такого качества меня (и многих) более чем устроит.

Всего записей: 16 | Зарегистр. 04-02-2008 | Отправлено: 23:01 10-11-2008
xcode



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну, аутлайнеры всегда будут нужны Создать универсальную систему на все случаи жизни все равно не получится.
А про пиринговую сеть... обычная пиринговая сеть, разница только в том, что информация упорядочена посредством xml-структуры глобального дерева. У узлов разного уровня есть модераторы - тоже разного уровня. Формат информации стандартизирован - html. Отсюда - индексирование, контекстный поиск и т.д.
 
Идея возникла потому, что у меня (да и у многих) есть куча электронных книг в djvu, pdf, doc, chm и т.д. Хоть я их и упорядочиваю по директориям, но все равно это файлы, а хотелось бы единой базы знаний типа MSDN Library.
Соответственно, идея в следующем: разные люди сканируют книжки (или скачивают отсканированные), распознают их, переводят в html, фильтруют, разбивают на иерархические части и добавляют в соответствующий раздел глобального дерева. Одному человеку провести огромную работу с тысячами книг просто не под силу, а комьюнити - справится запросто. Отсюда и идея пирингового обмена.
 
Короче, это все тот же html аутлайнер, но вместо VCS к нему прикручена P2P. В любом случае, делать такую штуку я сейчас не буду, но если интересно - да, пиринговый интернет имеет будущее, поэтому я закладываю в структуру аутлайнера максимальную гибкость - вдруг пригодится

Всего записей: 240 | Зарегистр. 25-12-2005 | Отправлено: 23:26 10-11-2008
SFC



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Интернет предоставляет доступ к огромному массиву знаний накопленных людьми. Но вот проблема. Найти нужные знания непросто даже при наличии таких поисковых гигантов как Google. Приходится тратить намало времени на поиск и анализ найденного. Кроме того, существует проблема достоверности найденной с таким трудом информации. Даже если вы нашли что-то нужное нет никакой гарантии что это нужное является реальным решением вашей проблемы. И, таким образом, перед нами актуализируется следующая задача: построение системы предоставляющей легкодоступную, точную и достоверную, структурированную и упорядоченную информацию.  
И так далее. С моей точки зрения, оба этих проекта, если их получится реализовать, окажут громадное влияние на социум. Влияние сравнимое с появлением инета. Этот проект делает ненужным любые аутлайнеры. Ну почти  Общественная база знаний такого качества меня (и многих) более чем устроит.

Я также имею определенные наработки в этой сфере и даже планирую сделать коммерчески успешный проект - интернет портал. Не хочу раскрывать всех подробностей, но так в кратце некоторые тезисы:
- пользователь имеет возможность формировать свою собственную базу аналогичную базе Web-каталогизатора on-line в рамках функционала какого-то сайта
- CMS такого сайта предоставляет возможность группировать и классифицировать базу каждого из пользователей как по категориям, так и по ключевым словам, которые как определяются пользователем, так и предлагаются самой CMS
- на каждую единицу сохраненной информации (вебстраницы или ее фрагмента) пользователь может давать свои заметки, выводы или комментарии. Существет возможность просматривать только слой комментариев, так и все вместе, так создавать еще один слой (выводов или заметок к комментариям)
- существует как дерево категорий, так и дерево ключевых слов, и оно может динамически меняться
- пользователь может давать/недавать доступ к своей базе всем желающим, или доступ только к слою комментариев и т.д.
- пользователь может давать указания CMS отслеживать инфо по определенным критериям и само-пополнять базу пользователя (скажем папку"неклассифицированное"
- группы пользователей и комьюнити могут вести совместную работу над формированием такой базы
так в кратце, а то уже жуть ли не ТЗ уже получается
- пользователь ничего не платит. за выполнение работ по заявке портала, пользователь может участвовать в выполнении платных заказов


----------
[ offline ]

Всего записей: 1663 | Зарегистр. 21-01-2003 | Отправлено: 09:33 11-11-2008 | Исправлено: SFC, 15:05 11-11-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Компьютеры » Программы » Разработка редактора с древовидной структурой


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru