xintrea / mytetra_dev

MyTetra - smart crossplatform manager for information collecting / MyTetra - кроссплатформенный менеджер накопления информации / Официальная страница:
http://webhamster.ru/site/page/index/articles/projectcode/105
254 stars 55 forks source link

Время последнего изменения #23

Open Shura0 opened 8 years ago

Shura0 commented 8 years ago

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

xintrea commented 8 years ago

Скорее всего это будет добавлено не скоро. И если добавлено, то включаться отдельной настройкой. Объясняю почему. В MyTetra сделано все так, чтобы изменения, записываемые на диск, были минимальными. Поэтому она и работает быстро. Если добавлять дату изменения, то при каждом изменении записи нужно будет прописывать в дереве в соответствующем месте дату изменения "листа". Я сейчас имею дерево в 5000 записей. И файл дерева перезаписывается при каждом изменении дерева, а перезапись (куда входит генерация XML и запись на диск) длится 200 миллисекунд. Я расчитываю на разумную емкость дерева где-то в 30000-50000 записей. Получается, что такое дерево будет перезаписываться на относительно современном компьютере 2 секунды. Вам удобно будет работать, если после каждого изменения текста прога будет лагать на 2 секунды? Мне нет, поэтому я на такую переделку не расчитываю.

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

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

Shura0 commented 8 years ago

Спасибо за развёрнутый ответ

alexivanou commented 7 years ago

Позвольте 5 копеек в тему: http://www.zonepc.ru/novye-atributy-v-ext4/ mtime (modification time) — время последнего изменения файла, каталога atime — (access time) — время последнего доступа к файлу, каталогу ctime — (change time) — время последнего изменения атрибутов файла, каталога (данных из в inode-области) crtime (create time) — время создания файла dtime (delete time) — время удаления файла И раз пошла речь про файловую систему: http://ru.stackoverflow.com/questions/254497/%D0%9C%D0%B0%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5-%D0%BA%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%B2-%D0%BF%D0%B0%D0%BF%D0%BA%D0%B5-linux-%D0%B8-windows В FAT32 максимальное количество файлов на логическом диске 4,194,304. В NTFS максимальное количество файлов на логическом диске 4,294,967,295. В ext4 максимальное количество файлов на логическом диске до 4,294,967,295 (указывается при создании ФС). Т.е. ситуация редкая, но бывает... заканчиваются в linux inodы для файлов, хотя места может быть еще очень достаточно. Это надо учитывать при создании веток. Возможно, есть смысл хранить базу не в папке, а в виртуальном подключаемом контейнере с заведомо известной файловой системой. Ато может так случиться, что кто-то запустит программу с домашней папкой на FAT16... вот удивительно будут папки называться )

xintrea commented 7 years ago
mtime (modification time) — время последнего изменения файла, каталога 
atime — (access time) — время последнего доступа к файлу, каталогу 
ctime — (change time) — время последнего изменения атрибутов файла, каталога (данных из в inode-области)
crtime (create time) — время создания файла 
dtime (delete time) — время удаления файла

Жалко, что эти времена толком не посмотреть в ls:

$ ls -l --time=crtime
ls: invalid argument ‘crtime’ for ‘--time’
Valid arguments are:
  - ‘atime’, ‘access’, ‘use’
  - ‘ctime’, ‘status’

Где бы еще найти таблицу перекодировки ваших обозначений и обозначений ls.

xintrea commented 7 years ago

И вообще, вы не путаете с Solaris? Обозначения crtime я вижу только в мане на ls у Соляриса.

http://www.opennet.ru/man.shtml?topic=ls&category=1&russian=4

alexivanou commented 7 years ago

ls действительно не умеет видеть эти атрибуты. Вот ссылка на методику и описание: http://www.zonepc.ru/novye-atributy-v-ext4/

xintrea commented 7 years ago

По итогу разговора:

Какую информацию о времени изменения файла можно получить в Linux на файловой системе extX