Shura пишет:

Не собирается:

src/crypt/Password.cpp: In member function ‘void Password::smartSaveMiddleHash(QString)’:
src/crypt/Password.cpp:261:86: error: cannot call constructor ‘QString::QString’ directly
src/crypt/Password.cpp:261:86: error:   for a function-style cast, remove the redundant ‘::QString’
make: *** [build/Password.o] Ошибка 1
$ qmake -v
QMake version 2.01a
Using Qt version 4.7.2 in /usr/lib

Заменил в приведенных строках
QString::QString() на QString() и всё скомпилилось.

В какой операционке компилируете? Ошибка странная, такое впечатление, что в вашем Qt 4.7.2 изменённая реализация QString.

В Qt 4.7.4 под Windows у меня компилируется без ошибок.

Underwest пишет:

На маке все те же на манеже, бандл нормально собирается только в Qt 4.6.4, по 4.7 - нету иконок sad хотя работает и так и так. Попробуем на выходных по свободе попилить

Хм, это странно, что сборка под 4.6.4 показывает иконки, а сборка под 4.7.x - нет. Тут видимо сказывается какая-то особенность Qt 4.7 под Mac, сборка в виндовой Qt 4.7 иконки показывает.

Underwest пишет:

спасибо за новую версию.
Пожелание - уберите console для win-сборки, она совсем там лишняя

Без этой опции не работают отладочные сообщения, если поставить галку "Выводить отладочные сообщения в консоль".

Эта ветка создана для вопросов по программе MyTetra v.1.30.

ghost пишет:

Надо было "запихнуть" в mytetra кучку инфы (отзеркалил сайт, хотел сделать из него удобный справочник), написал скрипт - разгребатель, сформировал строчки для xml файла,  скопировал их в xml, что получилось:

1. mytetra прекрасно все показывает....

Это уже полдела.


ghost пишет:

2. при попытке удалить запись - убиваются все файлы на которые ссылаются добавленные мной строчки.

Значит вы неправильно сгенерировали центральный xml или html-файлы к нему. Посмотрите как организованы записи, сделанные в самой MyTetra. Каждый html-файл с одной записью лежит в отдельной директории. Недостаточно иметь толпу html-файлов в одном каталоге, и прописывать пути к ним их в xml.


ghost пишет:

3. записи не копируюся, не переносятся и т.д...

Потому что вы сгенерировали базу в неправильном формате. Повторите структуру, хранения данных, которая есть в MyTetra, и все должно заработать. Там всё просто.


ghost пишет:

Есть правда пара моментов - файлики называются 000_<int>.html, именно их все и убивает может с этим проблема?

Нет, тут проблемы нет. Если вы в элементе <record> пропишите атрибут file="000_12345.html", то MyTetra и будет открывать именно этот файл.

Следует помнить, что файл будет открываться в директории, которая прописана в атрибуте dir. И в этом dir можно ложить только один html-файл. Остальные "лишние" файлы будут удаляться при любом редактировании файла, прописанного в атрибуте file (остануться только картинки, используемые в данном html-нике). Это нужно для того, чтобы MyTetra сама чистила все лишнее в отведенной для конкретной записи директории.


ghost пишет:

и второе - все файлики лежат толпой в одном каталоге, куда wget -ом и был стянут сайт.

В этом вся и проблема.

Lazy_Kent пишет:

gcc 4.6.
Будем релизить openSUSE 12.1 в ноябре. Но это первая ласточка. Другие дистры тоже перейдут на новый компилятор. Поэтому решать придётся, в любом случае.

Я в этом не силён, пытайтесь найти нужные опции в документации.

Я ещё менее силён. Подозреваю, что опции компилятора не удастся смягчить, так как всё заложено в %{optflags} дистрибутива. Иначе, у меня BuildService зарубит пакет на проверке логов, что, в общем-то, правильно.

В ходе работы над новой версией MyTetra я решил вашу проблему. Немного переделал код, и теперь в тех местах где у меня были предупреждения а у вас ошибки, их теперь нет. Поэтому, думаю, будет компилироваться и в openSUSE 12.1.

Lazy_Kent пишет:

Возникла проблема с компиляцией 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-е место).

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

YellowRaven пишет:

1. Я использую программу на двух компьютерах, причём с разным контентом. Можно ли как-нибудь синхронизировать базы?

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

Ваш случай несколько другой. Если базы с разным контентом, то речь идет не о синхронизации, а о слиянии. Механизма слияния в MyTetra нет. Но его можно набыдлокодить по-быстрому на PHP или на Питоне. Я этим заниматься не буду, но если кто-то возьмется и сделает хорошо, я выложу скрипт на сайте.


YellowRaven пишет:

2. Если запустить программу на лаптопе с подключенным вторым мониторам и работать на нём, то после загрузки лаптопа без второго монитора, Ваша программа старается запуститься на несуществующем втором мониторе. Хорошо хоть есть узенькая полосочка окна, за которую можно "вытянуть" окно... Понимаю, что случай редкий, но баг всё-таки. ))  Кстати, этим страдает ооочень большое количество даже коммерческого ПО.

Чтобы это исправить, мне нужен второй монитор, а его у меня нет. В новой версии ожидается настройка "Запускать MyTetra в свернутом виде". Возможно, она вам поможет.

Virelav пишет:

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

И все таки так намного удобней. Окно списка записей не будет ограничено областью редактирования. Визуально проще ориентироваться в списке записей.

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

Shura пишет:

Ну сервер-то может быть не только в интернете, но и в локальной сети. Мне бы это было как раз то, что нужно, очень не хватает многопользовательского режима.

MyTetra - это персональный менеджер накопления информации. Он под многопользовательское использование никогда не проектировался. Для "много пользователей" используйте Wiki, MyTetra ну никак для этого не подходит.

Shura пишет:

Её можно будет удалённо заводить, на отдельном SQL сервере

То есть, без интернета поработать не получится?

Shura пишет:

Может пора подумать о прикручивании базы данных? Тогда и проблема с синхронизацией решится.

Нет, пока формат данных будет тот же.

И кстати, как решится проблема синхронизации при переходе с файлов на базу данных?

Я сейчас экспериментирую с 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", то наверно будет выполняться сначала первая команда, потом вторая.

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

Biga пишет:

1) новые созданные страницы могут оказаться расположенными в папках с одинаковым номером (как я понял, номера даются по порядку или типа того), что приведёт к конфликту, и разрешить его вручную будет сложно.
2) В mytetra.xml тоже будут конфликты слияния при изменениях в близких строках.

Возможные пути решения:
1) называть папки в base не 000000011, а рандомным числом, типа 4914ae6a5, что сводит вероятность коллизии на нет.

Видимо, буду добавлять рандомную строку.


Biga пишет:

2) Хранить в файлах text.html избыточную информацию, достаточную, чтобы восстановить файл mytetra.xml при его полном удалении (т.е. теги, id родительской ноды, порядок сортировки, и т.д. Не так и много, имхо). Таким образом при любых проблемах файл mytetra.xml можно будет перегенерить заново.

Нет, это бессмысленно. Лучше делать основную схему синхронизации так, чтоб таких ситуаций вообще не возникало.

SergMarkov пишет:
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". Будет выведен стек вызовов с именами функций. И присылайте эту простыню.

SergMarkov пишет:
xintrea пишет:

Вот я пробую так делать http://rghost.ru/5364815 - сегфолта нет. Я правильно повторяю ваши действия?
Напишите, что в консоли выводится в момент сегфолта (несколько последних строчек).

В том то и проблема, что обычно в таких случаях есть длинная простыня со списком либов, а в данном случае только надпись о сегфолте.

В настройках MyTetra поставьте галочку "Выводить отладочные сообщения в консоль". Запустите MyTetra из консоли. Сделайте действия, приводящие к сегфолту. Пришлите мне полный лог консольного вывода.