05.10.09

[Ubuntu] 9.10 Technical Overview по русски

Введение

Разработчики Ubuntu стараются как можно быстрее представить вам самое последнее и лучшее программное обеспечение, которое предлагает нам сообщество Open Source. Перед вам бета версия Ubuntu 9.10, которая несет с собой множество потрясающих возможностей.
Примечание: это бета версия. Не устанавливайте ее на рабочие станции. Финальная стабильная версия будет выпущена 29 октября 2009 года.

Обновление с Ubuntu 9.04

Для обновления с Ubuntu 9.04 на настольных система нажмите Alt+F2 и введите "update-manager -d" (без кавычек) в появившееся окно ввода. Должна запустится утилита обновления системы и сообщить вам: Доступен новый релиз дистрибутива '9.10' (New distribution release '9.10' is available). Нажмите "Обновить" (Upgrade) и следуйте инструкциям на экране.
Для обновление с Ubuntu 9.04 на серверных системах: установите пакет update-manager-core, если он еще не установлен; отредактируйте /etc/update-manager/release-upgrades и установите флаг "Prompt=normal"; запустите утилиту апгрейда выполнив команду "sudo do-release-upgrade -d" (без кавычек); и следуйте инструкциям на экране.

Загрузка

Забирайте горяченьким. Доступны ISO образы и загрузка через торренты:
http://releases.ubuntu.com/releases/9.10/ (Ubuntu Desktop, Server, and Netbook Remix)
http://uec-images.ubuntu.com/releases/9.10/ (Ubuntu Server for UEC and EC2)
http://releases.ubuntu.com/kubuntu/9.10/ (Kubuntu Desktop and Netbook)
http://cdimage.ubuntu.com/xubuntu/releases/9.10/beta/ (Xubuntu)
http://cdimage.ubuntu.com/ubuntustudio/releases/9.10/beta/ (UbuntuStudio)
http://cdimage.ubuntu.com/mythbuntu/releases/9.10/beta/ (Mythbuntu)
http://cdimage.ubuntu.com/edubuntu/releases/9.10/beta/ (Edubuntu)

Локальные зеркала также доступны:
http://mirror.yandex.ru/ubuntu-releases/9.10/

Новые возможности по сравнению с Ubuntu 9.04

Данные возможности продемонстрированы вам, чтобы привлечь ваше внимание. Пожалуйста, протестируйте их и сообщите о любых найденных ошибках, которые вы найдете:
http://help.ubuntu.com/community/ReportingBugs

Upstart

В рамках нашей работы по оптимизации процесса загрузки, мы перешли к использованию Upstart. Если вы тестируете новый дистрибутив на своей основной рабочей машине, мы настоятельно рекомендуем вам иметь под рукой LiveCD Ubuntu 9.10 или создать загрузочный USB диск до того, как вы будете делать апгрейд. Это позволит помочь вам восстановить работоспособность системы в том случае, если что то пойдет не так во время загрузки вашей системы после апгрейда до бета версии Ubuntu 9.10. Мы просим, чтобы все баги связанные со скоростью или функциональностью загрузки были отмечены тегом ubuntu-boot на Launchpad'е.

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

Мы провели значительную работу по улучшению общего внешнего вида экрана загрузки системы. Пожалуйста, сообщите нам о багах (обязательно с тегом "ubuntu-boot-experience" ), если вы увидите какое-либо сообщение на этапе между загрузкой grub и появление нового сплеш-скрина Ubuntu (xsplash). Если у вас возникли проблемы с прочтением этих сообщений, т.к. экран со сплеш-скрином быстро появился, вы можете увидеть эти сообщения переключившись в vt1 или же в выводе команды dmesg и уже оттуда скопировать сообщения, чтобы вставить их в баг-репорт. Мы также принимает фотографии и видео с сообщениями, если так для вас проще, как бы то ни было, пожалуйста, убедитесь, что текст хороши читаем и мы сможем его разобрать.

Центр программного обеспечения (Software Center)

Ubuntu 9.10 Beta включает в себя Центр программного обеспечения (Software Center), который заменяет собой "Установку и удаление программ" (Add/Remove) в меню "Программы". Мы просим пользователей попробовать его и сообщить о любых ошибках, которые они обнаружат.

GNOME

Ubuntu 9.10 Beta поставляется с последний версией рабочего окружения пользователя GNOME 2.28 с большим числом новых возможностей:
- Empathy заменил собой Pidgin в роле клиента обмена мгновенными сообщениями, в рамках фреймворка Telepathy;
- полностью переписан менеджер входа в систему gdm 2.28, с учетом имеющегося опыта по работе с экраном входа в систему.

Разработка приложений с использованием Quickly

Quickly делает разработку новых приложений для Ubuntu гораздо проще, а также позволяет распространять написанные приложения среди других пользователей Ubuntu черехз пакеты .deb или персональные пакеты.

Kubuntu

Kubuntu 9.10 включает в себя первый релиз Kubuntu Netbook, а также последние версии пакетов KDE. Читайте технический обзор Kubuntu.

Образы Ubuntu Enterprise Cloud

Ubuntu 9.10 Beta включает в себя образы для использования Ubuntu Enterprise Cloud (UEC) и Amazon's EC2. Вы можете опробовать последнюю серверную сборку Ubuntu 9.10 прямо на EC2, используя уже сконфигурированную AMI или загрузить образ и поместить его в собственный Ubuntu Enterprise Cloud. Для дополнительной информации об использовании образов UEC на Amazon EC2 читайте EC2 Приступая к работе.

Ubuntu One общий доступ к файлам

Ubuntu 9.10 Beta по умолчанию поставляется со службой общего доступа к файлам Ubuntu One, которая обеспечивает тесную интеграцию синхронизации файлов на вашем компьютере с другими компьютерами, а также с системной удаленного хранения информации Ubuntu One.

Linux Kernel 2.6.31

Ubuntu 9.10 Beta включает в себя ядро 2.6.31-11.36, которое базируется на 2.6.31.1. Ядро поставляется с включенной опцией Kernel Mode Setting для графических чипов Intel (см. ниже). Linux-restricted-modules теперь является устаревшим и запрещен к использованию в пользу пакетов DKMS.

HAL признан устаревшим и не рекомендуется к использованию

В Ubuntu 9.10 Beta система работы с базовыми технологиями управления питанием, горячими клавишами ноутбуков, работы с устройствами хранения данных и камерами перенесена с плеч "hal" (который находится на этапе подготовки к стадии "не рекомендуется к использованию") на "DeviceKit-power", "DeviceKit-disks" и "udev". Когда вы будете тестировать Ubuntu 9.10 Beta, пожалуйста обратите внимание на нововведения в этой области и сообщите нам о любых найденных ошибках.

Доступна для тестирования новая архитектура видео драйверов для Intel

Видео драйвер Intel перешел от использования системы ускорения "EXA" к новой системе "UXA", что решило важные проблемы с производительностью имевшиеся в Ubuntu 9.04. Ubuntu 9.10 Beta также поддерживает настройки ядра для оборудования Intel, что уменьшает эффект мерцания при загрузке, а так же значительно ускоряет переход в режим сна и восстановление из режима сна.

ext4 по умолчанию

Новая файловая система "ext4" используется по умолчанию при установке (не апгрейде) Ubuntu 9.10 Beta; конечно, другие файловые системы так же остались доступны при ручной разметке диска. Существующие файловые системы при апгрейде не будет изменены на ext4.
Если у вас есть полный бэкап ваших данных, вы можете перейти на использование файловой системы ext4 с ext3 используя это руководство. (Обратите внимание, что комментарии на этой странице устарели и описанные проблемы уже решены в Ubuntu 9.10 Beta). Максимальная производительность, как правило, может быть достигнута только на вновь созданных файловых системах, а не на системах, на которых был произведен апгрейд с ext3.

GRUB 2 по умолчанию

GRUB 2 теперь является загрузчиком по умолчанию для новых установок Ubuntu 9.10 Beta, заменяя собой загрузчик GRUB "Legacy". В системах, которые обновляются до Ubuntu 9.10 Beta штатный загрузчик не будет изменен, т.к. автоматическая переустановка загрузчика является весьма рискованной операцией.
Если вы все таки хотите обновить свой загрузчик до GRUB 2, то читайте страницу тестирования GRUB 2 для получения инструкций. См. также черновик руководство по обновлению.
Некоторые возможности в сравнении с GRUB "Legacy" все еще недоступны. Среди них поддержка блокировки/использования пароля, эквивалент grub-reboot и работа с Xen.

Установка iSCSI

Процесс установки iSCSI был улучшен и больше не требует опции "iscsi-true" в параметрах загрузки; программа установки сама предложит вам опцию для определения iSCSI или вы можете выбрать опцию "Конфигурация iSCSI" (Configure iSCSI) в режиме ручной разметки диска.
Теперь поддерживается размещение корневой файловый системы (root filesystem) на iSCSI.

AppArmor

AppArmor в Ubuntu 9.10 Beta включает в себя улучшенный парсер, который использует функцию кеширования, что значительно ускоряет инициализацию AppArmor во время загрузки. AppArmor теперь поддерживает 'pux', который позволяет процессу использовать один из существующих профилей или же использовать неограниченный, если профиля нет.

Новые профили

В дополнение к вышеуказанным изменениям в AppArmor, были добавлены несколько новых профилей. Специальные профили для ntpd, просмотрщика документов GNOME (evince) и libvirt включены по умолчанию. Профиль с режимом ограничений для Dovecot теперь доступен в пакете apparmor-profiles. Так же предусмотрен новый профиль для Firefox, хотя по умолчанию он и отключен. Пользователь может включить режим песочницы для своего браузера выполнив команду:
$ sudo aa-enforce /etc/apparmor.d/usr.bin.firefox-3.5

Пожалуйста, прочтите БазуЗнаний команды по безопасности для получения полного списка доступных профилей в Ubuntu.

Libvirt

Libvirt теперь итегрирован с AppArmor в случае использования KVM или QEMU. Libvirtd настроен на запуск виртуальных машин, которые ограничены уникальными профилями AppArmor. Эта функция значительно улучшает виртуализацию в Ubuntu, предоставляя защиту пространства user-space, а также изоляцию гостевых систем.

Простой Firewall (Uncomplicated Firewall)

Uncomplicated (простой) Firewall теперь поддерживает фильтрацию по интерфейсу и фильтрацию на выходе с помощью команды ufw. Документация по ufw также переработана и улучшена, с целью помочь пользователю лучше использовать ufw и взять под полный контроль всю силу и гибкость Linux Netfilter. См. UbuntuFirewall#Features для получения полного списка возможностей.

Non-eXecutable Emulation

Non-eXecutable (NX) система защита памяти, также известная как eXecute-Disable (XD), всегда была доступна в Ubuntu для систем, которые имеют аппаратную поддержку данной возможности и запускалась на 64битном ядре или 32битном серверном ядре. 32битное PAE ядро для настольных систем (linux-image-generic-pae) теперь также предоставляет режим PAE необходимый для аппаратных средств с поддержкой NX CPU.
Для систем, в которых отсутствует аппаратная поддержка NX, 32битные ядра теперь обеспечивают софтверную эмуляцию, которая может помочь заблокировать массу эксплоитов, которые могут запускаться из стека или кучи памяти.

Блокировка загрузки модуля

Чтобы блокировать загрузку дополнительных модулей после загрузки системы (как правило, для серверов с неизменной кофигурацией) добавлен флаг /proc/sys/kernel/modules_disabled для sysctl. Это сделано для, того, чтобы защитить от загрузки руткитов, которые маскируются под модули ядра.

Позиционно независимый исполняемый код (Position-Independent Executables)

Основываясь на работе, проделанной в Ubuntu 8.10 и 9.04, для организации проактивной системы защиты от неизвестных угроз с помощью флагов компилятора, больше приложений были построены с помощью позиционно независимого исполняемого кода (Position-Independent Executables (PIE)), с целью использования функции Address Space Layout Randomisation (ASLR) теперь доступной в ядре Ubuntu.
В дополнение к растущему списку программ, приложение PIE теперь также собираются с флагом BIND_NOW, который позволяет в полной мере использовать существующую систему RELRO. Это приводит к тому, что PIE приложения имеют меньше мест в памяти, которые могут управляться и контролироваться программой перенаправления потока, что является распространенным типом атаки типа "эксплоит использующий поврежденные участки памяти" (memory-corruption exploits).

Известные проблемы

Как и следовало ожидать на данном предрелизном этапе, имеется ряд известных ошибок, с которыми пользователи могут столкнуться в Ubuntu 9.10 Beta. Эти ошибки задокументированы ниже, с той целью, чтобы вы были готовы к ним и знали как их решить, а также не дублировали баг-репорты:

- некоторые пользователи с чипсетами видео Intel испытывают проблемы с тем, что после перезагрузки системы, экран остается черным, связано это с тем, что модуль fbcon не загружен. В качестве обходного пути, вы можете загрузиться с опцией "i915.modeset=0". Исследование этой проблемы здесь (431812);

- если используется система разметки жесткого диска и использованием RAID в процессе инсталяции системы, то загрузчки GRUB будет установлен только на первый жесткий диск, вместо того, чтобы установится на все. Соответственно, если первый жесткий диск отказывает - система не может загрузиться. В качестве обходного пути, вы можете вручную установить GRUB на весь массив жестких дисков (427048);

- некоторые пользователи сообщают, что после перехода на систему Upstart, если на корневом разделе содержатся ошибки - то система не может загрузиться. В качестве решение, вы можете загрузится с внешнего носителя или LiveCD и запустить fsck вручную (432237);

- баг с процессом загрузки с использованием ресурсов NFS. Система не может загрузиться, если какая либо из основных файловых систем (включая /usr и /home) смонтированы через NFS. Пользователям с такой конфигурация придется ждать релиза Ubuntu 9.10 (431248);

- при попытке установки Ubuntu Enterprise Cloud c Server CD, компонент Eucalyptus не может автоматически зарегистрировать свои компоненты. Чтобы решить эту проблему, обновите Eucalyptus до последней версии сразу же после установки и выполните "sudo restart eucalyptus" (438602, 439251);

- в Ubuntu Moblin Remix developer preview в файле sources.list на образе LiveCD и в установленных системах не хватате ~moblin PPA; вы можете добавить строку руками (420048). Также, веб-браузер функционирует некорректно, эту проблему можно решить установив патч из ~moblin PPA (439677).

Сообщения об ошибках

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

Если вы хотите помочь нам с багами, Bug Squad всегда находится в поисках помощников.

[Ubuntu] Ubuntu 9.10 и NVidia (Ati?) с двумя DVI выходами

для тех, кто пропустил неравную битву с богами тире разработчиками Xorg - рассказываю:

в Ubuntu 9.10 в версиях от Alpha3 и вплоть до Beta присутствует весьма неприятная бага с конфигурацией компьютера, где видеокарта имеет два выхода DVI и к обоим подключены мониторы. В моем случае, проблема возникла на видеокарте NVidia, но люди отписались, что и на Ati ситуация повторяется.
Проблема в том, что в такой конфигурации ни установка, ни режим LiveCD ни коим образом не запускаются, компьютер просто зависает при попытках проинициализировать хоть какой-нибудь видеорежим. Связано это, как выяснилось, не с параметрами расширения экрана или видеокарты непосредственно, а именно с проблемами в Xorg.
Никакие xforcevga и прочие бубны не помогают. А помогает только отключение одного из мониторов (физическое _вытыкание_ из видеокарты) на этапе инсталяции и вплоть до установки драйверов от NVidia, говорят, что с nv тоже работает, но я не фанатик, использую пропиетарное. Упал - отжался.

Патч готов и отправлен, давно. Мы долго смеялись и спорили, но проблема подтверждена. Проблема в том, что Xorg очень сильно freeze на данном предрелизном этапе в Ubuntu, разработчики Ubuntu патч не включат, ибо нефиг, а Xorg минорно пока не будет релизиться. Так что используем хардверное решение описанное выше.

Всем счастья и добра!

30.09.09

[жизнь] помехи на линии

Однажды, на одной скучной конференции, Стив Джобс бродил сиротливо по банкетному залу осматривая собравшихся. В темно углу он заприметил немолодого уже человека, склонившегося над ноутбуком, на котором сиротливо светилось надгрызанное яблоко. Немолодой человек усердно набирал текст, эмоции на лице говорили о высоком полете мысли.
Джобс приблизился, присмотрелся и с удивлением узнал Ричарда Столлмана. Столлман, почувствовав колкий взгляд, поднял глаза и взгляды встретились. Немая сцена привлекла внимание окружающих, собиралась толпа. Столлман уставше улыбнулся, развернул ноутбук лицом к невольным зрителям и виновнику сцены. С экрана монитора дружелюбно и враждебно одновременно смотрели gnome и seamonkey, emacs торжествующе подмигивал указателем курсора.
Джобс достал iPhone, набрал чей то номер и принял позу человека, чего то ожидающего. iPhone завибрировал, сообщив хозяину о новой смс. Джобс осторожно приблизился к Столлману, поднес к его лицу iPhone, где на экране четко виднелся текст смс. Там было написано "37163".

Через месяц Столлман не выдержал. Уверенной рукой набрал телефонный номер бога из Apple и спросил: "Стив, что за 37163?". Джобс выдержал паузу, его ухмылка была видна даже сквозь сети сотовой связи: "Ричард, это количество патентов на закрытые технологии и исходные коды всех компонентов того ноутбука, который стоял перед тобой".

26.09.09

[жизнь] ищу работу

Могу J2ME, J2SE (остальное в резюме) и много думать. Зачастую успешно и креативно.
Быстрая обучаемость и врожденный трудоголизм. В меру самостоятелен, адекватен в реакциях на адекватное.
Резюме в PDF и на английском.
Резюме в RTF и на русском.

25.09.09

[жизнь] DubFX в Санкт-Петербурге

Был сегодня на концерте DubFX. Парень просто отлично играет, настроение на месяц вперед. По ссылке, кстати, можно скачать его музыку, с его же сайта, бесплатно.
Вот тут, на youtube, есть его уличное выступление. Советую посмотреть.
И немного фото с питерского концерта (картинка кликабельна на весь небольшой альбом):
Альбом: DubFX Saint Petersburg 24.09.09

18.09.09

[Google] Noop - это вам не хухры-мухры

Вольный, впрочем как всегда, перевод вступительного слова к новому языку программирования от (в большей части) сотрудников Google.
-------------------------------
Что такое Noop?

Noop (своеобразное "ничего", как инструкция NOP в ассемблере) - это новый экспериментальный язык программирования, взявший всё лучшее из языков старых и новых, впитавший в себя лучшие находки индустрии и отринувший худшие, в том числе и касающиеся синтаксиса. Noop изначально предназначен для запуска на виртуальной машине Java (JVM).

Кто стоит за Noop?

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

Мировозрение Noop.

Разработчики Noop прекрасно знают о лучших достижениях и чудовищных промахах в мире программного обеспечения, разработки ПО и эволюции языков программирования. Noop будет поддерживать прекрасное и бороться с чудовищным настолько хорошо, насколько это возможно. Например:

Noop поощряет:
- Dependency injection (внедрение зависимости) так называемые внешние зависимости вновь созданного объекта;
- Testability (тестируемость) - шов между между каждой парой классов;
- Immutability (неизменяемость);
- Читаемость кода важнее любой синтаксической функции;
- Документирование, которое позволяет всегда иметь актуальную документацию;
- Properties, strong typing, современная и разумная stdlib.

Noop порицает:
- Статику, в любом ее проявлении (статические методы и т.д.);
- Реализацию наследования (subclassing);
- Примитивы;
- --Ненужную-- шаблонизацию.

Почему Noop?
Dependency injection (внедрения зависимости) изменили представление о том, как разрабатывать программное обеспечение. Spring догнал EJB в сфере коммерческих приложений, и Guice и PicoContainer сегодня являются важной частью хорошо написаных и спроектированных приложений.

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

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

Неизменяемость и минимальная зона видимости переменных воодушевляют на использование final/const поведения по умолчанию и обеспечивают легкий доступ к функциональному стилю программирования. Тестируемость предполагается путем предоставления возможности внедрения зависимостей (Dependency injection) на уровне языка, а также компактным синтаксисом конструкторов внедрения зависимостей.

Запланировано три пути использования исходных файлов Noop:
- Java транслятор: транслирует Noop код в исходные коды Java. Позволяет вам использовать Noop без преобразования вашего текущего кода, но не все возможности рантайма языка поддерживаются;
- Интерпретация: читает и исполняет код Noop через интепретатор. Медленно, зато будет иметь интерфейс командной строки;
- Компиляция: компиляция непосредственно в байткод Java.
-------------------------------

Кто перейдет по всем ссылкам в переводе и прочитает все статьи, тому +10 к скиллу "Наука".

Традиционный, но ни о чем не говорящий, HelloWorld.noop:

import noop.Application;
import noop.Console;

class HelloWorld(Console console) implements Application {

Int main(List args) {
String s = "Hello World!";

console.println(s);
return 0;
}
}

На выходных более подробно поковыряюсь и что-нибудь еще плохое-хорошее расскажу.

Итак, зачем и кому оно нужно? Будет нужно? Нужно ли?

Я тут размышлял 10 минут об этом, ничего здравого мне на ум не приходит. Разве что (судя по интерпретации и компиляции в Java код / байткод) Google готовит запасной вариант на случай «новая, вкусная, но немножко дорогая и ограниченная патентами Java от Oracle!».

17.09.09

[всякая фигня] Yandex и Управление К

Если на сайте моегокруга (http://moikrug.ru) в строке поиска вбить "управление к", то мойкруг ответит нам ошибкой:

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


На все другие запросы о поиске реагирует адекватно (:

UPD. теперь в норме.

15.09.09

[Mac OS] iChat, да будет автопереподключение

iChat мне нравится. То, что нет автоматического переподключения при разрыве связи - не нравится.
Запускаем AppleScript Editor, пихаем туда вот этот код:

on ApplicationIsRunning(appName)
    tell application "System Events" to (name of processes) contains appName
end ApplicationIsRunning

on run
    repeat
        if ApplicationIsRunning("iChat") then
            tell application "iChat" to log in
        end if
        delay 30
    end repeat
end run


ApplicationIsRunning - эта штука, которая проверяет запущен ли iChat или нет и, если запущен, возвращает true, а если нет - false.
Потом, в бесконечном цикле, проверяем "запущен ли iChat" и, если запущен, то даем ему команду "log in". Не бойтесь, iChat умный и, если вы уже залогинены, то никаких действий он предпринимать не будет.
После проверки или переподключения скрипт засыпает на 30 секунд (изменить по желанию "delay 30", цифра 30 и есть сколько секунд спать, для непонятливых).

Отдельным абзацем: "как запихать это в автостарт системы?"

И так, в AppleScript Editor'e с нашим скриптом нажимаем Save As..., выбираем там в File Format пункт Application, ставим галку Run Only, галки Startup Screen и Stay Open должны быть сняты. Получится бинарный файл со скриптом.

Потом добавляем получившийся скрипт-приложение в список приложений, которые стартуют при логине в систему (System Preferences -> Accounts -> Login Items).

Еще проблема - значек запущенного скрипта в доке. Решается так, ищем наш сохраненный скрипт, правой кнопкой по нему (or cmd + left mouse) и выбираем "Show Package Contents", открываем файл Info.plist в каталоге Contents (в новом открывшемся окошечке) и добавляем перед закрытием последнего тега </dict> такие строчки:

<key>NSUIElement</key>
<string>1</string>


Это запустит скрипт в фоновом режиме, без иконки в доке. Чтобы завершить выполнение скрипта - запустите Activity Monitor, найдите по имени, которое вы ему дали, и убейте. Мне бы было совестно.

08.09.09

IntelliJIDEA WTF

мля. ну нельзя же так...

package com.intellij.uiDesigner.core;

public final class GridConstraints implements java.lang.Cloneable{
...
public GridConstraints(int i, int i1, int i2, int i3, int i4, int i5, int i6, int i7, java.awt.Dimension dimension, java.awt.Dimension dimension1, java.awt.Dimension dimension2) { /* compiled code */ }

public GridConstraints(int i, int i1, int i2, int i3, int i4, int i5, int i6, int i7, java.awt.Dimension dimension, java.awt.Dimension dimension1, java.awt.Dimension dimension2, int i8) { /* compiled code */ }

public GridConstraints(int i, int i1, int i2, int i3, int i4, int i5, int i6, int i7, java.awt.Dimension dimension, java.awt.Dimension dimension1, java.awt.Dimension dimension2, int i8, boolean b) { /* compiled code */ }
...

05.09.09

Parallels. Не всем параллельно.

Немного предыстории. Потребовалось мне недавно заиметь Windows в виртуальной машине на Маке. Решений мне видилось три: VirtualBox, VMware, Parallels. В процессе выбора у меня сложилось негативное мнение о Parallels, что заинтересовало сотрудников самой Parallels (об этом позже), в связи с чем и пишу сейчас этот обзор, а скорее просто заметку. В трезвой памяти, здравом рассудке, отбросив весь негативный опыт и начав заново.

Получить Parallels для Macintosh'а в виде триала на 14 дней очень просто и это уже плюс. В наличии билд за номером 3846 (от 30 августа 2009), версия продукта 4.0, размер 187Мб, дело происходит на iMac 8.1 (2,4Ghz, 4Gb RAM), Mac OS X 10.6 Snow Leopard.

Установка

Эстетика: иконка смонтированного образа Parallels ужасна (: правда. Остальные иконки, как выяснилось, тоже меня коробят.

Сразу обращаю внимание на пункты:
- Support for using Mac OS X Snow Leopard (including the 64-bit version) on host computers – improved;
- A number of bugs for using Parallels Desktop and running virtual machines on host computers with Mac OS X Snow Leopard fixed.
Чтобы потом не было недоразумений по поводу Mac OS X 10.6.

Ставить я собираюсь Microsoft Windows Vista Business (лицензионная, если кому интересно), и этот пункт удовлетворяется описанием Parallels:
Supported Guest Operating Systems:
- Windows Vista® (Business SP1, Enterprise SP1, Ultimate SP1 editions).

Сразу вижу обман (: При установке, в Software License Agreement, раздел Trial Activation, нам сообщают, что "Parallels provides a trial activation key free of charge for a period of 15 days ("Trial Period").", в письме же с триальным ключем говорят о сроке в 14 дней.

Никаких больше сюрпризов при установке. Всё проходит спокойно и быстро.

Создание виртуальной машины

Процесс настройки и создания максимально прост и удобен, все экраны понятны и логически верно разделены между собой. Кстати, запустить созданую виртуальную машину без ввода триального ключа не получится.
Кхм, в этот раз всё установилось и заработало без каких-либо причуд. Прошлая моя попытка закончилась фиаско, после установки Parallels Tools - перманентный синий экран смерти при загрузке Windows. Час на выяснение причин и восстановление, в дальнейшем тысяча и один глюк и в итоге прощание.

Единственное, на что я готов пожаловаться, это на включенный по умолчанию режим отображение Coherence. Когда я вижу иконки Windows в своем статус баре и вылезающие нотификации Windows о возможных проблемах безопасности из разных углов моей Mac OS, мне становится не по себе. Ратую за то, чтобы у пользователя спрашивали, какой режим ему по душе. Это лишь моё. На проблему не тянет.

Использование

Уровень интеграции в Mac OS радует. Безо всяких рукоприкладств работает sharing, само собой интернет. О sharing стоит сказать отдельно: сразу после установки содержимое вашего рабочего стола доступно на рабочем столе гостевой ОС, подмонтирован домашний каталог Mac OS и даже мой iDisk из комплекта iLife. Радость и плюс в карму. Более того, sharing прозрачный, т.е. если я удаляю элемент с рабочего стола в гостевой Windows, он так же пропадет с рабочего стола Mac OS.
Drag'n'Drop на перемещение файлов прекрасен. Движением руки спокойно копируем файлы из дока на рабочий стол гостевой ОС, так же и в обратном порядке.

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

Первым делом я столкнулся с проблемой установки JDK1.6u16, запуск инсталятора заканчивался ошибкой "wrapper.createfile failed with error 123" + куча кракозябр. Ну, мы не лыком шиты, знаем, что нет у нас пользователя значит в системе окромя "Администратор" (в англоязычной версии Administrator, кто не знает). Хозяйке на заметку, так сказать. Думаю, если в режиме автоматической установке Windows в Parallels добавить пункт "Имя пользователя", чтобы создать его в автоматическом режиме - то никому плохо от этого не станет, а от ряда проблем пользователя ограничить получится. Да и вообще, по умолчанию входить под учетной записью "Администратор", да еще и без пароля, да еще и автоматически входить. Эх, Windows.
Эта проблема возникает не только при установке Java, так что имейте ввиду.
Думаю, все догадались, что после создания нормальной учетной записи удалось установить нужные приложения без проблем. Поэтому эту часть пропустим.

Пожалуй, что на этом я закончу описание проблем. Т.к. всё, с чем я столкнулся, где-то решаемо, а где-то и моё недопонимание Parallels. А где-то мне и стыдно за те проблемы, которые я придумал сам (:

Этикет приложения

Тут поговорим о процессе инсталяции и процессе удаления приложения. Я обычно уделяю этому моменту особое внимание, потому что Mac OS так уж устроена, что чистота процесса удаления взвалена на создателей приложения. Плюс ко всему, я не раз слышал, что Parallels мало того, что "забывает" удалять свои компоненты, так еще эти компоненты мешают нормальному функционированию других приложений. Проверим.

Я пошел путем наименьшего сопротивления. Зафиксировал всё, что установила Parallels, а так же все подгруженные модули ядра и всё, что прописалось в регистры io. Затем запустил штатный uninstaller, выставив галочки "Удалять всё, что только можно".
Констатирую, деинсталяция проходит на 5 баллов. Всё, что остается, это пара файлов с логами и несколько plist'ов в ~/Library/Preferences. Никаких тебе неудаленных модулей ядра, никаких записей в регистрах, никаких лишних файлов. Настояшие 5 баллов и абсолютно честные.

Вывод

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

Во-первых. Про меня. Я скоропостижно счел Parallels плохим продуктом. Я написал об этом во всеуслышанье. Ко всему прочему, так бы и говорил в будущем, если бы моего мнения спросили. Т.е. почем зря ругал бы продукт на пустом месте. Мнение свое изменил и получил урок на будущее. Никаких больше "плохой продукт. хватило десяти минут и пары проблем, чтобы понять". Я вот теперь чуть ли свою жизнь не переоцениваю (: Много ведь таких вещей мне встречалось в жизни. И ведь не только среди ПО. Где еще я так ошибся?

Во-вторых. Сотрудник Parallels. Человек случайно заметил мой скромно-негативный твитт в моем твиттере, взял и написал две строчки в почту. Заняло секунд 45-50. А ведь посмотрите какой эффект! Мало того, что я опроверг свой же негатив о продукте, так ведь я еще и публично об этом говорю. Рекламирую так сказать, на вольных началах своего короткого возмущения.

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

В качестве эпилога

Я не перейду на Parallels. По крайней мере сейчас. И причины таковы:
- у меня есть лицензия на VMware, честно купленная пару дней назад (: довольно объективная, кстати, причина;
- VMware все же мне нравится больше чем Parallels, в частности, мне кажется, что VMware несколько быстрее и удобнее (удобнее можно читать, как "я привык").

Хм, всего две смог придумать. И в конце песни, пока я всё это дело писал (думал будет гневная статейка о недоделках), появилось желание протестировать Parallels 5 Beta. Так что будет и еще одна точка зрения.

Всем спасибо, кто дочитал до этого места.

P.S. обзор возможностей, которые я не осветил, можно почитать тут.

на Хабрахабр