2019 - примечание в июне: Это было первоначально ответом на другой ответ, не надлежащим ответом на этот вопрос. Никакая идея, почему это было выбрано как правильный ответ. Но так как upvotes разросся, и это - безусловно ответ № 1 на этот вопрос, это будет суммировать решения как ответ Wiki.
Собственный компонент глубоко клонирование
Это называют "структурированным клонированием", работает экспериментально в Узле 11 и позже, и надо надеяться приземлится в браузерах. См. этот ответ для получения дополнительной информации.
Быстрое клонирование с потерей данных - JSON.parse/stringify
, Если Вы не используете
Date
с, функции,undefined
,Infinity
, RegExps, Карты, Наборы, Блобы, FileLists, ImageDatas, разреженные массивы, Типизированные массивы или другие составные типы в Вашем объекте, очень простой один лайнер для глубокого клонирования объекта:
JSON.parse(JSON.stringify(object))
const a = { string: 'string', number: 123, bool: false, nul: null, date: new Date(), // stringified undef: undefined, // lost inf: Infinity, // forced to 'null' re: /.*/, // lost } console.log(a); console.log(typeof a.date); // Date object const clone = JSON.parse(JSON.stringify(a)); console.log(clone); console.log(typeof clone.date); // result of .toISOString()
См. ответ Corban для сравнительных тестов.
Надежное клонирование, пользующееся библиотекой
Начиная с клонирования объектов, не тривиально (составные типы, циклические ссылки, функция и т.д.), большинство крупнейших библиотек обеспечивает функцию для клонирования объектов. не перестраивают колесо - если Вы уже пользуетесь библиотекой, проверьте, имеет ли оно функцию клонирования объекта. Например,
- lodash -
cloneDeep
; может быть импортирован отдельно через модуль lodash.clonedeep и, вероятно, Ваш лучший выбор, если Вы уже не пользуетесь библиотекой, которая обеспечивает глубокую функцию клонирования- AngularJS -
angular.copy
- jQuery -
jQuery.extend(true, { }, oldObject)
;.clone()
только клоны элементы DOMES6
Для полноты, обратите внимание, что ES6 предлагает два мелких механизма копии:
Object.assign()
и оператор .распространения
Я могу порекомендовать способ редактирования файла grub с помощью grubby .
Сначала вам нужно войти в систему как пользователь root, просто наберите:
sudo su
нажмите кнопку ENTER и введите свой root пароль.
После этого просто введите команду, как показано ниже:
grubby --update-kernel = ALL --args = "video = hyperv_fb: 1920X1080"
где 1920x1080 - ваше предпочтительное разрешение.
Затем просто перезагрузите виртуальную машину, и необходимо применить новое разрешение.
Я надеюсь, что это решение поможет вам. В случае вопросов, пожалуйста, свяжитесь со мной, и я постараюсь помочь.
С тех пор, как этот вопрос был задан (в 2013 году), дела с Hyper-V & amp; Ubuntu 18.04.1 в отношении «Расширенного режима сеанса».
В настоящее время существует два подхода:
A) Новая система
Оптимизированные изображения рабочего стола Ubuntu доступны в галерее Microsoft Hyper-V
] B) Существующая система
Вручную сконфигурируйте xRDP для поддержки « расширенного режима сеанса »
<час>Вот подробности:
Вот ссылки на источники, из которых я искал информация:
○ Оптимизированные образы Ubuntu Desktop доступны в галерее Microsoft Hyper-V
○ Запускать виртуальные машины Ubuntu стало еще проще благодаря Hyper-V Quick Create
Измените Ubuntu 18.04 для использования xrdp
1.1 Получите скрипты из GitHub
sudo apt-get update
sudo add-apt-repository ppa:git-core/ppa
sudo apt update; sudo apt install git
git clone https://github.com/jterry75/xrdp-init.git ~/xrdp-init
1.2. Сделать скрипты исполняемыми и запустить их ...
cd ~/xrdp-init/ubuntu/18.04/
sudo chmod +x install.sh
sudo ./install.sh
reboot
1.3 < После перезагрузки > Еще раз запустите скрипт, чтобы завершить настройку ВМ
cd ~/xrdp-init/ubuntu/18.04/
sudo ./install.sh
Завершение работы Ubuntu VM
Зарегистрируйте сеанс Ubuntu ~ запустите эту команду на хост-ПК, используя powershell с правами администратора:
Set-VM -VMName YourUbuntuVMNameHere -EnhancedSessionTransportType HvSocket
Перезапустите ВМ
Подключение / вход в XRDP из Hyper-V (примечание ~ введите имя пользователя - должно быть в нижнем регистре)
Примечание / Внимание ~ , если у вас возникли проблемы с использованием накопителей, то Вы можете отменить выбор [Принтеры]
Вот ссылка на источник информации:
Я сделал все это безуспешно, а затем попытался поиграться с настройками Hyper-V.
Я увеличил объем ОЗУ для видео до 512 КБ, а также удалил драйвер 3D.
Это сработало для меня.
У меня была та же проблема, и когда я искал помощи, я помню, как увидел ваш пост. Теперь, когда я, наконец, заставил его работать, я мог бы также описать это здесь:
Обновленный образ linux и заголовки sudo apt-get install linux-image-3.11.0-15-generic linux-headers-3.11.0-15-generic
(Возможно, виртуальный будет работать так же хорошо, как и общий. ):
Установленные дополнительные компоненты linux-image с дополнительными драйверами: sudo apt-get install linux-image-extra-virtual
Установить режим видео (Почти то, что вы уже сделали):
Установите GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=hyperv_fb:1680x1050"
в /etc/default/grub
.
sudo update-grub
Я думаю, что критической частью была установка обновленных гипервизоров с linux-image-extra-virtual. Также убедитесь, что они загружены .
Ответ Копата работал для меня, но только после того, как я изменил свое разрешение с 1920x1200 до 1920x1080 .
Глядя в исходный файл Linux hyperv_fb.c, есть комментарий: «Это драйвер для синтетического видео Hyper-V, которое поддерживает разрешение экрана до Full HD 1920x1080 с 32-битным цветом в Windows Server 2012 и 1600x1200 с 16-битным цветом в Windows Server 2008 R2 или более ранней версии. "