Часть 1

В этой части я приведу ещё несколько примеров того, как нам мешает скачивание обновлений внутри приложений.

Пример 1: обновления macOS

Ни для кого не секрет, что обновления macOS огромны. Иногда это раздражает даже дома, но на Южном полюсе ситуация гораздо хуже.

Размер патча минорного обновления macOS обычно имеет размер от 0,5 до 1,5 гигабайтов. Патчи с крупными обновлениями иногда занимают до шести с лишним гигабайтов. Дополнительные инструменты, например Xcode, часто весят несколько гигабайтов.

macOS Update Prompt 01
(Вздыхает) Ещё один патч на гигабайт для моего личного устройства с macOS на Южном полюсе.

Если бы каждое устройство macOS на Южном полюсе скачивало эти обновления напрямую от Apple, то мы бы тратили огромную часть полосы пропускания. А встроенный скачиватель macOS определённо этого от нас и ждёт! Посмотрите на этот интерфейс: ограниченное количество элементов управления, никакой возможности выйти и легко получить сами файлы патчей. Если я отменю скачивание или оно по каким-то причинам прервётся, то я не всегда смогу возобновить его. Иногда весь прогресс теряется.

Apple Download Progress 01
Приложение для обновления macOS. Тут нет кнопки паузы! Я что, должен оставить ноутбук подключенным к Интернету в течение пятнадцати дней??

К слову, у Apple есть встроенная в macOS функция кэширующего сервера. Теоретически, она должна облегчить задачу. Мы должны иметь возможность использовать эту функцию, чтобы каждый патч скачивался на Южный полюс только раз, после чего клиентские Mac обращались бы к кэшу.

В свободное время я экспериментировал с этой функцией на нескольких своих устройствах Apple. На практике эта функция всё равно требует от каждого клиентского Macbook выполнить успешный HTTPS-вызов напрямую к Apple, чтобы согласовать параметры кэша. В случае сбоя этого кэша, который происходит часто (из-за жёстко заданных коротких таймаутов!), клиентский Mac просто получает патч с публичных серверов Apple. Никаких повторных попыток или уведомлений. Клиентский Mac просто принимает одностороннее решение обойти кэш, не обращаясь к пользователю и не уведомляя его. На практике этот первоначальный вызов согласования кэша на Южном полюсе часто заканчивается неудачей, так что функция кэширования бесполезна.

Что мы можем сделать, так это скачать полный установщик (12 гигабайтов!) Apple. Ссылки на пакеты установщиков удобно собраны в блоге Mr. Macintosh. Мы можем медленно и старательно скачать на Южный полюс установщик целиком: с троттлингом и низким фоновым приоритетом при помощи надёжного, устойчивого к прерываниям инструментария, с поддержкой кэширования и возобновления приостановленных или сбойных передач. Получив файл, мы можем распространить его среди пользователей на станции. Этот процесс может занимать несколько дней, но он надёжен.

macOS Installer 01
Полный установщик macOS, мучительно и старательно скачиваемый на Южный полюс.

Но даже это не может решить проблему! Если клиентский Mac — это Apple Silicon, он всё равно настаивает на скачивании дополнительного контента непосредственно с серверов Apple, даже если вы выполнили обновление полным установщиком на 12 ГБ. Нет никакого способа обойти или кэшировать это. Если обновление операционной системы требует определённых типов обновлений прошивки или обновлений Rosetta, то каждый клиентский Mac Apple Silicon обязан будет скачать в процессе установки 1-2 ГБ данных напрямую с серверов Apple.

Хуже того, иногда процесс скачивания передавался отдельному компоненту в macOS, который даже не сообщал о прогрессе установщику! Установка обновления macOS на Южном полюсе — это когда ты смотришь на окно с надписью «устанавливается, осталось 32 минуты» в течение нескольких часов, пока подкомпонент macOS скачивает в фоновом режиме гигабайт некэшируемых данных.

Apple наивно предполагает, что скачивание 1 ГБ будет таким быстрым, поэтому даже не озаботилась указанием скорости скачивания в оценке времени работы программы обновления. Разработчики не ожидали, что люди будут устанавливать обновления macOS в местах, где скачивание гигабайта данных может занять много часов, если не дней.

Это невозможно кэшировать и скачать напрямую при помощи веб-браузера (или другого механизма). Этим должен непосредственно заниматься скачиватель Apple. И, разумеется, в нём нет кнопки паузы. Скачивание каждым клиентским Mac 1-2 ГБ данных за один раз без прерываний — очень неудобно для пользователей и занимает очень большую часть канала.

Как бы Apple могла сильно улучшить ситуацию для пользователей с медленным или странно работающим Интернетом:

  1. Создать требуемый патч, а затем дать нам ссылку, чтобы мы могли скачать его вне скачивателя Apple.

  2. Дополнить встроенный инструмент для скачивания функциями паузы/возобновления и интеллектуальным управлением состоянием, чтобы прогресс не терялся.

  3. Исправить полный установщик, чтобы в него включалось всё, в том числе и исключённые сейчас элементы, например обновления прошивки и Rosetta для Apple Silicon Mac. Было бы гораздо полезнее, если бы в него входило всё. Я бы мог скачать его один раз, а затем распространить его, не беспокоясь, что каждому Mac требуется скачивание дополнительных данных от Apple.

  4. Усовершенствовать функцию кэширующего сервера Apple, чтобы повысить его надёжность в случаях ненадёжного доступа к Интернету. Дайте нам больше контроля за тем, как мы можем заставить работать Mac, чтобы мы могли заставить кэширующий сервер проактивно скачивать данные, которые нам понадобятся в будущем.

Пример 2: обновления телефона Samsung с Android

Мой телефон Samsung с Android получает периодические обновления операционной системы. В эти обновления включаются патчи Android, а также обновления Samsung UI и других компонентов операционной системы.

Программа обновления — это особо плохой пример приложения, совершенно не учитывающего случаи медленного и прерывистого Интернета.

Phone Download Progress 01
Скачиваю обновление операционной системы для моего телефона Samsung с Android на Южном полюсе.

Начнём с основ. У программы нет показателя скорости, нет числового индикатора прогресса (удачи в подсчитывании пикселей на движущейся полоске), нет кнопки паузы и кнопки отмены, нет индикатора размера файла, а также способа отдельного скачивания файла.

Во-вторых, при неудачном скачивании его нельзя возобновить, оно начнётся с начала.

На практике, на Южном полюсе телефон не может целиком скачать обновление операционной системы за один проход спутника. Поэтому с потерей связи скачивание неизбежно прерывается, и мне приходится начинать его заново.

Единственный способ решения проблемы — полностью отключить телефон непосредственно перед обрывом Интернет-соединения, а затем включить его при восстановлении Интернета при проходе следующего спутника. Эта хитрость заставляет телефон не отказываться от скачивания, потому что он полностью был отключен во время отсутствия Интернета. У него никогда не было шанса потерпеть неудачу. Благодаря этому я смог разделить скачивание на несколько проходов спутника и завершить его.

Это абсурдное решение! Я не должен заниматься этим.

У моего провайдера в США (Verizon) есть скачиваемое приложение для macOS и Windows, которое должно, теоретически, позволить мне прошивать обновления операционной системы с компьютера, а не полагаться на телефон при скачивании патчей. На практике, приложение Verizon даже хуже. Оно забагованное, ненадёжное и к тому же настаивает на использовании собственного скачивателя для получения файлов обновления (печаль...).

Я уверен, что должен существовать способ получения образов и их прошивки вручную. Это не предложение для кучи фанатов Android писать мне письма с объяснениями загрузчиков, APK, ROM, sideloading и всего того, что тут важно. Смысл не в этом. Я говорю, что предоставляемые производителями стандартные инструменты безнадёжно неполноценны для пользователей с медленным Интернетом, и это огорчает.

Пример 3: программа автоматического обновления небольшого приложения

В маленьком десктопном приложении есть встроенный скачиватель обновлений. Вы уже видите, в чём тут проблемы?

In-App Downloader 02

Давайте перечислим:

  1. Нет кнопки паузы.

  2. Нет кнопки отмены.

  3. Нет никакого индикатора прогресса.

  4. Нет индикатора скорости/оставшегося времени.

  5. Нет никакого способа получить URL файла, чтобы я мог воспользоваться собственным скачивателем.

  6. Нет отслеживания прогресса и возможности возобновить прерванную загрузку.

На самом деле, это одно из моих любимых десктопных приложений! Очень жаль говорить о нём в таком ключе. Разработчики могли бы сильно облегчить жизнь пользователей на Южном полюсе, если бы указали ссылку для скачивания вручную. Тогда бы им не пришлось самостоятельно реализовывать все удобные функции скачивания, которые есть у браузера, и я бы воспользовался им.

Пример 4: ещё одна программа для автоматического обновления

Ещё один пример!

In-App Downloader 03
In-App Downloader 03

Давайте перечислим проблемы:

  1. Нет кнопки паузы.

  2. Нет числового индикатора прогресса/скорости.

  3. Нет никакого способа получить URL для использования собственного скачивателя.

  4. Нет отслеживания прогресса и возобновления после прерванной загрузки.

Однако у него есть кое-что хорошее:

  1. Кнопка отмены.

  2. Визуальный индикатор прогресса.

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

Пример 5: Microsoft Office для Mac

Нужно отдать должное: в Office для Mac компания Microsoft встроила ОТЛИЧНУЮ программу автоматического обновления! Посмотрите сами:

Microsoft Autoupdate 01

Только взгляните на эти замечательные функции!

  1. Кнопка паузы!

  2. Кнопки отмены!

  3. Индикатор прогресса!

  4. Индикаторы скорости и оставшегося времени!

  5. Возможность возобновления прерванных скачиваний!

Единственное, что могло бы улучшить ситуацию — это ссылка на URL, чтобы можно использовать собственный скачиватель. Но учитывая удобство интерфейса, я вполне могу пользоваться им даже на Южном полюсе.

Заключение

Надеюсь, показанные в этом посте примеры стали полезной иллюстрацией того, как небольшие оплошности или несовершенства функций становятся огромными проблемами в местах с медленным Интернетом.

Повторюсь, я не прошу, чтобы каждый разработчик приложений тратил кучу времени, оптимизируя код под пограничные случаи наподобие Южного полюса.

И я точно не прошу людей творить чудеса. Доступ к Интернету на Южном полюсе на октябрь 2023 года был медленным. Я не жду, что в этих условиях будет работать интерактивный стриминг, но было бы здорово, если бы приложения были достаточно надёжны, чтобы передавать и получать несколько байтов. К сожалению, часто это заканчивается тем. что приложения застревают в порочном цикле из-за непродуманного жёстко заданного таймаута.

Надеюсь, статья была для вас полезной или хотя бы интересной.

Сейчас я уже полгода не нахожусь во льдах, и чтение своих старых постов навевает приятные воспоминания.

Надеюсь, дела у нынешней зимующей команды идут хорошо, и что всем нравится полярная ночь. Если поставки и скорость потребления яиц остались теми же, что и зимой 2023 года, то скоро они съедят последнее яйцо.

Комментарии (26)


  1. DikSoft
    20.06.2024 10:55
    +22

    А вот прям без хипстерских девайсов никак? Кто мешает взять девайсы на нормальных операционных системах?

    Если это не вариант, и понты дороже - поднимите кеширующий прокси.


    1. ED-209
      20.06.2024 10:55
      +3

      Тоже удивился. По-моему, для Антарктиды нужен какой-нибудь защищенный ноутбук типа Panasonic Touchbook. Со встроенной системой подогрева, герметичный, ударостойкий и прочее.


      1. Ikolo92
        20.06.2024 10:55
        +5

        А зачем?

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

        Если же человек остался в Антарктиде рядом с остывающим двигателем или без отопления, то макбук - последнее, что ему нужно. Не сомневаюсь, на такой случай там есть набор подходящей электроники, которая выдержит любые температуры, но обычному ноутбуку, на котором делается обычная работа, это к чему?


    1. esaulenka
      20.06.2024 10:55
      +1

      Прямо на Южном полюсе работают порядка двух сотен человек. Изрядная часть, могу предположить - учОные, которые как работали в своей лабе на своём макбуке, и так и поехали в командировку. Гонять медведей пингвинов этим макбуком никто не собирается.

      Почему у эппла нет прокси для обновлений (или почему админ базы об этом не в курсе) - я не знаю. Было б интересно послушать - вон, у майкрософта всё есть (правда, тоже надо настраивать).


      1. Moog_Prodigy
        20.06.2024 10:55
        +9

        Две сотни человек - это не та ЦА для Эппл, чтобы что-то предпринимать.

        И вообще "Мы за вас все продумали и уже решили". Яблочники должны страдать)


    1. Hajiyev_Tamerlan
      20.06.2024 10:55
      +13

      Надо объявить в Антарктиде табу на использование иных ОС помимо пингвина.


  1. griba
    20.06.2024 10:55
    +9

    Простите за вопрос, но насколько критично обновляться именно "в поле" то есть на полюсе? Если взять общее число пользователей, то Ваша ситуация будет скорее уникальной, исходя из этого, по моему мнению, разработчики и не задумываются о такой простой вещи как индикация скорости загрузки или возможности остановить/возобновить/использовать прокси/скачать честный офлайн установщик


    1. knstqq
      20.06.2024 10:55

      ну дык исследователи же не в тюрьму едут, и командировка не на недельку туда-обратно.

      Хочется жизнки как-то более менее привычной.


      1. larasage
        20.06.2024 10:55
        +1

        Ну от чего-то отказываться придётся. Учитывая, что основное финансирование - из гос.бюджетов, то надо выбирать - абсолютно необязательные личные плюшки или всё-таки работа.


    1. Hlad
      20.06.2024 10:55
      +2

      Плохая связь и низкая скорость доступа к интернету есть не только в Антарктиде. Просто автор выбрал именно такой пример, чтобы вероятность привлечь внимание была повыше. Всё-таки история о том, что учёные-климатологи не могут обновить свой софт в Антарктиде, привлекает внимания больше, чем история о реднеке, который не может обновить свой софт посреди условной Аризоны.


  1. NutsUnderline
    20.06.2024 10:55
    +6

    Даже если не брать в расчет хипстерские девайсы очень много софта не умеют работать при плохом интернете. а чтобы бы получить плохой интернет вовсе не обязательно ездить на полюс


    1. gruzoveek
      20.06.2024 10:55
      +4

      Согласен. У меня в деревне в пригороде инет немного нестабилен, так убунта своим ходом обновиться не может. При любом мелком разрыве сразу фейл, ни докачки, ни возобновления.


  1. okhsunrog
    20.06.2024 10:55
    +18

    А мне казалось, раз едешь к пингвинам - ставь ось с пингвином


    1. baldr
      20.06.2024 10:55
      +4

      Ну вот пингвинов там много, а по яблокам скучают.


    1. NickDoom
      20.06.2024 10:55

      Там тоже теперь снап, не умеющий в докачку. Зато тащащий с собой какой-то дикий оверинжиниринг с вилками и розетками, из-за которого у меня теперь Фокса на Хабре иногда повисает до kill.


      1. knstqq
        20.06.2024 10:55
        +1

        вы всегда можете скачать firefox с официального сайта и установить его. Firefox в snap - ужас! файл скачать нормально нельзя, через раз теряется, особенно если не в Downloads качать


  1. wolodik
    20.06.2024 10:55
    +8

    А в чём необходимость вообще обновляться на полюсе?? Без какой такой функциональности телефона Samsung нельзя обойтись до возвращения на большую землю?


    1. saag
      20.06.2024 10:55

      Это еще большая удача получить обновление от самсунга ибо обновления он выпускает для текущих флагманов, перестал аппарат быть флагманом и давай досвиданья


      1. AcckiyGerman
        20.06.2024 10:55

        вроде как с прошлого года Самсунг обещает 5 лет поддержки для всех выпускаемых телефонов.


  1. codecity
    20.06.2024 10:55
    +4

    Apple-девайсы созданы для цивилизации. Это в ваших наивных мечтах оно будет работать в суровых условиях и вы как бы покажите всем, что сделали правильный выбор, какие вы умные. Но нет, вы ошиблись.

    Только Linux, только хардкор, только все настоящее. Никаких плюшевых розовых штучек.


  1. titbit
    20.06.2024 10:55
    +2

    Было бы интересно почитать про параметры вашей связи на полюсе: ширина канала, стабильность, пинги, лимиты по трафику и т.д.

    По поводу того, что авторы софта массово считают любой канал связи абсолютно надежным и быстрым - согласен. Чтобы почувствовать мучения пользователей не надо ехать на полюс, тут и в области можно такое же поймать на обычной сотовой связи.


  1. mtk0xf
    20.06.2024 10:55
    +1

    Никогда не понимал что добавилось в операционные системы за последние 30 лет, с начала 90-х годов. Патч это багфикс, в районе килобайтов:))) Подводные лодки, спутники и дорогие машины юзают QNX, который помещается на древнюю дискету. И на всех высокотехнологичных дорогостоящих системах похожая ситуация. Следовательно, всё это просто маркетинговый фейк, обычному клиенту не нужный и подавно, но в магазине нормальное железо под старую ось не купить, "новый" софт как специально делается громоздким :))), хотя доходит до того что некоторые функции наоборот исчезают....


    1. JediPhilosopher
      20.06.2024 10:55

      что добавилось в операционные системы за последние 30 лет

      Нуу навскидку можно повспоминать:

      • Драйверы для over 9000 всяких устройств. Значительную часть из которых вы никогда не встретите, но кто-то из пользователей ОС таки встретит и потому они там должны быть. От графических планшетов до древних видеокарт.

      • Всякие фишки виртуализации. Вот это прям новое, 30 лет назад вы могли внутри Windows запустить Linux?

      • Кодеки. Помню, когда-то чтобы большинство видеофайлов открыть надо было ставить какой-нибудь K-lite codec pack. Из коробки на голой винде проигрывалась только какая-то пара форматов.

      • Интерфейс, да. Нужно красивенько с блестками, полупрозрачностью и хардверно ускоренное. Иначе пользователи не хавают

      • Ну и вагон и тележка всякого говна, конечно, куда без этого. Телеметрия, бесполезный поиск в интернете (блин, когда я пишу в меню пуск "Excel" я хочу получить иконку моего локального экселя, а не список статей с википедии и из Bing), сейчас еще какие-то дурацкие ИИ ассистенты стали пихать везде.


      1. mtk0xf
        20.06.2024 10:55
        +1

        виндоус 3.11 10 мб, виндоус 11 30 гб. Разница в 3000 раз. Ваш список заметно короче:)) Они просто какой-то процент от среднего диска забивают :))) Ну и про линукс - наверное он тогда тоже был в районе мегабайта :))) Не уверен что прям не было ничего про линукс


  1. zoroda
    20.06.2024 10:55

    "Прерывистый интернет" - новый перл в мою копилку. Переводчик жжот!


  1. vlmvlm
    20.06.2024 10:55

    хм.
    " Для обращения к функции скачивания файлов в Chrome из программы на Python вы можете использовать библиотеку Selenium. Вот краткий пример кода: "

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options

    Настройка опций Chrome

    chrome_options = Options()
    chrome_options.add_experimental_option("prefs", {
    "download.default_directory": "/путь/к/папке/для/скачивания",
    "download.prompt_for_download": False,
    "download.directory_upgrade": True,
    "safebrowsing.enabled": True
    })

    Инициализация драйвера Chrome

    driver = webdriver.Chrome(options=chrome_options)

    Переход на страницу с файлом для скачивания

    driver.get("https://example.com/file-to-download")

    Здесь нужно найти и кликнуть на элемент, который запускает скачивание

    Например:

    download_button = driver.find_element_by_id("download-button")

    download_button.click()

    Закрытие браузера

    driver.quit()

    Это ответ https://claude.ai/ на промпт "как из программы на пайтоне обратиться к функции скачивания файлов хрома?"
    Что я делаю не так?