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

Разрабатывая какие-то вещи практически с нуля, очень важно получить подтверждения того, что они вообще могут жить. Для разработчика таким доказательством является реальный и запущенный проект. Пока его еще нет, не знаешь действительно ли это будет работать, остаются какие-то сомнения. Кажется, что каждый может спросить "Вот ты так самоуверенно говоришь о каких-то вещах, а где это можно увидеть?"

Теперь у меня есть все основания, чтобы говорить "да, работает и можно посмотреть", потому что iPark Ventures запустил в раннюю открытую бету проект Experika.com.

Welcome to Experika

О чем этот проект

В текущий момент Experika.com можно назвать сайтом для поиска работы. Это не совсем правда, но это ближе всего к правде. К сожалению, я не буду раскрывать детали того, как сайт будет развиваться и что на нем будет появляться. Скажу одно - мы планируем продолжать улучшать те части, которые уже видны, а так же добавлять много новых.

Сайт состоит из трех больших частей:

  • Поиск работы и сотрудников — мы потратили много времени для того, чтобы сделать поиск и работу с найденными резюме и вакансиями такими, какими они будут в ближайшем будущем.
  • Управление персональными профайлами — то, ради чего стоит регистрироваться на сайте прямо сейчас. Поскольку вы получаете адрес вида http://www.experika.com/%username%/ и постепенно ваш профайл начнет играть роль в поиске работодателями вас по вашим навыкам. Как минимум такую же роль как и профайл на Моем Круге или LinkedIn'е, с той разницей, что вы сразу можете сделать профайл на тех языках, которые знаете
  • Элементы социальной сети — возможность добавлять интересных людей в список контактов и переписываться с ними через сайт, а так же получать уведомления о предложениях, о работе или приглашения добавить в список контактов

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

Технологии

Достаточно просто разделить сайт на две большие части: клиентскую и серверную. Проект изначально проектировался как приложение, которое запускается внутри браузера и взаимодействует с сервером через специальный API (который постепенно будет публично анонсирован и документирован).

Серверная часть

Для построения серверной части был выбран легковесный фреймворк tipfy написанный на Python. Он дает достаточно простые соглашения о конфигурировании и размещении кода внутри проекта. И имеет очень маленькое время старта по сравнению с другими, что является решающим. Кроме того, изначально он ориентирован на использование языка шаблонов Jinja2, которые имеют возможность компиляции в python код, который в свою очередь может быть закеширован на инстанциях.

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

Если не вдаваться в детали, то python код отвечает за несколько страниц, которые отдают plain html и API методы.

Клиентская часть

Это полностью Google Web Toolkit (сокращенно GWT, авторы настаивают на прочтении [гвит]). Наши ребята сделали потрясающую работу и смогли воплотить в HTML достаточно сложные идеи, которые мы придумывали, когда создавали концепцию пользовательского интерфейса.

Вспомогательную функцию играет Closure, на котором проще делать некоторые независимые элементы, например, визуальный редактор или анимацию тура.

Управление кодом

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

Сейчас, для того, чтобы развернуть проект для работы, требуется установить python нужной версии (2.5.x), доставить к нему PIL, который лучше брать из портов или бинарную сборку, JDK для клиентской части. После этого окружение разворачивается за минуты.

По поводу скриптов для deploy распространяться не буду, у нас нетривиальная процедура, поэтому пришлось написать дополнительные. Некоторые конфигурационные файлы должны вести себя по разному, поэтому перед отправлением они проходят дополнительные преобразования (о ужас!) sed'ом.

Что дальше

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



blog comments powered by Disqus

Support

If you like my posts, please support me on Gittip

Published

15 March 2011

In tags we trust

Fork me on GitHub