Разработка под Apple iOS

индекс
168,14

SOHO и Apple


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

В команде нас четыре человека, работаем, в основном, удаленно друг от друга (это основная занятость только для одного человека). Разрабатываем софт под маки, ифоны и делаем веб-сервисы.

В качестве первичной платформы для «коллаборативности» были выбраны сервисы от Google: Google Hosted Apps (почта и календарь) и Google Wave. Все мы пользуемся жаббером, так что Gtalk отдельно я не поднимал. Собственно и почта для всех ограничилась редиректами на основные ящики, благо Gmail позволяет добиться почти полной прозрачности в этом вопросе.

Вопросы, которые затрагивали несколько человек, и общее планирование отдали на откуп Волне. В целом, получилось неплохо. Почему в целом? Во-первых, для некоторых встал вопрос использования отдельного броузера (Google Wave не очень хорошо ведет себя в сафари, и приходится паралельно использовать Chrome). Во-вторых, сервис подвержен некоторой нестабильности. Но с возложенной на него нагрузкой Волна справляется, даже командные переговоры с заказчиками мы проводим через нее, и обе стороны довольны. Также, Волна стала решать вопросы отслеживания багов, так как Bugzilla имеет очень уж суровый интерфейс, и Eclipse+Mylyn не спасают.

Google Calendar стал камнем преткновения. Веб-интерфейс, безусловно, удобен, особенно если учесть, что один человек бо́льшую часть времени проводит с виндой, и для него актуальны именно веб-приложения. Уведомления по СМС позволяют не забывать о запланированных событиях. Но когда дело доходит до нескольких календарей, ситуация меняется. iCal вообще не очень хорошо вообще себя ведет с гугловой синхронизацией (BusyCal появился уже позже), некоторые проблемы возникали и при синхронизации с ифоном. Я начал искать другие решения.

К этому моменту появилась необходимость CI-сервера, так как тесты коллеги писали из-под палки, убеждая меня в полной бесполезности оных. Надо было придумать какой-то механизм наглядного воздействия. Коллективным решением был приобретен Mac Mini, на котором развернули Snow Leopard Server.

Немного вернувшись назад, отмечу, что нашими основными средствами разработки являются: Xcode, TextMate и vim. Первый используется для mac/iphone проектов, TM — это идеальный «универсальный» редактор, а vim используется там, где нет макоси под рукой. Для хранения информации мы используем Git-репозитории, развернутые через gitosis, а для передачи файлов — Dropbox. Редкие голосовые переговоры решаем через Skype, а при необходимости «удаленно порулить» используем эппловый VNC (машинки видят друг друга через MobileMe/Wide Area Bonjour).

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

Первым делом я прикрутил iCal Server и Push Notifications. Должен сказать, что iCal с ним, что не удивительно, работает идеально, функционально и очень удобно. Не завелись уведомления по почте (которая так и осталась у гугла), но это с лихвой было покрыто Push-сервером. Кстати, BusyCal с iCal Server не работает. Для возможности достучатся до календарей через веб был поднят штатный Apache, где обнаружилась комфортная и красивая веб-морда (а еще, до кучи, блоги и вики, но они повторяют функциональность Google Wave).

Следующим сервисом был поднят опять же штатный VPN (L2TP over IPsec), который решил проблемы WAB и недоступности машин, если некуда было пробросить порт через NAT-PMP или uPNP (напоминаю, что макось регистрируется в WAB только если может договорится с вышестоящим роутером).

Потом я взялся за CI, в качестве которого был выбран TeamCity (выбирал практически наугад). Первичным критерием была цена, которая полностью меня устроила (Pro-версия бесплатна, правда, в Enterprise есть замечательная возможность авторизироваться через LDAP, в том числе и эпплово-вымеченный OD). Попробовав отдельную установку и встроенный в OSX Tomcat, я остановился на последнем, вот только к штатному апачу прикрутить уже его не вышло. Решился вопрос установкой из портов nginx'а, за который были спрятаны Apache и Tomcat. TeamCity отлично прикрутился к тестированию Python (Django), PHP и xcodebuild-проектов (через тесты из Google Toolbox Mac). Еще у Jetbrains есть просто таки офигительный багтрекер YouTrack, главная фишка которого — полноценное управление с клавиатуры, что нам, как vim-ерам, очень приятно :). Кроме того, он интегрируется с TeamCity и тоже может работать с LDAP, но через жуткую пень-колоду. Да и в целом он оставляет ощущения некоторой сыроватости. В общем, я буду наблюдать за его развитием, и если мы решим таки завести отдельный багтрекер, я к нему вернусь. Кстати, нормально завести его под Tomcat и Jetty у меня не вышло, равно как и прикрутить Standalone к nginx'у в общий домен к остальным приложениям.

Потом стало как-то немного накладно управлять проектами на базе одного только iCal, и я посмотрел в сторону Daylite. Полноценная CRM-ка с приятным маковым интерфейсом. Вот только она начала дублировать уже существующие сервисы (iCal, Address Book) без возможности интеграции, да и еще не дружит с обще-LDAP-овой базой пользователей. Так что немного поиспользовав ее, я решил попробовать что-то другое. Пока что глаз лежит на Merlin, буду пробовать.

Еще пару слов о финансах. Поскольку вся бухгалтерия проходит через мои руки, то особой коллаборативности тут не требуется, так что Billings отлично справляется с учетом денег. Небольшое опасение у меня вызывают финотчеты iTunes Connect, так как я не смог превратить их в читабельную форму в Numbers, а ставить Excel жутко не хочется. Общее представление я получаю через AppFigures, но когда заходит вопрос о дележе прибыли, хочется иметь более конкретные цифры. Скорее всего, будем писать свой процессор и анализатор отчетов iTunes Connect и банкинга.

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

P.S.: В данный момент я играюсь с DNS-SD, чтобы устроить полную замену Back to My Mac. Надеюсь по результатам собрать отдельную статью, потому что там уйма тонких моментов в настройке.
_________
Текст подготовлен в ХабраРедакторе
+39
2 января 2010, 23:09
49

комментарии (31)

+2
Chater #
Неплохо организовано всё. Какие Ваши приложения есть в App Store?
+1
farcaller #
+1
hellraiser09 #
сделайте отдолжение — со всех иконок уберите отражение полукругом(настраивается в Info.plist), без него будет намного лучше
+1
farcaller #
окей, попробуем. Спасибо за замечание.
+5
Barmaleikin #
Обалдеть. Столько интересного узнал :) Спасибо.
+2
mastini #
Спасибо! Интересная статья
–4
lol2Fast4U #
>мы используем Git-репозитории развернутые через gitosis
ну почему? почему не Bazaar? не холивар, просто интересно.

Кстати, как относитесь к Basecamp?
+3
farcaller #
> ну почему? почему не Bazaar? не холивар, просто интересно.

Банально, из четверых только я один умею с ним работать :)

> Кстати, как относитесь к Basecamp?

Тоже, кстати, пробовали. Не прижился он у нас.
–4
lol2Fast4U #
>Банально, из четверых только я один умею с ним работать :)
Так он же проще гита. По желанию держит быстрый и экономный 'shared working tree' (то есть git-style), тогда получается вообще то же самое — только 3 буквы другие, но зато с умным merge'м и прочими штучками… Ой, я не начал холивар?

>Тоже, кстати, пробовали. Не прижился он у нас.
Почему?
+1
farcaller #
Нас всех полностью устраивает гит и его мерж :)

Насчет бейскампа – уже и не помню, мы его в самом начале как-то пробовали. Я еще маковые утилитки для него качал смотрел. Вспомню – допишу.
+1
VlK #
Собственно, про bazaar. Емакс только что на него перешел.

Жалобы в рассылке:

1) На патч в 1кб отправляется 700кб чего-то левого;
2) медленней даже, чем ближайшее git-зеркало.

Вопрос иначе можно поставить :) Почему bazaar?
–2
lol2Fast4U #
>медленней даже, чем ближайшее git-зеркало.
Версия случайно не 1.1? 2.1 намного быстрее (:

>На патч в 1кб отправляется 700кб чего-то левого;
Разработчики Emacs'а видимо не умеют читать — для больших проектов рекомендуется shared working tree (то есть git-style).

>Почему bazaar?
Удобно.
+1
farcaller #
> Удобно.

Коммент ни о чем. Чем не удобен Git?
0
marchello #
Отличная статья, спасибо. А как вы WAB используете?
+2
farcaller #
Потенциально хочу иметь то же что из-под VPN, но без VPN.
+1
SAKrisT #
Как-то дохренамного вы всего используете :)
+5
farcaller #
Нет, ну можно конечно все это заменить одним emacs… Но зачем? :)
0
SAKrisT #
я не только про редакторы
+4
farcaller #
ну emacs это тоже далеко не Блокнот!
0
Bonzo #
Спасибо, очень интересно!

Как в Мерлине покопаетесь — расскажете?
0
farcaller #
Обфускация там офигительна, что б не сказать больше :) он потрясает не только внешним видом, но и внутренностями ^_^
0
Bonzo #
Мне, как управленцу, интересен именно PM-функционал, а не запутывание кода :)
0
farcaller #
Мне, как управленцу, интересно погонять его чуть больше 15 минут без необходимости тратить полторы тысячи евро, потому я, как программер, полез его поторшить :)
0
hellraiser09 #
Пока что глаз лежит на Merlin, буду пробовать.

пробовали — не прижился. У меня вообще сложилось впечатление что его делали авторы AutoCAD и т.п. — крайне суровая софтина
0
Bonzo #
А если сравнить с Omni Plan?
0
hellraiser09 #
вот если бы их скрестить, то получилось бы что надо. А так имеем: Merlin — возможна совместная работа для нескольких человек, но просто у***щный интерфейс; Omni Plan — офигенный интерфейс, но работает только один человек
0
farcaller #
Хм. А OmniPlan интересно с дропбоксом как, дружит? Пойду попробую…
0
hellraiser09 #
дружить то дружит, но как вы сделаете совместную работу с разграничением прав доступа, отслеживанием кто и что добавил/удалил и т.к.

Дропбокс годится для синхронизации если нету MobileMe
0
farcaller #
ну при моих объемах отслеживать – не проблема ;)

MobileMe не так удобен для синхронизации, как Dropbox (если вы про iDisk). Как минимум тем, что привязан к одному пользователю.
0
Suro #
По поводу google wave. зачем вы используете отдельный браузер, если есть удобная штука как waveboard (http://www.getwaveboard.com/) для maca. Она работает как отдельное приложение и не надо мучаться с браузером.
0
farcaller #
Потому что Chrome эффективнее, чем системный WebKit. SSB я и во Fluid'е сделать могу.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.