Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Web Ирбис и Z-Ирбис :  ИРБИС Irbis
 
Электронный каталог НБ ВятГУ
Пользователь: iLq (IP-адрес скрыт)
Дата: 08, February, 2010 14:31

Ссылка на наш каталог
Пара самописных возможностей:
1. Поиск по дисциплинам. Организован через "поиск по словарю". Созданы специальные для этого словари:
а) форма_обучения
б) форма_обучения--факультет
в) форма_обучения--факультет--специальность
г) форма_обучения--факультет--специальность--семестр
д) форма_обучения--факультет--специальность--семестр--дисциплина

6912 0 (if(p(v691)) then 'DISCWEB_FO=',v691^O fi/)
6913 0 (if(p(v691)) then 'DISCWEB_FAK=',v691^O,'--',v691^A fi/)
6914 0 (if(p(v691)) then 'DISCWEB_SPEC=',v691^O,'--',v691^A,'--',v691^C fi/)
6916 0 (if(p(v691)) then 'DISCWEB_SEM=',v691^O,'--',v691^A,'--',v691^C,'--',v691^F, fi/)
6915 0 (if(p(v691)) then 'DISCWEB_SEM_DISC=',v691^O,'--',v691^A,'--',v691^C,'--',v691^F,'--',v691^D fi/)
6917 0 (if(p(v691)) then 'DISCWEB_SEM_DISC=',v691^O,'--',v691^A,'--',v691^C,'--ВСЕ СЕМЕСТРЫ--',v691^D fi/)

В двух словах принцип:
Используется вывод терминов словарей, которые описаны выше. Поиск осуществляется методом выбора поэтапно: формы обучения (словарь DISCWEB_FO=FO), затем факультета (DISCWEB_FAK= - в данном случае отбираются только те термины из словаря, которые начинаются с выбранной ранее формы обучения, которая передается через параметр T21TRM. Далее специальности (DISCWEB_SPEC= с аналогичным отбором по форме обучения-факультету), семестру и затем выводится уже список дисциплин, каждая из которой является ссылкой на список книг, соответствующих данной дисциплине.
!!!! В форматах применяется библиотека myunifor.dll и функция RegExp_Split из неё. Данная библиотека должна лежать в папке cgi-bin

2. Корзина. Возможен отбор в корзину нужных записей. В Корзине уже можно выгрузить все в RTF. Корзина организована на JavaScript+кукисах и модуле wwwirbis64.exe + PHP.
В дальнейшем при прикрутке авторизации переделаю, скорее всего, на базу заказов (или подобную).



Редактировано 2 раз. Последний раз 08.02.2010 14:47 пользователем iLq.

Re: Электронный каталог НБ ВятГУ
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 08, February, 2010 14:39

К корзине: я думаю, что логичнее в базе RDR добавить поле к каждому читателю и туда повторениями вписывать шифры документов с названием базы, которые пользователь отобрал для себя избранными. Правда это будет не очень хорошо для Ирбис32, поскольку размер записи сильно ограничен. Можно и отдельную базу для этого дела приделать. думаю так будет лучше :).

Offtopic: Кстати, я на этой неделе читаю для админов курсы. Думаю, что мы это реализуем. Ждите следующего понедельника...



Редактировано 2 раз. Последний раз 08.02.2010 14:41 пользователем Панев Максим.

Re: Электронный каталог НБ ВятГУ
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 08, February, 2010 15:41

Панев Максим написал(а):
-------------------------------------------------------
> К корзине: я думаю, что логичнее в базе RDR
> добавить поле к каждому читателю и туда
> повторениями вписывать шифры документов с
> названием базы, которые пользователь отобрал для
> себя избранными.

В таком случае функцией отбора не смогут пользоваться неавторизованные пользователи.

Re: Электронный каталог НБ ВятГУ
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 08, February, 2010 16:01

Тогда ничто не мешает организовать оба варианта. Если пользователь авторизован, то используется способ с основательным сохранением записей. Если же пользователь не авторизован, то использовать вариант Ильи.

Re: Электронный каталог НБ ВятГУ
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 08, February, 2010 17:35

> !!!! В форматах применяется библиотека myunifor.dll и функция
> RegExp_Split из неё. Данная библиотека должна лежать в папке cgi-bin

За одно это памятник можно поставить. :) Поясню: из этих строк следует, что Илья разработал собственную библиотеку UNIFOR, обеспечивающую поддержку регулярных выражений.

В связи с этим несколько вопросов:
1. На каком(название, сайт разработчика) компоненте базируется библиотека?
2. Есть ли в ней другие RegExp функции?
3. Какой синтаксис функций(простенький пример)?
4. На каких условиях ты планируешь распространять библиотеку?

Re: Электронный каталог НБ ВятГУ
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 08, February, 2010 17:39

Панев Максим написал(а):
-------------------------------------------------------
> Думаю, что мы это реализуем. Ждите
> следующего понедельника...

Какой ты видишь реализацию показа корзины -- вывода записей из нескольких баз? Если речь идёт об использовании исключительно средств WEB ИРБИС и JS, конечно…

Re: Электронный каталог НБ ВятГУ
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 08, February, 2010 19:11

По поводу RegExp. Эту библиотеку Александр Иосифович давным давно уже сделал. Еще когда мы его уговорили, что RegExp нужен.
А что в реализации загадка? Нет никакой сложности чтобы проверить, залогинен пользователь сейчас или нет. В зависимости от этого можно подключить соответствующую JS-функцию. Если логин есть, то мы по галке "В корзину" делаем Ajax-запрос и отсылаем шлюзу команду добавить в поле еще одно повторение (ну или запись в базу отдельную). Потом перечитываем содержимое корзины. Если же логина нет, то включается алгоритм Ильи, который корзину в куках держит. По моему там работы на день максимум.

А если про вывод записи: опять же можно и сортировку по базе сделать или просто вывести записи так, как добавлялись, но для каждой подписывать базу, в которой она лежит. Повторюсь: сложностей никаких.



Редактировано 3 раз. Последний раз 08.02.2010 20:26 пользователем Панев Максим.

Re: Электронный каталог НБ ВятГУ
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 08, February, 2010 23:07

Панев Максим написал(а):
-------------------------------------------------------
> По поводу RegExp. Эту библиотеку Александр
> Иосифович давным давно уже сделал.

Да, я умудрился пропустить ответ на своё же сообщение( [irbis.gpntb.ru] )... :( Смешно и грустно, но времени действительно на все ветки не хватает. :(

> А если про вывод записи: опять же можно и
> сортировку по базе сделать или просто вывести
> записи так, как добавлялись, но для каждой
> подписывать базу, в которой она лежит.

Каким форматом ты планируешь выводить записи из независимой базы? &uf('D и Brief? Тогда проблем действительно нет...



Редактировано 1 раз. Последний раз 08.02.2010 23:07 пользователем Кирилл Соколинский (СЗТУ).

Re: Электронный каталог НБ ВятГУ
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 09, February, 2010 12:23

Ну конечно же это uf(7) + какой-то из форматов. А чем тебя смущает fullwebr?



Редактировано 1 раз. Последний раз 09.02.2010 12:24 пользователем Панев Максим.

Re: Электронный каталог НБ ВятГУ
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 10, February, 2010 12:52

Меня смущают модельные поля... ;)

Re: Электронный каталог НБ ВятГУ
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 10, February, 2010 14:35

Модельные поля в смысле чтобы не пересекались с вновь добавляемым? Хорошо. Есть проблема. Можно решить несколькими способами.
1. Определить диапазон, за который модельные поля еще не скоро заползут и использовать его.
2. Все-таки завести отдельную базу для избранных записей. Думаю, что именно этим путем мы и будем решать завтра эту задачку.
Хотя внутреннее чутье мне говорит, что камушки подводные обязательно там будут. В общем, завтра все прояснится.

Re: Электронный каталог НБ ВятГУ
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 06, August, 2015 23:19

Реализовал без использования сторонних библиотек, но по сравнению с вариантом Ильи вывод терминов осуществляется очень долго.
Приведу пример кода файлика отображения терминов:
Цитата:
if v2228='KAF=' then (if &uf('+3D'v1003):&uf('+3D'&uf('Av2229#1')) then '<a href="<--CGI_PATH-->?LNG=',&uf('Av5500#1'),'&C21COM=T&I21DBN=',&uf('Av2221#1'),'&P21DBN=',&uf('Av3331#1'),'&T21CNR=100&T21PRF=SEM=&T21TRM=',&uf('+3E'v1003),'&Z21ID=',&uf('+3E',&uf('Av2225#1')),'">',&uf('G3_'v1003)'</a>',' - '&uf('KKAFCH.mnu!'&uf('G3_'v1003))'<br>' fi) fi,
Строка в ТВП формирования словаря SEM=
Цитата:
69103 0 mpl, &uf('+7W100#'),(if p(v691) then if v691^a<>'' and v691^b<>'' and v691^f<>'' then &uf('+7U100#'&uf('+97^A'v691^a'^B'v691^b'^C'if val(v691^f)<10 then '0'v691^f else v691^f fi)) fi fi/),&uf('+7G100'),(if p(g100) then if &uf('KFAK.mnu!'g100^a)<>'' and &uf('KKAFCH.mnu!'g100^b)<>'' then 'SEM=00_'g100^a,|_|g100^b,|_|g100^c fi fi/)
Подскажите, пожалуйста, как оптимизировать код? Получается, чем выше термин в словаре, тем дольше идет отображение. Также идет пербор всех терминов в словаре начиная с T21TRM=
Цитата:
в данном случае отбираются только те термины из словаря, которые начинаются с выбранной ранее формы обучения, которая передается через параметр T21TRM

Re: Электронный каталог НБ ВятГУ
Пользователь: woodyfon (IP-адрес скрыт)
Дата: 10, August, 2015 02:29

Отвечу сам:
Вывод терминов словаря (v1003) не нуждается в повторяющихся группах. Достаточно использовать следущий код:
Цитата:
if v2228='KAF=' then if &uf('+3D'v1003):&uf('+3D'&uf('Av2229#1')) then '<a href="<--CGI_PATH-->?LNG=',&uf('Av5500#1'),'&C21COM=T&I21DBN=',&uf('Av2221#1'),'&P21DBN=',&uf('Av3331#1'),'&T21CNR=100&T21PRF=SEM=&T21TRM=',&uf('+3E'v1003),'&Z21ID=',&uf('+3E',&uf('Av2225#1')),'">',&uf('G3_'v1003)'</a>',' - '&uf('KKAFCH.mnu!'&uf('G3_'v1003))'<br>' fi fi,



Редактировано 1 раз. Последний раз 11.08.2015 18:42 пользователем woodyfon.

Re: Электронный каталог НБ ВятГУ
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 21, August, 2015 19:26

woodyfon написал(а):
-------------------------------------------------------
> Подскажите, пожалуйста, как оптимизировать код?

Если Вы поясните, какую цель преследуете, возможно, я смогу что-то подсказать. Пока хочу лишь обратить внимание на два момента:
1. Если формат вывода словаря генерирует зоть какое-то значение (например, <!-- -->, то работа выполняется быстрее.

2. Чтобы отфильтровать выводимые термины, Вы можете воспользоваться S21ALL и задать в параметре запрос в стандартной форме. Соответственно, в запрос будут выходить только термины из записей, отобранных по запросу.

Re: Электронный каталог НБ ВятГУ
Пользователь: iLq (IP-адрес скрыт)
Дата: 10, November, 2016 13:24

Кирилл Соколинский (СЗТУ) написал(а):
-------------------------------------------------------
> 1. Если формат вывода словаря генерирует зоть
> какое-то значение (например, <!-- -->, то работа
> выполняется быстрее.


До этого дошел недавно сам эмпирическим путём. Когда не выводило ничего - запрос выполнялся очень долго и превышал таймаут ожидания в nginx. Сделал <!----> и заработало шустро.

С уважением, Лазарев Илья (Научная Библиотека ВятГУ)



Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.