Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » SatMap (2)

Модерирует : gyra, Maz

Widok (02-08-2010 11:58): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106

   

relictus

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предыдущие части темы

 
SatMap
просмотр, скачивание, кэширование, склейка и привязка спутниковых снимков/гибрида/карт/ландшафта с сервиса Google Maps.

 
FAQ
Настоятельно рекомендуется ознакомиться как опытным пользователям, так и всем новичкам.

 
Текущая версия 2.4.0 (multilingual):
История версий
полный комплект v2.4.0 (2.74 Mb)
v2.4.1.7 (только exe) (1.39 Mb)
SatMap API
 
* - архивы в формате 7-zip
 


Кэши скачанных районов
 


 
Официальный сайт http://satmap.narod.ru

 
Основные функции и возможности (на данный момент):
1. Импорт данных из кэша GoogleMV (версии 2.7+), GoogleV, EarthSlicer (только спутник), SatMap, SASPlanet, Global Mapper
2. Формат кэша: 1 кэш = 1 файл
3. До 100 подключаемых кэшей
4. Экспорт в кэш формата GoogleMV, SatMap, SASPLanet, GPSProga
5. Поиск, сохранение и переход по введенным координатам/названию места
6. Работа с путевыми точками и треками в формате OziExplorer (*.wpt, *.plt)
7. Измерение расстояния
8. Склейка/экспорт данных в графические форматы JPG, PNG, TIFF, ECW, JPEG2000, MrSID
9. Геопривязка в форматах Ozi Explorer, MapInfo, world-файл, TomTom overlay
10. Закачивание данных с сервиса Google Maps без бана
11. Показ высоты по данным SRTM
12. API для управления SatMap
13. Навигационный режим работы с GPS-приемником
14. Работа с базой данных географических названий объектов GNS
 
Планируется:
1. Работа с форматом kml/kmz
2. Возможность скачивать данные с других сервисов
3. и многое другое......
 
Программа распространяется бесплатно. Используйте ее на свой страх и риск.

Всего записей: 3716 | Зарегистр. 19-04-2005 | Отправлено: 13:17 02-04-2009 | Исправлено: relictus, 13:52 23-06-2010
relictus

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zporuchik
ДаблКлик в окне вьювера невозможно использовать чисто по техническим причинам

Всего записей: 3716 | Зарегистр. 19-04-2005 | Отправлено: 11:39 21-06-2010
nemo3001

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
relictus

Цитата:
насколько я знаю, не на всех клавах есть "цифровая часть клавиатуры"

     да, конечно, на ноутбуках, например. Но и там обычно есть вкл/выкл эмуляции цифровой клавиатуры через Fn+NumLck или Fn+спец.кнопка.  
     Расширенные скан-коды клавиш цифровой клавиатуры отличаются от кодов аналогичных по функциям стрелок/PgUp/PgDn и тд, поэтому вроде бы программа не обидится, если в условия цепочки case (или в последовательность команд if, как уж там это в программе сделано) просто добавить через ИЛИ еще и скан-коды  цифровой части клавиатуры. У кого нет/не включена эта часть клавиатуры, для того просто не сработает условие ИЛИ и все...
   
Цитата:
нажимая одновременно лево-вверх, право-низ и т.п

     ну, однократное нажатие на клавиши Home/End/PgUp/PgDn все-таки удобнее этой "лезгинки" по стрелкам
   
     Впрочем, конечно, это просто предложение, разве что еще кто-то выскажется за него...

Всего записей: 234 | Зарегистр. 06-05-2010 | Отправлено: 11:49 21-06-2010
relictus

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nemo3001

Цитата:
Впрочем, конечно, это просто предложение

Разреши мне не браться за него
А то я с этими "мелочевками" просто никогда не внедрю что-то новое...

Всего записей: 3716 | Зарегистр. 19-04-2005 | Отправлено: 11:56 21-06-2010
rex



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
relictus

Цитата:
Попробуй (да и все желающие тоже) и отпишись - стало ли удобнее? Или наоборот - раздражает?

 
Спасибо! Стало на порядок удобнее!  
 
Что касается конно-шахматной идеи nemo3001 использовать центровку для многократного перемещения щелчками, то идея конечно интересная и у  nemo3001 похоже оригинальных и нестандартных идей еще много , но думаю если в SatMap исчезнет возможность чесать левое ухо правой ногой, программа не пострадает .  
 
По по поводу:

Цитата:
Так что возможно наилучшим решением была бы настройка времени задержки между вставками в кэш SatMap прямо в секундах

Не бери дурного в голову . Это еще один оригинальный прожект. Скорость закачки не постоянна и геморрой будет еще тот, а пользы пшик. Просто установи по дефолту любое из понравившихся тебе значений количества вставок в диапазоне 16 - 128. Для защиты диска начинающего пользователя вполне достаточно, а опытный все равно под свой интернет и свои задачи сам все подстроит.
 
О цифровой клавиатуре. SatMap все-таки в перспективе программа для мобильного использования, а это практически исключает возможность использования цифровой клавиатуры. Вариант через Fn+key теоретически конечно возможен, но лишь дома за столом.
 
Добавлено:
relictus

Цитата:
диагонального смещения можно достичь нажимая одновременно лево-вверх, право-низ и т.п.

Вот когда понимаешь потребность в нормальном хелпе. Попробуем применить на нетбуке.

Всего записей: 2319 | Зарегистр. 20-10-2003 | Отправлено: 13:32 21-06-2010 | Исправлено: rex, 13:33 21-06-2010
relictus

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
rex

Цитата:
Стало на порядок удобнее!  

Да? Хм..а как по мне, так - нет, посему сделаю-ка я это опционально

Всего записей: 3716 | Зарегистр. 19-04-2005 | Отправлено: 13:49 21-06-2010
relictus

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nemo3001

Цитата:
а может быть этот номер экземпляра программы, который ты вывел в заголовок программы, теперь можно будет продублировать и в заголовке загрузки перед словом "Выделение", да и в окне капчи тоже - в начале заголовка перед датой/временем, а то не видно, чья это капча в очередной раз жить мешает


Цитата:
И еще. В трее, где написано оставшееся время закачки для текущего экземпляра программы, в случае появления капчи может быть вместо "[время] - SatMap" выводить, например, "[!] - SatMap"

Сделал, протестируй: satmap_v2.4.1.5_multi_exe

Всего записей: 3716 | Зарегистр. 19-04-2005 | Отправлено: 16:33 21-06-2010 | Исправлено: relictus, 16:35 21-06-2010
nemo3001

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    relictus
     

Цитата:
Сделал, протестируй: satmap_v2.4.1.5_multi_exe

     Да, все работает как надо, в капче виден номер экземпляра, в трее видно, кто ждет ответа на капчу.
     Я тут сталкивался несколько раз с тем, что программа, не докачав список сама выводила окно "Сохранить список закачки? Да/Нет" и приостанавливала работу, а по трею это конечно оставалось незамеченным. Может быть есть смысл при появлении этого окна независимо от причины (нажатие клавиши Стоп в закачке и пр) тоже в трее вместо "[время] - SatMap" выводить, например, просто "SatMap". Если пользователь нажал Стоп при закачке, время ему уже не нужно, а по трею будет все-таки видно, что закачки в этом экземпляре уже нет.
     Аналогично - при появлении на экране сообщения - что-то вроде "Попытка установить соединение при отсутствующем сокете" (иногда появляется при разрыве связи с инетом), или что-то похожее - нет сейчас под рукой такого окна.
     В общем - вышел из режима закачки, сменить бы и заголовок в трее на "SatMap" вместо "[время] - SatMap".
     

Цитата:
Разреши мне не браться за него

     
    Все наши разговоры тут, это не больше, чем просто желание помочь тебе в улучшении программы (а себе конечно - в ее использовании). Когда очередное предложение по любой причине тебе хочется отклонить - отклоняй без сомнений, а будет время или самому понадобится - вернешься к нему и сделаешь...
    И вообще, тебе можно было бы подумать о помощнике, который бы в твоем коде разбирался бы как в родном и мог бы делать мелкие доделки в него, допуская минимум ошибок (и хотел бы этого ) . Лучше конечно поискать бы его не в виртуальном, а в физическом твоем окружении, так проще определяться с доверием и слаженностью в работе. Хотя, наверное найти такого помощника - почти как в рекламе сыра - "это - фантастика" .
     
    Кстати, обнаружилась приятная особенность при работе с SatMap, вдруг кому и пригодится.
    Я разместил несколько экземпляров мультиверсии SatMap в разные папки, назвав их SatMap_01, SatMap_02 и тд. А заодно переименовал в каждой из этих папок EXE файл программы соответственно в 01_SatMapGPS_multi.exe, 02_SatMapGPS_multi.exe и тд. Просто хотел, чтобы каждый экземпляр легко было идентифицировать в Диспетчере задач.
    А Windows, запоминая по имени EXE файла в диалоговом окне открытия списка закачки последнюю использовавшуюся папку, теперь мне всегда четко для каждого экземпляра SatMap (имена-то EXE файлов теперь у них разные) сразу предлагает нужную папку для открытия списка закачки. Мелочь, а удобно...

Всего записей: 234 | Зарегистр. 06-05-2010 | Отправлено: 17:14 21-06-2010 | Исправлено: nemo3001, 19:19 21-06-2010
relictus

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nemo3001

Цитата:
Может быть есть смысл при появлении этого окна независимо от причины (нажатие клавиши Стоп в закачке и пр) тоже в трее вместо "[время] - SatMap" выводить, например, просто "SatMap".

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

Цитата:
  И вообще, тебе можно было бы подумать о помощнике, который бы в твоем коде разбирался бы как в родном и мог бы делать мелкие доделки в него

Дык где ж его взять-то, да еще и в физическом воплощении?

Всего записей: 3716 | Зарегистр. 19-04-2005 | Отправлено: 21:36 21-06-2010
rex



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
relictus

Цитата:
Да? Хм..а как по мне, так - нет, посему сделаю-ка я это опционально

Сам хотел это предложить, чтобы было и вашим и нашим, но зная о твоей  нелюбви к опциональности воздержался

Всего записей: 2319 | Зарегистр. 20-10-2003 | Отправлено: 22:45 21-06-2010
nemo3001

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
relictus
netrebos
egor23
     Ну вот наконец-то выбрал время, чтобы рассмотреть влияние на возможность снижения количества дисковых операций настройки SatMap, названной "Размер кэша БД SQLite", значение по умолчанию - 2000 страниц, прочитал конечно обсуждение этой настройки на форуме в мае, после появления версии SatMap v2.3.7.
     Хотелось понять, как связана эта настройка с настройкой количества вставок в БД до завершения транзакции и как повлияет на количество дисковых операций различный размер кэша БД SQLite в зависимости от разного количества вставок в БД.
     
     Кратко напишу, как я себе представляю использование программой кэша БД SQLite и какие выводы можно сделать из этого.
     
     Стоит сказать, что термином "кэш" (cache) можно назвать самые разные вещи (даже наличные деньги так называют, только это уже "cash"). Переведу в нашем случае это слово как "место хранения, хранилище" и постараюсь хотя бы по-разному именовать разные виды кэша, которые используются программой SatMap - временные, постоянные, на жестком диске, в ОЗУ.
     Ну, например,  
     1) "кэш SatMap" - это БД SQLite, постоянное хранилище тайлов и связанной с ними информации на жестком диске.  
     2) "Журнал" - это временное хранилище тайлов на жестком диске до передачи их в кэш SatMap.  
     3) "Кэш БД SQLite", указанный в настройках программы, это временное хранилище информации в ОЗУ компьютера, используемое "движком" SQLite (то есть встроенными функциями SQLIte) для работы с БД SQLite.
     А еще в настройках SatMap есть "Внутренний кэш", но это уже временное хранилище тайлов в ОЗУ, предназначенное для ускорения просмотра карты на экране и не имеющее прямого отношения к закачке/сохранению тайлов.
     
     В упрощенном представлении пути тайла из интернета в кэш SatMap, как "закачка тайла -> журнал => кэш SatMap", на самом деле стрелки отмечают места, где вероятно и используется кэш БД SQLite.
     
     На первом этапе, после получения тайлов из интернета они вероятно не записываются сразу в журнал поштучно, а сначала накапливаются в кэше БД SQLite в ОЗУ и записываются в журнал одной порцией либо при заполнении этого кэша до предела, указанного в настройке программы, либо при выполнении команды в программе о завершении транзакции (напомню, что в этот момент вся информация из журнала копируется в кэш SatMap и журнал после этого очищается или удаляется).
     Во всяком случае вроде так описывал ситуацию relictus по документации к SQLite:
     
Цитата:
все скачанные тайлы будут находиться в области памяти, зарезервированной движком SQLite

     
     Используется ли этот кэш БД SQLite на втором этапе, при копировании информации из журнала в кэш SatMap, конечно не ясно, но тоже вероятно. Чем копировать из журнала по одной записи, вроде бы быстрее прочитать группу записей в ОЗУ и записать их оттуда в кэш SatMap.
     Этот вопрос хорошо бы еще уточнить, потому что при недозаполненном кэше БД SQLite и завершении транзакции вроде бы нет необходимости записывать сначала скачанные тайлы в журнал, потом читать их в ОЗУ и снова записывать их же в кэш SatMap, а тем не менее в прошлом тесте мы видели, что дисковые операции с журналом происходят активно.  
     Журнал транзакций нужен для надежной, с возможностью отката при аварии, записи тайлов в кэш SatMap. Если настройка размера кэша БД SQLite здесь влияет на работу, то видимо надо добиваться, чтобы весь журнал входил целиком в кэш БД SQLite, иначе потребуется считывать его несколько раз порциями. А если настраиваемый размер кэша БД SQLite здесь не участвует, то достаточно будет подробно рассмотреть работу программы только на первом этапе - от закачки тайлов и накопления их в ОЗУ до копирования тайлов в журнал.
     
     Впрочем, теперь уже несложно описать требования к настройкам программы для первого этапа получения тайлов - от интернета до журнала.  
     Суммарный размер тайлов до завершения транзакции должен быть меньше указанного в настройках размера кэша БД SQLite, тогда все закачанные тайлы (в количестве, указанном в настройке "количество вставок в БД") будут записаны из ОЗУ в журнал за один раз.
     Иначе же тайлы все равно будут записываться в журнал порциями, но меньшего размера, в соответствии с указанным в настройках размером кэша БД SQLite. Это тоже достаточно безопасно по нагрузке на жесткий диск, запись будет производиться не по одному тайлу, просто порции эти будут поменьше, чем мы установим в настройке "количество вставок в БД".
 
     Например, мы установили "количество вставок в БД" по 1000 штук, а в кэш БД SQLite вошло только 600 тайлов. Тогда первой порцией в журнал запишется 600 тайлов, второй порцией - оставшиеся 400 и все, поступит команда завершения транзакции. Вместо однократного обращения к жесткому диску будет двукратное, но с меньшим объемом информации за 1 раз.  
     
     Вот и все, никакой чрезвычайной нагрузки на жесткий диск не произойдет, даже если мы неверно установили размер кэша БД SQLite и указанное нами "количество вставок в БД" не вместилось в этот кэш.
     
     Осталось подсчитать, сколько же "вставок в БД" поместится при указанном в настройках по умолчанию размере кэша БД SQLite в 2000 страниц.
     relictus уже писал, что размер 1 страницы кэша БД SQLite - 16 кб и общий его размер по умолчанию составляет в программе 16*2000= 32 мегабайта.
     Размер 1 тайла изменяется в широких пределах, от 1-2 до 30 кб и возможно больше. Например, тайл x=1654&y=635&z=11 оказался размером 29135 байт, но средний размер 16 тыс соседних с ним тайлов уже оказался 18000 байт.
     Для максимальной оценки возьмем закачку самых больших по размеру тайлов. Тогда в кэш БД SQLite по умолчанию войдет примерно 1000 таких больших тайлов, а реально, с учетом среднего их размера - в 2 раза больше.
     
     Я первоначально рекомендовал "количество вставок в БД" в 20 шт, а в тесте пробовал цифры в 50 и 100 шт. Мы помним, что rex писал об использовании им количества вставок в 128 шт, egor23 говорил, что использует 1000 вставок в БД до завершения транзакции.
     Как теперь видно, и 20 и 1000 вставок в БД спокойно, с большим запасом вмещаются в кэш БД SQLite, установленный в программе по умолчанию.
     
     А значит не стоит опасаться и "настройки времени задержки между вставками в кэш SatMap прямо в секундах" (со значением по умолчанию в 30 сек) вместо или вместе с существующей сейчас настройкой "количество вставок в БД".
     Со скоростью 10 тайлов в сек (где бы еще взять такую скорость ) пользователь будет заполнять кэш БД SQLite в течение 100-200 секунд, то есть целых полторы-три минуты, а реально - так конечно больше. А если он при этом забудет увеличить размер кэша БД SQLite, то просто раз в несколько минут этот кэш все равно будет записываться в журнал. И никакой проблемы в этом видимо нет.
     
     Так что, если конечно хватило сил дочитать до конца все это безобразие, я как смог попытался развеять пессимизм фраз:
     

Цитата:
возникают вопросы, от времени зависят текущие две настройки, и в частности кол-во страниц.


Цитата:
Ну да, это я как-то упустил из виду...  
Сразу что-то отпала охота реализовывать временнУю задержку между вставками

     
     Вывод из всего этого получился очень простой.
     
     1. Имеющаяся сейчас в программе по умолчанию настройка размера кэша БД SQLite в 2000 страниц обеспечивает безопасную для жесткого диска закачку тайлов при большом диапазоне возможных настроек количества вставок в БД до завершения транзакции, от, скажем, 20 вставок и больше, вплоть до 1000 вставок в БД.
     
     2. Добавление настройки времени задержки между вставками в кэш SatMap прямо в секундах, что позволило бы автоматически регулировать нагрузку на жесткий диск для пользователей с самыми разными скоростями доступа в интернет, никак не ухудшает режимы работы жесткого диска, если установить ее значение не меньше 20-30 сек.

Всего записей: 234 | Зарегистр. 06-05-2010 | Отправлено: 00:44 22-06-2010
egor23



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nemo3001

Цитата:
Например, мы установили "количество вставок в БД" по 1000 штук, а в кэш БД SQLite вошло только 600 тайлов. Тогда первой порцией в журнал запишется 600 тайлов, второй порцией - оставшиеся 400 и все, поступит команда завершения транзакции.

при заполнении кэша БД SQLite начинается постоянная запись на диск (что-то типа продолжения кэша БД SQLite), пока не скачаются все тайлы "количество вставок в БД".

Цитата:
Осталось подсчитать, сколько же "вставок в БД" поместится при указанном в настройках по умолчанию размере кэша БД SQLite в 2000 страниц.

здесь нет прямой зависимости от размера скаченного
есть зависимость от количесвтва скаченных тайлов и размера скаченного
http://forum.ru-board.com/topic.cgi?forum=5&topic=30026&start=1580#9

Цитата:
relictus уже писал, что размер 1 страницы кэша БД SQLite - 16 кб и общий его размер по умолчанию составляет в программе 16*2000= 32 мегабайта.


Цитата:
размер = 16КБ (типа размера кластера в файловой системе)

http://forum.ru-board.com/topic.cgi?forum=5&topic=30026&start=1760#7

Всего записей: 3832 | Зарегистр. 03-11-2003 | Отправлено: 03:46 22-06-2010
nemo3001

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
     
     egor23

Цитата:
при заполнении кэша БД SQLite начинается постоянная запись на диск ...  пока не скачаются все тайлы "количество вставок в БД"

     Ну вот, нашлось что мне протестировать и с кэшем БД SQLite, а то пока у меня это была книжка без картинок
     
     Использовал для теста Filemon, наблюдал с помощью него за режимами дисковых операций с журналом и кэшем SatMap.
     Уменьшить в ходе тестирования количество страниц меньше 2000 программа не позволила, пришлось протестировать закачку слоя Спутник с заведомо большими по размеру тайлами (12 уровень, Сибирь) сначала в базовом режиме: 64 вставки в БД на 2000 страниц кэша БД SQLite, а потом - в аварийном режиме: 1500 вставок в БД на 2000 страниц кэша БД SQLite.
     Так как тайлы были большого размера, предполагал на основании утверждения egor23, что примерно после 1000 скачанного тайла кэш БД SQLite переполнится и режим обращения программы к жесткому диску изменится.
     Так и произошло. Если еще на 850-м тайле характер обращения в жесткому диску не менялся: группа записей в журнал и кэш SatMap - пауза примерно в 20 сек - новая группа записей, то примерно на 1250 тайле характер обращения к жесткому диску уже был в виде непрерывного, без пауз, обращения вперемешку к журналу и к кэшу SatMap.
     
     Это может означать только одно. В имеющейся реализации SQLite переполнившийся кэш БД SQLite при еще незавершенной транзакции не очищается путем сброса накопившихся записей на жесткий диск - сразу всех или хотя бы большой их части (например, половины или трети записей сразу), а переходит практически в режим работы без кэша в ОЗУ, начав поштучно сразу записывать на жесткий диск, в журнал, каждую поступающую в него запись.
 
     Для нас это означает, что отнестись внимательно к недопущению переполнения кэша БД SQLite в процессе закачки придется нам самим, переложить эту заботу на плечи движка БД SQLite не удастся.
 
     А раз так, то подсчет текущей заполненности кэша БД SQLite записями придется произвести более тщательно.
     
     egor23
     
Цитата:
есть зависимость от количества скаченных тайлов и размера скаченного

     Постраничная запись в кэш БД SQLite конечно требует внести коррективы в мои расчеты заполнения этого кэша, тут ты абсолютно прав.
     
     То, что записи БД вносятся в кэш постранично, реально может означать все-таки два способа занесения записей БД на страницы кэша БД SQLite.
     Первый способ такой же, как происходит запись файлов в кластеры файловой системы, когда даже самый маленький файл всегда занимает целый кластер, а большой файл заполняет полностью цепочку кластеров кроме последнего, в который помещается остаток этого файла. Часть пространства кластера, где записан маленький файл или остаток большого файла, всегда бесцельно пропадает, не используется. Кластер здесь - минимально возможная единица записи информации.
     Второй способ, кажется все-таки используется, например, в базах данных MS SQL Server и, возможно, в SQLite тоже. Он заключается во внесении на страницу нескольких полных записей, а когда очередная запись уже не входит на страницу целиком, она заносится на следующую свободную страницу и остаток предыдущей страницы так же бесцельно пропадает, не используется. Например, записи длиной в 5 кб размещаются на 16 кб страницах по 3 шт на странице, а 1 кб в конце каждой страницы не используется.
     
     Использует ли SQLite для записи в кэш БД SQLite второй способ постраничной записи мы не знаем, это можно выяснить отдельным тестом. Но пока будем исходить из пессимистичного варианта использования пространства кэша БД SQLite - из первого способа, кластерной записи.
     Тогда каждая будущая запись нашего кэша SatMap - сам скачанный тайл и несколько (предположим, 100) байт другой информации (координаты тайла и прочее) всегда будет занимать в кэше БД SQLite ровно либо 16 кб, либо 32 кб (для тайлов, которые больше 16 кб), либо 48 кб (для самых больших тайлов, размером больше 32 кб).
 
     Идеальным вариантом было бы в этом случае использование встроенной функции SQLite, которая сообщала бы, сколько еще свободных страниц осталось в кэше БД SQLite. Если такой функции сейчас у них нет, то это - повод написать письмо разработчикам БД SQLite .
     Используя такую функцию, программа могла бы при окончании свободного места в кэше БД SQLite (осталось 0 свободных страниц), просто завершить транзакцию заранее, не дожидаясь указанного нами в настройках "количества вставок в БД" или не дожидаясь окончания времени задержки между вставками в кэш SatMap. И все. После завершения транзакции кэш БД SQLite очистится, все страницы в нем освободятся и аварийного режима его работы не будет. Жесткий диск не подвергнется перегрузке поштучной записи тайлов.
     
     А если такой функции вдруг сейчас в SQLite нет, то выход все-таки есть.
     Эту функцию программа может заменить сама прямым самостоятельным подсчетом оставшихся свободных страниц в ходе загрузки тайлов. Для этого сразу после начала очередной транзакции можно установить значение переменной, какой-нибудь SQLiteFreePagesCount, в соответствии с настройками программы в разделе "Кэш" (например, в 2000), а в процессе загрузки тайлов уменьшать значение этой переменной в зависимости от размера очередного скачанного тайла + предположим 100 байт дополнительной информации (эту добавку придется подобрать, можно ее и с небольшим запасом сделать).
     Формула для определения того, сколько целых страниц кэша БД SQLite занимает очередная запись (тайл+100 байт), конечно совсем несложная, выглядит она примерно так: целая часть от (размер записи в байтах/16384) + 1.
     Как только переменная SQLiteFreePagesCount стала = 0, завершаем транзакцию независимо от других наших настроек в программе, Commit, кэш БД SQLite очищается и жесткий диск не пострадает.
     
     Все вроде. Интересно, конечно, мнение relictus на все эти выдумки

Всего записей: 234 | Зарегистр. 06-05-2010 | Отправлено: 13:40 22-06-2010 | Исправлено: nemo3001, 13:41 22-06-2010
relictus

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nemo3001

Цитата:
Интересно, конечно, мнение relictus на все эти выдумки

Мое мнение - может напишешь несколько Q:A про все эти вставки/страницы для ФАКа, а? Так складно всё излагаешь, да еще и доступным языком (я бы так не смог), случаем не журналист научно-популярного издания?
 

Цитата:
Идеальным вариантом было бы в этом случае использование встроенной функции SQLite, которая сообщала бы, сколько еще свободных страниц осталось в кэше БД SQLite. Если такой функции сейчас у них нет

Нет
 

Цитата:
Использует ли SQLite для записи в кэш БД SQLite второй способ постраничной записи мы не знаем, это можно выяснить отдельным тестом.

Я что-то тоже не смог найти инфы об этом...
 

Цитата:
Как только переменная SQLiteFreePagesCount стала = 0, завершаем транзакцию независимо от других наших настроек в программе, Commit, кэш БД SQLite очищается и жесткий диск не пострадает.

Звучит складно Надо только выяснить метод наполнения кэша SQLite...

Всего записей: 3716 | Зарегистр. 19-04-2005 | Отправлено: 14:21 22-06-2010
Alex Zaguzin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Фигасе простыни в теме.

Всего записей: 3698 | Зарегистр. 21-07-2007 | Отправлено: 14:32 22-06-2010
zporuchik



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex Zaguzin
ну хоть конструктивные простыни, а потом это целиком в ФАК можно копипастить.
Сам офигиваю от количества букоф, но молчу ))) и читаю, а вдруг умнее стану.

Всего записей: 2131 | Зарегистр. 17-03-2005 | Отправлено: 14:37 22-06-2010
nemo3001

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
relictus

Цитата:
Надо только выяснить метод наполнения кэша SQLite

     А можно и не выяснять. Реализовать да и все. Подсчитывать исходя из первого, кластерного варианта, тогда все равно не дашь переполниться кэшу БД SQLite, как бы он не старался  
     Конечно, периодически ты будешь очищать этот кэш раньше, чем он заполнится, особенно при записях с неполученными тайлами, когда стоит отметка "Сохранять в кэше информацию о недоступных тайлах". Ну тут лучше завершить транзакцию раньше, чем позже. Тем более, что пока другого способа покорить этот кэш БД SQLite вроде нет.
 
Alex Zaguzin

Цитата:
Фигасе простыни в теме

Ну, сорри... Надеюсь, что дальше удастся писать покороче
 

Всего записей: 234 | Зарегистр. 06-05-2010 | Отправлено: 14:42 22-06-2010 | Исправлено: nemo3001, 14:43 22-06-2010
relictus

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nemo3001
А мое предложение насчет ФАКа/хэлпа долго будешь игнорировать-то? Так и осталось висеть в пустоте

Всего записей: 3716 | Зарегистр. 19-04-2005 | Отправлено: 14:47 22-06-2010
nemo3001

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
relictus

Цитата:
А мое предложение насчет ФАКа/хэлпа долго будешь игнорировать-то

     
     Тут народ и так зеленеет уже от деталей технических, а в факе все это читать совсем закучают .
     А я вот по другому думаю - чем умнее станет сама твоя программа, тем меньше надо будет пользователям в факе настройки объяснять, все по умолчанию работает  максимально оптимизировано, кэши всякие жить не мешают, пользуйся для радости - и все. Я как-тот писал уже тут - "Должно же когда-нибудь счастье в жизни стать абсолютным"
    Ну, а если серьезно - фанатское руководство по SatMap, как видишь, постепенно так и будет здесь складываться.  Дадим ему время.

Всего записей: 234 | Зарегистр. 06-05-2010 | Отправлено: 15:02 22-06-2010
relictus

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nemo3001

Цитата:
Тут народ и так зеленеет уже от деталей технических, а в факе все это читать совсем закучают

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

Всего записей: 3716 | Зарегистр. 19-04-2005 | Отправлено: 15:18 22-06-2010
zporuchik



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
relictus
nemo3001
таак. не отвлекайтесь. давайте дальше уже по БД. Мне уже интересно во что это выльется.

Всего записей: 2131 | Зарегистр. 17-03-2005 | Отправлено: 15:27 22-06-2010
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106

Компьютерный форум Ru.Board » Компьютеры » Программы » SatMap (2)
Widok (02-08-2010 11:58): Лимит страниц. Продолжаем здесь.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru