Удаление записей по роли
note – таблица, тип данных.
запись – строка в таблице note.
Постановка задачи
Допустим, существует приложение с таблицей данных note, где разные пользователи могут создавать читать и изменять любые записи, а создавать и удалять – только собственные. Пользователи не имеют пермишенсов в приложении; на них назначена роль user с политикой (note/* : CREATE, READ, UPDATE), аналогичная политика существует и в роли owner. Нужно сделать механизм удаления записей с контролем прав, так, чтобы пользователи не смогли удалить записи других пользователей.
Читать далее…
Работа с JSON в скриптах.
Если работа со скриптом ведется на “легком” уровне, и данные посылаются в текстовом виде, то скорее всего будет использоваться JSON-кодирование. Программистам JavaScript и ActionScript очень хорошо знаком синтаксис вида:
var response = {
b : 2,
c : [ 2, 3, {
ert : 8
} ],
a : 1
}
Если обернуть это все в кавычки и компактно записать, то и получится как-раз JSON-строка:
"{\"b\":2,\"c\":[2,3,{\"ert\":8}],\"a\":1}"
Читать далее…
Аннотации в скриптах
В своих скриптах можно встраивать аннотации – это такие маленькие инструкции для сервера, выполняющего скрипт. Аннотации бывают следующие:
- @auth – скрипт разрешено вызывать только авторизированным пользователям.
- @local - Скрипт может вызывать только серверный код. При обращении к скрипту клиента по сети произойдет исключение.
- @req(‘парам1′, ‘парам2′, …) - Указывает обязательные параметры для передачи скрипту
- @url(‘адрес’) - Адрес по которому будет доступен скрипт по сети
При невыполнении первых трех из перечисленных аннотаций будет вызвано исключение и скрипт вернет ошибку. Читать далее…
Организация серверного кода
Эти руководства я сформировал во время использования SSJavaScript, но, скорее всего, их можно использовать и с другими языками.
1. Используйте конструкцию try-catch.
Чтобы улучшить читаемость кода и установить стандартную систему отлова ошибок, оборачивайте весь основной код скрипта в конструкцию try-catch. Использование её на языке SSJavaScript выглядит следующим образом:
//@auth
try {
var getObjectsResponse = hivext.data.base.GetObjectsByRole(appid, session,
'typeName', 'roleName');
if (getObjectsResponse.result != 0) throw getObjectsResponse;
} catch (ex) {
return { error: ex };
}
Таким образом, упрощается обработка результата на клиенте: если в ответе скрипта присутствует поле error – значит, произошла ошибка при выполнении.
Как работает инструкция Import
В качестве серверного языка используется SSJavaScript.
- Инструкция import вставляет содержимое одного скрипта в другой при компиляции.
- Имена скриптов начинаются с “com.hivext.scripting”.
- При изменении импортируемого скрипта нужно также заново компилировать все скрипты, его импортирующие. Если вложение не одно – нужно пройтись по всей линии импортов в дереве связей скриптов.
- Если в импортируемом скрипте стоит алиас @req(param1, param2), то этот алиас будет существовать и во всех скриптах, импортирующих его.
- Будьте осторожны при импорте, избегайте ошибок дублирования имен переменных и функций. При импорте становится сложнее отлаживать код.
Как выглядит мой рабочий процесс?
Client-side я пишу на ActionScript3 с использованием Flex SDK 4.5. Среда разработки: Intellij IDEA, по лицензии EAP. Экспорт relise-версии делаю через FlashBuilder 4, в нем же разрабатываю скинирование компонентов. Flex SDK дает мне возможность гибко и быстро разрабатывать и расширять приложение, множество компонентов и отличная архитектура позволяют мне обходится без использования сторонних библиотек, исключением из которых является библиотеки as3corelib для работы с JSON и Hive SDK для более простой работы с сервисами Hivext. Среда Intellij IDEA позволяет удобно и быстро создавать и модифицировать код, лучше и удобнее других редакторов. Adobe FlashBuilder 4 незаменим при работе со скинами компонентов и имеет готовый функционал по экспорту релиза.
Система контроля версий – Git, локальная, с синхронизацией с резервными хранилищами.
Серверная часть пишется на платформе Hivext, в онлайн редакторе. Там же по FTP выкладываю публичную версию клиента. Промежуточные версии запускаю на локальной машине. Для работы с IDE используется браузер SRWire Iron, для отладки и запуска клиента – Firefox последней стабильной версии, с использованием плагинов FireBug, FlashBug и AMF Explorer. Firefox в связке с упомянутыми выше плагинами является лучшим средством отладки клиент-серверных приложений.
По проектам ведется документация, не для заказчика, а под себя, чтобы запомнить алгоритмы и принципы работы различных функций. Подходящее место для ведения документации – Google Docs.
Планирование развития логики приложения.
Представим, что мы разрабатываем форум и дописали его до некоторой версии 1.0. Мы переводим его со стадии бета-тестирования в стадию нормальной работы и оставляем в покое. Дальше мы продолжаем дополнять код, работая на тестовом сервере. Когда подходит очередь опубликовать новую версию, мы выбираем самое спокойное время и временно приостанавливаем работу сайта, заливая новые файлы по FTP, запуская скрипты, модифицирующие базу данных. Таков обычный цикл развития клиент-серверного приложения.
Hivext для Flex-программистов.
С точки зрения Flex-программиста, что нужно, чтобы написать интернет-приложение? - Нужны две его части – клиент и сервер. Клиента пишет Flex-программист, серверную часть – серверный программист. Также нужен настроенный сервер, на котором она будет располагаться и работать.
Что нужно Flex-программисту, чтобы написать интернет-приложение? - Сервер и серверный программист, со своим опытом работы с серверами и знаниями серверных языков и технологий.
Пока у вас нет сервера и серверного программиста, вы не сможете написать интернет-приложение. Можно купить первое и нанять второго, но можно… Использовать Hivext.
Читать далее…