среда, 25 июля 2012 г.

Проблемы с VPN после установки Parallels Desktop

Давно пользовался VMware Fusion для работы с Windows из под Mac, но наслушавшись положительных отзывов про Parallels, а именно послушав Радио-Т, решил попробовать. После установки, Parallels без проблем подцепил мой образ от VMware и я был действительно изумлен, насколько все хорошо работало, но эйфория быстро прошла после того как я только приступил к работе. Так как в силу обстоятельств я 100% работы выполняю по RDP который работает через VPN то я сразу обнаружил, что ни один из моих удаленных рабочих столов мне недоступен, так как в последнее что я ставил был именно Parallels, то он был незамедлительно удален, так как времени на выяснение способа исправления ошибки не оказалось. После того как время все же нашлось, я заново установил программу и полез в настройки, но ничего путного так и не нашел, потому пришлось гуглить и решение было найдено http://forum.parallels.com/showthread.php?t=102178
а именно
sudo ifconfig vnic0 down
sudo ifconfig vnic1 down
после этих команд и переподключения VPN, заработал мой RDP(точнее CoRD).
К сожалению, есть конечно и минусы о которых пишет автор того поста
Unfortunately, it will work only until next reboot of Mac OS (then commands need to be executed again)
т.е. придется их выполнять после каждой перезагрузки, но как часто вы перезагружаете?! :) (Upd:после перезапуска parallels опять пришлось выполнять команды), а так же
The only functionality that will not work after such commands, is connecting from Mac to Win using TCP-protocol. I.e. if for example you have Web-Server running in VM, it will not work. 
значит, если вы хотите достучаться до винды из под мак по tcp, то вам этого не удастся. Будем надеяться, что вскоре это починят. 

понедельник, 9 июля 2012 г.

Создание ярлыков с параметрами запуска в Mac OS

После покупки ssd диска возникла тяга к оптимизации системы. 
Начитавшись разных постов, я понял, что мне нужно отключить создание кешей браузером. Мой дефолтный браузер - Chrome, немного погуглив, обнаружил, что люди под макосью не очень волнует вопрос отключения кешей хрома, потому решил запустить используя способ из windows, а именно с определенными ключами командной строки и способ на удивления сразу заработал, но возникла проблема в том, что я не знаю как в макоси создавать ярлыки с ключами.
Немного погуглив нашел примеры, которые работали, но на половину. Нужно было создать applescript 

do shell script "/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome %U --disk-cache-size=1 --media-cache-size=1"
и сохранить все это дело как приложение, но иконка скрипта начинает висеть в доке, а процесс считается зависшим. 

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

do shell script "/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome %U --disk-cache-size=1 --media-cache-size=1 & killall chrome_nocache"

но данный способ ни как не хотел работать, так как процесса с таким имененм не находилось. Тут я на какое то время застрял....но с утра вернувшись к проблеме решил подойти не состороны поиска нужного мне процесса, а посмотреть, что же создает редактор applescript. И увидел что нужно было искать не chrome_nocache, а applet, именно такое название было у приложения в пакете. Итак, я переписал свой скрипт на 
do shell script "/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome %U --disk-cache-size=1 --media-cache-size=1 & killall applet
и все вроде бы заработало. Появляется иконка скрипта в доке, затем вызывается браузер, а иконка исчезает, но убивать процесс с именем applet мне показалось как то грубо, мало ли что с таким именем нужно у меня будет висеть. Я решил посмотреть, как бы все это дело довести до ума что бы убивался именно мой процесс с уникальным и просто отличным именем :). Для этого я переименовал приложение внутри пакета, поменял свой скрипт на собственное название процесса и попробовал запустить, но все перестало работать. Все оказалось чуть сложнее, попробовав открыть файлы находящиеся внутри пакета в текстовом редакторе Sublime я нашел интересный файл Info.plist в котором два раза упоминалось applet
<key>CFBundleExecutable</key>
<string>applet</string>
<key>CFBundleIconFile</key>
<string>applet</string>
второй ключ указывал на иконку приложения, а вот первый я поменял на chrome_nocache. Сохранив результат я попробовал опять вызывать иконку-приложение и о чудо, все заработало, но возникло опять огромное НО.... система начала выдавать вопрос, точно я хочу что бы был выполнен скрипт или нет. Найдя мало результатов по этой проблеме, я нашел целый скрипт на bash, который пересоздавал некий файл ресурсов(или что то типа). fixAppleScriptApp который исправил мое приложение. Выполнив 
sh fixAppleScriptApp.sh /Applications/chrome_nocache.app
получил хорошо работающий ярлык-приложение. Единственное что я еще допилил, так это утащил ярлык из пакета с хромом в свое приложение дабы было красиво.