SavePathTree

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
User avatar
Вадим Захаренко
Posts: 922
Joined: Fri 18 Mar, 2005 08:59
Location: Беларусь, Мозырь
Has thanked: 7 times
Contact:

Post by Вадим Захаренко »

Latest post of the previous page:

Alexey Samlyukov
За
В ситуации изложенной Валентином для меня
Я хочу некоторые деревья скрыть другие же оставить для общего просмотра
Регулярно лазить и менять аттрибуты как нужно?

Против
Это уж твоя часть

User avatar
Alexey Samlyukov
Posts: 1760
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 5 times
Contact:

Post by Alexey Samlyukov »

Ты каждый час лазишь в Tree.Far? А многие и не знают что у них есть скрытая папка "Local Settings", а если еще и права отобрать то им вообще все равно какой атрибут на файле, тебе так не кажется?

User avatar
Вадим Захаренко
Posts: 922
Joined: Fri 18 Mar, 2005 08:59
Location: Беларусь, Мозырь
Has thanked: 7 times
Contact:

Post by Вадим Захаренко »

Убедил

User avatar
Alexey Samlyukov
Posts: 1760
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 5 times
Contact:

Post by Alexey Samlyukov »

Вот видишь, "свой своего - всегда может понять" ;)

User avatar
HaRT
Moderator
Posts: 9333
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 99 times
Been thanked: 213 times

Post by HaRT »

Alexey Samlyukov
И %T, и %L ориентированы на то, чтобы легче было вспомнить, к какому диску относится файл дерева. Я на своих идеях не настаиваю. Понятно, что Валентин сделает так, как сочтёт нужным.

User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Post by Skirda »

Добавил:
* %F - тип файловой системы (NTFS, CDFS, ... - то, что вернет GetVolumeInformation)
* %P - Remote путь (здесь символы '\' преобразуются в '_')

Перечитал еще раз т.н. ТЗ - полная лабуда. Чувствую - логика где-то хромает...

Наверное для начала сделаю проще, т.с. 3-й вариант.
1. В реестре раздел "SaveTreePath".
2. В нем:

Code: Select all

LocalDisk:REG_SZ      - шаблон для локальных дисков
NetDisk:REG_SZ        - шаблон для мапленных сетевых дисков
NetPath:REG_SZ        - шаблон для сетевых путей дисков
RemovableDisk:REG_SZ  - шаблон для сменных дисков
CDROM:REG_SZ          - шаблон для CD-дисков
3. Если что-то не задано, то
3.1 для локальных дисков используется [Local AppData\Far]
3.2 для остальных [%HOMEDRIVE%\%HOMEPATH%\Far]
3.3 если %HOMEDRIVE% и %HOMEPATH% не определены, то [%APPDATA%\Far]

Пояснения относительно п.3
* Локальные диски - они и в Африке локальные.
* Остальные диски - если мы сидим в сети, то обычно имеем домашний каталог (и/или перемещаемый профиль - это про %APPDATA%).
Т.е., подразумевается, что со сменными дисками, сидюками, мапленными дисками и сетевыми путями мы можем работать с любого места, подключенного к сети и... (если дальше не додумаете - попробую потом разжевать :-))

User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Post by Skirda »

Подумал еще чуток и... скатился до варианта 4.

1. Исходные данные:
1.1 TreePathLocal:REG_SZ - путь к деревяхам локальных дисков (по умолчанию [Local AppData\Far])
1.2 TreePath:REG_SZ - путь к деревяхам остальных дисков (по умолчанию [%HOMEDRIVE%\%HOMEPATH%\Far])
1.3 MinTreeCount:REG_DWORD - минимальное количество каталогов для сохранения в файл
1.4 TreeFileAttr:REG_DWORD - Атрибут для файла (по умолчанию Hidden, System, Read only)
1.5 LocalDisk:REG_DWORD, NetDisk:REG_DWORD, RemovableDisk:REG_DWORD, CDDisk:REG_DWORD - Правила: {0|1|2} = {несоздавать|создавать|Tree.Far в корне}

2. Имя файла-деревяхи всегда будет в формате type.disk.serial.label.fsys.remote.tree,
здесь компоненты имени:

Code: Select all

 type = L - local, C - CD, N - Network, R - Removable.
 diks = буква диска, если нет - пусто
 serial = серийный номер
 label = метка
 fsys = тип файловой системы
 remote = __host_share (если есть)
 tree = tree
Недостающие компоненты не указываются (например, если метки у локального дика Це нет, то будет нечто L.C.48D10248..NTFS..tree)
3. Если type = L, то FAR будет сохранять файл в [TreePathLocal]
4. Остальные сохраняем в [TreePath]; если в [TreePath] записать не удается - пробуем в [AppData\Far], иначе пробуем в [Local AppData\Far], иначе - не пишим вообще (или в корень?)
5. Перед построением дерева сначала ищем файл в порядке:
5.1 Tree.Far в корне (если нашли - работаем с ним)
5.2 Иначе формируем имя как в п.2 и порядок поиска будет: [Reg:TreePathLocal], [Reg:TreePath], [Local AppData\Far], [%HOMEDRIVE%\%HOMEPATH%\Far], [AppData\Far]
5.3 Не нашли ничего - сканируем диск и сохраняем файл деревяху согласно пп.3 и 4.

User avatar
HaRT
Moderator
Posts: 9333
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 99 times
Been thanked: 213 times

Post by HaRT »

Skirda wrote:Подумал еще чуток и... скатился до варианта 4.
Ну вот, сперва раздразнили конфигурируемостью, а теперь всё переигрывается. :(
Skirda wrote:type = L - local, C - CD, N - Network, R - Removable
А в чём такое существенное отличие CD/DVD от прочих сменных дисков, чтобы их выделять отдельной статьёй?

User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Post by Skirda »

HaRT wrote:
Skirda wrote:Подумал еще чуток и... скатился до варианта 4.
Ну вот, сперва раздразнили конфигурируемостью, а теперь всё переигрывается. :(
Думаю, чем проще, тем лучше :)
HaRT wrote:
Skirda wrote:type = L - local, C - CD, N - Network, R - Removable
А в чём такое существенное отличие CD/DVD от прочих сменных дисков, чтобы их выделять отдельной статьёй?
Для сортирябильности... Можно и не делать...

На самом деле 4-й вариант родился из...
внимательно пересмотрел сорцы и понял, что ЭТО уже как бы есть (правда только для RO-дисков), но хранится в %FAR%\Tree.Cache.
Например, деревяха для \\Server\Distr$ (шара для всех без исключения только для чтения) будет называться (называется).207afad8.NTFS.__Server_Distr$_.
Для сидюков вместо NTFS сейчас CDFS.

User avatar
Alexey Samlyukov
Posts: 1760
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 5 times
Contact:

Post by Alexey Samlyukov »

Skirda Было у нас в корне диска по файлику и папка в ФАРе, а теперь будет просто жуть, да и весь этот хлам кто после себя будет убирать? Я??
Еще - конвертнул я из фата в нтфс - уже другой файл, сменил лаэбл - еще на порядок больше, а потом и букву поменял - еще на три порядка больше + еще комбинации... в топку это всё.

User avatar
Alexey Samlyukov
Posts: 1760
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 5 times
Contact:

Post by Alexey Samlyukov »

ИМХО:
0. Старое хранение файлов индексов отменяется.
1. Индексы храним в одной единственной папке - AppData\Far\TreeCache (атрибут у папки системный, скрытый).
2. Ключ в техинфо "TreePath" позволяет задать другое место.
3. В папке TreeCache файлы имеют названия (по букве диска) А.tree, В.tree. Для CD - серийник.tree
4. В диалоге-настройке указываем:
"Не создавать файл для следующих дисков: B,E"
Last edited by Alexey Samlyukov on Fri 27 Apr, 2007 06:24, edited 1 time in total.

User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Post by Skirda »

Ок. Предлагайте свое. Мы ведь пока обсуждаем!

Цель - вынести нах Tree.Far из корня и Tree.Cache из %FAR%.
Причины:
1. Безопасность/приватность (про корень)
2. В нормальной ситуации "C:\Program Files" для простых смертных только на чтение, а т.к. "C:\Program Files\Far" наследует права в большенстве случаев, то и каталог Tree.Cache создаваться не будет.

User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

Post by Skirda »

Alexey Samlyukov wrote:1. Индексы храним в одной единственной папке - AppData\Far\TreeCache (атрибут у папки системный, скрытый).
2. Ключ в техинфо "TreePath" позволяет задать другое место.
Как здесь быть с сетевыми каталогами?
Я сажусь на другую тачку в сети, логинюсь, мне мапяться нужные диски и... для моего домашнего отмапленного диска снова создавать дерево?

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Post by Centaur »

Если держать в AppData, то с сетевыми дисками проблем не будет. Проблемы будут с локальными дисками (за C.tree подерутся две разные машины). Их можно избежать, если помечать файлы серийниками дисков. Проблемы появятся вновь, если на двух машинах диск с одной буквой будет помечен одним серийником (возможно, если диски получены клонированием образа и программа клонирования не назначает жертвам новые серийники).

Стоит ли кэши локальных несъёмных дисков держать отдельно в Local AppData — тоже не факт. Я бы, вероятно, не отказался, сидя за одной машиной, иметь возможность посмотреть, что у меня есть на другой машине.

User avatar
Вадим Захаренко
Posts: 922
Joined: Fri 18 Mar, 2005 08:59
Location: Беларусь, Мозырь
Has thanked: 7 times
Contact:

Post by Вадим Захаренко »

Лучше всего имя файла давать по серийному номеру
<SN>.tree - со сменой имени диска
файлик иметь такую структуру

Code: Select all

[Info]
Storage=
DriveName=C:\ | \\Server\Shara$
SN=1234-5678
FS=NTFS
...
[Tree]
C:\Progran Files\
Место хранения - дерева стандартное для всех
Можно в настройках указать где хранить для каждого типа дисков
Если кто хочет изменить меняет в деревяшке параметр Storage
Значение
Пусто - настройки по умолчанию
Source - на самом приводе
иначе путь к файлу


По поводу клонирования и одного номера диска - по моему не так, но не утверждаю.

Alexey Samlyukov
в топку это всё.
- не нравится - не используй тогда

User avatar
Alexey Samlyukov
Posts: 1760
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 5 times
Contact:

Post by Alexey Samlyukov »

Centaur wrote: Проблемы будут с локальными дисками (за C.tree подерутся две разные машины).
Так в чем проблема? добавить имя компа и не париться С.bla-bla-bla.tree

Post Reply

Return to “Предложения и идеи”