Эта ветка создана для вопросов по программе MyTetra v.1.30.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форум сайта Webhamster.ru → Сообщения от xintrea
Эта ветка создана для вопросов по программе MyTetra v.1.30.
Надо было "запихнуть" в mytetra кучку инфы (отзеркалил сайт, хотел сделать из него удобный справочник), написал скрипт - разгребатель, сформировал строчки для xml файла, скопировал их в xml, что получилось:
1. mytetra прекрасно все показывает....
Это уже полдела.
2. при попытке удалить запись - убиваются все файлы на которые ссылаются добавленные мной строчки.
Значит вы неправильно сгенерировали центральный xml или html-файлы к нему. Посмотрите как организованы записи, сделанные в самой MyTetra. Каждый html-файл с одной записью лежит в отдельной директории. Недостаточно иметь толпу html-файлов в одном каталоге, и прописывать пути к ним их в xml.
3. записи не копируюся, не переносятся и т.д...
Потому что вы сгенерировали базу в неправильном формате. Повторите структуру, хранения данных, которая есть в MyTetra, и все должно заработать. Там всё просто.
Есть правда пара моментов - файлики называются 000_<int>.html, именно их все и убивает может с этим проблема?
Нет, тут проблемы нет. Если вы в элементе <record> пропишите атрибут file="000_12345.html", то MyTetra и будет открывать именно этот файл.
Следует помнить, что файл будет открываться в директории, которая прописана в атрибуте dir. И в этом dir можно ложить только один html-файл. Остальные "лишние" файлы будут удаляться при любом редактировании файла, прописанного в атрибуте file (остануться только картинки, используемые в данном html-нике). Это нужно для того, чтобы MyTetra сама чистила все лишнее в отведенной для конкретной записи директории.
и второе - все файлики лежат толпой в одном каталоге, куда wget -ом и был стянут сайт.
В этом вся и проблема.
gcc 4.6.
Будем релизить openSUSE 12.1 в ноябре. Но это первая ласточка. Другие дистры тоже перейдут на новый компилятор. Поэтому решать придётся, в любом случае.Я в этом не силён, пытайтесь найти нужные опции в документации.
Я ещё менее силён. Подозреваю, что опции компилятора не удастся смягчить, так как всё заложено в %{optflags} дистрибутива. Иначе, у меня BuildService зарубит пакет на проверке логов, что, в общем-то, правильно.
В ходе работы над новой версией MyTetra я решил вашу проблему. Немного переделал код, и теперь в тех местах где у меня были предупреждения а у вас ошибки, их теперь нет. Поэтому, думаю, будет компилироваться и в openSUSE 12.1.
Возникла проблема с компиляцией MyTetra 1.28 для openSUSE 12.1.
Полный лог здесь: https://build.opensuse.org/package/rawl … SE_FactoryПосмотрите, пожалуйста.
Версия openSUSE тестовая — новый компилятор и другие компоненты. В текущих всё компилируется нормально.
Хм, ситуация такая. Вот сами ошибки:
src/knowtreemodel.cpp: In member function 'void KnowTreeModel::parse_tree_to_dom(QDomElement*, TreeItem*)':
src/knowtreemodel.cpp:174:51: error: taking address of temporary [-fpermissive]
make: *** [build/knowtreemodel.o] Error 1
make: *** Waiting for unfinished jobs....
src/recordtabledata.cpp: In member function 'void RecordTableData::setup_data_from_dom(QDomElement*)':
src/recordtabledata.cpp:170:58: error: taking address of temporary [-fpermissive]
src/recordtabledata.cpp:202:50: error: taking address of temporary [-fpermissive]
make: *** [build/recordtabledata.o] Error 1В других компиляторах на этих местах выдаются предупреждения с аналогичным текстом, а не ошибки.
Первое место - это вызов рекурсивной функции для пробега по дереву, с передачей адреса стартового узла. Алгоритм сделан так, что адрес не портится, поэтому такой вызов правомерен:
// Рекурсивная обработка
1: parse_tree_to_dom(&(xmlData->lastChildElement()), currItem->child(i) );А новый компилятор считает это ошибкой. Кстати, какая версия компилятора?
Хотя щас посмотрю... Видимо не в рекурсии дело, а в процедуре взятия адреса. Потому что два других места - это не рекурсивный вызов, а просто запоминание указателя на Dom-элемент:
// Определяется указатель на первый элемент с записью
2: QDomElement *currentRec=&(domModel->firstChildElement());
...
3: currentRec=&(currentRec->nextSiblingElement());Правда, тут после запоминания ячейка с указателем перезаписывается новым значением (3-е место).
Пока не знаю, что это такое. В новой версии я попробую упразднить эти предупреждения, возможно тогда и ошибки не будут вылазить.
1. Я использую программу на двух компьютерах, причём с разным контентом. Можно ли как-нибудь синхронизировать базы?
В ближайшем релизе будет возможность синхронизироваться через интернет с помощью бесплатных Git-серверов, во всяком случае я надеюсь, что у меня получится. Начиная с нового релиза, можно будет клонировать базу на Git-сервер, и с ней синхронизироваться.
Ваш случай несколько другой. Если базы с разным контентом, то речь идет не о синхронизации, а о слиянии. Механизма слияния в MyTetra нет. Но его можно набыдлокодить по-быстрому на PHP или на Питоне. Я этим заниматься не буду, но если кто-то возьмется и сделает хорошо, я выложу скрипт на сайте.
2. Если запустить программу на лаптопе с подключенным вторым мониторам и работать на нём, то после загрузки лаптопа без второго монитора, Ваша программа старается запуститься на несуществующем втором мониторе. Хорошо хоть есть узенькая полосочка окна, за которую можно "вытянуть" окно... Понимаю, что случай редкий, но баг всё-таки. )) Кстати, этим страдает ооочень большое количество даже коммерческого ПО.
Чтобы это исправить, мне нужен второй монитор, а его у меня нет. В новой версии ожидается настройка "Запускать MyTetra в свернутом виде". Возможно, она вам поможет.
Сделайте пожалуйста, чтобы дерево навигации, список записей, область редактирования были расположены параллельно, одна за другой. Так будет намного удобней.
И все таки так намного удобней. Окно списка записей не будет ограничено областью редактирования. Визуально проще ориентироваться в списке записей.
В ближайшее время я этого делать не буду. Возможно, когда дойдут руки, я сделаю настройку расположения основных объектов интерфейса, или сделаю их перемещаемыми.
Ну сервер-то может быть не только в интернете, но и в локальной сети. Мне бы это было как раз то, что нужно, очень не хватает многопользовательского режима.
MyTetra - это персональный менеджер накопления информации. Он под многопользовательское использование никогда не проектировался. Для "много пользователей" используйте Wiki, MyTetra ну никак для этого не подходит.
Её можно будет удалённо заводить, на отдельном SQL сервере
То есть, без интернета поработать не получится?
Может пора подумать о прикручивании базы данных? Тогда и проблема с синхронизацией решится.
Нет, пока формат данных будет тот же.
И кстати, как решится проблема синхронизации при переходе с файлов на базу данных?
Я сейчас экспериментирую с GIT для синхронизации. Вроде получается, хотя конечно проблемы, которые вы описали присутсвуют, и их буду исправлять.
Для получения последних изменений с сервера синхронизации используется команда:
git add . ; git commit -a -m "commit comment" ; git pull -s recursive -X theirs ; git pushДля заливки изменений на сервер используется команда:
git add . ; git commit -a -m "commit comment" ; git pull -s recursive -X ours ; git pushПредполагается, что первая команда запускается при старте MyTetra, вторая - при выходе из MyTetra. Если сделаю кнопочку "Syncro", то наверно будет выполняться сначала первая команда, потом вторая.
Я уже проверил для ситуаций когда например команда при выходе не срабатывает (ну что-то засбоило как будто). Вроде все четко продолжает работать.
1) новые созданные страницы могут оказаться расположенными в папках с одинаковым номером (как я понял, номера даются по порядку или типа того), что приведёт к конфликту, и разрешить его вручную будет сложно.
2) В mytetra.xml тоже будут конфликты слияния при изменениях в близких строках.Возможные пути решения:
1) называть папки в base не 000000011, а рандомным числом, типа 4914ae6a5, что сводит вероятность коллизии на нет.
Видимо, буду добавлять рандомную строку.
2) Хранить в файлах text.html избыточную информацию, достаточную, чтобы восстановить файл mytetra.xml при его полном удалении (т.е. теги, id родительской ноды, порядок сортировки, и т.д. Не так и много, имхо). Таким образом при любых проблемах файл mytetra.xml можно будет перегенерить заново.
Нет, это бессмысленно. Лучше делать основную схему синхронизации так, чтоб таких ситуаций вообще не возникало.
xintrea пишет:В настройках MyTetra поставьте галочку "Выводить отладочные сообщения в консоль". Запустите MyTetra из консоли. Сделайте действия, приводящие к сегфолту. Пришлите мне полный лог консольного вывода.
http://pastebin.com/TsPM1sFZ
Не знаю насколько вам поможет эта простыня:-) , до кучи вывод strace
http://narod.ru/disk/11365453001/mytetra.strace.html
Так, как минимум понятно, что это локальный баг в слаквари.
Чтобы убедиться наверняка, если вам охота поковыряться, запустите MyTetra под gdb:
$ gdb mytetraили
$ gdb ./mytetraВ консоли gdb дайте команду "run". Дождитесь сегфолта, и дайте команду "where". Будет выведен стек вызовов с именами функций. И присылайте эту простыню.
xintrea пишет:Вот я пробую так делать http://rghost.ru/5364815 - сегфолта нет. Я правильно повторяю ваши действия?
Напишите, что в консоли выводится в момент сегфолта (несколько последних строчек).В том то и проблема, что обычно в таких случаях есть длинная простыня со списком либов, а в данном случае только надпись о сегфолте.
В настройках MyTetra поставьте галочку "Выводить отладочные сообщения в консоль". Запустите MyTetra из консоли. Сделайте действия, приводящие к сегфолту. Пришлите мне полный лог консольного вывода.
Жаль, тем более что полезна информация или нет все таки судить потребителю, который ее использует. Всю страницу конечно редко приходится сохранять таким образом, а вот часть страницы с картинками (графиками etc) весьма и весьма часто, и то что такая информация в mytetra не сохраняется как раз резко снижает ее ценность именно как источника сохранения информации, который гораздо удобнее хранить в одном месте.
А, ну часть страницы в виде форматированного текста в MyTetra хранить можно. Проблема сейчас в картинках, если таковые присутсвут в скопированном из браузера тексте - они не подгружаются. Я планирую это доработать. Хотя, такое решение не будет работать, если интернет будет доступен не напрямую, а через proxy или еще как-то хитро подключен. А меня это очень напрягает. Ведь есть текст, есть картинка - почему бы не скопировать? Поэтому по-хорошему нужно разобраться, что браузер пихает в буфер обмена. Вполне возможно, что и текст и графику. И разобраться, как с этим всем работать - очень большая проблема, за которую я пока боюсь даже браться.
Да и еще, "минимизировать при запуске" очень бы пригодилось, такие проги как правило запускаются при старте системы, и каждый раз ее сворачивать, даже при большом аптайме, как то не очень гуд
Это будет сделано в ближайшем релизе.
xintrea пишет:Не могу воспроизвести этот баг. Пожалуйста, напишите подробно действия, которые нужно сделать чтобы вылезла эта ошибка сегментирования.
В верхнем правом окне (листочки) на его названии в контекстном меню выбирается "копировать", затем переход в другую папку слева, в ней опять же в верхнем правом окне из контекстного меню на пустом месте выбирается "вставить" и вылет с ошибкой сегментирования.
Вот я пробую так делать http://rghost.ru/5364815 - сегфолта нет. Я правильно повторяю ваши действия?
Напишите, что в консоли выводится в момент сегфолта (несколько последних строчек).
Здесь обсуждаем, как можно сделать систему синхронизации MyTetra через интернет.
По большому счету, нам нужно просто синхронизировать каталог data и пару файлов с конфигами.
Важно, что синхронизация должна быть атомарной - то есть, должны синхронизироваться все файлы на определенный момент. Частичная синхронизация файлов (например, при обыве связи) недопустима. По этой причине не подходит сервис DropBox, так как в нем возможны ситуации, когда одни файлы обновились, а другие еще не успели.
Предполагается, что для хранения данных будет использоваться какая-нибудь общеизвестная бесплатная служба или сервер. Вопросы безопасности и шифрации данных пока не рассматриваем.
Так как MyTetra - это персональный менеджер информации, то предполагается, что синхронизация происходит по следующему простому сценарию. При старте MyTetra, при выходе, при нажатии специальной кнопки "Synchro" происходит два действия:
1. Забираются изменения с сервера;
2. Заливатся локальные изменения на сервер.
В качестве службы хранения и синхронизации файлов я в данный момент рассматриваю следующие варианты:
1. SVN на SourceForge.net
Недостатки:
- Появление каталогов .svn во всех подкаталогах директории с данными.
- Неясно, как автоматически добавлять/удалять файлы, создаваемые в MyTetra, не пользуясь командами svn add, svn delete и т.д.
- Вроде как SVN не обеспечивает атомарность синхронизации
2. GIT на GitHub.com
http://github.com
Недостаток пока вижу один: неясно, как автоматически добавлять/удалять файлы, создаваемые в MyTetra, не пользуясь командами git add, git rm и т.д.
3. Rsync
Вроде как инструмент подходящий, но неясно, существует ли популярный бесплатный хостинг. Кто знает - высказываемся.
4. Duplicity
Вроде как инструмент подходящий, и говорят, что в качестве хостинга можно использовать gmail.com (видимо через протокол IMAP, не смог разобраться). Кто-нибудь пользовался этой штукой?
Недостаток - вопрос с кроссплатформенностью. MyTetra - кроссплатформенная программа, а Duplicity существует только под *nix. Имеется ли возможность сделать сборку Duplicity под cygwin? Один товарищ вроде собрал - http://www.alexdimarco.ca/blog/duplicit … ndows.html, но сборку свою не выложил.
5. Что-то еще?
Что вы думаете по поводу решения для синхронизации MyTetra? Какое решение может подойти?
но не хватает фишки вставления целиком вебстраницы, когда в браузере делаешь "выделить все", затем в окне keepnote просто делаешь"вставить" и подгружается страница со всеми причиндалами (картинками etc)
Этого в MyTetra делать не планируется, ибо программа сразу превратится в менеджер накопления бессмысленной информации.
Да и, крайне неприятный баг - не работает "вырезать(копировать) - вставить" применительно к "листьям" - верхняя правая панель, вылетает с ошибкой сегментирования что в своем пакете что в portable версии.
uname -a
Linux ed 2.6.33.192-smp
Не могу воспроизвести этот баг. Пожалуйста, напишите подробно действия, которые нужно сделать чтобы вылезла эта ошибка сегментирования.
Форум сайта Webhamster.ru → Сообщения от xintrea
Форум работает на PunBB, при поддержке Informer Technologies, Inc
Currently installed 2 official extensions. Copyright © 2003–2009 PunBB.
Сгенерировано за 0.062 секунды (78% PHP — 22% БД) 4 запросов к базе данных