Облачная платформа для разработки javascript приложений
Приглашаю javascript разработчиков попробовать возможности облачной платформы Hivext Platform позволяющей создавать веб приложения и сайты на серверном Javascript.
Мы расширили серверный javascript дополнительными нативными объектами чтобы можно было работать с веб сервером (сессионные переменные, cookie, http заголовки и т.д.), базами данных (создание таблиц, записей, выборки по критериям) и файловым хранилищем. Можно производить вставки в Javascript на Java и использовать возможности базовых библиотек Java. Есть шаблонизатор на Embed Javascript (EJS). Для приложений обеспечили многопоточность при выполнении скриптов, например при высоких нагрузках на приложение, скрипты начнут выполняться параллельно на нескольких серверах, все это производится автоматически на уровне платформы. Платформа объединяет в себе возможности хостинга и готового набора методов, функций, техник к которым можно обращаться из клиентского javascript по сети и серверного javascript локально, через нативные объекты. Над платформой работает всего два человека и нам важны ваши советы чтобы сделать ее лучше. На все вопросы я могу ответить в этой теме. Hivext Platform |
Пример вывода данных на клиент из серверного JS.
/* Название: Output Buffer Описание: Вывод данных через буфер. */ // Укажем веб серверу и клиенту что данные в html формате. hivext.local.SetHeader("Content-Type", "text/html"); // Запишем данные в буфер вывода. // Данные отправляются частями, автоматически по мере заполнения буфера. hivext.local.out.Write("<html><body>"); hivext.local.out.Write("<h1>Hello world</h1>"); hivext.local.out.Write("</body><html>"); // Принудительная отправка данных из буфера вывода. hivext.local.out.Flush(); return; /* <html><body> <h1>Hello world</h1> </body></html> */ Примеры на серверном Javascript |
Зарегистрироваться не получается, перехожу по ссылке из письма, вижу json-строку и все, пробую снова через форму, она говорит что я уже присоединен, но вот где форма авторизации, а не присоединения.
|
Riim,
Если json строка значит все ок - зарегились :) А так да, надо добавить нормальное сообщение чтобы не сбивало с толку. Форма авторизации в Hive IDE, откроем его в начале февраля 2010 года, там работы выше крыши сейчас :) |
Зачем привносить из других языков стиль кодирования? В JS принят camelCase-стиль для всех идентификаторов, включая методы.
По-моему у вас Java головного мозга, по крайней мере симптомы :) Цитата:
И сигнатуру getParam лучше сделать в виде getParam(name, defaultValue), тогда вторая строчка будет не нужна. Про JSON: не лучше добавить хост-объект JSON с методами parse и stringify? Это уже стандарт. И какой движок у вас используется? |
Kolyaj,
1. cameCase есть, можете писать и так hivext.local.getParam(...). 2. Можно поподробнее в чем была заподозрена ява головного мозга? 3. Приведение к строке, из-за того что в Javascript попадает Java объект String и JS его не понимает, приходится приведение типа делать. Тут пробовали бороться, но не так все просто, как может показаться на первый взгляд. 4. GetParam, совет хороший, перегрузим :) 5. JSON подумаем, можно и добавить 6. Двиг Rhino 1.6. |
Цитата:
Цитата:
|
Kolyaj,
Цитата:
Цитата:
|
Цитата:
|
готово, теперь работает без дополнительного "гемора"
|
Цитата:
|
Цитата:
|
Спасибо, ответ вполне устраивает.
|
Цитата:
|
Цитата:
|
А где инфу можно хранить, какая БД?
|
Цитата:
|
Цитата:
|
а нормальных шаблонизаторов нет?
|
Цитата:
|
xslt, django templates
|
Цитата:
EJS мы вынесли отдельно (упростив с ним работу на пару движений) для проверки работоспособности идеи, потом добавим поддержку на уровне системы еще парочку самых востребованы... |
xslt есть везде, а вот джанга только на питоне
|
|
В чем преимущества вашей платформы по сравнению с node.js ?
|
Цитата:
Node - это в первую очередь обвертка JS движка, которая его расширяет. Hive - это комплексное решение (платформа), которое в том числе включает в себя обвертку JS движка. Давайте я расскажу лучше в чем отличия, а преимущества уже будете сами определять. Hivext - предоставляет 1) хостинг - с логикой автомасштабирования 2) БД и доступ к ней (удаленный и через панель управления) 3) набор всевозможных готовых конечных сервисов (к примеру регистрация, аутентификация, сервис прав доступа и многие другие) более детально см. Веб Сервисы 4) разные протоколы доступа к сервисам REST, CROSS (XSS GET & POST), SOAP, AMF (Flash) с форматами ответа в виде JSON, XML или HTML 5) клиентские библиотеки под j2me, j2se, javascript для работы с сервисами, в дальнейшем планируется расширить для php, .net, flash и других языков. Клиентские библиотеки позволяют не думать про пути и названия вер-сервисов, а позволяют просто и удобно дергать методы и функции классов. 6) скриптинг серверной логики на базе Java и JavaScript, в дальнейшем на Ruby, Groovy, Scala и других 7) отдельно хочется отметить сервис структур, который реализует ORM и позволяет абстрагироваться от работы с БД, оперируя в приложениями только объектами, т.е. проектируя и работая с приложением в стиле OOП Отличие в реализации серверного JS: Hivext использует Rhino это медленее чем V8. Если для вас это критично используйте, то что более подходит для конкретного решения. Возможно в дальнейшем мы будем использовать V8, но не в ближайшее время, есть более важные задачи. В добавок использование Rhino позволяет использовать богатый набор Java наработок и библиотек, легко импортируя их в свой код. А это немало важно, это экономит тоны времени. Вывод: Hivext похож на робота из коробки, у которого реализован богатый функциональный набор и он ждет чтобы вы вложили в него свой маленький кусочек вашей логики, которая заставит этого робота выполнять ваши команды, служить вам на пользу. |
К бета тестированию присоединилось более 400 разработчиков.
Из поддерживаемых языков на сервере есть Javascript и Java. 1 февраля 2010 мы переведем тестирование в закрытую стадию чтобы учесть пожелания разработчиков, отловить все баги и доработать инструменты разработки. |
У каких-то хостеров еще будет эта платформа, или только у вас?
|
надеемся будет повсеместно :)
|
Разработка приложений на javascript под facebook будет на расстоянии одного клика, полноценное окружение с хостингом, доменом, нужными для разработки под facebook API ключами, модулями и файлами - все это поднимается через Hive IDE за 10 секунд (хостинг, настройки сервера, доменное имя не нужно). При этом новое приложение сразу доступно через каналы распространения facebook, можно использовать совместно Facebook API и Hive API.
В разделе Ресурсы отображается содержание дискового пространства, выделяемого после создания нового приложения. Через Hive IDE можно создавать / редактировать / перемещать (drag&drop) / удалять файлы. Также есть доступ к ресурсам по FTP. ![]() |
Открыт Hive IDE для веб разработчиков
Поддерживаются Java и серверный Javascript. Также можно загружать/редактировать ресурсы html, css, клиентский javascript и т.д. Доступ по FTP и через Hive IDE.
Бесплатные квоты ----------------------------
http://www.hivext.ru/ |
Реализована библиотека решений и автоматическое разворачивание решения в облаке
Добавлены готовые примеры программирования на серверном javascript в виде автоматически разворачиваемого приложения в облаке.
http://9caa7e89d9e3c823dc505687b6b25961.app.hivext.ru/ При переходе по ссылке "Установить примеры" под вашим аккаунтом развернется приложение с примерами по программированию на Javascript в платформе Hivext с использованием API. Для новых разработчиков, приложение также развернется автоматически, после регистрации и активации аккаунта. После того как приложение развернется в облаке, можно перейти в папку Скрипты в Hive IDE там будут примеры, их можно редактировать и вообще поизучать реакцию платформы на изменения. |
Добавлен метод Redirect учитывающий масштабирование приложения на разные физические ноды.
Пример сохранения информации из HTML формы в базу данных через серверный javascript. Для редиректа между скриптами и страницами используется метод Redirect. Адрес примера: http://76d2841ad8c1c0c6d8d387c198a5d07b.app.hivext.ru/ Установить пример под своим аккаунтом: http://ide.hivext.ru/?solution=76d28...d387c198a5d07b После установки примера будет доступно следующие содержание Серверный javascript ------------------------------------------ user/add - получает параметры name, email и сохраняет в базе данных в типе users. hivext.local.SetHeader("Content-Type", "text/html"); // Получим подпись устройства. var signature = hivext.local.GetDeviceSignature(); // Формируем объект. var users = { name : hivext.local.GetParam("name"), email : hivext.local.GetParam("email") } // Создаем объект в базе данных. var response = hivext.data.base.CreateObject(appid, signature, "users", users); // Если произошла ошибка отправляем на failed.html if(response.result != 0) return hivext.local.Redirect("/failed.html"); // Если ошибки нет отправляем на showusers return hivext.local.Redirect("/showusers"); templates/showusers - ejs шаблон генерирующий html страницу с таблицей добавленных пользователей. <html> <head> <title><%= title %></title> </head> <body> <h2><%= title %></h2> <table border="1"> <% for(var i=0; i<users.length; i++) {%> <tr> <td><%= users[i].id %></td> <td><%= users[i].name %></td> <td><%= users[i].email %></td> </tr> <% } %> </table> <a href="index.html">Back</a> </body> </html> showusers - скрипт вызывающий шаблон templates/showusers и передающий ему данные из таблицы users. ////////////////////////////////////////////////// // Пример работы с шаблоном templates/showusers. ////////////////////////////////////////////////// // Укажем ноде что данные отдаются в html формате. hivext.local.SetHeader("Content-Type", "text/html"); // Получим подпись устройства. var signature = hivext.local.GetDeviceSignature(); // Запрашиваем объекты users из базы данных. var users = hivext.data.base.GetObjects(appid, signature, "users"); if(users.result == 0) { // Если запрос прошел без ошибок, продолжаем. // Вызов шаблона template/showusers и передача данных. var template = hivext.development.scripting.eval(appid, signature, "templates/showusers", { title : "Show users", users : users.objects }); if(template.result == 0) return template.response; else return template.error; } return users.error; Модель данных ------------------------------------------ users - содержит поля id, name, email. В типе users хранятся добавляемые объекты. Ресурсы ------------------------------------------ public_html/index.html - страница с формой, при успешном сохранении данных редирект на скрипт showusers, если ошибка на failed.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"> <meta http-equiv="Cache-Control" content="no-cache, no-store, max-age=0, must-revalidate" /> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Expires" content="Fri, 01 Jan 1990 00:00:00 GMT" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="robots" content="all" /> <title>HTML Form Example</title> <body> <b>Add new customer</b> <form method="post" action="user/add"> Name <input name="name" value="Hello World" /><br /> Email <input name="email" value="hello@world.com" /><br /> <input type="submit" value="Add" /> </form> </body> </html> public_html/failed.html - страница с отображением ошибки отравки данных <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"> <meta http-equiv="Cache-Control" content="no-cache, no-store, max-age=0, must-revalidate" /> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Expires" content="Fri, 01 Jan 1990 00:00:00 GMT" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="robots" content="all" /> <title>HTML Form Example</title> <body> <h1>Failed!</h1> <a href="index.html">Try again</a> </body> </html> |
Часовой пояс GMT +3, время: 23:51. |