Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Облачная платформа для разработки javascript приложений (https://javascript.ru/forum/project/6763-oblachnaya-platforma-dlya-razrabotki-javascript-prilozhenijj.html)

Hivext Technologies 20.12.2009 18:07

Облачная платформа для разработки javascript приложений
 
Приглашаю javascript разработчиков попробовать возможности облачной платформы Hivext Platform позволяющей создавать веб приложения и сайты на серверном Javascript.

Мы расширили серверный javascript дополнительными нативными объектами чтобы можно было работать с веб сервером (сессионные переменные, cookie, http заголовки и т.д.), базами данных (создание таблиц, записей, выборки по критериям) и файловым хранилищем. Можно производить вставки в Javascript на Java и использовать возможности базовых библиотек Java. Есть шаблонизатор на Embed Javascript (EJS).

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

Платформа объединяет в себе возможности хостинга и готового набора методов, функций, техник к которым можно обращаться из клиентского javascript по сети и серверного javascript локально, через нативные объекты.

Над платформой работает всего два человека и нам важны ваши советы чтобы сделать ее лучше. На все вопросы я могу ответить в этой теме.

Hivext Platform

Hivext Technologies 21.12.2009 04:34

Пример вывода данных на клиент из серверного 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

Riim 21.12.2009 05:29

Зарегистрироваться не получается, перехожу по ссылке из письма, вижу json-строку и все, пробую снова через форму, она говорит что я уже присоединен, но вот где форма авторизации, а не присоединения.

Hivext Technologies 21.12.2009 05:51

Riim,
Если json строка значит все ок - зарегились :)
А так да, надо добавить нормальное сообщение чтобы не сбивало с толку.
Форма авторизации в Hive IDE, откроем его в начале февраля 2010 года, там работы выше крыши сейчас :)

Kolyaj 21.12.2009 12:20

Зачем привносить из других языков стиль кодирования? В JS принят camelCase-стиль для всех идентификаторов, включая методы.

По-моему у вас Java головного мозга, по крайней мере симптомы :)

Цитата:

var sParam = hivext.local.GetParam("param1") + ""; // Преобразуем в тип string.
// Если param1 не указан значение по умолчанию "Hello world".
sParam = sParam || "Hello world";

Зачем здесь приведение к строке? Параметры вроде и так строками всегда прилетают.
И сигнатуру getParam лучше сделать в виде getParam(name, defaultValue), тогда вторая строчка будет не нужна.

Про JSON: не лучше добавить хост-объект JSON с методами parse и stringify? Это уже стандарт.

И какой движок у вас используется?

Hivext Technologies 21.12.2009 13:09

Kolyaj,

1. cameCase есть, можете писать и так hivext.local.getParam(...).
2. Можно поподробнее в чем была заподозрена ява головного мозга?
3. Приведение к строке, из-за того что в Javascript попадает Java объект String и JS его не понимает, приходится приведение типа делать. Тут пробовали бороться, но не так все просто, как может показаться на первый взгляд.
4. GetParam, совет хороший, перегрузим :)
5. JSON подумаем, можно и добавить
6. Двиг Rhino 1.6.

Kolyaj 21.12.2009 13:18

Цитата:

Сообщение от Hivext Technologies
2. Можно поподробнее в чем была заподозрена ява головного мозга?

В пункте 3 частичный ответ :) Получается слишком много букв для слишком простых действий.

Цитата:

Сообщение от Hivext Technologies
6. Двиг Rhino 1.6.

А TraceMonkey есть возможность прикрутить? С ним было бы намного вкусней.

Hivext Technologies 21.12.2009 13:30

Kolyaj,

Цитата:

В пункте 3 частичный ответ Получается слишком много букв для слишком простых действий.
Кто на ассемблере программировал тот в цирке не смеется. Это я про слишком много букв :)

Цитата:

А TraceMonkey есть возможность прикрутить? С ним было бы намного вкусней.
Можно будет, но только не до старта BETA версии. В любом случае разрабатывать можно начинать с тем движком который есть, как добавим TraceMonkey или v8, у скриптов можно сменить тип движка и все.

Ruslan 23.12.2009 01:42

Цитата:

3. Приведение к строке, из-за того что в Javascript попадает Java объект String и JS его не понимает, приходится приведение типа делать. Тут пробовали бороться, но не так все просто, как может показаться на первый взгляд.
хе-хе, уже ведутся работы что бы без этих лишних движений все работало великолепно

Ruslan 26.12.2009 00:16

готово, теперь работает без дополнительного "гемора"

B~Vladi 27.12.2009 16:50

Цитата:

Сообщение от Hivext Technologies
Приглашаю javascript разработчиков попробовать возможности облачной платформы Hivext Platform

В чём заключается ваша облачность? У вас реализована динамическая расширяемость хоста на уровне платформы? Или как у амазона?

Ruslan 27.12.2009 21:29

Цитата:

Сообщение от B~Vladi (Сообщение 39353)
В чём заключается ваша облачность? У вас реализована динамическая расширяемость хоста на уровне платформы? Или как у амазона?

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

B~Vladi 27.12.2009 22:16

Спасибо, ответ вполне устраивает.

Ruslan 27.12.2009 23:05

Цитата:

Сообщение от B~Vladi (Сообщение 39381)
Спасибо, ответ вполне устраивает.

на днях обновление зальем, там добавлена EJS (Embedded JavaScript) шаблонизация - http://embeddedjs.com/, прикольно работать. Вообще на JS писать серверный код "потяге" :dance: .

PeaceCoder 28.12.2009 00:33

Цитата:

Сообщение от Ruslan
Вообще на JS писать серверный код "потяге"

а как потяге это будет клиентам...

Riim 28.12.2009 07:32

А где инфу можно хранить, какая БД?

Ruslan 28.12.2009 11:54

Цитата:

Сообщение от PeaceCoder (Сообщение 39389)
а как потяге это будет клиентам...

я пишу на разных языках, JS один моих любимых, можно сказать что я сам первый клиент, пишу на базе платформы приложение для GPS навигации, так что уже одному клиенту нравится :yes:

Ruslan 28.12.2009 11:56

Цитата:

Сообщение от Riim (Сообщение 39399)
А где инфу можно хранить, какая БД?

инфа хранится в облаке, тип БД MySQL, на каждое приложение отдельная БД, к ней предоставляется дополнительный доступ через PhpMyAdmin

tenshi 28.12.2009 19:16

а нормальных шаблонизаторов нет?

Ruslan 28.12.2009 19:22

Цитата:

Сообщение от tenshi (Сообщение 39438)
а нормальных шаблонизаторов нет?

а что значит "нормальных"? пример в студию!

tenshi 28.12.2009 19:39

xslt, django templates

Ruslan 28.12.2009 19:50

Цитата:

Сообщение от tenshi (Сообщение 39448)
xslt, django templates

если эти шаблоны работают в обычном JS их легко прикрутить и к Hivext, просто сделав import скрипта, который реализовывает логику шаблона.
EJS мы вынесли отдельно (упростив с ним работу на пару движений) для проверки работоспособности идеи, потом добавим поддержку на уровне системы еще парочку самых востребованы...

tenshi 28.12.2009 19:54

xslt есть везде, а вот джанга только на питоне

Hivext Technologies 22.01.2010 19:05

У платформы почти готова среда разработки - Hive IDE
client-side - ExtJS
server-side - Hive API




Riim 23.01.2010 03:38

В чем преимущества вашей платформы по сравнению с node.js ?

Ruslan 23.01.2010 14:27

Цитата:

В чем преимущества вашей платформы по сравнению с node.js ?
вообще говоря сравнивать Node и Hivext будет не совсем верно.
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 похож на робота из коробки, у которого реализован богатый функциональный набор и он ждет чтобы вы вложили в него свой маленький кусочек вашей логики, которая заставит этого робота выполнять ваши команды, служить вам на пользу.

Hivext Technologies 27.01.2010 22:42

К бета тестированию присоединилось более 400 разработчиков.
Из поддерживаемых языков на сервере есть Javascript и Java.

1 февраля 2010 мы переведем тестирование в закрытую стадию чтобы учесть пожелания разработчиков, отловить все баги и доработать инструменты разработки.

Riim 29.01.2010 05:28

У каких-то хостеров еще будет эта платформа, или только у вас?

Ruslan 29.01.2010 11:39

надеемся будет повсеместно :)

Hivext Technologies 25.02.2010 23:37

Разработка приложений на javascript под facebook будет на расстоянии одного клика, полноценное окружение с хостингом, доменом, нужными для разработки под facebook API ключами, модулями и файлами - все это поднимается через Hive IDE за 10 секунд (хостинг, настройки сервера, доменное имя не нужно). При этом новое приложение сразу доступно через каналы распространения facebook, можно использовать совместно Facebook API и Hive API.

В разделе Ресурсы отображается содержание дискового пространства, выделяемого после создания нового приложения. Через Hive IDE можно создавать / редактировать / перемещать (drag&drop) / удалять файлы. Также есть доступ к ресурсам по FTP.


Hivext Technologies 24.03.2010 16:19

Открыт Hive IDE для веб разработчиков
 
Поддерживаются Java и серверный Javascript. Также можно загружать/редактировать ресурсы html, css, клиентский javascript и т.д. Доступ по FTP и через Hive IDE.

Бесплатные квоты
----------------------------
  • На один аккаунт 1 Гб дискового пространства;
  • На один аккаунт не более 3-ех приложений;
  • Временной лимит выполнения одного скрипта 30 секунд;
  • Процессорное время неограниченно;
  • Входящий/исходящий трафик не ограничен.

http://www.hivext.ru/

Hivext Technologies 21.05.2010 21:23

Реализована библиотека решений и автоматическое разворачивание решения в облаке
 
Добавлены готовые примеры программирования на серверном javascript в виде автоматически разворачиваемого приложения в облаке.

http://9caa7e89d9e3c823dc505687b6b25961.app.hivext.ru/

При переходе по ссылке "Установить примеры" под вашим аккаунтом развернется приложение с примерами по программированию на Javascript в платформе Hivext с использованием API.
Для новых разработчиков, приложение также развернется автоматически, после регистрации и активации аккаунта.

После того как приложение развернется в облаке, можно перейти в папку Скрипты в Hive IDE там будут примеры, их можно редактировать и вообще поизучать реакцию платформы на изменения.

Hivext Technologies 29.06.2010 00:37

Добавлен метод 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, время: 21:27.