Форумы > Курсовые и дипломные работы > Изучение Libretto

Страницы: 1 2 3 4 5 6 7 8 9 10 11

Поиск
Автор Сообщение
malykh #
7 фев 2013
Вопрос не понял, но скажу, что полагаться на алгоритм генерации и назначения id нельзя. Какой назначен объекту - такой назначен. Гарантируется лишь доступность объекта по id. Подробнее про такие ключи (но в приложении к БД).
Sammy #
7 фев 2013
ок, спасибо
Sammy #
1 мар 2013
как получить все объекты указанного класса из bdb? делаю так: def main* = { fix cfg = SimpleConfig((%FirstClass, %SecondClass)) fix db = cfg.open("/home/sammy/bdb") work(db) as sa { var obj1 = sa.new(%FirstClass) {title="First"} var obj2 = sa.new(%FirstClass) {title="Second"} } work(db) as sb { var obj3 = sb.new(%SecondClass) {title="Third"} var obj4 = sb.new(%SecondClass) {title="Fourth"} } db.close() } получаю объекты: work(db) as sa { sa.all(%FirstClass).title.println() } выводится "object 19373033 of class libretto/storage/Work" пробовал так: work(db).all(%SecondClass).title.println(), но так выводятся только объекты последнего класса (если: work(db).all(%FirstClass).title.println() выводится пустота)
malykh #
1 мар 2013
println() просто переводит строку. Для печати значения из контекста нужно использовать println($): sa.all(%FirstClass).title.println($) А выводимое как object 19373033 of class libretto/storage/Work - это результат работы всей программы (а не вывод println).
Sammy #
1 мар 2013
почему-то, что бы я ни ставил в аргумент println, результат такой же
malykh #
1 мар 2013
Значит не доходит до println (где-то пустота). Попробуйте добавлять в путь в разных местах: sa.all(%FirstClass).println($).title.println($) (println "пропускает" через себя контекст без изменения)
Алексей Быков #
21 мар 2013
Пытаюсь добавить объект класса Ingridient классу Recipe: def ingridFormProcess = { fix id_ing = ("id_ing".params!) fix id_ing_rec = ("id_ing_rec".params!) fix name_ing? = ("name".params!) fix value_ing? = ("value".params!) fix type_ing? = ("type".params!) work(base.db) as w.{ var ingridient = base.ingrid(id_ing.toInt)?{case _ => w.new(%Ingridient)} ingridient.{name = name_ing; value = value_ing; type = type_ing} control/recipeFormProcessIng(ingridient, id_ing_rec) } } def recipeFormProcessIng(obj_ing, id)? = { work(base.db) as w.{ var recipe = base.recipe(id.toInt)?{case _ => w.new(%Recipe)} recipe.{fn = ""; instructions = ""; duration = ""; ingr = obj_ing} var ingr = w.new(%Ingridient) html.view/recipeForm(recipe, ingr) } } вылазит вот такое (JE 5.0.34) Lock expired. Locker 28473328 64_qtp27241660-52_Txn: waited for lock on database=configurationDatabse LockAddr:29343256 LSN=0x0/0x8677 type=READ grant=WAIT_NEW timeoutMillis=500 startTime=1363866743125 endTime=1363866743625 Owners: [<LockInfo locker="22033632 63_qtp27241660-52_Txn" type="WRITE"/>] в чем проблема может быть?
Ирина Кустова #
30 апр 2013
У нас возникает вопрос про авторизацию. Как она правильно делается в Libretto? У нас есть "def sessionId: String - возвращает идентификатор сессии def session - возвращает внешнее поле для чтения/изменения данных сессии. Ключом обязательно должен быть декларативный (определенный при помощи object) объект, который является экземпляром класса libretto/web/SessionKey. В качестве значений пока понимаются String, Int." 1. Если надо сессию только на некоторое время, пока пользователь не закрыл браузер. Нам же надо положить какую-то информацию о пользователе в сессию, а потом как-то её оттуда получать и обрабатывать по мере надобности? то есть, a) надо создать, например, object UserId extends SessionKey - Id пользователя класса SessionKey. b) Добавить Id в сессию def addIdToSession(uId) = { session.{UserId to uId} //Объясните, пожалуйста, почему пишется to, а не UserId = uId например? } c)Написать функцию получения Id из сессии def getUId = { UserId.session!?("guest") //?() - обработчик пустоты, возвращает "guest", если UserId пуст (да?) } Примерно так или совсем по-другому? 2. Если надо информацию о деятельности пользователя (сессии) хранить даже если он браузер закрыл, ещё надо как-то (хэшировать и) складывать данные, которые лежат в сессии, в базу вместе с Id сессии, в куки писать Id этой сессии, и потом Id сессии из куков будет читаться, и данные из сессии можно будет получить? Если так, то как будет выглядеть восстановление сессии? Чем писать информцию в куки?
Vladimir #
5 мая 2013
Читайте выжимку с форума: https://docs.google.com/document/d/1KNrSSUs9o1V3ooOe6N3wCZBnX_c3VH90i6bTYQveMvc/edit Там есть про работу с сессией. def sessionPut(key: SessionKey, value) = session.{ key to value } def sessionGet(key: SessionKey)? = key.session! В прикрепленном файле реализован простейший способ авторизации через выделенный объект, который является ключом в сессии. Были трудности с удалением ключа из сессии. Не работает sessionPut(KEY, ()) Работает только session.{key to ()} Хотя по идее с точки зрения API варианты идентичны. Для А.А. Малых будет интересно: cловил стабильную багу, известную как NoSuchElement при использовании следующей конструкции: session.key-- Стабильна и для последней обновленной версии. Для экономии времени в контроллере надо раскомментировать строчку помеченную //constant error
Ирина Кустова #
15 мая 2013
Ирина Кустова
16 мая 2013
Кривая не оптимизированная библиотека для дат. def main* = { getMsLocal(jMs,9) as dt.println(<<%{formatDate(getDate(dt),"dd.mm.yyyy")} %{formatTime(getTime(dt),"hh:mm:ss:msms")}>>!) }
Vladimir #
16 мая 2013
Были трудности с удалением ключа из сессии. Работает только session.{key to ()} Поправка: Данный вариант не удаляет ключ из сессии, а задает его значение равным пустому множеству. Для удаления ключа используется функция session.removeKeys(key) можно указать несколько ключей session.removeKeys(1..10) или session.removeKeys((key1, key2))
Ирина Кустова #
16 мая 2013
Немного исправлена Кривая не оптимизированная библиотека для дат. def main* = { getMsLocal(jMs,9) as dt.println(<<%{formatDate(getDate(dt),"dd.mm.yyyy")} %{formatTime(getTime(dt),"hh:mm:ss:msms")}>>!) } .
Ирина Кустова #
26 мая 2013
Скажите пожалуйста, кто-то делает библиотеку загрузки файлов? Если нет, то что потребуется, чтобы сделать её в Libretto?
malykh #
26 мая 2013
Скажите пожалуйста, кто-то делает библиотеку загрузки файлов? Если нет, то что потребуется, чтобы сделать её в Libretto? Вспомогательные функции есть. Доступ до тела запроса. Читаем, парсим как multipart/form-data. Опционально или держим в памяти, или сохраняем в файл (временный или по указанному пути). Работа с файлами: 1, 2, 3.

Страницы: 1 2 3 4 5 6 7 8 9 10 11

Форумы > Курсовые и дипломные работы > Изучение Libretto
Чтобы написать сообщение, необходимо войти или зарегистрироваться