babaduk пишет:

Такой вопрос: создал новую запись, либо к примеру открыл старую и начал ее редактирование. Редактировал 2 часа, написал много текста и в этот момент пропадает питание в сети и естественно бесперебойник отсутствует. Будет ли данная запись потеряна? Или есть периодическое автосохранение?

Сброс изменений в тексте записи на диск происходит в следующие моменты времени:

- Когда вы в MyTetra переключаетесь на другую запись
- Когда окно MyTetra теряет фокус (вы переключаетесь куда-нибудь в браузер или на другую программу)
- Перед срабатыванием команды синхронизации с периодичностью синхронизации, задаваемой в Настройках - Синхронизация - Периодичность синхронизации.
- Когда вы нажимаете Ctrl+S (есть такая скрытая кнопка save, которая настраивается только в конфиге редактора, но сочетание ctrl+s работает всегда)

Есть еще другие моменты сохранения на диск, но это основные.

То есть, если вы два часа работаете только с одной записью MyTetra, никуда не переключаетесь, редактируете только этот текст, не нажимаете Ctrl+S, и у вас не включена синхронизация, то да, изменения могут не записаться на диск.

Можете воспользоваться хаком: даже если вы не пользуетесь синхронизацией,  настройте периодическую синхронизацию-пустышку. То есть, в команде синхронизации оставьте только одну команду "cd" (если команда будет полностью пуста, процесс синхронизации не будет запускаться). Установите галку "Включить периодическую фоновую синхронизацию", задайте периодичность синхронизации (там по умолчанию 5 минут вроде). И все. Как таковой синхронизации у вас происходить не будет, зато сброс на диск изменений, вносимых вами в запись, будет происходить с указанной вами частотой.

Примерно так.

babaduk пишет:

Какая ситуация в настоящий момент? Поломается ли база при неполной синхронизации через  Dropbox?

Это как повезет. Все данные уж точно не потеряете.

Стратегия следующая: если вы переносите куда-то базу, или сделали большие изменения, затрагивающие всю базу (обработали все записи скриптом, или влили автоматом какую-нибудь крупную ветку, или еще что), то лучше убедиться что DropBox все засинхронизировал.

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

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

Если боитесь за данные, а Dropbox работает плохо, например из-за плохого интернета, сделайте себе скрипт бекапа (лучше инкрементального, типа rdiff-backup), и поместите его вызов первым в команду синхронизации "Настройки - Синхронизация - Команда синхронизации". Если пользуетесь DropBox, так вообще, больше никаких команд в этой строке не нужно. Не забываете ставить галку "периодическая фоновая синхронизация". По сути, такими настройками вы просто запускете определенную команду в фоне с определенной периодичностью. И пусть у вас там периодически делается бекап. Тогда даже если что-то пойдет не так из-за неполной синхронизации Dropbox, у вас всегда локально будут в наличие сохраненные данные.

babaduk пишет:

Автор ты жив?

Жив, просто на основной работе охренеть как занят. Что хотел?

Нам бы тут на основе дерева знания объединять научиться.

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

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

Корзина в том виде, в котором она есть сейчас - это задел на будущее. Восстановить из нее запись можно вручную, при всяких форсмажорах. В корзину скидываются файлы базы MyTetra перед их перезаписью. То есть, когда файл должен измениться, вначале его копия помещается в корзину, а потом он меняется. И еще в корзину попадают файлы удаленных записей. И при изменении дерева в корзину попадает копия файла делева mytetra.xml. Можете поэкспериментировать: поудалять, поизменять записи, и вы увидите как появляются новые файлы в корзине и удаляются старые.

Имена файлов в корзине генерируются автоматически: "TempUID_имяфайла.расширение". TempUID - это уникальный идентификатор, содержащий в начале себя время UNIX timestamp и случайную строку для избегания коллизий с вероятностью 10^-15 в секунду появления файла. Например, при удалении записи с одной картинкой, в корзине появятся файлы:

14950891894te1zbcsth_mytetra.xml - файл дерева перед удалением записи
1495089189i5ua2dsfjh_text.html - файл текста записи
1495089189cfl7z52n7l_image5288.png - картинка, используемая в записи

Если удаляемые/изменяемые данные не были зашифрованы, то вручную восстановить запись просто. Во-первых, вы их можете посмотреть чтобы понять, та ли эта запись которая нужна. Во-вторых, вы можете создать пустую запись, найти каталог этой записи (сделать видимым столбец "Имя директории" или нажать в контекстном меню "Скопировать ссылку на запись", в ссылке увидеть идентификатор и по нему найти имя директории в файле mytetra.xml). И вот в этой директории нужно подменить файлы записи (html и png), предварительно переименовав их путем удаления префикса "TempUID_". Название и прочие атрибуты удаленной записи можно найти в файле 14950891894te1zbcsth_mytetra.xml, и потом прописать их в интерфейсе MyTetra или напрямую отредактировать файл mytetra.xml.

Внимание! В момент ручной работы с базой MyTetra должна быть выключена. Или, как минимум, в момент подмены файлов записи, курсор должен стоять на другой записи (если вы только подменяете запись) плюс должна быть включена настройка "Периодическая проверка дерева записей..." если вручную меняете mytetra.xml и у вас при этом MyTetra работает.

Если удалялась зашифрованная запись, то дайствия те же самые, только посмотреть содержание файлов вы не сможете пока не поместите их в MyTetra. Понять какие файлы относятся к удаленной зашифрованной записи можно коственным путем - по времени удаления записи (соответственно по времени создания файла в корзине), по размеру файла ..._text.html (размер зашифрованного файла отличается от нешифрованного только дополнительным размером заголовка в 32 байта плюс несколько байт в хвосте для выравнивания на размер блока). При засовывании зашифрованных файлов вручную обратно в базу надо учесть, что они нормально восстановятся только в случае, если пароль не менялся.

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

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

> Можно ли сделать поиск не только по меткам, названиям и текстам заметок, но и по названиям веток и подветок?

Да, в следующих версиях это будет.


> Есть ли возможность увидеть весь список уже имеющихся меток?

Это называется облако меток. Скорее врего будет, но не в приоритете.


> Есть ли возможность при назначении меток, предоставлять выбор из уже имеющегося списка? Просто, чтобы они не разрастались из-за различий в написании.

Эта задача заведена на guthub, но когда руки дойдут до реализации - не знаю.


> Раз уж ветки и метки в чем-то родственные, есть ли смысл организовывать метки в иерархию. Поможет ли это поиску нужной информации?

Не знаю, по мне так это было бы неудобно. Метки-это "горизонтальные" связи, и потому они равнозначны.

chadwick пишет:

Заметил, что по дереву можно перемещаться клавишами Up, Down, PgUp, PgDn, сворачивать/разворачивать ветки клавишами <Left> и <Right> соответственно, перейти в область записей выбранной ветки можно нажав <Tab>. Если это возможно, сделайте так чтобы повторным нажатием <Tab> можно было перейти из области записей в редактор, а обратно например по <Shift-Tab>. То есть <Tab> перемещает по часовой стрелке, <Shift-Tab> - против. В некоторых qt-приложениях я встречал такой вариант навигации.

С табами есть проблема: как только курсор попадает в виджет, который по-своему трактует реакцию на TAB, то клавиатурой выйти из него невозможно. Например, это виджет таблицы, который используется в списке записей и в списке найденных записей. Это стандартное поведение, хотя его и можно изменить.

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

Soxsten пишет:

К функционалу программы есть пожелания, а именно:

Часть этих хотелок планируется добавлять в следующую десктопную версию.

pipitos пишет:

Возможно не плохо будет сделать что-то подобное в дистрибутиве.

Поместил в задачи на GitHub.

https://github.com/xintrea/mytetra_dev/issues/58

GoodMorning пишет:

Сегодня нашёл небольшой баг

Записал себе.


GoodMorning пишет:

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

Эээ, ну это довольно странно - требовать от программы чтобы она запустилась с диска, неважно какого, потом вытащить его, поработать с другим, потом снова всунуть прежний... Может быть лучше купить маленький настольный USB-хаб? Он копейки стоит.

dzuvogdao пишет:
xintrea пишет:

Если нужно сделать вложенный - просто меняете отступы.

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

Проверил, если в html делать вложенные <ol>, <ul> то тогда в самом редакторе вложенность работает как надо.
Еще желательно больше видов списков, чем буллеты и нумерованный. Опять же в html это можно проставить, и тогда в самом редакторе оно работает.

Может просто по нажатию таба обрамлять текщий пункт <ol> или <ul> и тогда оно будет работать?

Я пытался это реализовать, но была какая-то проблема. Вроде вложенность не добавлялась, а просто шло форматирование в нужный список. Там во внутрях вовсе не HTML, а структура документа. С HTML тоже можно работать, но очень криво.

dzuvogdao пишет:

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

Кнопка "Распахнуть область редактирования" - это не то?

dzuvogdao пишет:

Заметил что цвет текста не поменять из UI, только через html:
6. Добавить компонент для выбора цвета текста

Такая возможность есть, но она скрыта и недоделана немного.
http://webhamster.ru/site/page/index/ar … ctcode/143
Раздел "Скрытые возможности"

hugarin пишет:

Подробности такие. Время синхронизировано на Линуск и Виндовс машине. Различия увидел такие.

Рассмотрим только Виндовс машину. Когда база лежит в папке программы, то при редактировании у файла дерева меняются атрибуты изменен и открыт, но не меняется атрибут создан. Когда мы кладем базу на сетевой диск, то при редактировании меняются все три атрибута одним временем. И программа каждые 10 секунд выдает сообщение о изменении данных сторонней программой. Причем больше никаких копий Тетры не запускали.

Не понятно, что за атрибуты " у файла дерева меняются атрибуты изменен и открыт"? Запустите Peower Shell, и в каталоге с mytetra.xml выполните команду:

dir . -Filter mytetra.xml | Format-Table Fullname,CreationTime,LastAccessTime,LastWriteTime

отредактируйте файл, и дайте команду снова. Вывод сюда покажите. Сделать это нужно для файла на локальном диске, и для файла на шаре.

GoodMorning пишет:

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

В Qt с CSS в просто беда. Я в самом начале планировал делать WISYWING редактор на основе стилей, чтоб не шрифт и размер выбирать, а иметь набор стилей, и выбирать для текста нужный стиль. И иметь один *.css файл на все записи. Он по-моему даже все еще лежит в моей базе знаний в каталоге base. Я попробовал прикрутить этот файл к тексту записи, но оказалось, что базовый компонент QTextEdit не понимает даже простые атрибуты стилей. И мне пришлось на это дело забить, и сделать просто выбор шрифта, размера и отступов, хотя я очень не хотел этого делать. Ну вот как-то так.