DOS задачи глючат !

Обсуждение технических вопросов по продуктам Novell

DOS задачи глючат !

Сообщение dogma » 05 май 2006, 08:59

Не так давно (уже несколько лет) с переходом на четвертую версию нетвари (сейчас уже 6-ая) стали глючить дос-задачи. Сами они располагаются в сети, а юзера запускают их через ярлыки на рабочем столе.
Некорректная работа выражается в том, что приложение иногда запускается, иногда не запускается. На примере не работает сетевая функция получения сетевого имени пользователя (приложения в основном делались на Clipper), точнее выдает левое имя пользователя.
Еще пример, кто-то запустил программу, которая работает с таблицей a.dbf. , так же кто-то другой (пусть это будет юзер 'B') запускает приложение, которое тоже работает с данной таблицей, но уже в режиме запись. В результате у пользователя 'B' на экране выдается ошибка, что данный файл не найден или т.п., и соответственно далее работа с программой невозможна.

Может кто сталкивался с подобным?
Локально задачи работают нормально.
dogma
 
Сообщения: 8
Зарегистрирован: 05 май 2005, 10:45

Re: DOS задачи глючат !

Сообщение Dimerson » 05 май 2006, 09:17

dogma писал(а):Не так давно (уже несколько лет) с переходом на четвертую версию нетвари (сейчас уже 6-ая) стали глючить дос-задачи. Сами они располагаются в сети, а юзера запускают их через ярлыки на рабочем столе.
Некорректная работа выражается в том, что приложение иногда запускается, иногда не запускается. На примере не работает сетевая функция получения сетевого имени пользователя (приложения в основном делались на Clipper), точнее выдает левое имя пользователя.
Еще пример, кто-то запустил программу, которая работает с таблицей a.dbf. , так же кто-то другой (пусть это будет юзер 'B') запускает приложение, которое тоже работает с данной таблицей, но уже в режиме запись. В результате у пользователя 'B' на экране выдается ошибка, что данный файл не найден или т.п., и соответственно далее работа с программой невозможна.

Может кто сталкивался с подобным?
Локально задачи работают нормально.


Обьясняю популярно про имя пользователя.
Если программеры юзают недокументированное Netware API в котором номер соединения пользователя передается в регистре 8 бит то это проблема программеров. У меня данная трабла вылезла тоже на 411 тогда когда номер коннекта стал зашкаливать 255 ...

Выходов 3.

1. Заставить юзать нормальное Netware API
2. Застрелиться
3. Замутит workaround. Я делал так.

Перед запуском древней дебильной проги вешается резидент. Он обрабатывает прерывание которое используется в NetWare 2.15 API.
Данный резидент в памяти < 1 Кб. Следом за ним пускается досовая прога немерянного размера [юзающая NW DOS API - размер изза того что используется NDS] которая корректно получает имя пользователя и передает резиденту. После завершения данной проги Дубовым фоксам клипперам и прочей ботве всегда возвращается номер коннекта ну к примеру 16 и правильное имя пользователя.

Вуаля.

Если есть желание позаниматься сексом с ассемблером и практически не документированным VLM ASM API то можно заставить резидента дергать VLM. Безо всяких внешних прог. Тут начинаюся дебри.
Я быстрее сделал вариант описанный выше. С VLM API помог Peter Vandrovec - аффтар ncpfs [так как на NT/2000/XP поддерживается только некое подмножество полного VLM API] - заработало и оно так же но я его джо ума не доводил ибо первый вариант гибче.

Про совместное использование баз - надо просто правильно писать проги. Оно в принципе живет. Кроме того можно использовать файловые транзакции NetWare.

Если прога написана корректно то в 100% случаев помогает
на сервере OPLOCK LEVEL1=OFF и OPLOCK LEVEL2=OFF.
Аватара пользователя
Dimerson
 
Сообщения: 2966
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Re: DOS задачи глючат !

Сообщение Мещеряков Андрей » 05 май 2006, 13:05

Dimerson писал(а): OPLOCK LEVEL1=OFF и OPLOCK LEVEL2=OFF.

Второе да. Но первое ??? :? Что-то не помню такого параметра...
Аватара пользователя
Мещеряков Андрей
 
Сообщения: 1999
Зарегистрирован: 19 сен 2002, 14:55
Откуда: lipetsk

Re: DOS задачи глючат !

Сообщение Dimerson » 05 май 2006, 15:50

Мещеряков Андрей писал(а):
Dimerson писал(а): OPLOCK LEVEL1=OFF и OPLOCK LEVEL2=OFF.

Второе да. Но первое ??? :? Что-то не помню такого параметра...


lol я же не говрю SET

если через SET это в NCP Client Side File Caching = OFF
Аватара пользователя
Dimerson
 
Сообщения: 2966
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Напишите софтинку на WIN32, которая зачитает нужную

Сообщение Boris Morozov » 05 май 2006, 21:31

инфу из дерева и запишет в файлик на машине юзера. А ваша основная прога ее зачитает. Проблема с размерностью очень трудноизлечима.
Boris Morozov
 
Сообщения: 1333
Зарегистрирован: 05 июн 2002, 22:24
Откуда: Минск

Сообщение dogma » 06 май 2006, 03:39

А можно по подробнее про резидент. Я не совсем въехал. По всей вдиимости резидент должен перехватывать вызовы досовской программы, далее делать запрос в NetWare, получать ответ и отправлять ей (Dos-программе) ответы (имя пользователся и т.п.).
ТАк ли?
dogma
 
Сообщения: 8
Зарегистрирован: 05 май 2005, 10:45

Сообщение Dimerson » 06 май 2006, 04:44

dogma писал(а):А можно по подробнее про резидент. Я не совсем въехал. По всей вдиимости резидент должен перехватывать вызовы досовской программы, далее делать запрос в NetWare, получать ответ и отправлять ей (Dos-программе) ответы (имя пользователся и т.п.).
ТАк ли?


Практически так. То что TSR вернет программе это другое дело.
Но по крайненй мере не левое имя полученное из номера коннекшена обрезанного до 8 байт. Обращаться к NDS/Bindery за именем пользователя надо используя _документированное_ netware api во избежание проблем в ближайшем будущем [ну уж не юзать АПИ NetWare 2.15]
Аватара пользователя
Dimerson
 
Сообщения: 2966
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Сообщение dogma » 11 май 2006, 03:10

Для использования NetWare API нужен NovellClient, так? А как можно обойтись без него?
dogma
 
Сообщения: 8
Зарегистрирован: 05 май 2005, 10:45

Сообщение Dimerson » 11 май 2006, 04:45

dogma писал(а):Для использования NetWare API нужен NovellClient, так? А как можно обойтись без него?
Можно даже обойтись без сервера ! :)

Если ваша прога единственное что хочет от сервера это получить имя ... так дайте ей эту возможность.
Аватара пользователя
Dimerson
 
Сообщения: 2966
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70


Вернуться в Novell

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

cron