Закачка одного файла одновременно с нескольких источников
Moderators: Korney San, Qwertiy, marcipan, igelizm
Нет, ребята, нам такого механизма в DM ненадо. У кого есть Осёл, должен был сталкиваться с таким замечательным явлением, когда скачанный на 100% файл вдруг по окончании закачки сбрасывается, например, на 88%. Произошла проверка файла и система выкинула битые части - теперь 12% опять докачивать. И это в программе, которая специально ориентирована на закачку частями с разных источников. СКОЛЬКО же косяков даст подобный механизм в DM, ведь никто не предоставит контрольной суммы файла, как в Осле или Торренте? Сами намучаетесь и будете отключать столь ненадёжную систему...
А никто и не говорил, что система будет подобной...СКОЛЬКО же косяков даст подобный механизм в DM, ведь никто не предоставит контрольной суммы файла, как в Осле или Торренте? Сами намучаетесь и будете отключать столь ненадёжную систему...
Идея в том, чтобы не перекачивать файл два раза полностью. В моем случае с BDS битый кусок находился в конце файла, причем это было заметно невооруженным глазом(RAR-архив, два одинаковых символа подряд).
К тому же совсем необязательно встраивать эту функцию в сам ДМ(можно сделать плагин) и уж совершенно необязательно она должна всегда быть включена...
Кстати, какие у кого будут идеи по поводу проверки закачиваемого файла на целостность? С архивами понятно, а медиафайлы?
P.S. Кстати, сброс со 100 на 88 все равно лучше, чем заново качать все 100...
В пиринговых системах проверка контрольной суммы всего файла, частей или даже отдельных чанков (как в Торренте) заложена изначально. В нашем случае ГДЕ брать контр.сумму? Пока серверы не будут отдавать её по запросу, как обязательную функцию, ничего хорошего из этой затеи не выйдет. И чем поможет контрольная сумма ВСЕГО архива (ведь только её можно извлечь из начала файла-архива)? Всё равно второй раз придётся качать ВЕСЬ архив.
Если проверять контрольную сумму, тогда действительно придется качать весь архив заново...
А если сравнивать файлы по содержимому, предположив, что недокачанный файл правилен? Идея была такая: есть два файла - докачанный, но битый и недокачанный, по правильный. Программа сравнивала файлы блоками по 100кб. В случае, когда блоки расходились, производился полный побайтовый проход блока. Если соответствующие байты оказывались разными, то для итогового файла брался байт из недокачанного, если он не нулевой...
Была еще идея проходить только недокачанный файл, заменяя нулевые куски соответсвующими кусками из битого...
Идеи не идеальные, но все равно лучше, чем повторная закачка... Если у кого-нибудь есть еще варианты, я согласен их реализовать.
P.S. В обоих случаях предполагается, что в настройках ДМ стоит "Резервировать размер на диске для всего файла".
А если сравнивать файлы по содержимому, предположив, что недокачанный файл правилен? Идея была такая: есть два файла - докачанный, но битый и недокачанный, по правильный. Программа сравнивала файлы блоками по 100кб. В случае, когда блоки расходились, производился полный побайтовый проход блока. Если соответствующие байты оказывались разными, то для итогового файла брался байт из недокачанного, если он не нулевой...
Была еще идея проходить только недокачанный файл, заменяя нулевые куски соответсвующими кусками из битого...
Идеи не идеальные, но все равно лучше, чем повторная закачка... Если у кого-нибудь есть еще варианты, я согласен их реализовать.
P.S. В обоих случаях предполагается, что в настройках ДМ стоит "Резервировать размер на диске для всего файла".
Нууу... По-моему идея более, чем не идеальная.
Это надо, если найдено несоответствие, подменять блок, запускать(распаковывать, прослушивать, просматривать) полученный файл и если что не так, продолжать повторную закачку (надеясь, что она-то правильная, а если НЕТ!) до нахождения следующего несоответствия и так далее.
Жуть...
Нет, по-моему, ничего, кроме разбивания файла на блоки и подсчёта контрольных сумм блока со сравниванием с исходными (а где взять исходные суммы для блоков оригинала?), помочь не может. Всё это есть в Торренте, но нам не светит. Все-же я остаюсь при своём мнении, что лучше не заморачиваться.
Это надо, если найдено несоответствие, подменять блок, запускать(распаковывать, прослушивать, просматривать) полученный файл и если что не так, продолжать повторную закачку (надеясь, что она-то правильная, а если НЕТ!) до нахождения следующего несоответствия и так далее.
Жуть...
Нет, по-моему, ничего, кроме разбивания файла на блоки и подсчёта контрольных сумм блока со сравниванием с исходными (а где взять исходные суммы для блоков оригинала?), помочь не может. Всё это есть в Торренте, но нам не светит. Все-же я остаюсь при своём мнении, что лучше не заморачиваться.
Сколькими-сколькими?
А если я хочу указать зеркала, но не хочу подгрузки с них частями? Придётся ещё и переключатель добавлять, типа "перебирать зеркала/качать одновременно со всех". И однажды он окажется не в том положении и закачается венегрет, вместо нормального файла...
Хотя, если он будет при добавлении новой закачки устанавливаться на безопасный режим закачки всего файла с одного зеркала, то я согласен. И что-бы состояние переключателя можно было менять на лету...
А если я хочу указать зеркала, но не хочу подгрузки с них частями? Придётся ещё и переключатель добавлять, типа "перебирать зеркала/качать одновременно со всех". И однажды он окажется не в том положении и закачается венегрет, вместо нормального файла...
Хотя, если он будет при добавлении новой закачки устанавливаться на безопасный режим закачки всего файла с одного зеркала, то я согласен. И что-бы состояние переключателя можно было менять на лету...
Специально зарегистрировался, дабы свои 5 коп вставить.
Ибо фишка нужная. Особенно для тех, у кого инет толстый.
Господа, давайте прикинем, в каких ситуациях это может быть востребовано:
а) Закачка видео большого размера
б) Закачка крупных архивов
в) Закачка ISOшников
Какие могут быть косяки при этом:
а) файлы имеют одинаковый размер, но сами по себе отличаются. Вероятность, мягко говоря, мизерная.
б) На одном из зеркал лежит "муляж" - файл с таким-же названием и размером, но забитый фигней. Тоже случаи исключительные
в) Версия на одном из зеркал битая. Вот это уже больше похоже на правду. Этот вариант и рассмотрим дальше.
Как ислючить одни косяки и минимизировать другие:
а) Один из источников назначается основным.
б) С него закачивается столько кусков по, допустим, 100 Кб равномерно по всему файлу, сколько есть дополнительных зеркал. При добавлении зеркала - закачивается дополнительный кусок.
в) Паралельная закачка с зеркала начинается с позиции, начинающейся с уже закачанного с основного источника куска. Если куски совпали - зеркало признается "идентичным". Если нет - отправляется в лес. Этим мы исключим первые два косяка.
г) В информации о закачке сохраняем карту - с какого источника какие части файла скачаны.
д) После окончания закачки с использованием этой фишки предлагается файл "проверить" (проверка архива может быть автоматической с возможностью предварительно забить пароль на архив. Проверку видео тоже можно автоматизировать, но это уже сложнее) на целостность. Например - просто запустив. Как проверить ISOшник сходу не предложу.
е) После чего или признать, что все в порядке (тогда инфа о закачке удаляется), или предложить перекачать, исключив какие-то из источников.
ж) Если проверка целостности архива автоматическая, то поставить галку "При нарушении целостности автоматически перезакачивать с основного источника". При этом вначале перезакачивать закачанное с последнего из списка зеркал. Проверять. Если все равно битое - с предыдущего и так далее, пока не выясним, что архив битый на основном источнике :о).
Ибо фишка нужная. Особенно для тех, у кого инет толстый.
Господа, давайте прикинем, в каких ситуациях это может быть востребовано:
а) Закачка видео большого размера
б) Закачка крупных архивов
в) Закачка ISOшников
Какие могут быть косяки при этом:
а) файлы имеют одинаковый размер, но сами по себе отличаются. Вероятность, мягко говоря, мизерная.
б) На одном из зеркал лежит "муляж" - файл с таким-же названием и размером, но забитый фигней. Тоже случаи исключительные
в) Версия на одном из зеркал битая. Вот это уже больше похоже на правду. Этот вариант и рассмотрим дальше.
Как ислючить одни косяки и минимизировать другие:
а) Один из источников назначается основным.
б) С него закачивается столько кусков по, допустим, 100 Кб равномерно по всему файлу, сколько есть дополнительных зеркал. При добавлении зеркала - закачивается дополнительный кусок.
в) Паралельная закачка с зеркала начинается с позиции, начинающейся с уже закачанного с основного источника куска. Если куски совпали - зеркало признается "идентичным". Если нет - отправляется в лес. Этим мы исключим первые два косяка.
г) В информации о закачке сохраняем карту - с какого источника какие части файла скачаны.
д) После окончания закачки с использованием этой фишки предлагается файл "проверить" (проверка архива может быть автоматической с возможностью предварительно забить пароль на архив. Проверку видео тоже можно автоматизировать, но это уже сложнее) на целостность. Например - просто запустив. Как проверить ISOшник сходу не предложу.
е) После чего или признать, что все в порядке (тогда инфа о закачке удаляется), или предложить перекачать, исключив какие-то из источников.
ж) Если проверка целостности архива автоматическая, то поставить галку "При нарушении целостности автоматически перезакачивать с основного источника". При этом вначале перезакачивать закачанное с последнего из списка зеркал. Проверять. Если все равно битое - с предыдущего и так далее, пока не выясним, что архив битый на основном источнике :о).
У Вас, уважаемый, похоже не только толстый канал, но и анлим на этом канале. Масквич что-ли? И много вас таких мега-пользователей DM? Я, например, не могу себе позволить подобные проверки...
Думаю такое надо однозначно в плагин и не замусоривать программу всякими нестабильными функциями. Кому надо - тот подключит плагин и пусть тратит свой трафик на что угодно, если система попадёт в цикл - пусть у него.
Думаю такое надо однозначно в плагин и не замусоривать программу всякими нестабильными функциями. Кому надо - тот подключит плагин и пусть тратит свой трафик на что угодно, если система попадёт в цикл - пусть у него.
Хм... Почти. КиевлянинConver wrote:У Вас, уважаемый, похоже не только толстый канал, но и анлим на этом канале. Масквич что-ли? И много вас таких мега-пользователей DM? Я, например, не могу себе позволить подобные проверки...
Но речь и в самом деле идет об анлиме. К тому-же рабочем (к тому-же как для админа ).
Нууу... фишка то может быть включена или выключена, в зависимости от стремления человека получить конкретно этот файл как можно быстрее.Conver wrote:Думаю такое надо однозначно в плагин и не замусоривать программу всякими нестабильными функциями. Кому надо - тот подключит плагин и пусть тратит свой трафик на что угодно, если система попадёт в цикл - пусть у него.
Кстати о птичках - а как на счет такой фичи:
Возможность использовать паралельно несколько прокси серверов для закачки файла из одного источника.
?
Те-же яйца, только в профиль (хотя для конкретно моих задач это не совсем оно). И проверок не надо.