Разбивка выделения при закачке на части
Правила форума
Настоятельно рекомендуем ознакомиться с правилами раздела платных услуг ТУТ.
Настоятельно рекомендуем ознакомиться с правилами раздела платных услуг ТУТ.
- Parasite
- Администратор
- Сообщения: 5646
- Зарегистрирован: 23 окт 2008, 17:38
- Благодарил (а): 124 раза
- Поблагодарили: 508 раз
Re: Разбивка выделения при закачке на части
...и тишинааа..........и только HTTP-запросы в очереди на закачку стоят... 
The only difference between me and a mad man is that I am not mad. /Salvador Dali/


- vdemidov
- Гуру
- Сообщения: 1687
- Зарегистрирован: 12 дек 2008, 13:10
- Откуда: Киев
- Благодарил (а): 191 раз
- Поблагодарили: 157 раз
Re: Разбивка выделения при закачке на части
Увы, времени нет совсем. Так что если этим займется кто-то другой - возражать не буду. Только пусть предупредит, что бы я не ковырялся, если таки время вдруг появится.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
-
zed
- Гуру
- Сообщения: 2888
- Зарегистрирован: 16 авг 2008, 20:21
- Благодарил (а): 89 раз
- Поблагодарили: 568 раз
Re: Разбивка выделения при закачке на части
В таком случае, могу заняться данной хотелкой.
Я могу сделать многопоточную загрузку, которая будет ограничена числом MaxConnectToServerCount из zmp, без возможности задания этого числа в гуе, при старте закачки. Т.е. закачка выделенной области будет работать так же, как и закачка видимой области при сёрфинге. Сам параметр MaxConnectToServerCount я могу вынести в настройки карты, чтобы всё-таки не лазить руками в zmp. Ну а при старте закачки, могу только добавить галочку для игнорирования этого параметра, чтобы можно было качать в однопоточном режиме.
И придётся что-то сделать с логом, чтобы там не было неразберихи. Предлагаю не спамить туда отчитываясь о каждом тайле, а выводить только какую-то общую информацию, вроде ошибок, приостановки/возобновления закачки юзером и проч. О том, какой тайл скачался, теперь видно и из статусной строки. Правда, не будет видно, какие именно тайлы (и сколько) качаются в текущий момент времени, но думаю, без этой информации можно обойтись. Хотя, спам можно и оставить, но тогда всюду придётся добавлять строку вида "[z%d/x%d/y%d]" для того, чтобы было понятно, к какому тайлу относится сообщение.
Я могу сделать многопоточную загрузку, которая будет ограничена числом MaxConnectToServerCount из zmp, без возможности задания этого числа в гуе, при старте закачки. Т.е. закачка выделенной области будет работать так же, как и закачка видимой области при сёрфинге. Сам параметр MaxConnectToServerCount я могу вынести в настройки карты, чтобы всё-таки не лазить руками в zmp. Ну а при старте закачки, могу только добавить галочку для игнорирования этого параметра, чтобы можно было качать в однопоточном режиме.
И придётся что-то сделать с логом, чтобы там не было неразберихи. Предлагаю не спамить туда отчитываясь о каждом тайле, а выводить только какую-то общую информацию, вроде ошибок, приостановки/возобновления закачки юзером и проч. О том, какой тайл скачался, теперь видно и из статусной строки. Правда, не будет видно, какие именно тайлы (и сколько) качаются в текущий момент времени, но думаю, без этой информации можно обойтись. Хотя, спам можно и оставить, но тогда всюду придётся добавлять строку вида "[z%d/x%d/y%d]" для того, чтобы было понятно, к какому тайлу относится сообщение.
- Parasite
- Администратор
- Сообщения: 5646
- Зарегистрирован: 23 окт 2008, 17:38
- Благодарил (а): 124 раза
- Поблагодарили: 508 раз
Re: Разбивка выделения при закачке на части
И все же - как насчет того, чтобы просто автоматом разбивать выделеный полигон на условно равные (по кол-ву тайлов к закачке) N частей, и открывать на каждую часть свое под-окошко со скачкой (в том его виде и функционале, в котором оно сейчас есть)?zed писал(а):В таком случае, могу заняться данной хотелкой.
придётся что-то сделать с логом, чтобы там не было неразберихи.
Как по мне - так очень элегантно вписывается, и не надо отдельно разбираться ни с логом скачки, ни с очередями, ни с сохранением процесса в SLS...
The only difference between me and a mad man is that I am not mad. /Salvador Dali/


-
zed
- Гуру
- Сообщения: 2888
- Зарегистрирован: 16 авг 2008, 20:21
- Благодарил (а): 89 раз
- Поблагодарили: 568 раз
Re: Разбивка выделения при закачке на части
Мне такой вариант не нравится, потому что невозможно "просто" разбить выделение. Даже с прямоугольным выделением возникают вопросы.
Плюс, мне не ясно твое желание манипулировать сотнями окошек вместо того, чтобы иметь дело с одним.
Ты же понимаешь, что запустив даже сотню окошек, одновременно качать реально будет только N потоков. И это N забито в zmp.
Плюс, мне не ясно твое желание манипулировать сотнями окошек вместо того, чтобы иметь дело с одним.
Ты же понимаешь, что запустив даже сотню окошек, одновременно качать реально будет только N потоков. И это N забито в zmp.
- Parasite
- Администратор
- Сообщения: 5646
- Зарегистрирован: 23 окт 2008, 17:38
- Благодарил (а): 124 раза
- Поблагодарили: 508 раз
Re: Разбивка выделения при закачке на части
В рамках данной хотелки их и предлагается решить, выразив результат в строчках кода.zed писал(а):Мне такой вариант не нравится, потому что невозможно "просто" разбить выделение. Даже с прямоугольным выделением возникают вопросы.
Я всё еще не понимаю, в чем сермяжная разница между "Открыть окошки автоматически как просится в хотелке" и "Открыть ручками 100500 одинаковых SLSов, отличающихся лишь параметрами "StartX + StartY" и, опционально, "StopX + StopY" (которые надо будет ввести - и качать, разумеется, лишь то, что попадает в оные рамки)? Вот второе я могу сделать прямо сейчас, поменяв цифирки в Блокноте ручками - а вот почему нельзя их менять автоматом? Если большая нагрузка на камень при попытке одновременного открытия - значит, открывать по очереди. Это ничего - я не тороплюсь, я подожду.
Я понимаю вынесенную в заголовок темы фразу "Разбивка выделения при закачке на части" именно как РАЗБИВКУ выделения. На части. Кои я и хочу наблюдать и контролировать частями, по отдельности.zed писал(а):Плюс, мне не ясно твое желание манипулировать сотнями окошек вместо того, чтобы иметь дело с одним.
Многопоточная закачка хотя и сделает то же самое в результате - но вот в процессе своей работы по удобству итд она несколько не то, что просится. Так как я качаю много, круглосуточно и сердито - то именно удобство работы в процессе частенько выходит на первое место - а результат может прийти и через месяц, и через три...
Вот и отлично. Когда мне приспичит иметь больше - то я просто открою zmp и поменяю N на N+n, да и всё. Вот как раз тут никаких проблем нет - оно и должно качать так, как указано в zmp. Если юзер открыл число окошек больше указанного в zmp лимита - то, значит, они будут драться за каждый свободный слот, и это юзер дурак а вовсе не САС. Сугубо опционально можно вывесить юзеру какой-нибудь тематический поп-ап.zed писал(а):Ты же понимаешь, что запустив даже сотню окошек, одновременно качать реально будет только N потоков. И это N забито в zmp.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/


-
zed
- Гуру
- Сообщения: 2888
- Зарегистрирован: 16 авг 2008, 20:21
- Благодарил (а): 89 раз
- Поблагодарили: 568 раз
Re: Разбивка выделения при закачке на части
Ок, вот теперь я понял что ты хочешь. В принципе, такое можно сделать, но я не уверен, насколько нужна будет такая фишка всем остальным. Большинство, как мне кажется, заинтересовано именно в многопоточной закачке.
- vdemidov
- Гуру
- Сообщения: 1687
- Зарегистрирован: 12 дек 2008, 13:10
- Откуда: Киев
- Благодарил (а): 191 раз
- Поблагодарили: 157 раз
Re: Разбивка выделения при закачке на части
Проблема в том, что сначала нужно радикально ускорить подсчет количества тайлов в полигоне. Так как сейчас оно подсчитывается в потоке стартовавшей закачки, когда создавать новые окна закачки уже нельзя.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
- Parasite
- Администратор
- Сообщения: 5646
- Зарегистрирован: 23 окт 2008, 17:38
- Благодарил (а): 124 раза
- Поблагодарили: 508 раз
Re: Разбивка выделения при закачке на части
Я желаю:zed писал(а):Ок, вот теперь я понял что ты хочешь.
1. Выделить полигон.
2. Где-нибудь в гуе проставить галку "Разбить закачку на [N] частей"
3. При старте этого ЕДИНОГО выделения мне откроется N отдельных окошек скачки, каждая их которых будет качать свою часть от того единого общего выделения.
В каждом отдельном окне - свои рамки ко скачке в данном потоке, свой отдельный лог, свои SLSы, и вообще - каждая под-часть есть отдельная закачка (просто стартанутая из-под начального выделения - как будто я ручками выделил и стартанул более меньший полигон в пределах начального большого. Просто все стартанутые закачки в сумме, по завершению должны дать тот самый начальный полигон, вот и всё. А качают пускай они ровно так же, как и сейчас - ограничение касается только числа тайлов в пределах данного конкретного потока, а не самого алго скачки в потоке).
4. Разбивать предлагаю по количеству тайлов ко скачке, на условно-равные доли. Но принимаются и другие идеи.
5. Общее число потоков не может превышать глобала max_connect_to_server_count (или как там его) в zmp. Если превышает - то лишние стартовать в паузе и выводить попап, либо как-нибудь еще на свое усмотрение.
В данной конкретной теме мнение других мне интересно не ранее, чем они материально подпишутся под свою часть финансирования хотелки. Пока что таковых нет - так что говорю исключительно за себя.zed писал(а):В принципе, такое можно сделать, но я не уверен, насколько нужна будет такая фишка всем остальным. Большинство, как мне кажется, заинтересовано именно в многопоточной закачке.
Имею мнение (но не настаиваю), что ускорить подсчет можно и потом - оно же не должно повлиять на данную хотелку никак иначе, кроме скорости старта суб-потоков. А пока что можно стартовать оные тупо по очереди, один за другим, чтобы не вешать машинку при старте, например, 100 потоков\выделения тысяч этак 30 точек... Пускай стартуют по очереди, и думают при запуске - мне некритично. Если же стартующий поток, задумавшись, не будет подвешивать соседние и всего саса в целом - то и вообще пофиг.vdemidov писал(а): Проблема в том, что сначала нужно радикально ускорить подсчет количества тайлов в полигоне. Так как сейчас оно подсчитывается в потоке стартовавшей закачки, когда создавать новые окна закачки уже нельзя.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/


- vdemidov
- Гуру
- Сообщения: 1687
- Зарегистрирован: 12 дек 2008, 13:10
- Откуда: Киев
- Благодарил (а): 191 раз
- Поблагодарили: 157 раз
Re: Разбивка выделения при закачке на части
Нельзя ускорить потом. Иначе ГУЙ будет зависать до полого подсчета. Я такое откачу в любом случае. А полный просчет нужен уже для старта первой закачки, чтобы посчитать до какого тайла ей нужно качать.Parasite писал(а):Имею мнение (но не настаиваю), что ускорить подсчет можно и потом - оно же не должно повлиять на данную хотелку никак иначе, кроме скорости старта суб-потоков. А пока что можно стартовать оные тупо по очереди, один за другим, чтобы не вешать машинку при старте, например, 100 потоков\выделения тысяч этак 30 точек... Пускай стартуют по очереди, и думают при запуске - мне некритично. Если же стартуюзий поток, задумавшись, не будет подвешивать соседние и всего саса в целом - то и вообще пофиг.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.