Внутренне Object.create
делает это:
Object.create = function (o) {
function F() {}
F.prototype = o;
return new F();
};
Синтаксис устраняет иллюзию того, что JavaScript использует классическое наследование.
Я использую его для тестирования нашего установщика , потому что важно проверить, будет ли приложение работать при чистой установке операционной системы.
Раньше я проводил эти тесты, сохраняя жесткий диск с новой установкой операционной системы и делая копию этого диска (почти) для каждого нового тестового прогона. Это заняло очень много времени, а решение виртуальной машины сэкономило мне много времени. Обратите внимание, что это даже позволяет выполнять удаленную отладку так же легко, как при использовании двух не виртуальных машин.
Примечание : Если вам интересно, я использую VirtualBox , который является очень хороший бесплатный инструмент виртуализации и .
Одним из основных преимуществ является наличие всей среды разработки в виде единого файла образа. У меня отлично настроенная версия Windows Server, Visual Studio, ReSharper и т. Д. Я могу легко попробовать новую версию чего-то на копии этой виртуальной машины, не беспокоясь о том, что это вызовет проблемы.
Я также могу создать резервную копию всей моей среды разработки, чтобы очень легко перенести ее на другую физическую машину. Я испытал 3 машины только в этом офисе, так что это само по себе было спасением.
Единственный реальный компромисс, который я вижу, - это производительность. Обычно вам нужно использовать меньше физических ядер ЦП, чем есть на самом деле, и меньше памяти. Однако с достаточно мощной машиной это не проблема.
Редактировать: Как сказал Надер, ввод / вывод, очевидно, важен и для большинства проектов. Хотя разработка на виртуальной машине действительно означает довольно большие затраты на ввод-вывод по сравнению с установкой собственной ОС, на практике я редко считаю это проблемой. Превосходные возможности произвольного доступа твердотельных накопителей также помогают устранить этот недостаток.
Если вы разрабатываете драйвер или что-то очень близкое к оборудованию, с высоким риском сбоя машины, вы будете рады работать на виртуальной машине.
Возврат к старой состояние проще, чем восстанавливать поврежденную ОС.
Возможность полного сброса состояния системы очень полезна для отладки приложений, которые изменяют свою среду - если действия повторяются после сброса, а они ограничены средой «песочницы» виртуальной машины, вы почти гарантированно получите тот же результат.
У нас есть большое количество различных версий / настроек нашего программного обеспечения, и невозможно, чтобы две установки нашего программного обеспечения сосуществовали на одном компьютере. Виртуализация позволяет нам заменить 50-60 физических машин, которые нам необходимо обслуживать для тестирования и воспроизведения проблем, на 2-3 виртуальных сервера - для создания копии имеющегося у нас шаблона VHD и создания новой виртуальной машины требуется около 10 минут. и пока вы выделяете 1-2 ГБ ОЗУ, производительность сравнима с производительностью (медленной) физической машины.
Виртуальные машины также отлично подходят для создания машин.
Лично я занимаюсь разработкой на своем рабочем столе. машина для лучшей производительности и удаленная отладка в виртуальных машинах. Я не запускаю виртуальные машины на своем рабочем столе, так как он использует слишком много оперативной памяти, для этого у нас есть выделенные виртуальные серверы.
Из приложения пользовательского пространства не должно быть разницы в разработке для виртуализированной ОС и обычной ОС. Могут возникнуть некоторые подводные камни, если ваш код делает явные предположения о размере памяти машины и количестве процессоров и верит в то, что вам сообщает гипервизор.
Good for developing, because you have same server configuration in virtual machine like on production server.
https://stackoverflow.com/questions/905926/developer-software-setup
Я удивлен, что никто не упомянул о простоте развертывания. Все, что вам нужно сделать, это выполнить сборку на виртуальной ОС, а затем вы можете скопировать образ на столько новых серверов (используя какое-то решение виртуализации [например, VMWare]), сколько захотите, легко масштабируя свое приложение.
Если вы разрабатываете в виртуальной среде, вам нужно будет убедиться, что вы знаете, какие спецификации использовались для создания среды. Если у вас есть, скажем, машина на 4 гигабайта и вы создаете виртуальную среду с 1 гигабайтом, вам нужно убедиться, что вещи в вашей разработке не разрастаются до такой степени, что это переполняет память. Это вызовет небольшие проблемы с производительностью. Я лично столкнулся с этим, и отследить это было довольно сложно. Сценарий заключался в том, что я исправлял ошибку и тестировал ее в виртуальной среде. Кстати, виртуальную среду я не настраивал ... Производительность приложения снизилась из-за происходящей подкачки памяти.
Очень хорошо использовать виртуальную среду, когда вы разрабатываете приложения, которые не работают с Windows Gina. Гораздо проще переустановить виртуальную среду, чем весь компьютер ... (здесь тоже это сделано).
Я занимаюсь всей своей разработкой на виртуальном экземпляре XP под VMWare Fusion, поэтому я могу использовать Mac для всего и при этом писать код .NET; -)
] Как сказал Кендалл, включение ключа на устройстве в основном требует взлома. Однако есть люди, у которых есть причины скрывать данные с помощью ключа на устройстве. Если вы полны решимости это сделать, вы можете рассмотреть возможность использования SQLCipher для своей реализации. Это сборка SQLite, которая обеспечивает прозрачное шифрование всей БД на уровне страниц. Там' sa Обучающее руководство по Mobile Orchard по использованию в приложениях для iPhone.
(Когда тестирование и таргетинг на несколько платформ удаляются) Оба являются серьезными причинами, чтобы быть знакомыми с «настольными» решениями виртуальных машин. Другие проделали отличную работу по перечислению редких исключений, таких как отладка кодов ядра.Есть некоторые причуды, о которых нужно знать при работе на виртуальной машине. Это вряд ли исчерпывающий список:
Потеря точности или даже реверсирование времени в таймерах с высоким разрешением из-за эмуляции аппаратных ресурсов (в некоторой степени зависит от платформы vm и операционной системы)
Виртуальные сетевые интерфейсы обычно соединяются мостом. Мы наблюдали крайне странное поведение хост-системы с приложением, которое устанавливает собственный мост между виртуальными интерфейсами - поведение, которое логически не должно влиять на хост в одном из ведущих решений для виртуальных машин.
Модели использования - Если ваш продукт имеет лицензионные коды Orwellian или записывает поведение, зависящее от состояния при взаимодействии с удаленными системами, вы должны учитывать, что произойдет, если система будет «приостановлена» и «перезапущена» или перезапущена из более раннего «состояния». Обычно такие вещи все равно учитываются в надежной реализации.
Иногда они необходимы, потому что платформа, которую вы программируете, не поддерживают стандарт Среда разработчиков. Один из таких примеров SharePoint. Начиная с SharePoint 2007, вам все еще нужна серверная ОС для установки SharePoint 2007, WSS и Visual Studio SharePoint Extensions (VSEWSS).
Таким образом, для SharePoint я должен использовать виртуальную машину Window Server для выполнения моей работы. Что касается SharePoint 2010, они поддерживают установки на Vista и 7 x64, но я все равно буду использовать VM, потому что я не хочу иметь SharePoint на моем главной машине, замедляя все вниз. Скорее, я хочу это в виртуальной машине, где службы включены при необходимости и выключены, когда я не буду вручную выключить / на каждой услуге. Это в дополнение к множеству больших ответов, опубликованных выше.