Freigeben über


Проектирование с учетом быстрой загрузки ПК

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

В этой статье Крис Кларк (Chris Clark), руководитель программы в рабочей группе по взаимодействию с пользователями, рассказывает о том, как нам удалось добиться невероятно быстрой загрузки.
-- Стивен


У Windows 8 есть один серьезный недостаток — она слишком быстро загружается.

Так быстро, что пользователь просто не успевает прервать загрузку. При включении компьютера с ОС Windows 8 у пользователя не остается времени на нажатие клавиши F2 или F8 и на чтение сообщений вроде "Нажмите F2 для входа в настройки". Впервые за несколько десятилетий вы не сможете прервать загрузку, чтобы заставить компьютер выполнить какие-либо другие действия.

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

Слишком мало времени на прерывание загрузки

Не пожалейте времени на просмотр видеоролика о быстрой загрузке (если вы уже видели этот ролик, посмотрите еще раз), размещенного Гейбом Олом (Gabe Aul) в предыдущей статье, посвященной ускорению загрузки Windows 8. В этом видеоролике показан ноутбук с твердотельным накопителем, на котором полная загрузка ОС занимает менее 7 секунд. Для столь быстрой загрузки не требуется какое-то особое оборудование, это абсолютно нормально для современного компьютера. Вы также заметите ускорение загрузки и на старом оборудовании, однако на многих ПК сама по себе инициализация BIOS (отображение эмблемы и сообщений BIOS) занимает много времени. Очевидно, что свой вклад в ускорение загрузки вносит и твердотельный накопитель.

Если весь процесс загрузки занимает всего несколько секунд, то отдельные его этапы пролетают слишком быстро (времени на прерывание практически не остается). Большинство решений в процессе загрузки принимаются в первые 2–3 секунды — после этого начинается собственно запуск Windows. За эти 2–3 секунды выполняется инициализация встроенного ПО, самотестирование при включении питания (менее 2 секунд) и обнаружение диспетчером загрузки Windows альтернативных путей загрузки (менее 200 миллисекунд на некоторых компьютерах). Эти сроки будут и дальше сокращаться, но уже сейчас времени на прерывание загрузки, как раньше, недостаточно.

Мы, разработчики Windows, столкнулись с этой проблемой первыми, особенно в плане использования клавиши F8. В предыдущих версиях Windows (например, в Windows 95) по нажатию клавиши F8 выводилось меню с дополнительными вариантами загрузки. В этом меню были такие полезные пункты, как "Безопасный режим" и "Отключить обязательную проверку подписи драйверов". Я до сих пор помню, как воспользовался этими пунктами при обновлении моего первого ПК с Windows 3.1 до Windows 95. Клавиша F8 помогла мне быстро устранить все проблемы и перейти на Windows 95.

Однако благодаря усовершенствованию оборудования и программного обеспечения в Windows 8 промежуток времени, в течение которого ОС успевает среагировать на нажатие клавиши F8, значительно сократился. На компьютерах, оснащенных твердотельными накопителями и интерфейсом UEFI, сообщение "Нажмите F8" отображается менее 200 миллисекунд. Какими бы быстрыми ни были ваши пальцы, перехватить событие продолжительностью 200 миллисекунд практически невозможно. Вам приходится быстро стучать по клавиатуре. Проходя по коридору, я часто слышал, как люди пытались перехватить сообщение о нажатии клавиши F8, бешено стуча по клавиатуре — "тук-тук-тук-тук-тук-тук-тук-тук". Это удавалось лишь после нескольких перезагрузок. Мы провели неформальное исследование и выяснили, что лучшим из нас удавалось сократить промежуток между нажатиями клавиш до 250 миллисекунд. Таким образом, даже в идеале перехват сообщения продолжительностью 200 миллисекунд зависит от воли случая. Даже если вам удастся перехватить это событие, вы все равно потеряете время, устанете и приобретете репутацию чудака (только представьте, как выглядит со стороны человек, остервенело долбящий по клавиатуре).

Проблема с клавишей F8 распространяется и на другие клавиши, которые используются во время загрузки. Например, в версии Windows 8 Developer Preview по нажатию клавиши F8 вызывалось меню с полным набором параметров исправления, восстановления и дополнительных вариантов загрузки. По нажатию другой клавиши вызывались параметры для разработчиков, например включение отладки и отключение проверки подписи драйверов. На большинстве ПК поддерживаются дополнительные клавиши, используемые встроенным ПО. Соответствующие сообщения выводятся во время самотестирования при включении питания: "Нажмите F2 для входа в настройки" или "Нажмите F12 для загрузки по сети". На современных компьютерах самотестирование успевает закончиться до вывода этих сообщений. Во многих случаях клавиатура не будет работать до окончания самотестирования, поскольку встроенному ПО не хватит времени на обработку нажатия клавиш. Некоторые устройства даже не пытаются обрабатывать нажатия клавиш.

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

Определение проблемной области

Мы рассмотрели проблемы с различных точек зрения и применили для их решения целостный подход. К решению задачи были привлечены разработчики, инженеры-тестировщики и руководители программ, которые тщательно изучили все ее аспекты от компонентов ядра до взаимодействия с пользователем. Рассмотрев задачу сначала как инженерную, мы определили ситуации и сценарии, зависящие от нажатия клавиш при загрузке Windows 8. В результате было предложено несколько десятков способов восстановления функциональности в каждом отдельном случае.

Ниже перечислены основные сценарии.

  • Даже если Windows загружается нормально, вам может потребоваться изменить ход загрузки: выполнить загрузку с другого устройства, например с USB-накопителя, перейти к настройкам BIOS или запустить программы с защищенного образа среды восстановления Windows на отдельном разделе. Ранее эти задачи выполнялись, как правило, в обход Windows, с помощью клавиш, поддерживаемых встроенным ПО, таких как F2 и F12 (или других клавиш, о которых вы сразу и не вспомните!).
  • Вам может потребоваться устранить неполадки после сбоя системы или отменить недавно выполненное действие. В состав Windows входит множество средств для решения подобных задач, например для восстановления ПК или возвращения его в исходное состояние, возврата к точке восстановления или устранения неполадок вручную в окне командной строки. Ранее доступ к параметрам восстановления осуществлялся через диспетчер загрузки Windows по нажатию клавиши F8 в начале загрузки.
  • Некоторые сбои при загрузке сложно выявить автоматически. Например, загрузка Windows может пройти без сбоев, однако ошибки в компонентах, загружаемых позже, могут привести Windows в неработоспособное состояние. Такие случаи редки; в качестве примера можно привести установку поврежденного драйвера, при загрузке которого происходит сбой запуска экрана входа в систему. На старом оборудовании можно было прервать загрузку нажатием клавиши (например, F8) и выбрать подходящий параметр восстановления до загрузки сбойного компонента. Со временем прервать загрузку таким способом стало труднее, а в Windows 8 это практически невозможно.
  • Мы также должны были реализовать определенные параметры загрузки, востребованные в основном разработчиками Windows и сторонних программ. Ранее для доступа к этим параметрам в начале загрузки необходимо было нажать определенную клавишу (например, F8). Эти ориентированные на разработчиков параметры по-прежнему важны: с их помощью можно отключить обязательную проверку подписи драйверов, "ранний запуск антивредоносной программы", а также выполнить ряд других действий.

Один из ключевых принципов проектирования, на которые мы опирались при разработке, — это согласованность наших решений с другими компонентами Windows 8. Мы считаем, что у различных вариантов загрузки больше сходств, чем различий, поэтому они должны располагаться вместе. Если взглянуть на это с другой стороны, то для выполнения той или иной задачи никто не обязан знать внутреннее устройство Windows. Мы хотели сделать так, чтобы все "просто работало".

Три решения — единый подход

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

  1. Мы свели все параметры в единое меню — меню вариантов загрузки, — в котором доступны все средства устранения неполадок, параметры запуска Windows для разработчиков, методы доступа к настройкам BIOS и возможность непосредственной загрузки с других устройств, например с USB-накопителей.
  2. Мы реализовали отказоустойчивые механизмы, которые автоматически выводят меню вариантов загрузки (в высоконадежной и защищенной среде) при возникновении проблем с загрузкой Windows.
  3. Наконец, мы реализовали несколько способов непосредственного доступа к меню вариантов загрузки, работающих даже при отсутствии проблем с Windows. Теперь эти меню и параметры вызываются не через прерывание загрузки, а целенаправленно, что гарантирует успешное завершение операции.

Каждое из предложенных решений соответствует отдельному аспекту общей проблемы, а вместе они образуют единое комплексное решение.

Единое меню для всех вариантов загрузки

Основная идея, лежащая в основе меню вариантов загрузки, заключается в создании единого компонента для работы с параметрами, влияющими на запуск компьютера с Windows 8. Элементы этого меню подробно рассматривались в предыдущей статье, Модернизация процесса загрузки Windows. В этой статье приведена подробная информация и описаны фундаментальные изменения, внесенные в меню загрузки для поддержки сенсорного управления, визуальных элементов Windows 8 и единообразного взаимодействия с пользователем в различных условиях загрузки. Ниже приведен снимок экрана меню вариантов загрузки на одном из моих ПК на основе UEFI.

Выберите параметр: "Продолжить", "Использовать устройство", "Загрузить другую операционную систему", "Устранение неполадок" или "Выключить ПК"

Загрузка с альтернативного устройства (например, с USB-накопителя или по сети) — это одна из наиболее распространенных задач, для выполнения которой ранее требовалось прервать загрузку нажатием клавиши. При наличии встроенного ПО на основе UEFI эту задачу теперь можно решить программным путем. На таких устройствах в меню вариантов загрузки доступен пункт "Использовать устройство", обеспечивающий непосредственный доступ к соответствующей функции. Как показано на приведенном выше рисунке, кроме этой функции также доступны и другие варианты загрузки. Теперь для загрузки с другого устройства не требуется прерывать загрузку Windows нажатием клавиши (при условии, что меню вариантов загрузки вызывается не по нажатию клавиши во время загрузки. Подробности ниже.)

В это же меню мы добавили новый пункт, позволяющий войти непосредственно в настройки BIOS встроенного ПО на основе UEFI (при условии, что такая возможность поддерживается оборудованием). На старом оборудовании инструкции по входу в настройки BIOS отображались во время самотестирования при включении питания в виде таких сообщений, как "Нажмите F2 для входа в настройки". (Эти сообщения появились на ПК задолго до других типов пользовательского интерфейса.) Такие сообщения по-прежнему выводятся на компьютерах, разработанных до Windows 8, и по-прежнему работают (в основном благодаря тому, что самотестирование на таких устройствах занимает несколько секунд). Однако на UEFI-компьютере с Windows 8 самотестирование выполняется слишком быстро, чтобы успеть обработать нажатия клавиш, поэтому на новых устройствах эта функция реализована в меню вариантов загрузки. Изучив остальные пункты меню, мы решили поместить кнопку для перехода в настройки BIOS встроенного ПО на основе UEFI после пункта "Устранение неполадок" в группе "Дополнительные параметры".

"Восстановление системы", "Восстановление образа системы", "Автоматическое восстановление", "Командная строка", "Параметры встроенного ПО UEFI", "Параметры загрузки Windows"

Краткое примечание о старых устройствах, не поддерживающих UEFI: для оборудования, выпущенного до Windows 8, новые пункты меню UEFI (загрузка настроек встроенного ПО и загрузка непосредственно с другого устройства) отображаться не будут. Встроенное ПО на таких устройствах, как и ранее, будет поддерживать возможности, доступные во время самотестирования при включении питания (например, вывод таких сообщений, как "Нажмите F2 для входа в настройки"). На таких устаревших устройствах по-прежнему будут обрабатываться нажатия клавиш во время самотестирования (на новых ПК с Windows 8 самотестирование занимает менее 2 секунд).

Следующий пункт отображается на всех устройствах с Windows 8 — независимо от поддержки UEFI. На приведенном выше рисунке видно, что мы добавили пункт Параметры загрузки Windows. Этот новый пункт позволяет вывести параметры загрузки Windows для разработчиков в виде единого меню, что дает возможность реализовать сценарии, для которых ранее требовалось нажатие клавиши во время загрузки. В это меню входят такие пункты, как "Отключить обязательную проверку подписи драйверов", "Режим отладки", "Безопасный режим" и ряд других. Ниже приведено приближенное представление информационной страницы с этими параметрами.

Перезапуск для изменения таких параметров Windows, как: "Отключить обязательную проверку подписи драйверов", "Отключить ранний запуск антивредоносной программы", "Отключить автоматическую перезагрузку при отказе системы", "Включить видеорежим с низким разрешением", "Включить режим отладки", "Включить протоколирование загрузки", "Включить безопасный режим"

Меню вариантов загрузки — это единый компонент для работы с параметрами, влияющими на запуск компьютера с Windows 8. Благодаря сведению всех параметров воедино меню вариантов загрузки становится удобным универсальным средством для работы с соответствующими элементами. Для выполнения таких задач, как изменение параметров загрузки Windows, вход в настройки BIOS встроенного ПО на основе UEFI или загрузка с USB-накопителя, больше не требуется прерывать загрузку нажатием клавиши — при условии, что вы можете попасть в меню вариантов загрузки. Давайте узнаем, как попасть в это меню.

Автоматический вход в меню вариантов загрузки при возникновении проблем

Есть две ситуации, в которых необходимо воспользоваться меню вариантов загрузки на ПК с Windows 8. Первая ситуация — сбой системы, когда для восстановления работоспособности ПК требуется выполнить исправление. Вторая ситуация (мы рассмотрим ее в следующем разделе) — когда система работает в штатном режиме, однако вам необходимо каким-то образом изменить поведение при загрузке или конфигурацию встроенного ПО либо загрузиться с другого устройства.

В первом случае что-то пошло не так и требуется восстановление. В рамках старой модели компьютерного оборудования требовалось, чтоб вы (или кто-то, кому вы доверяете) инициировали процесс устранения неполадок, нажав во время загрузки одну из нескольких поддерживаемых клавиш. Например, в версии Windows Developer Preview разные группы параметров вызывались с помощью сочетания клавиш Shift + F8, клавиши F8 и поддерживаемых встроенным ПО клавиш, таких как F2 и F12 (зависит от конкретной модели ПК).

Нажатие клавиши (сочетания клавиш) — это первый этап в процессе устранения неполадок, за которым следует восстановление. Благодаря сведению всех этих параметров в единое меню отпадает необходимость в использовании нескольких клавиш для разных задач. Мы пошли еще дальше и отказались от использования последней оставшейся клавиши, реализовав автоматическую загрузку меню вариантов загрузки при невозможности выполнить загрузку Windows в штатном режиме.

В Windows 8 меню вариантов загрузки открывается автоматически каждый раз, когда при загрузке Windows возникают проблемы. Это происходит даже в тех случаях, когда (с точки зрения Windows) загрузка прошла успешно, но фактически ПК неработоспособен. В качестве примера можно привести ситуацию, когда из-за установки неисправного драйвера основной экран входа в систему становится абсолютно пустым. Windows может "не знать", что экран пуст, однако человек заметит это сразу же. Разработанный нами алгоритм обнаруживает подобную ситуацию на протяжении нескольких загрузок и автоматически загружает меню вариантов загрузки в среде восстановления Windows. Поскольку в исходном образе среды восстановления Windows драйверы и файлы хранятся отдельно от основной установки Windows, на него не влияют никакие изменения программного обеспечения. Этот образ представляет собой надежную среду для устранения неполадок с помощью меню вариантов загрузки.

Возможен ли запуск меню вариантов загрузки в среде восстановления Windows, если система функционирует абсолютно нормально? Требование повторения сбоя два раза подряд значительно снижает вероятность такого события, но тем не менее оно возможно. Учитывая такую возможность, в самом начале меню вариантов загрузки мы разместили бросающуюся в глаза кнопку Продолжить — специально для тех, у кого нет проблем с загрузкой Windows 8. Мы смоделировали эту ситуацию в нашей лаборатории по оценке удобства использования, чтобы узнать, как пользователи будут реагировать на непредвиденное появление меню вариантов загрузки. Мы с удовлетворением выяснили, что кнопка Продолжить полностью оправдала ожидания, став своеобразным спасательным кругом на случай ошибочных срабатываний.

"Продолжить": выход и продолжение загрузки Windows 8 Consumer Preview

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

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

Вход в меню вариантов загрузки по желанию пользователя (даже если все работает нормально)

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

Мы стремились сделать меню вариантов загрузки легкодоступным и логически согласованным с другими компонентами Windows 8.

В общем и целом наша задача состояла в том, чтобы создать единый механизм для выполнения конкретной задачи и сделать этот механизм максимально эффективным. Даже если задачу можно решить несколькими способами, один из них обязательно окажется главным — как правило, это наиболее распространенный способ, охватывающий большинство возможных ситуаций. Метод, выбранный для решения конкретной задачи, должен охватывать определенный набор сценариев использования, а также оставаться удобным, практичным и эффективным для всех этих сценариев. Основной метод решения задачи может охватывать не все возможные ситуации. Если эффективного подхода к таким ситуациям не существует, основной метод становится единственно возможным.

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

Основной метод вызова меню вариантов загрузки — запуск из раздела Особые варианты загрузки на вкладке Общие компонента Параметры ПК. Чтобы открыть компонент Параметры ПК, воспользуйтесь чудо-кнопкой "Параметры" или выполните на начальном экране поиск по таким ключевым словам, как "загрузка", "запуск", "безопасный режим", "встроенное ПО", "BIOS" и др. На вкладке "Общие" вы увидите краткое описание параметров меню вариантов загрузки, а также кнопку Перезагрузить сейчас. Описания на этой вкладке формируются динамически, в зависимости от оборудования, встроенного ПО и программного обеспечения, установленного на ПК с Windows 8.

Здесь доступно несколько параметров, в том числе "Восстановить ПК без потери файлов" — кнопка: "Начало работы"; "Сброс параметров ПК для начала с чистого листа" — кнопка: "Начало работы"; "Особые варианты загрузки" — кнопка: "Перезапустить сейчас"

Кнопка Перезапустить сейчас в разделе Особые варианты загрузки — это основной механизм вызова меню вариантов загрузки на полностью работоспособной системе. Система начнет перезагружаться. После завершения работы Windows и непосредственно перед перезагрузкой и самотестированием процесс приостанавливается, и на экране появляется меню вариантов загрузки. Это последний этап завершения работы (перезагрузки), когда можно вывести на экран пользовательский интерфейс. Мы решили приостановить процесс перезагрузки именно на этом этапе, чтобы вы могли выбрать дальнейшие действия до запуска процедуры самотестирования ПК. Выбрав желаемый вариант загрузки до самотестирования, мы можем перейти к настройкам встроенного ПО или загрузке устройства без повторной перезагрузки и самотестирования. С помощью этого меню вы даже можете загрузить другой экземпляр Windows. Поскольку Windows приостанавливает перезагрузку для вывода меню вариантов загрузки, это позволяет быстро загрузить другую операционную систему.

Существует еще более быстрый способ вызова меню вариантов загрузки: из меню завершения работы. Если при выборе команды Перезагрузка удерживать клавишу Shift, Windows 8 выполнит те же действия, что и при нажатии кнопки Особые варианты загрузки в окне Параметры ПК. Поскольку меню завершения работы можно открыть из любого компонента Windows 8 с помощью чудо-кнопки "Параметры", это позволяет максимально быстро перейти в меню вариантов загрузки. Просмотрев видеоролик в конце данной статьи, вы заметите, что мы переместили эту команду таким образом, чтобы все параметры располагались в один ряд — что более удобно, чем в Windows 7.

Меню над кнопкой "Питание": "Сон", "Завершение работы", "Перезагрузка"

Мы добавили возможность вызова команды "Перезагрузка" с клавишей Shift, чтобы можно было вызвать меню вариантов загрузки даже без входа в систему. В рамках старой модели оборудования, основанной на нажатии клавиш во время загрузки, любой человек, имеющий доступ к компьютеру, мог прервать загрузку и открыть меню вариантов загрузки. Чтобы сохранить эту возможность, необходимо было реализовать механизм, позволяющий вызвать меню вариантов загрузки без входа в систему любому пользователю, работающему на ПК.

Меню завершения работы идеально удовлетворяет этим требованиям — оно всегда доступно на экране входа в систему, даже если вход в систему не выполнен. Кроме того, использование клавиши Shift для команды "Перезагрузка" соответствует принципам работы данного модификатора для других команд меню. Вы могли заметить, что меню завершения работы также доступно в других компонентах ОС, как для вошедших, так и для не вошедших в систему пользователей. Во всех этих компонентах сочетание Shift + "Перезагрузка" работает одинаково. Мы считаем, что единообразное и предсказуемое поведение меню завершения работы — это крайне важно.

Существует еще один способ вызова меню вариантов загрузки при завершении работы, дающий дополнительные преимущества при работе с командной строкой. Мы добавили для команды shutdown.exe новый флаг: /o. Флаг /o работает только совместно с флагом /r (перезагрузка), поэтому полный синтаксис выглядит следующим образом:

Shutdown.exe /r /o

C:\Windows\system32\cmd.exe C:\Users\Chris стрелка вправо shutdown.exe /r /o

Мы добавили для команды shutdown.exe новый флаг, чтобы обеспечить согласованность и предсказуемость этого компонента Windows. Не все пользуются командой Shutdown.exe, однако тем, кто пользуется, необходима полная поддержка задач, связанных с завершением работы.

- Крис Кларк (Chris Clark)

Ваш браузер не поддерживает HTML5-видео.

Загрузите это видео, чтобы просмотреть его в выбранном проигрывателе:
MP4, высокое качество | MP4, низкое качество

Comments

  • Anonymous
    June 05, 2012
    Я уже читал про всё это(включая и решение) на другом сайте. Почему так медленно?

  • Anonymous
    June 07, 2012
    2Игорь: т.к. новость "горячая" - её вытащили из всей статьи на английском, приукрасили и подали в массы. Здесь - перевод всей статьи, который осуществляют не журналисты.А так по теме - всегда хотелось на стационарных ПК на материнской плате добавить джамперы входа в BIOS, сброса BIOS и прочих, с возможностью выноса на переднюю панель.

  • Anonymous
    March 15, 2015
    Ребята, это нереально. Зачем столько писанины? Зашел прочитать как перезагрузиться в безопасный режим - в итоге вместо пары строк нужного мне текста прочитал длиннющую статью абсолютно ненужной мне информации о том почему вы ребята сделали так и этак (я к стати считаю что сделали крайне неудобно!) да еще и непонятно зачем целенаправленно растянутую...

  • Anonymous
    August 12, 2015
    The comment has been removed