Виртуализация и почему это хорошо для программистов

Внутренне Object.create делает это:

Object.create = function (o) {
    function F() {}
    F.prototype = o;
    return new F();
};

Синтаксис устраняет иллюзию того, что JavaScript использует классическое наследование.

6
задан Lars Fastrup 29 June 2009 в 14:22
поделиться

13 ответов

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

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

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

13
ответ дан 8 December 2019 в 02:18
поделиться

Одним из основных преимуществ является наличие всей среды разработки в виде единого файла образа. У меня отлично настроенная версия Windows Server, Visual Studio, ReSharper и т. Д. Я могу легко попробовать новую версию чего-то на копии этой виртуальной машины, не беспокоясь о том, что это вызовет проблемы.

Я также могу создать резервную копию всей моей среды разработки, чтобы очень легко перенести ее на другую физическую машину. Я испытал 3 машины только в этом офисе, так что это само по себе было спасением.

Единственный реальный компромисс, который я вижу, - это производительность. Обычно вам нужно использовать меньше физических ядер ЦП, чем есть на самом деле, и меньше памяти. Однако с достаточно мощной машиной это не проблема.

Редактировать: Как сказал Надер, ввод / вывод, очевидно, важен и для большинства проектов. Хотя разработка на виртуальной машине действительно означает довольно большие затраты на ввод-вывод по сравнению с установкой собственной ОС, на практике я редко считаю это проблемой. Превосходные возможности произвольного доступа твердотельных накопителей также помогают устранить этот недостаток.

6
ответ дан 8 December 2019 в 02:18
поделиться

Если вы разрабатываете драйвер или что-то очень близкое к оборудованию, с высоким риском сбоя машины, вы будете рады работать на виртуальной машине.

Возврат к старой состояние проще, чем восстанавливать поврежденную ОС.

11
ответ дан 8 December 2019 в 02:18
поделиться

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

4
ответ дан 8 December 2019 в 02:18
поделиться

У нас есть большое количество различных версий / настроек нашего программного обеспечения, и невозможно, чтобы две установки нашего программного обеспечения сосуществовали на одном компьютере. Виртуализация позволяет нам заменить 50-60 физических машин, которые нам необходимо обслуживать для тестирования и воспроизведения проблем, на 2-3 виртуальных сервера - для создания копии имеющегося у нас шаблона VHD и создания новой виртуальной машины требуется около 10 минут. и пока вы выделяете 1-2 ГБ ОЗУ, производительность сравнима с производительностью (медленной) физической машины.

Виртуальные машины также отлично подходят для создания машин.

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

2
ответ дан 8 December 2019 в 02:18
поделиться

Из приложения пользовательского пространства не должно быть разницы в разработке для виртуализированной ОС и обычной ОС. Могут возникнуть некоторые подводные камни, если ваш код делает явные предположения о размере памяти машины и количестве процессоров и верит в то, что вам сообщает гипервизор.

1
ответ дан 8 December 2019 в 02:18
поделиться

Good for developing, because you have same server configuration in virtual machine like on production server.

https://stackoverflow.com/questions/905926/developer-software-setup

1
ответ дан 8 December 2019 в 02:18
поделиться

Я удивлен, что никто не упомянул о простоте развертывания. Все, что вам нужно сделать, это выполнить сборку на виртуальной ОС, а затем вы можете скопировать образ на столько новых серверов (используя какое-то решение виртуализации [например, VMWare]), сколько захотите, легко масштабируя свое приложение.

1
ответ дан 8 December 2019 в 02:18
поделиться
  • Запишите состояние ошибки в программе и отправьте его разработчику (вместе со всей «машиной»).
  • Тестирование вашего кода в различных ОС, некоторые из которых у вас нет.
  • Работа в более защищенной среде, проверка того, что код не наносит вреда вашей системе - полезно для понимания опасных программ, таких как вирусы и разработка средств защиты от него для написания потенциально неправильных программ для жесткого диска и всего, что может иметь катастрофические последствия для вашей системы.
  • Легко напишите свою собственную ОС без необходимости записи в «настоящие» загрузочные секторы,потенциально опасное действие (Надеюсь, это не новость ...).
  • Быстро используйте инструменты и программы, которых нет в вашей собственной ОС
  • Демонстрируйте программу в разное время, восстанавливая виртуальную машину, quicker and less prone to failure, than trying to recreate the state at the minutes before the demo.
  • Less directly connected to programing, but surfing vie a virtual machine (for example to see documentation) has the added value that your own important system (and code) is less likely to be harmed by malicious programs.
1
ответ дан 8 December 2019 в 02:18
поделиться

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

Очень хорошо использовать виртуальную среду, когда вы разрабатываете приложения, которые не работают с Windows Gina. Гораздо проще переустановить виртуальную среду, чем весь компьютер ... (здесь тоже это сделано).

0
ответ дан 8 December 2019 в 02:18
поделиться

Я занимаюсь всей своей разработкой на виртуальном экземпляре XP под VMWare Fusion, поэтому я могу использовать Mac для всего и при этом писать код .NET; -)

0
ответ дан 8 December 2019 в 02:18
поделиться

] Как сказал Кендалл, включение ключа на устройстве в основном требует взлома. Однако есть люди, у которых есть причины скрывать данные с помощью ключа на устройстве. Если вы полны решимости это сделать, вы можете рассмотреть возможность использования SQLCipher для своей реализации. Это сборка SQLite, которая обеспечивает прозрачное шифрование всей БД на уровне страниц. Там' sa Обучающее руководство по Mobile Orchard по использованию в приложениях для iPhone.

(Когда тестирование и таргетинг на несколько платформ удаляются) Оба являются серьезными причинами, чтобы быть знакомыми с «настольными» решениями виртуальных машин. Другие проделали отличную работу по перечислению редких исключений, таких как отладка кодов ядра.

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

  1. Потеря точности или даже реверсирование времени в таймерах с высоким разрешением из-за эмуляции аппаратных ресурсов (в некоторой степени зависит от платформы vm и операционной системы)

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

  3. Модели использования - Если ваш продукт имеет лицензионные коды Orwellian или записывает поведение, зависящее от состояния при взаимодействии с удаленными системами, вы должны учитывать, что произойдет, если система будет «приостановлена» и «перезапущена» или перезапущена из более раннего «состояния». Обычно такие вещи все равно учитываются в надежной реализации.

1
ответ дан 8 December 2019 в 02:18
поделиться

Иногда они необходимы, потому что платформа, которую вы программируете, не поддерживают стандарт Среда разработчиков. Один из таких примеров SharePoint. Начиная с SharePoint 2007, вам все еще нужна серверная ОС для установки SharePoint 2007, WSS и Visual Studio SharePoint Extensions (VSEWSS).

Таким образом, для SharePoint я должен использовать виртуальную машину Window Server для выполнения моей работы. Что касается SharePoint 2010, они поддерживают установки на Vista и 7 x64, но я все равно буду использовать VM, потому что я не хочу иметь SharePoint на моем главной машине, замедляя все вниз. Скорее, я хочу это в виртуальной машине, где службы включены при необходимости и выключены, когда я не буду вручную выключить / на каждой услуге. Это в дополнение к множеству больших ответов, опубликованных выше.

0
ответ дан 8 December 2019 в 02:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: