Масштабирование высокого dpi в eve online что это

Обновлено: 17.05.2024

Windows, начиная с Vista, предоставляет два механизма для адаптации приложений к мониторам с высокой плотностью пикселей (точек на дюйм, DPI): увеличенные системные шрифты и полномасштабное увеличение окон. К сожалению, попытка заставить некоторые ваши приложения работать в каком либо из режимов может оказаться безуспешной, благодаря сочетанию нерадивых разработчиков и плохих решений принятых Microsoft.

Установка EVE-NG

Подготовка хоста

В качестве хостовой я использую следующую систему: Intel Xeon X3240, 32Gb RAM под управлением Gentoo. Настройка KVM на Gentoo дело достаточно тривиальное и, по правде сказать, я не помню с какими подводными камнями мне пришлось столкнуться при её развертывании. Дело было давно.

Основное, что катастрофически сказывается на производительности лабораторного стенда типа EVE-NG, — это параметр ядра, который запускает возможность использования nested virtualization (вложенную виртуальзацию).

Подробнее можно прочесть по ссылке.

Подключение образов сетевых устройств

Проблема, с которой я столкнулся при добавлении образов — как называть директории, куда нужно складывать файлы hda.qcow2. Решение, как всегда, — реверс-инжиниринг. Список заголовков, обрабатываемых EVE-NG зашит в файле:

Приведу его здесь:

То есть, если нам необходимо добавить образ с любым Linux, как мы будем делать ниже, то достаточно создать директорию /opt/unetlab/addons/qemu/linux-что-то-там/ и положить в неё файл образа hda.qcow2.

Настройка окружения

Под окружением будем понимать всё, что делает нашу жизнь удобнее.

Доступ к консоли маршрутизаторов

Несмотря на то, что в EVE-NG разработчики внедрили возможность доступа к консолям сетевых устройств по web с использованием HTML5, доступ со сторонних клиентов удобнее и привычнее. Основное удобство, которое предоставляется putty в моём случае, — это возможность использования буфера обмена. Не работает copy/paste в web-консоли.

Итак, процесс выглядит следующим образом:

Установка putty на машине, откуда будет осуществляться доступ. Я работаю на ПК c ubuntu, поэтому:

Но этого мало, нужно еще рассказать браузеру, в моём случае это chrome, как реагировать на ссылки вида telnet://. Для этого необходимо создать файл

/.local/share/applications/telnet.desktop следующего содержания:

После этого консоли будут отлично открываться в putty. Задачу перехода на gnome-terminal с вкладками или его аналог оставлю на потом.

Запуск сниффера трафика

Wireshark — насущная необходимость при изучении сетевых технологий. Очень много написано про его использование. Не стану повторяться. Опишу процесс его настройки.

Установка на клиенте:

Объяснять ему это придется в три этапа:

Этап 1:
Как и в случае с консолями, файл

Этап 2:
Обработчик в виде скрипта на bash на клиентской машине в любой директории из списка PATH:

Этап 3:
Ключевой ssh-доступ между клиентской машиной и EVE-NG.

На клиентской машине (вместо ip_eve поставить адрес EVE-NG):

После этого будет работать захват трафика в wireshark на стороне клиента. Что нам и требовалось.

На этом непритязательный пользователь может остановиться, но нет предела совершенству и мы продолжаем.

Настройка инстанса сервера ansible

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

Итак, с чего начать? С ограничений ansible! Да, они действительно есть. Для меня, как достаточно далекого от программирования, слишком жестоким оказалось предложение на одном из форумов — дописать обработчик телнета самому. Телнет нужен был для решения в лоб — настроить ansible на виртуальной машине EVE-NG и телнетится на консольные порты виртуальных маршрутизаторов. Но не тут-то было — работает только ssh.

Настройка telnet-сервера

У меня не вышло заставить EVE-NG показать мне консоль сервера стандартным способом через клик по девайсу. Чтобы не закапываться глубоко, я пошел в обход — настроил telnet-сервер. SSH v2, конечно, тоже имеется и работает с CSR, но уж очень медленно для интерактивной работы, да и бесполезно — у нас лабораторный стенд, а не продакшн.

Потом необходимость в сервере отпала, но запись в шпаргалке осталась, поэтому приведу и её.

После автоматического запуска xinetd, конечно, ничего не произошло, как нам обещали в интернете.

Нужно добавить в /etc/xinetd.d файл telnet следующего содержания:

и перезапустить сервер xinetd:

Проверяем телнет локально:

Закачиваем полученный образ в виртуальную машину EVE-NG и пробуем собрать топологию.

Теперь мы можем, настроив на соседней цыске в топологии адрес из подсети сервера, до него достучаться по telnet. Всё работает быстро, не в пример SSH.

Сбор топологии

Здесь всё чрезвычайно просто. Моя топология выглядит следующим образом:

image

Развёртывание подсистемы аnsible

Настройка CSR для работы с ansible

Выделим на каждом маршрутизаторe отдельный порт для управления и подключим к общему хабу с сервером ansible портами Gi2. Выберем подсеть для управления, у меня это 192.168.0.0/24. И назначим IP-адреса на портах в соответствии с номером маршрутизатора.

Эту же информацию занесем в /etc/hosts сервера:

На каждом маршрутизаторе настроим SSH v2 согласно ссылки. Всё тривиально, скажу лишь то, что для запуска требумеого нам SSHv2 нужно генерировать ключ более 768 бит, я выбрал размер 2048.

Проверяем доступ с сервера до маршрутизаторов по SSH, заодно собирая в хранилище ключи.

Сохраняем конфигурацию на маршрутизаторе:

И экспортируем в EVE-NG конфигурацию для того, чтобы заново не настраивать при перезагрузках девайсы:

image

Эта фича в EVE-NG, как и Unetlab до неё, работает с переменным успехом. Но будем надеяться.

Создание первого воркбука

Как мы помним, структура ansible состоит из двух основных частей — описания девайсов (inventory), и воркбука, собственно с логикой работы системы.

В нашем случае inventory достаточно примитивен и файл его содержащий (/etc/ansible/hosts) принимает вид:

Что раскрывается списком хостнеймов от R1 до R10 (помним, что мы уже прописали /etc/hosts для разрешения имён).

А вот с ворбуком придется повозиться.

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

Для этого мы попытаемся использовать модуль ios_command.

Основой всей работы по смене конфигураций в устройствах IOS для нас будет служить функционал команды привилегированного режима маршрутизатора:

Нулевые конфигурации будем хранить на сервере в домашнем каталоге нового пользователя под именем router в директории /home/router/default_configs/. Забегая вперед, скажу, что файлы будут иметь имена такие же, как и в inventory, т.е. в нашем случае это R1, R2 и т.д.

Создадим в /opt/ansible файл rollback.yml вида:

Итак, по порядку:

Название используемого инвентори:

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

Как я понял, это говорит о соединении с локальным обработчиком заданий. Могу ошибаться.

Отключение сбора информации о хостах:

Имя пользователя для соединения с устройствами:

Передача команды в устройство из инвентори:

Время ожидания отклика в секундах:

Ничего особо сложного, как мы видим, но есть одно но!

Гугл нам об этом не особо много расскажет, поэтому вооружаемся смекалкой и пытаемся найти кто же нам это заявил. И находим файл самого используемого нами модуля: /usr/local/lib/python2.7/dist-packages/ansible-2.3.0-py2.7.egg/ansible/modules/network/ios/ios_command.py, содержащий вот такой код:

Явно, что разработчики немного перегнули палку, отнеся все параметры configure к конфигурационному режиму, поэтому дописываем в соответсвующую строку:

Создание второго воркбука

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

Файлы начальных конфигурации лежат в /opt/ansible/IOS-XE-initials/base.ipv4, соответственно. Основное отличие данного сценария — это использование функционала модуля ios_config и передача права ему интерпретировать те команды, которые необходимо выполнить на устройствах.

На этом всё, спасибо за внимание. Если статья достойна продолжения, то следующей темой станет настройка взаимодействия IOS XR и ansible.

Дальнейшее чтение

For more information about both scaling methods from a developer perspective, see the MSDN article Writing High-DPI Win32 Applications. This content has moved to Writing DPI-Aware Desktop and Win32 Applications. This lengthy article also contains a sample manifest to declare an application as DPI-aware, as well as sample screenshots for the various scaling methods and tips on display scaling in native code.

Unfortunately, the article currently only covers Windows XP through 7. See Writing DPI-Aware Desktop Applications in Windows 8.1 Preview (Word DOCX) and Chuck Walbourn’s Manifest Madness for additional information on Windows 8 and 8.1.

Outside of Microsoft, Gastón Hillar has published two articles targeting Windows 8.1 at Dr. Dobb’s. Part 1 covers basic concepts, and part 2 shows C/C++ sample code for the Win32 API.

От переводчика


В этой статье применяются следующие сокращения которые я счел переводить не целесообразно: Графический Интерфейс Пользователя (GUI), Точек На Дюйм (DPI), DPI-Aware приложения – приложения которые умеют при различных значениях DPI правильно, без искажений отображать свой GUI, Графический Интерфейс Устройства (GDI). Мои комментарии (выделены курсивом).

Размер имеет значение: возможность масштабирования пользовательского интерфейса игры


ISD Grossvogel

Clone Grade Zeta

Размер имеет значение: возможность масштабирования пользовательского интерфейса игры
(оригинал, перевод)

Не так давно мы опубликовали статью о новом шрифте для EVE Online и услышали от игроков много интересных замечаний, большая часть которых касалась его размера. При разработке пользовательского интерфейса EVE Online наши дизайнеры исходили из того, что размер шрифта фиксирован. Чтобы позволить пользователю изменять его размер по желанию (как это делается, например, на веб-страницах), необходимо пересмотреть всю концепцию интерфейса ― поэтому дать игрокам возможность произвольно выбирать размер шрифта в настоящий момент представляется не такой простой задачей. Тем не менее, мы задались целью найти изящное решение, которое позволяло бы комфортно играть как на больших плазменных панелях, так и на ноутбуках с маленьким разрешением экрана. Мы также получили множество ценных комментариев от людей в возрасте ― как игроков, так и наших коллег ― которым иногда бывает непросто разобрать текст на экране.

Все эти замечания (в совокупности с уже реализованными в игре технологическими наработками) легли в основу новой функции — функции масштабирования пользовательского интерфейса.

Как это работает

Первая часть статьи преимущественно посвящена технической стороне вопроса; если это вам не интересно, не волнуйтесь ― дальше пойдут иллюстрации.

Чтобы сохранить целостность пользовательского интерфейса при масштабировании, мы используем так называемые «логические пиксели». Логическое разрешение экрана игры изменяется в соответствии с коэффициентом масштабирования; при рендеринге логические пиксели преобразуются в физические. Различные элементы интерфейса масштабируются по-разному — например, обычные пиктограммы просто увеличиваются (или уменьшаются) в размере. Вопреки ожиданиям, при большом увеличении они не выглядят размытыми; размеры используемых нами пиктограмм достаточно велики, чтобы сохранить четкость изображений. При масштабировании текста мы изменяем кегль шрифта ― в результате текст всегда выглядит четко. Масштабирование окон не влияет на толщину линий — меняются лишь размеры панелей.

Как изменить масштаб интерфейса?

В раздел «Дисплей и графика» меню настроек был добавлен пункт «Масштаб интерфейса». Количество доступных в списке вариантов зависит от установленного вами разрешения игры (минимальное поддерживаемое разрешение в EVE Online ― 1024x768); чем выше эта величина, тем больше будет число доступных вам размеров интерфейса.

Изображение


Нажмите на изображение, чтобы увеличить его

И как все это выглядит на самом деле?

Вот как выглядит приборная панель моего корабля при различных вариантах масштабирования (установленное разрешение ― 1920х1200).

Изображение


Нажмите на изображение, чтобы увеличить его

Вид окна со списком имущества персонажа (при таком же разрешении).

Изображение


Нажмите на изображение, чтобы увеличить его

Эта функция уже доступна на тестовом сервере Singularity; будем рады услышать ваши комментарии.

Масштабирование высокого dpi в eve online что это

Добрый день, космонавты! Последние несколько месяцев мы активно работали над массивным улучшением камеры обзора в космосе. Сперва мы выпустили ее на нашем тест-сервере, Singularity, в ноябре прошлого года, а в минувшем декабре включили ее бета-версию в качестве выбираемой настройки на Tranquility, что позволило нам собрать множество отличных замечаний и комментариев. Мы получили много сведений, а также внесли значительное число изменений, исправлений и улучшений.

Настало время сделать очередной шаг: включить новую камеру на Tranquility по умолчанию. Поскольку изменения, затрагивающие ключевые элементы базовых систем игры, могут быть весьма чувствительными, мы решили оставить возможность вернуться к старой камере еще примерно на один месяц с сегодняшнего дня [Esc -> Общие параметры -> Экспериментальные функции -> Try the New Camera – перев.]. Если по какой-то причине у вас возникла необходимость отказаться от новой камеры, пожалуйста, сообщите нам на форуме, почему, дабы мы смогли устранить все оставшиеся проблемы до того, как мы раз и навсегда отключим старую камеру.

Изначальным стимулом для этой серьезной работы стало возникновение в ходе подготовки к введению цитаделей и других нововведений в грядущем обновлении «Цитадель» явной потребности в наличии тактической камеры, в которой не было бы обязательной и постоянной привязки к какому-либо объекту в космосе. Когда мы начали копаться в коде, мы вскоре поняли, что старая камера для этого не подойдет. Вот что еще мы обнаружили в ходе наших изысканий:

Хочу заострить ваше внимание на том, что характеристика «не подойдет», данная коду старой камеры с несвойственной мне осторожностью, НИ В КОЕЙ МЕРЕ не связана с тем фактом, что он был написан нашим славным, вселюбящим, всеведущим, дорогим генеральным директором (должно быть достаточно, чтобы меня не выгнали с работы).

Кроме шуток, предъявляемые требования и стандарты весьма серьезно изменились за последние 16 лет, и, несмотря на то, что старая камера исправно выполняла свою работу и также многие годы изменялась и улучшалась, ее давно уже было пора переписать. Теперь в нашем распоряжении есть система, в которой могут счастливо сосуществовать несколько камер - каждая со своими специальными функциями - чтобы дать вам наилучший возможный вид на Новый Эдем. Таким образом, теперь у нас есть три камеры для обзора в космосе вместо одной:

Описание видео содержит метки для перехода к различным частям и описаниям возможностей, изложенных ниже.

Камера на орбите

Камера на орбите (Orbit camera, Alt+2) активна по умолчанию, когда вы впервые заходите в игру, и держит орбиту вокруг одного из объектов в космосе. Вы можете переключиться на другой объект командой «Приблизить камеру» («Look At»). Эта камера предназначена для того, чтобы дать игроку чувство некоторой кинематографичности и попробовать подчеркнуть такие вещи, как масштаб и скорость, в остальном ведя себя практически так же, как и старая камера.

Особенности:

  • Динамическое поле обзора (Dynamic Field of View), сокращающееся по мере того, как вы приближаете камеру, дает игроку более эпичное чувство масштаба и более широкий угол при отдалении для лучшего обзора поля боя.
  • Положение корабля на экране смещается в зависимости от вектора скорости вашего корабля, что позволит вам лучше чувствовать скорость и траекторию полета [Морская болезнь замучила? Отключите опцию в Esc -> Дисплей и графика -> Настройки камеры -> Смещение по скорости корабля — перев].
  • Более мягкий, но быстрый зум и поворот экрана, а также новый регулятор скорости камеры в системном меню [Esc -> Дисплей и графика -> Настройки камеры -> Скорость камеры — перев.] (настройка применяется ко всем режимам камеры). Масштабирование теперь следует экспоненциальной кривой, что позволяет вам очень быстро отдалить камеру, но сохранять хорошую детализацию при сближении с кораблем.
  • При приближении камеры к чужому кораблю камере позволено медленно смещаться, благодаря чему вы можете легко снимать обалденные кадры с пролетом корабля мимо камеры. Смещение можно временно остановить, удерживая левую кнопку мыши, если вам нужно присмотреться к кораблю поближе. Мы также оставили совсем небольшой эффект смещения камеры, когда вы смотрите на собственный корабль чтобы достичь легкого параллакса: движения туманности на вашем фоне.
  • Масштабируйте угол обзора вручную, удерживая Alt во время зума. Используйте «хичоковский зум», удерживая Ctrl.
  • Отслеживание (Tracking) теперь работает так же, как и другие команды в космосе. Вместо того, чтобы включать/выключать специальный режим отслеживания, теперь вы можете использовать команду с помощью кнопки «Отслеживать» (Track) в окне «Выбранный объект» (Selected item), в радиальном меню или по правому клику. Клавиша по умолчанию для отслеживания, как и прежде; C. Немного изменилась и сама работа отслеживающей камеры: теперь отслеживаемый объект всегда находится в центре экрана, в то время как объект на переднем плане уходит в сторону.
  • Новый режим преследования (chase mode) активируется, когда вы отслеживаете корабль, на который наведена ваша камера, и помещает камеру позади него. Этот режим замечательно работает при ручном пилотировании! Если камера уже наведена на ваш корабль, вы также можете включить этот режим повторным нажатием кнопки «Камера на орбите» или соответствующей «горячей клавиши».
  • Команду «Приблизить камеру» (Look at) теперь можно использовать и на удаленные объекты, но камера не будет улетать вдаль на световые годы, а просто повернется к выбранному объекту и разместит его по центру экрана, что очень удобно, скажем, для подскана.

Тактическая камера

Тактическая камера (Tactical camera, Alt+1) служит чисто практической цели и работает так же, как камера в стратегиях, имея возможность перемещаться по игровому полю. В этом режиме можно привязать камеру к объекту командой «Приблизить камеру» или отвязать ее, перетягивая панораму правой кнопкой мыши. Здесь нет никаких кинематографических эффектов, имеющихся у камеры на орбите.

Особенности:

  • Поле обзора фиксировано с широким углом без всяких свистелок и гуделок орбитящей камеры.
  • Перемещение камеры осуществляется путем перетягивания панорамы правой кнопкой мыши.
  • Камера привязывается к объекту командой «Приблизить камеру» и отвязывается перетягиванием панорамы.
  • Команда «Приблизить камеру» сохраняет дальность зума, так что мы, можно сказать, просто перемещаем камеру в пространстве. Таким образом, мы сохраняем обзор поля боя и ориентацию в пространстве.
  • Режим отображения тактической обстановки (Tactical overlay) включается по умолчанию, но его все еще можно переключать по желанию.
  • Если камера отвязана от объектов, масштабирование двигает камеру в направлении курсора, а не центра экрана, что позволяет перемещать камеру по полю боя, используя только зум. В случае привязки к объекту, зум работает так же, как и в орбитящей камере.

Камера от первого лица

Камера от первого лица (First person camera, Alt+3) — это, возможно, наименее практичная (по крайней мере, сейчас), но самая зрелищная камера из всех трех. Рекомендуем вам опробовать ее в комбинации с недавно введенным ручным управлением, которое по умолчанию настроено на клавиши-стрелки.

Особенности:

  • Фиксированный вид от первого лица с широким полем обора
  • Индикаторы крена и тангажа как у реактивных истребителей для ориентирования
  • Трехуровневый ступенчатый зум

Выбор маркером

Выбор маркером (Marquee select) — это рисование рамки курсором на экране для выбора одного или нескольких объектов. Его можно осуществить, удерживая горячую клавишу любой боевой команды (Alt для «Приблизить камеру», C для «Отслеживать» и т.д.) и растягивая рамку левой кнопкой мыши над трехмерной панорамой. Когда вы отпускаете кнопку мыши, выбранная команда применяется к выделенному объекту или объектам. Хотя данная опция и не имеет жесткой привязки к новым режимам камеры, она оказалась в этом наборе, потому что она позволяет вам применять команды типа «Приблизить камеру» и «Отслеживать» на трехмерной панораме без лишних телодвижений, в отличие от подачи команд через правый клик или обзорную панель. Команда «Приблизить камеру» настроена так, чтобы она хорошо работала, даже если вы выбираете несколько объектов одновременно, что позволяет вам шаг за шагом продвигаться сквозь большие скопления кораблей.

У выбора маркером есть приятный побочный эффект: он хорошо работает и с другими командами, такими как «Удерживать заданную орбиту» («Orbit»), «Сближение с целью» («Approach») или «Перейти в варп-режим» («Warp»). Одной из важных причин непрактичности игры с опорой на выбор объектов преимущественно на трехмерной панораме являлось то, что поймать курсором маленькие иконки, летающие с молниеносной скоростью, было практически невозможно. Выбор маркером весьма элегантно решает эту проблему, ведь игроку намного проще растянуть рамку над группой движущихся объектов, чем щелкать по ним. Кстати, я не упоминал о том, что теперь вы можете использовать рамку вместе с Ctrl, чтобы лочить несколько объектов сразу? Неплохо, да? Мы также добавили новую команду «Выбрать» («Select») специально для использования с маркером. Ее вызывает клавиша SHIFT.

Настройки

Одновременно с вводом новых режимов камеры мы подчистили секцию с настройками камеры в системном меню (ESC). Мы объединили все связанные с камерой опции в единую секцию «Дисплей и графика» /«Настройки камеры» («Display & Graphics / Camera Settings») и добавили настройки «Скорость камеры» («Camera speed») и «Инверсия по оси Y» («Invert Y-axis»). Мы понимаем, что более динамичное поведение камеры подходит не для всех.


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

Что дальше?

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

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

Перевод (с) Salah ad-Din

Как изменить установки DPI

В Windows 7/8, откройте «Панель управления», a затем выберите «Оформление и персонализация», затем «Экран», и, наконец, выберите «Установить размер шрифта (DPI)» (Windows 7) или «Пользовательские параметры размера» (Windows 8). Вы увидите следующее диалоговое окно (Windows 7, в Windows 8 почти идентично):


В раскрывающимся списке можно выбрать нужную настройку DPI в процентном соотношении, где 100% соответствует 96 DPI, 125% — как на скриншоте, соответствует 120 точкам на дюйм (можно более точно записать значение вручную). До Windows 8 фактическое значение DPI («пикселей на дюйм») отображалось рядом с размером системного шрифта. Windows 8, по непонятным причинам, не показывает значение DPI, так что вы должны рассчитать его самостоятельно.

Также вы можете приложить линейку (у которой есть шкала в дюймах) к экрану, и пытаться совместить маркировку на ней с маркировкой на экране, изменяя значение в раскрывающимся списке. Флажок, обведенный красным внизу, определяет, следует ли использовать только масштабирование в стиле Windows XP, или также новый способ DPI виртуализации. Если флажок не отмечен, как на скриншоте, то DPI виртуализация включена.

Декламация. Это диалоговое окно пример интерфейса не дружественного к пользователю. На первый взгляд кажется, что это флажок для отключения масштабирования в стиле Windows XP. Но этот метод масштабирования (который только увеличивает системные шрифты и другие элементы пользовательского интерфейса системы — масштабирование Windows XP) всегда включается при выборе высокого значения DPI. На самом деле этот флажок управляет, будет ли этот метод единственным (Использовать только масштабы в стиле Windows XP), или также будет применен метод «DPI виртуализации» для приложений, которые не имеют DPI-Aware флага. Так что этот флажок не контролирует метод масштабирования указанный в его название, а контролирует другой метод масштабирования, нигде не упомянутый — и позволяет использовать новый метод, когда флажок снят!

Ошибка в Windows 8. В дополнение к этому, в Windows 8 это диалоговое окно с ошибкой. Как правило, все работает как и в Windows 7, но состояние флажка не сохраняется на значениях DPI 150% и выше. Когда вы устанавливаете этот флажок, «DPI виртуализация» правильно отключается. Тем не менее, сам флажок остается не отмеченным, когда вы в следующий раз открываете этот диалог.

Изменения в Windows 8.1, или почему все размыто?

В Windows 8.1 флажок для масштабирования в стиле Windows XP исчез, и теперь «DPI виртуализация» никогда, не используется при значениях DPI до 120 включительно, но всегда используется при более высоких значениях для тех программ, у которых отсутствует DPI-Aware флаг. Если некоторые приложения кажутся вам нечеткими, необходимо вручную отключить для них DPI виртуализацию.

Windows 8.1 позволяет использовать несколько мониторов с разным значением DPI. Однако эта функция, также заставляет использовать «DPI виртуализацию» для традиционных приложений, которые перемещаются между мониторами с разными значениями DPI. Чтобы этого избежать, можно отключить в настройках «DPI масштабирование», используя новую опцию «Я хочу выбрать один масштаб для всех дисплеев».

Также Windows 8.1 добавляет специальный переключатель для настройки 200% и новый API, чтобы разработчики могли выборочно отключать «DPI виртуализацию».

Помогите, мои системные шрифты не правильного размера!

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

Если вы на самом деле создали пользовательскую тему рабочего стола и хотите сохранить её, вам придется самостоятельно адаптировать шрифты к новым настройкам DPI. Однако, Windows имеет раздражающую привычку «услужливо» создавать пользовательские темы без вашего ведома, по какой-либо причине. Так что, если вы никогда не создавали пользовательскую тему рабочего стола просто удалите её и вернитесь к стандартной теме.

В Windows 7/8, откройте Панель управления, выберите «Оформление и персонализация», а затем «Персонализация». Если вы видите выбранную запись в строке «Мои темы», это означает, что ОС Windows использует тему пользователя, системные шрифты которой Windows не будет масштабировать. Выберите стандартную тему, например, первую запись в разделе «Темы Aero» (Windows 7) или «Windows» «Темы по умолчанию» (Windows 8) и удалите нежелательные записи в разделе «Мои темы». Теперь, все системные шрифты должны отображаться правильно.

Установка и использование виртуальной сетевой лаборатории EVE-NG совместно с Ansible. Первый опыт

image

В данной статье приведен опыт инженера-сетевика по развертыванию виртуальной лаборатории EVE-NG в домашних условиях, для целей подготовки к экспертным экзаменам Cisco.

Я постарался собрать все основные вехи настройки, разбросанные по статьям в интернете и попытался добавить в топологию, попутно изучая, ansible — систему управления конфигурациями. Черновик статьи появился случайно, поскольку мне стало жаль терять накопленный опыт и решил сохранять его в отдельный файл. Вот его я и представляю на ваш суд.

Все решения, приведенные в статье, не претендуют на оптимальность, но абсолютно точно работают.

Типы приложений, как они масштабируются (или не масштабируются)

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

DPI-Aware флаг не установлен DPI-Aware флаг установлен
Не DPI-Aware Нужно использовать DPI виртуализацию Нужны исправления от разработчиков
DPI-Aware Нужно использовать масштабирование в стиле Windows XP Всегда масштабируется правильно

Приложения вообще не заботящиеся о DPI — это либо очень старые или плохо написанные, но, тем не менее, по-прежнему используемые. Одним известным примером является ITunes от Apple для Windows. Здесь разработчики используют системные шрифты для GUI и, не заботясь о фактических размерах шрифта, они жестко привязывают размеры окон к разрешению 96 DPI, естественно искажая GUI, когда при более высоких значениях DPI увеличиваются размеры шрифтов.

Такие приложения требуют нового метод масштабирования «виртуализации DPI», к сожалению, это часто делает интерфейс размытым. В противном случае вы столкнетесь с проблемами начиная, от обрезания текста до перекрытия элементов контроля, иногда, делая GUI полностью непригодным (к счастью, это, случается редко). За эти годы я собрал несколько образцов скриншотов не корректных приложений.

Пример приложения, работает только при DPI равном 96


разрешение 150% (144 DPI)






Приложения умеющие подстраивать свой GUI под различные значения DPI, но не имеющие DPI-Aware флага — Это типичные приложения эпохи Windows XP. Здесь разработчики позаботились, чтобы получить фактические размеры шрифтов системы перед созданием GUI. Такие приложения отображаются корректно при использование масштабирования в стиле Windows XP. К сожалению, так как они не устанaвливают DPI-Aware флаг, чтобы сообщить Windows этот факт, для них, по умолчанию, будет использована «DPI виртуализация», делая их GUI нечетким. Это может вам не понравиться, так что, вы, возможно, захотите принудительно использовать стиль масштабирования Windows XP для таких приложений.
Пример такого приложения и разрешение 150% (144 DPI)





Приложения умеющие подстраивать свой GUI под различные значения DPI, имеющие DPI-Aware флаг — Это новейший тип приложений которые полностью беспроблемны, независимо от настроек DPI. DPI-Aware флаг установлен автоматически для Windows Presentation Foundation (WPF) и GDI+ приложений, так как эти APIs предоставляют встроенные средства масштабирования. Разработчикам использующим старый GDI API и (удивительно) Windows Forms, нужно вручную помечать свои DPI-Aware приложения.

Выбор метода масштабирования для ваших приложений

После того как вы решили что вы хотите использовать высокое значение DPI, ваш выбор метода масштабирования зависит от приложений в которых вы работаете. Имейте в виду, что, отключить «DPI виртуализацию» означает, установить флажок (check box) с некорректным названием «Использовать масштабы в стиле Windows XP» и наоборот.

  • Если вам так невероятно повезло использовать только те приложения, которые являются одновременно DPI-Aware и устанавливают нужный флаг, тогда не имеет значения какой метод масштабирования вы выберете. Все приложения будут использовать масштабирование в стиле Windows XP, а DPI виртуализация никогда не будет использоваться.
  • Если вы используете только хорошо написанные DPI-Aware приложения, но некоторые из них не устанавливают необходимый флаг, вы можете отключить «DPI виртуализацию». Таким образом, все приложения будут отображаться правильно без какого-либо замыливания вследствие масштабирования. Если ваш монитор имеет очень высокую плотность пикселей, такую, что масштабированные растровые изображения больше не выглядят размытыми, вы, возможно, захотите включить DPI виртуализацию в любом случае.
  • Если у вас есть одно или несколько приложений не приспособленных к изменению DPI и не имеющие DPI-Aware флага, необходимо включить DPI виртуализацию, если вы не готовы мириться с перекошенным GUI приложений. К сожалению, тут возникает еще одна проблема, потому что, Microsoft реализовала эту опцию неудобно. Вы можете включить DPI виртуализацию только для всей системы, а не для отдельного приложения, а затем выборочно отключать для отдельных приложений.

Напоминаем, что в Windows 8.1 уже нет возможности выбора в этом вопросе. Если вы работаете при разрешении в 120 точек на дюйм (125%), каждая программа будет вынуждена использовать масштабирование в стиле Windows XP, a если вы работаете с более высоким разрешением, каждая программа, которая не является DPI-Aware, будет использовать по умолчанию «DPI виртуализацию».

Отказ от DPI виртуализации для отдельных приложений

После того как вы решили включить DPI виртуализацию или вы работаете в Windows 8.1, с разрешением более чем 120 точек на дюйм, вы можете проверить систему на предмет наличия DPI-Aware приложений, которые не имеют соответствующий флаг. И вернуть им возможность использовать масштабирование в стиле Windows XP, для которого они предназначены. Есть два способа сделать это, первый работает только для 32-разрядных приложений, второй универсален и подходит также для 64-битных приложений.

32-разрядные приложения — Это просто: щелкните правой кнопкой мыши на исполняемом файле в Проводнике Windows, выберите диалоговое окно «Свойства», перейдите на вкладку «Совместимость» и установите флажок «Отключить масштабирование изображения при высоком разрешении экрана». Вот и все, в Windows 8.1 это также работает для 64-битных приложений.

64-разрядные приложения — Без всякой видимой причины, возможно чтобы позлить пользователей 64-битных приложений, в Windows 8 и более ранних, упомянутый выше флажок, для 64-разрядных приложений отключен, хотя сам вариант вполне функционален, если внести изменения непосредственно реестр! Так что, запустите редактор реестра и перейдите к этому ключу:

Теперь добавьте строковое значение (REG_SZ), чье имя является полным путем к исполняемому файлу приложения и значением которого является HIGHDPIAWARE. Я рекомендую, чтобы вы сначала изменили несколько 32-битных приложений, как описано выше, чтобы вы могли увидеть некоторые примеры значений в этом ключе реестра.

Мы рассмотрели, как можно использовать настройки DPI на Windows Vista и более поздних версиях. И если вы когда-нибудь задумывались, для чего предназначена опция совместимости — «Отключить масштабирование изображения при высоком разрешении экрана». И почему она ничего не делает на вашей системе, теперь вы знаете: она эффективна, только если у вас включена общесистемная опция «DPI виртуализации» и только для приложений, которые не устанавливают DPI-Aware флаг должным образом, но при этом корректно используют масштабирование в стиле Windows XP.

Методы масштабирования

  • Функции Графического Интерфейса Устройства (GDI) для доступа к дисплею. Как правило, GDI координаты измеряются непосредственно в пикселях экрана независимо от размера монитора и плотности пикселей.
  • И вывод текста используя системные шрифты Windows. Это не является обязательным, но большинство приложений использует системные шрифты для большей части их графического интерфейса пользователя (GUI).
Масштабирование в стиле Windows XP

Первый из этих методов, как можно догадаться, появился в Windows XP. Этот метод, на самом деле, не является методом масштабирования приложений с графическим интерфейсом как таковой. Масштабируются, при более высоких настройках DPI, только системные шрифты и некоторые элементы пользовательского интерфейса системы (я бы назвал его «метод НЕ масштабирования» в стиле Windows XP).

Все остальные элементы приложений по-прежнему отображаются в масштабе 1:1. Единственной разницей в их внешнем виде является то, что любой текст и некоторые элементы GUI, выводимые с помощью системных функций, вдруг становиться больше. Например, текст на кнопках. Это вызывает очевидные проблемы которые мы обсудим чуть позже.

Масштабирование в стиле Windows Vista или DPI виртуализация

Windows Vista представила второй вариант со странным названием, «масштабирование дисплея», без каких-либо уточнений, видимо, чтобы окончательно запутать пользователей. Мы будем использовать более описательное имя – метод DPI виртуализации. Когда этот метод включен, Windows по-прежнему выполняет масштабирование в стиле Windows XP. Также как и прежде размеры всех системных шрифтов и некоторых элементов интерфейса системы увеличиваются.

Разница в том, что приложения, которые могут правильно использовать высокие значения DPI, должны сообщить об этом Windows. Такие приложения должны установить новый DPI-Aware флаг, либо путем вызова функции Win32 API «SetProcessDPIAware», или, предпочтительно, путем встраивания манифеста с флагом dpiAware. А вот если у приложения отсутствует DPI-Aware флаг, Windows ведет себя по другому, сначала она формирует внутреннее отображение в масштабе 96 точек на дюйм (эмулируя для приложения DPI равный 96), а затем, масштабирует полученное изображение в соответствие с текущими настройками DPI перед выводом на экран.

Это было бы фантастическим метод масштабирования если бы все наши мониторы имели плотность пикселей последних аппаратов iPhones (326 точек на дюйм). К сожалению это не так. Окна приложений масштабированные таким образом выглядят чересчур размыто, при популярном разрешении 120 точек на дюйм (@homm это не разрешение, кстати). Поэтому, Microsoft по умолчанию отключает DPI виртуализацию, если вы выберете плотность пикселей меньше или равную 120 DPI.

Читайте также: