Все было хорошо, пока около недели назад Any Origin перестала работать для некоторых (но не для всех) запросов https. Так уж получилось, что за это время я приобрел некоторый опыт работы с Play! и Heroku, которая позволила мне быстро создать клон с открытым исходным кодом Any Origin под названием Whither Origin (.org!) (на github ). Для тех, кто не знаком с Play! и Героку, позвольте мне дать краткое введение:
Heroku является одним из ведущих поставщиков PaaS . PaaS — это просто причудливый способ сказать: «Позвольте нам управлять вашими серверами, масштабируемостью и безопасностью… вы просто сосредоточены на написании приложения». Heroku начинал как магазин Ruby, но теперь он поддерживает различные языки программирования и платформы, включая python, java, scala, javascript / Node.Js. Что еще круче в них, так это то, что они предлагают огромный набор дополнений, начиная от простых вещей, таких как пользовательские домены и ведение журналов, по расписанию, по электронной почте, SMS и заканчивая более мощными дополнениями, такими как Redis , Neo4j и Memcached .
Теперь для части приложения, я недавно нашел Play! Рамки . Play — это инфраструктура Java / Scala для написания веб-приложений, основанная на идеях Ruby on Rails / Django, заключающихся в предоставлении вам готового готового решения, позволяющего сосредоточиться на написании реальной бизнес-логики и позволяющего настраивать все позже, если необходимо. Я призываю вас посмотреть 12-минутное видео на домашней странице Play !. Оно показывает, как добиться мощных возможностей буквально с нуля. Играть в! изначально поддерживается в Heroku, поэтому все, что вам нужно для запуска производственного приложения:
- играть в новый
- Напишите некоторую бизнес-логику (Контроллеры / Представления / еще много чего)
- git init… git commit
- «Heroku apps add» для создания нового приложения (не забудьте добавить «–stack cedar», чтобы использовать стек Cedar последнего поколения)
- «Git push heroku master» для загрузки новой версии вашего приложения… оно автоматически создается и развертывается.
Вооружившись этими инструментами (на обучение которых у меня ушло всего несколько дней), я решил создать «Независимый источник». Обработка запросов JSONP — это задача, связанная с вводом-выводом: ваш сервер в основном выполняет HTTP-запрос, а по завершении он отправляет ответ вашему клиенту, завернутый в магию javascript / JSON. К счастью, Play! Поддержка Async IO действительно приятна и проста. Просто посмотрите на мой единственный метод get :
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
public static void get( final String url, final String callback) { F.Promise<WS.HttpResponse> remoteCall = WS.url(url).getAsync(); await(remoteCall, new F.Action<WS.HttpResponse>() { public void invoke(WS.HttpResponse result) { String responseStr = getResponseStr(result, url); // code for getResponseStr() not included in this snippet to hide some ugly irrelevant details if ( callback != null ) { response.contentType = "application/x-javascript" ; responseStr = callback + "(" + responseStr + ")" ; } else { response.contentType = "application/json" ; } renderJSON(responseStr); } }); } |
Первая строка инициирует асинхронную выборку запрошенного URL-адреса с последующей регистрацией в событии завершения и освобождением потока. Вы могли почти думать, что это Node.Js !
На самом деле на разработку и отладку у меня ушло больше всего времени — сам JSONP . Информацию, которую я нашел об этом, и о поддержке jQuery на стороне клиента было немного сложно найти, и я потратил несколько часов на борьбу с чрезмерно экранированным JSON и другими забавными вещами. После того, как это было сделано, я просто отправил его на github, зарегистрировал домен whatorigin.org за жалкие 7 долларов в год и заменил anyorigin.com на whatorigin.org в коде Bitcoin Pie, и вуаля — сайт вернулся в онлайн.
Мне очень нравится разрабатывать веб-сайты в 2011 году — есть целые отрасли, которые стремятся упростить для отдельных людей / небольших стартапов создание удивительных продуктов.
Справка: WhwhatOrigin — Боритесь с единой политикой происхождения с Heroku и играйте! Платформа от нашего партнера JCG Рона Гросса в блоге A Quantum Immortal