Mac OS X и горячие клавиши

Работать в Mac OS X после стольких лет программирования в windows — это настоящий стресс :) Причина проста и банальна — очень многие сочетания клавиш, к которым мы привыкли работают по-другому, или вообще не работают :)
Собственно, основные проблемы идут от того, что Ctrl переехал на клавишу Win, а Home и End переходят в начало и конец файла (а не начало и конец строки, как в windows).

К счастью, Ctrl и Win меняются местами прямо в настройках МакОси (Системные настройки -> Клавиатура -> Клавиши модификации), а Home и End возвращаются к привычному PC-функционалу с помощью DoubleCommand или ему-подобных утилит.
Эти два небольших шага сэкономили мне множество нервов и позволили сосредоточиться на деле, а не перестройке собственных привычек :)

Прочие же привычные по VisualStudio сочетания можно перенастроить уже прямо в MonoDevelop.
И да простят меня апологеты Mac OS за такие издевательства над системой :)

P.S. Спасибо Брайану Ханкинсу за наводки

Краткий конспект по запуску MVC на Mono (Ubuntu)

Краткий конспект по проблемам, с которыми сталкивался разворачивая MVC3-сайт на Ubuntu с nginx и Mono. Пост «для себя» чтобы не забыть. В результате будем иметь наш ASP.Net MVC3 сайт работающий на Ubuntu-сервере с фронтэндом в виде nginx и моно запущенным как fcgi-server.

  1. Ставим последнюю версию Mono wget —no-check-certificate https://github.com/nathanb/iws-snippets/raw/master/mono-install-scripts/ubuntu/install_mono-2.10.sh когда выйдет следующая версия гуглить на тему install_mono.
  2. Скрипт запуска fcgi-сервера моно копируем в /etc/init.d, копируем monosites.conf. в /etc предварительно изменив в нём путь к папке, где будет лежать ваш MVC-проект (этот файл требуется monoserve’у, путь к нему прописан в нём же, при необходимости можно поменять).
  3. Настраиваем nginx. Насколько я представляю, это стандартная настройка с использованием fcgi. Пример конфигов factcgi_params и настройка конкретного сайта monosite (лежит в папке sites_enabled)
  4. Деплоим проект на сервер. Должна получиться следующая структура

    /
    — App_Code (копируем из проекта, если используем шареные хелперы)
    — Views (папка с вьюшками, копируем из проекта)
    — bin (папка с бинарниками. копируем из проекта)
    — Default.aspx (копируем из примера приложения, см. ниже)
    — Web.config (копируем из проекта)
    — Global.asax (копируем из проекта)

  5. В MVC проекте ставим CopyLocal=true для библиотек: System.Web.Helpers, System.Web.Mvc, System.Web.Razor, System.Web.WebPages, System.Web.WebPages.Razor, System.Web.WebPages.Deployment. Здесь важен не CopyLocal, а тот факт, чтобы они попали в папку bin на сервере.
  6. Копируем в папку bin файл Microsoft.Web.Infrastructure из установленной версии Mono (/opt/mono/lib/gac…). Если библиотеки пункта 2 должны быть Майкрософтовские, то эта должна быть Моновская!
  7. Стартуем моно: /etc/init.d/monoserve start и nginx /etc/init.d/nginx restart. Monoserve выдаст в консоль свои не очень понятные логи, но «взлетели» или нет разобрать можно :)
    На этом этапе всё уже должно работать.
  8. Если что-то не работает и непонятно, где ошибка — в установке моно или деплое проекта, то можно скопировать точно работающий проект в ту папку, куда вы деплоите. Перезапустить моно и решить дилему, кто же всё-таки неправ :)
  9. Ниже список возможных ошибок и немного кода
    Continue reading