View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0001115SAS.Планета[All Projects] Багpublic16-01-2012 04:3318-10-2012 13:03
ReporterTolik 
Assigned Tovdemidov 
PrioritylowSeverityminorReproducibilityalways
StatusresolvedResolutionfixed 
PlatformOSOS Version
Product Version120808 
Target Version131111Fixed in Version131111 
Summary0001115: При использовании BerkeleyDB не работает Open Primary Map Tile Folder
DescriptionА также и Open Overlay Layer Tile Folder.
В ОС передаётся путь типа C:\ut\SASPlanet.Nightly\cache_db\yanarodscheme\z13\2\1\9.5.sdb\x2472\y1282.png, надо его обрезать до корректного.
Additional InformationКстати, эта ссылка получена путём Copy to Clipboard -> Pathname to Tile in Cache.
Разделитель между 9.5.sdb и x2472 надо сделать каким-то другим, чтобы ОС не думала, что 9.5.sdb - это директория.
TagsБД
Attached Files

- Relationships

-  Notes
(0005000)
vdemidov (manager)
16-01-2012 06:09

Не совсем. Нужно просто различать имя тайла и имя файла в котором тайл находится. Я об этом как-то не подумал раньше. А смысла плодить новые разделители ИМХО нет.
(0005008)
vasketsov (manager)
16-01-2012 10:40

>надо сделать каким-то другим
Надо бы конечно. С точки зрения имён объектов в кэше саса это вторичное пространство имён, и при разборе ссылки всегда должна быть понятна точка перехода в него. В частности, в ядре WinNT вторичное пространство имён - это реестр и файловая система, ссылку на объекты во вторичном пространстве имён никогда не спутаешь на обычные ссылки на объекты (не пишу про имя объекта, потому что формально с точки зрения ядра NT файл - не именованный объект).
Вот только хороший разделитель не придумать. Голосую за двойной слеш (точнее, повторение первого слеша, если он в другую сторону направлен), обработать его нахождение в строке будет проще всего, а о неустранимых недостатках говорить (без наличия драйвера режима ядра, который бы позволял входить в файлы BDB как в обычные папки) пока рано. Может конечно я чего и не догоняю, и надо делать вставку \??\, но не во всех файловых системах нельзя писать ? в именах файлов.
(0005011)
Tolik (manager)
16-01-2012 11:20

Всё равно эта строка не является путём к файлу, так что можно использовать любой разделитель, хоть ::, хоть |. Но можно и не менять, если это вызовет какие-то трудности.
(0005012)
vdemidov (manager)
16-01-2012 11:23

Я веду к тому что просто нет смысла парсить, то что мы сами формируем. А раз так то нет смысла вводить отдельные разделители. Вон в том же Total Commander после входа в архив путь в заголовке показывается "c:\Downloads\JNXLib.rar\samples\" и ничего. Лично мне нравится. Так что нужно просто что бы сам САС формировал правильный путь для открытия папки, где лежит файл в виде C:\ut\SASPlanet.Nightly\cache_db\yanarodscheme\z13\2\1\9.5.sdb
А вот если его просят скопировать имя тайла в буфер, то уже можно сгенерить полный путь C:\ut\SASPlanet.Nightly\cache_db\yanarodscheme\z13\2\1\9.5.sdb\x2472\y1282.png А уж пользователь пусть разбирается что это за контейнер.
Ведь можно же сделать и zip контейнеры с группировкой, например по 256 тайлов, а в них нынче даже винда заходит как в папки, не говоря уже о Total Commander и тд.
(0005013)
Tolik (manager)
16-01-2012 11:48

Согласен, что нет смысла парсить. Я имел в виду разделитель, визуально понятный. Читабельный. Но я не настаиваю.
(0005016)
vasketsov (manager)
16-01-2012 13:04

>Всё равно эта строка не является путём к файлу
Проблема в том, то она МОЖЕТ быть путём к файлу.

Дело в том, что вообще говоря не понятно, JNXLib.rar это файл или настоящая папка. Причём в случае саса в строке C:\ut\SASPlanet.Nightly\cache_db\yanarodscheme\z13\2\1\9.5.sdb\x2472\y1282.png всё что после "yanarodscheme" сас создаёт уже исключительно самостоятельно, без участия пользователя. То есть неискушённый юзер совершенно может быть не в курсе, папка это (допускающая дальнейший разбор) или файл (следствие вольного формирования имени), и можно легко прогнозировать дальнейшие непонятки вида "почему не открывается". А в формировании пути к тайлам хотелось бы полностью исключить возможности двоякого толкования.
Вот если будет формирование перечня тайлов для скачки внешней тулзой - она уже не сможет понять автоматически тип кэша и куда что складывать, ведь нельзя заранее предполагать невозможность скачивания только одного зума (без z13) - соответственно тулза настраивается на один зум - и обламывается в создании папки 9.5.sdb.
Или что ещё важно - после скачки - заведомо невозможно будет сохранить тайл на диске либо корректно обработать ошибку сохранения, имея только сам тайл и его полный путь. Если файла sdb нет, будет создана папка со всеми вытекающими.
То есть конечно можно решать проблемы по мере из возникновения, но ещё проще не создавать проблемы минимальной доработкой. Да даже в ForceDirectories скормить такой путь может оказаться весьма неприятным, а автономно (без дополнительной логики обработки ".sdb", причём ТОЛЬКО для кэша беркли) его не "вычистить".
(0005018)
Garl (manager)
16-01-2012 17:01
edited on: 16-01-2012 17:02

я сразу предлагал юзать : как разделитель.
C:\ut\SASPlanet.Nightly\cache_db\yanarodscheme\z13\2\1\9.5.sdb:x2472\y1282.png
или как вариант :\
C:\ut\SASPlanet.Nightly\cache_db\yanarodscheme\z13\2\1\9.5.sdb:\x2472\y1282.png

(0005025)
vasketsov (manager)
16-01-2012 21:05

Двоеточие юзается в качестве разделителя для файловых потоков на NTFS. Нельзя двоеточие.
(0005217)
zed (manager)
25-01-2012 08:53

Так как в итоге решать эту багу? Добавить ещё один метод в хранилище, по которому отдавать имя контейнера или что?
(0005218)
Garl (manager)
25-01-2012 08:55

по мне: так можно и оставить как есть сейчас.
(0005219)
vdemidov (manager)
25-01-2012 09:08

Какие вообще в перспективе возможны тайлохранилища:
1. Папка в которой по папкам раскиданы файлы. 1 тайл в 1 файле. (То что есть уже давно)
2. Папка в которой по папкам раскиданы контейнеры. N тайлов в 1 файле. (Текущая реализация с БерклиДБ)
3. Папка в которой лежит большой контейнер. Все тайлы в 1 файле. (Например на базе SQLite)
4. База на сервере БД, сервере приложений или еще что-то.
Какие еще варианты? Я больше придумать не могу.
Поэтому для унификации предлагаю и в 4-м случае сделать папку, в которой хранить например файлик с параметрами подключения к базе и тд.
Получается что папка всегда есть.
(0005220)
vdemidov (manager)
25-01-2012 09:11

Тоесть нужно сделать метод у тайлохранилища, который будет всегда отдавать максимально полный путь к месту где хранится тайл. В 1-м случае это будет сам файл с тайлом.
Во 2-м и 3-м это файл контейнера.
В 4-м это файл с параметрами подключения к базе.

- Users who viewed this issue
User List Anonymous (1734x)
Total Views 1734
Last View 26-01-2020 00:32

- Issue History
Date Modified Username Field Change
16-01-2012 04:33 Tolik New Issue
16-01-2012 04:37 Tolik Status new => acknowledged
16-01-2012 06:09 vdemidov Note Added: 0005000
16-01-2012 09:49 gpsMax Tag Attached: БД
16-01-2012 10:40 vasketsov Note Added: 0005008
16-01-2012 11:20 Tolik Note Added: 0005011
16-01-2012 11:23 vdemidov Note Added: 0005012
16-01-2012 11:48 Tolik Note Added: 0005013
16-01-2012 13:04 vasketsov Note Added: 0005016
16-01-2012 17:01 Garl Note Added: 0005018
16-01-2012 17:02 Garl Note Edited: 0005018 View Revisions
16-01-2012 21:05 vasketsov Note Added: 0005025
24-01-2012 14:54 vdemidov Status acknowledged => confirmed
24-01-2012 14:54 vdemidov Target Version => 22xxxx
25-01-2012 08:53 zed Note Added: 0005217
25-01-2012 08:55 Garl Note Added: 0005218
25-01-2012 09:08 vdemidov Note Added: 0005219
25-01-2012 09:11 vdemidov Note Added: 0005220
09-08-2012 06:49 vdemidov Product Version .Nightly => 120808
18-10-2012 13:03 vdemidov Status confirmed => resolved
18-10-2012 13:03 vdemidov Fixed in Version => 131111
18-10-2012 13:03 vdemidov Resolution open => fixed
18-10-2012 13:03 vdemidov Assigned To => vdemidov
18-10-2012 13:03 vdemidov Target Version 22xxxx => 131111



Copyright © 2007 - 2020 SAS.Planet Team