{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "Блог Михаила Озорнина: заметки с тегом virtualbox",
    "_rss_description": "Главная · Блог · Работы ·",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/mikeozornin.ru\/blog\/tags\/virtualbox\/",
    "feed_url": "https:\/\/mikeozornin.ru\/blog\/tags\/virtualbox\/json\/",
    "icon": "https:\/\/mikeozornin.ru\/blog\/user\/userpic@2x.jpg?1614204384",
    "author": {
        "name": "Михаил Озорнин",
        "url": "https:\/\/mikeozornin.ru\/blog\/",
        "avatar": "https:\/\/mikeozornin.ru\/blog\/user\/userpic@2x.jpg?1614204384"
    },
    "items": [
        {
            "id": "56",
            "url": "https:\/\/mikeozornin.ru\/blog\/all\/how-not-to-develop-software-update\/",
            "title": "Технозависимость 80 лвл",
            "content_html": "<p class=\"lead\">Я иногда пользуюсь виртуалбоксом, чтобы посмотреть что-то на винде. Виртуалбокс опенсорсный и бесплатный, поэтому часто служит набором антипаттернов в дизайне (как делать не надо). Сегодня я расскажу как виртуалбокс обновляет один из своих компонентов.<\/p>\n<p>Для того, чтобы в гостевой операционной системе (та, которая виртуальная) были полезные фишки типа проброса ЮСБ-портов и автоизменения размера есть специальное расширение Oracle Extension Pack. Показываю как выглядит процесс обновления этого расширения.<\/p>\n<p>Первый экран — виртуалбокс рассказывает о наличии обновлений:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-1.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<\/div>\n<p>После того, как согласился обновить виртуалбокс, он предлагает скачать обновление:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-2.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<\/div>\n<p>После загрузки и проверки (это два разных последовательных прогрессбара)<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-3.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<\/div>\n<p>предлагает установить обновление:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-4.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<\/div>\n<p>Если согласиться установить, то на всякий случай он уточнит, что расширение уже установлено, правда ли обновлять. Забудет, что вся эпопея началась именно с того, что предложили обновить и пользователь согласился.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-5.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<\/div>\n<p>Потом вмешиваются юристы<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-6.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<\/div>\n<p>и система безопасности макоси. Обратите внимание на количество разных окошек в фоне и заголовок «Network Operations Manager» (звучит как должность в Oracle).<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-7.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<\/div>\n<p>И даже после обновления виртуалбокс считает обязательным заставить человека нажать на одну единственную кнопку.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-8.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<\/div>\n<p>Я думал, что на предыдущем шаге все закончится, но нет. Даже то тупиковое модальное окно с одной кнопкой — ещё не конец — спросят что делать с тем временным файлом, который качали:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-10.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<\/div>\n<p>Я абсолютно уверен, что почти каждый этап обновления обсуждали и на каждый этап было логичное объяснение программиста, юриста или ещё кого-нибудь, почему нужно задавать этот вопрос:<\/p>\n<ul>\n<li>вдруг человек не против обновить, но не прямо сейчас;<\/li>\n<li>вдруг он занят чем-то важным, скачал обновление, но установить хочет потом;<\/li>\n<li>вдруг он не хочет удалять временный файл обновления;<\/li>\n<li>вдруг у него сейчас мобильный интернет и скачивать не надо;<br \/>\nи т. д.<\/li>\n<\/ul>\n<p>Но общий результат катастрофический: 10 этапов, 8 нажатий на подтверждения. Не надо так. Правильно решение — обновить в фоне как Гугл Хром, чтобы никто даже не заметил.<\/p>\n<p>Ещё раз все экраны вместе:<\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"1128\" data-ratio=\"1.3428571428571\">\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-1.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-2.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-3.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-4.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-5.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-6.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-7.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-8.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<img src=\"https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-10.png\" width=\"1128\" height=\"840\" alt=\"\" \/>\n<\/div>\n<\/div>\n",
            "date_published": "2017-03-16T10:11:24+03:00",
            "date_modified": "2018-12-16T01:16:07+03:00",
            "image": "https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-1.png",
            "_date_published_rfc2822": "Thu, 16 Mar 2017 10:11:24 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "56",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/jquery\/jquery.js",
                    "system\/library\/fotorama\/fotorama.css",
                    "system\/library\/fotorama\/fotorama.js"
                ],
                "og_images": [
                    "https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-1.png",
                    "https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-2.png",
                    "https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-3.png",
                    "https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-4.png",
                    "https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-5.png",
                    "https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-6.png",
                    "https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-7.png",
                    "https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-8.png",
                    "https:\/\/mikeozornin.ru\/blog\/pictures\/virtualbox-10.png"
                ]
            }
        }
    ],
    "_e2_version": 3798,
    "_e2_ua_string": "E2 (v3798; Aegea)"
}