Форум » [x]Harbour » Запуск проги ? » Ответить

Запуск проги ?

Dima: Есть сетевой ресурс ему назначена буква диска. От туда запускается программа и подхватывает DLL которые лежат там же. А если запускать программу с UNC пути , DLL так же увидятся и подхватятся ?

Ответов - 39, стр: 1 2 All

Haz: подхватывает без проблемм ( если ты про ADS )

Pasha: Dima пишет: А если запускать программу с UNC пути , DLL так же увидятся и подхватятся ? Я в основном так и делаю, сетевой диск не подключаю. С dll по unc все в порядке

Dima: Haz пишет: подхватывает без проблемм ( если ты про ADS ) Да про него ;)


Dima: Pasha пишет: Я в основном так и делаю, сетевой диск не подключаю Что то мне показалось что по UNC прога дольше грузится

Pasha: Dima пишет: Что то мне показалось что по UNC прога дольше грузится Возможно, первый запуск будет и медленнее, так как выполняется поиск компьютера, проверка прав доступа и прочее. В случае сетевого диска это уже выполнено. Но я с такими мелочами не заморачиваюсь, в случае ЛВС это небольшое замедление.

Dima: Pasha OK , понял , так и сделаю. Нарисовалась проблема. На серваке стоит ADS , OS Windows XP По сети не дает подключится более чем 9 юзерам. Нужен какой то хак или все же придется ставить серверную OS Windows ?

Dima: Как узнать UNC путь с которого была запущена прога ? То есть если я запустил c \\127.0.0.1\sklad$\sklad.exe где выловить этот UNC путь....

Dima: Dima пишет: Как узнать UNC путь с которого была запущена прога ? Вроде есть решение. Не поможет кто то знающий перевести это в Harbour ? [pre2] function GetUNCName(PathStr: string): string; var bufSize: DWord; buf: TUniversalNameInfo; msg: string; begin bufSize := SizeOf(TUniversalNameInfo); if (WNetGetUniversalName(PChar(PathStr), UNIVERSAL_NAME_INFO_LEVEL, buf, bufSize) > 0) then case GetLastError of ERROR_BAD_DEVICE: msg := 'ERROR_BAD_DEVICE'; ERROR_CONNECTION_UNAVAIL: msg := 'ERROR_CONNECTION_UNAVAIL'; ERROR_EXTENDED_ERROR: msg := 'ERROR_EXTENDED_ERROR'; ERROR_MORE_DATA: msg := 'ERROR_MORE_DATA'; ERROR_NOT_SUPPORTED: msg := 'ERROR_NOT_SUPPORTED'; ERROR_NO_NET_OR_BAD_PATH: msg := 'ERROR_NO_NET_OR_BAD_PATH'; ERROR_NO_NETWORK: msg := 'ERROR_NO_NETWORK'; ERROR_NOT_CONNECTED: msg := 'ERROR_NOT_CONNECTED'; end else msg := buf.lpUniversalName; Result := msg; end; [/pre2]

Pasha: Dima пишет: Нарисовалась проблема. На серваке стоит ADS , OS Windows XP По сети не дает подключится более чем 9 юзерам. Нужен какой то хак или все же придется ставить серверную OS Windows ? Мне казалось, что это ограничение было в win2k, а в x[ его уже нет. Оказалось, что это не так: http://support.microsoft.com/kb/314882/ru [qoute]Примечание. В операционной системе Windows XP Professional максимально допустимое число компьютеров, которые могут быть одновременно подключены к данному компьютеру через сеть, равно 10. При этом учитываются как транспортные подключения, так и подключения общего доступа к ресурсам. В операционной системе Windows XP Home Edition максимально допустимое число компьютеров, которые могут быть одновременно подключены к компьютеру через сеть, равно 5. Указанное ограничение учитывает число одновременных сеансов, установленных с других компьютеров, но не учитывает подключения, выполненные с удаленных компьютеров средствами администрирования. [/qoute] Поиск в гугле "win xp ограничение 10 подключений" дает массу рекомендаций, как его обойти. Пишут, что это ограничение протокола tcpip в windows, а не ограничение, связанное с лицензией.

Pasha: Dima пишет: Как узнать UNC путь с которого была запущена прога ? То есть если я запустил c \\127.0.0.1\sklad$\sklad.exe где выловить этот UNC путь.... Так есть же функция ExeName(). Или надо что-то другое ?

PSP: Pasha пишет: что это ограничение протокола tcpip в windows, а не ограничение, связанное с лицензией Крякается tcpip.sys (http://forum.sysadmins.su/index.php?showtopic=4436), но это - нарушение лицензии. Пункт 1.3 лицензии: http://www.google.ru/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CDAQFjAA&url=http%3A%2F%2Fdownload.microsoft.com%2Fdocuments%2Frus%2Flicensing%2Fpdffiles%2FWindows_XP_Pro_SP2.pdf&ei=PvJmUaHfDsLw4QTBh4DgDQ&usg=AFQjCNELrl5KzZSImMr00IUP7yy7rwu6sg&bvm=bv.45107431,d.bGE&cad=rjt

Dima: Pasha пишет: Так есть же функция ExeName() Да оно , спасибо !!! А я юзал truename()

Dima: PSP пишет: Крякается tcpip.sys В принципе да я крякал его у себя на компе , иначе Utorrent погибал , не уверен что это касается и локальной сети.

PSP: Касается. :) Подключение устройств. Вы можете разрешить подключение к Рабочей станции не более десяти (10) компьютеров или других электронных устройств (каждое из них - "Устройство") для использования одной или нескольких из следующих служб Программного обеспечения: файловых служб (File Services), служб печати (Print Services), служб IIS (Internet Information Services), общего доступа к подключению к Интернету (Internet Connection Sharing) и телефонных служб. В эти десять разрешенных соединений входят любые непрямые соединения, созданные с помощью "мультиплексирования" или другого программного обеспечения или оборудования, обеспечивающего пулинг или объединение соединений. Это ограничение (максимум 10 соединений) не распространяется на другие виды использования Программного обеспечения, например на синхронизацию данных между Устройством и Рабочей станцией, при условии, что в каждый момент времени только один пользователь использует, осуществляет доступ к, отображает или запускает Программное обеспечение. Этот пункт 1.3 не дает вам прав доступа к Сеансу Рабочей станции с какого-либо Устройства. Под "Сеансом" понимается любое использование Программного обеспечения, обеспечивающее функциональные возможности, аналогичные тем, которые предоставляются конечному пользователю, взаимодействующему с Рабочей станцией с помощью любой комбинации периферийных устройств ввода, вывода и отображения. Вот тут-то LetoDB и выручает. Он не создает ни одного из вышеупомянутых подключений, поэтому эти ограничения на него не распространяются. :)

Dima: PSP Пробовал реально больше 10 подключений к LetoDB серверу ? Думается что коннект с одного IP к другому что в LetoDB что в ADS , виндой будет восприниматься одинаково. ЗЫ Подход примерно одинаков что в LetoDB что в ADS , или не прав я ?

Pasha: Пишут что в Windows 7 этого ограничения нет. По моему опыту. Если подключений более 10-ти, то как правило стоит серверная ОС. Но встречается и winxp. Всмоминаю, что жалоб на такую ошибку от этого клиента не поступало. Это вроде бы ограничение на одновременные прдключения. Может быть, такой случай просто не встречался. Везде стоит letodb, конечно. Ограничение на колличество пользователей - это другое ограничение. Для windows 7 это 20 пользователей, см.команду net config server

PSP: Dima Вот скриншот, 11 станций и одно ожидание соединения Несколько одинаковых имен в колонке Remote Address - глюк TCPView, видимо. На самом деле - это разные станции. ps. Запущено на Win XP Pro

Dima: Ну так та же картинка будет и с ADS. А пускало не более 9 юзеров через ADS у меня потому что некоторые просто подключились к этому компу минуя ADS , дабы поюзать общие папки и файлы.

PSP: В случае с letodb пользователи не подключаются к компу, не используют для подключения средства виндовс. Просто клиентская часть общается с серверной посредством открытого tcpip-сокета. На скриншоте 11 активных подключений. За каждым - конкретный комп. Никого не отключают... :) Они не используют никакие общие ресурсы. А вот скриншот, на котором показаны текущие пользовательские сеансы на этом же компе. Тут пользователи подключились и используют разделенный ресурс, но никак на соединения letodb не влияют Вот когда в этом списке будет 10 пользователей, 11-му не позволят подключиться.

Dima: PSP пишет: Просто клиентская часть общается с серверной посредством открытого tcpip-сокета Теперь понял. Да в этом плане LetDB конечно выгоднее , но к сожалению он уступает по скорости ADS. Свою задачу переделал и под LetoDB и под ADS и сравнил в работе , пощупал ,сделал выводы и остался на ADS. А жаль , LetoDB мне понравился.

PSP: Дима, что-то мне кажется, что у АДС должен быть подобный механизм подключений клиентов к серверу. Неужели нет? Без этого теряется всякий смысл. Александр Кресин в самом первом посте, посвященном letodb, писал "...как ADS..." (http://clipper.borda.ru/?1-20-0-00000457-000-10001-0-1212997574) Почему ты пытаешься использовать расшаренные ресурсы сервера? Или я чего-то не понял?

Dima: PSP пишет: Почему ты пытаешься использовать расшаренные ресурсы сервера? В ADS нет такого механизма как в LetoDB, DataPath из LetoDB.ini Поэтому подключившись к ADS по IP и порту посредством AdsConnect я должен знать где лежат базы а эти вещи можно прописать в ADS.INI и оттуда считать. Затем настроить Set Path и Set Default и все. Если кратко то LetoDB cервер знает где лежат базы а ADS сервер не знает. Поэтому и открываю базы через скрытые расшаренные папки. Возможно я не прав и можно сделать иначе , пусть меня научат , буду благодарен.

PSP: http://devzone.advantagedatabase.com/dz/webhelp/advantage9.0/mergedProjects/ace/api1/adsconnect.htm По-моему, всё то же самое... :)

Dima: PSP LOL :) Да нет же. У ADS сервера нет аналога LetoDB.ini Leto сервер будучи запущенным в курсе дела где лежит база ADS cервер этого не знает. Об этом знает только клиент ADS. Там есть конечно ADS.INI , но его юзает только клиент [pre2] All Advantage clients based on the Advantage Client Engine can use an initialization file, ads.ini [/pre2]

PSP: О как!.... Тогда действительно ты можешь столкнуться с проблемой ограничения на количество подключений.

Dima: PSP пишет: Тогда действительно ты можешь столкнуться с проблемой ограничения на количество подключений Так уже ;) Бум ставить Windows Server 2008 x86.

Pasha: PSP пишет: О как!.... Тогда действительно ты можешь столкнуться с проблемой ограничения на количество подключений. То есть в таком случае можно использовать letodb как сервер БД, а сам сервер как сервер приложений использовать нельзя. Проще говоря, exe с сервера уже не запустишь, будет отлуп по достижении 10-ти подключений. Хотя я года 3 назад сделал утилитку, которая средствами letodb синхронизирует папку приложений на сервере и рабочей станции.

PSP: Pasha пишет: То есть в таком случае можно использовать letodb как сервер БД, а сам сервер как сервер приложений использовать нельзя. Проще говоря, exe с сервера уже не запустишь, будет отлуп по достижении 10-ти подключений. Да. Чтобы пользоваться расшаренным ресурсом, пользователь должен создать подключение, которое входит в перечень ограничиваемых. Свою прогу запускаю с локальных дисков, есть сервис обновления.

PSP: Dima пишет: Так уже ;) Бум ставить Windows Server 2008 x86. Клиентские лицензии потребуются. Но они недорогие, если не использовать подключения к серверу терминалов.

Pasha: Dima пишет: Да в этом плане LetDB конечно выгоднее , но к сожалению он уступает по скорости ADS. Свою задачу переделал и под LetoDB и под ADS и сравнил в работе , пощупал ,сделал выводы и остался на ADS. Дима, а можно подробнее, на каких операциях ads превосходит letodb ? Интересует конечно производительность в сети, локальный вариант интереса не представляет.

Dima: Pasha пишет: Дима, а можно подробнее, на каких операциях ads превосходит letodb ? Конечно можно и даже нужно так как хочется что бы LetoDB все таки не уступал в скорости ADS , да и нравится мне LetoDB. Но это все завтра , нужно обмозговать.

Dima: PSP пишет: Клиентские лицензии потребуются Типа для чего ? Не понял я ;) 60 дней сервер 2008 вякать ни чего не будет , при установке без ключей. Через 60 дней будет гав гав делать после перезагрузки в течении 15 секунд. "Брал" версию Microsoft Windows Server 2008 (x86 RTM Retail-WZTiSO) Русская версия Теперь цитата из раздачи [pre2] Сборки, распространяемые WZTeam с 01.02.2008 = сборки с MSDN от 04.02.2008. В Windows Server 2008 нет режима ограниченной функциональности! Поэтому Вы можете использовать свою, честно скачанную копию Windows Server 2008, неограниченно долго, без ввода ключа и без активации. - Льготный период использования Windows Server 2008 состовляет 60 дней. По истечении льготного периода без регистрации/активации при входе пользователя в систему 15 секунд отображается предупреждение о том, что надо активироваться и в углу отображается вотермарк, говорящий о том, что копия неподлинная. Кроме того, обрезается доступ к обновлениям. Вот и всё. Не такие уж и большие ограничения. Пока не появилось активаторов, жить можно и так. [/pre2]

PSP: Ну, если сам сервак не покупать, то и лицензии не нужны. Но! Если в будущем захочется использовать сервер терминалов, придется все покупать: и сервак, и пользовательские лицензии, и лицензии на удаленный доступ.

Dima: PSP А на фик он нужен сервер терминалов ? Есть сервер 2008 + ADS , что еще может быть лучше ? Под терминалом есть тут одна задачка 1С называется (настраивал не я) , при 10 подключениях тормоз обеспечен.

Dima: Pasha В основном по скорости оба сервера работают одинаково , Leto чуть чуть проигрывает. А тормоза у меня в бровсах. При чем связки (сетевые) Clipper+ADS, Harbour+ADS работают на ура. В ряде бровсов где в качестве колонок используются динамически вычисляемые получаем тормоз. Ну например прайс-лист 1. Код товара // обычная колонка 2. Наименование товара // обычная колонка 3. Цена склада // вычисляемая колонка с расчетом по другим базам 4. Цена клиента // вычисляемая колонка с расчетом по другим базам 5. Остаток на складе // вычисляемая колонка с расчетом по другим базам Вот в таком бровсе Leto тормозит Так же он тормозит на бровсе по базе которой хожу и она имеет порядка 10 отношений (Relation) с другими базами. Пожалуй это все. Я не буду сравнивать фильтра или Scope с фильтрами. Там все ясно.

Pasha: Dima пишет: 3. Цена склада // вычисляемая колонка с расчетом по другим базам 4. Цена клиента // вычисляемая колонка с расчетом по другим базам 5. Остаток на складе // вычисляемая колонка с расчетом по другим базам Вот в таком бровсе Leto тормозит А какой расчет ? Меня даже не сам расчет интересует, а какие выборки из других баз нужны для расчета ? По relation вопросов нет, там мне все понятно.

Dima: Pasha пишет: А какой расчет ? Меня даже не сам расчет интересует, а какие выборки из других баз нужны для расчета ? Ну например Цена клиента. Мне нужно пройтись по нескольким базам (поиск в них по dbseek разумеется) , что бы расчитать "добавку" (+или-) к цене прайса. В этих базах различные процентовки по разным категориям с учетом кодов клиентов. Например по группе товара такой то процент к цене такой то , к фирме производителю такой то. Есть еще индивидуальные скидки/наценки и их тоже нужно учесть. Что касается остатка на складе. В базе такой поиск идет по коду , но один и тот же код может встретиться не один раз по причине разных цен прихода. То есть если есть в базе 3 одинаковых кода товара значит по каждому из них ведется отдельная складская карточка. Получается что бы вывести остаток для одной строки бровса в данном случае мне нужно взять остатки из 3 карточек. Фиг знает вроде понятно объяснил ;) PS ADS с этим легко справляется и тормозов нет совсем.

Pasha: Пока не понятно, за счет чего возникают тормоза. Бывает такой случай, когда вычисляемое поле для расчета значения обращается опять к основной таблице бровса, выполняя seek/skip ? В этом случае сбросится skip-буфер, что конечно скорости не прибавит, а убавит.

Dima: Pasha пишет: Бывает такой случай, когда вычисляемое поле для расчета значения обращается опять к основной таблице бровса, выполняя seek/skip ? Нет не бывает. Глянул код , бывает такое но ни каких skip/seek не делает , просто считывает значение из основной таблицы (из нужных полей).



полная версия страницы