On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
Andrey
постоянный участник




Пост N: 4156
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.05.15 22:44. Заголовок: Вопросы новичка...


Взял последнюю версию с "Новая страница с бинарниками", установил на Win2008 Server, чуток помучился с портом...
Собрал на МиниГуи+BCC 551 - \MiniGui\batch\hbmk2.bat rddleto.hbp
Получил rddleto.lib - 131072 байт - правильный ли размер ?
И еще Warning-и лезут:
lib\.hbmk\win\bcc\rddsys.c:
source\client\letocl.c:
source\client\leto1.c:
source\client\letomgmn.c:
source\common\blowfish.c:
source\common\common_c.c:
source\common\hbip.c:
TLIB 4.5 Copyright (c) 1987, 1999 Inprise Corporation
/P32 lib\rddleto.lib -+ lib\.hbmk\win\bcc\rddsys.obj -+ lib\.hbmk\win\bcc\letocl.obj -+ lib\.hbmk\win\bcc\leto1.obj -+ lib\.hbmk\win\bcc\letomgmn.obj -+ lib\.hbmk\win\bcc\blowfish.obj -+ lib\.hbmk\win\bcc\common_c.obj -+ lib\.hbmk\win\bcc\hbip.objWarning: 'rddsys' not found in library
Warning: 'letocl' not found in library
Warning: 'leto1' not found in library
Warning: 'letomgmn' not found in library
Warning: 'blowfish' not found in library
Warning: 'common_c' not found in library
Warning: 'hbip' not found in library

Так должно быть или нет ?

Вопрос сразу напрашивается с путями - как писать правильно "\" или "/" :
Local cPathServer := "//127.0.0.1:2812/"
cPathServer := cPathServer +"DATE_TEST_PATH\test.dbf"

Помню что где то обсуждали, а результат не запомнил...

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


Andrey
постоянный участник




Пост N: 4258
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.06.15 20:24. Заголовок: alkresin пишет: An..


alkresin пишет:

 цитата:
Andrey пишет:
цитата:
А какой максимальный размер можно передать через cBuf ?

Насколько я помню, ограничений нет, но все в пределах разумного...


У меня получается передавать 3-5 Мб через cBuf по интенету. В локалке наверно можно и больше.
Какой размер нужно передавать чтобы на всех машинах (включая и слабые компы) не вылетала программа ?
Если файл размером 29Мб - программа не вылетает, только не копирует файл и всё. Может кто еще попробует...
cBuff := HB_MemoRead(cFile) - сколько может считать эта функция ?
Какое ограничение по размеру нужно ставить при копировании файла ?


Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 949
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 17.06.15 12:02. Заголовок: Попробуйте определят..


Попробуйте определять размер файлов с помощью leto_FileSize() и потом, если надо, передавать его по частям c помощью leto_Fileread()

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4266
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.06.15 16:42. Заголовок: alkresin пишет: Поп..


alkresin пишет:

 цитата:
Попробуйте определять размер файлов с помощью leto_FileSize() и потом, если надо, передавать его по частям c помощью leto_Fileread()


А какой размер МАХ для передачи нужно делать ?
И еще вопрос: как определить по базе - кем она открыта: DBFCXD или LETO ?

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3286
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.06.15 07:59. Заголовок: И еще вопрос: как оп..



 цитата:
И еще вопрос: как определить по базе - кем она открыта: DBFCXD или LETO ?



Надо выдать leto_mgGetTables(), и затем искать в полученном массиве, открыта ли таблицы на сервере letodb.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4271
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.06.15 11:34. Заголовок: Pasha пишет: Надо в..


Pasha пишет:

 цитата:
Надо выдать leto_mgGetTables(), и затем искать в полученном массиве, открыта ли таблицы на сервере letodb.


Спасибо !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4272
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.06.15 11:46. Заголовок: Выходит ошибка при с..


Выходит ошибка при старте локального сервера (Win8.1) Leto DB Server v.2.15b3 :
06/18/15 11:44:18: Server has been closed.
06/18/15 11:44:29: LetoDB service has had some problems: 1063

Что за ошибка ?
Через службы сервер запускается.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4273
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.06.15 12:18. Заголовок: Не работает мой код ..


Не работает мой код для Leto на нескольких серверах, работает только на одном. Что делать, куда "копать" ?

Имею сервер Leto DB Server v.2.15b3 - letodb.exe 998912 04.06.15 установлен на всех компах.
1) Windows Server 2008 - код работает ТОЛЬКО на этом сервере.
2) Windows Server 2012 R2 - код не работает.
3) Windows 8.1 Prof - сервер локальный - код не работает.

Код примерно такой:Скрытый текст

Не работает SEEK(nMaster)
lRet := FOUND()
lRet для компа 2) и 3) возвращает .F.
Ладно бы на всех не работало, это я бы на косячил, но на ОДНОМ 1) же работает ....

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3287
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.06.15 15:35. Заголовок: dbSeek() не найдет к..


dbSeek() не найдет ключ в следующих случаях:

1. Открыт не тот индекс
2. Такого ключа в индексе нет
3. Ключ в индексе есть, но он не попадает в установленный фильтр/scope

вроде все. Еще, конечно, может быть битый индекс.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4274
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.06.15 16:15. Заголовок: Pasha пишет: Еще, к..


Pasha пишет:

 цитата:
Еще, конечно, может быть битый индекс.


Я же его делаю каждый раз, после открытия базы. Значит битым не может быть.
Буду делать отдельный тест тогда...

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3288
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 20.06.15 20:06. Заголовок: alkresin пишет: Поп..


alkresin пишет:

 цитата:
Попробуйте определять размер файлов с помощью leto_FileSize() и потом, если надо, передавать его по частям c помощью leto_Fileread()



Я смотрю, в hbip.c есть такой фрагмент:

         /* Set internal socket send buffer to 64k, 
* this should fix the speed problems some users have reported
*/
hb_ipSetBufSize( hSocket, 0xFFFFFF, 0xFFFFFF );


где задается размер буфера для передачи. Надо полагать, что данные все равно передаются фрагментами по 64k ? Кстати, в чем там задается размер ? 0xFFFFFF это вроде не 64k

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4326
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.06.15 15:31. Заголовок: Pasha пишет: где за..


Pasha пишет:

 цитата:
где задается размер буфера для передачи. Надо полагать, что данные все равно передаются фрагментами по 64k ? Кстати, в чем там задается размер ? 0xFFFFFF это вроде не 64k


Видно сложный вопрос, раз нет ответа... Очень жалко...


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4327
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.06.15 15:33. Заголовок: Сделал тестовый прим..


Сделал тестовый пример.
Алгоритм простой - выборка из базы по SEEK и SKIP - суммирование по 7 полям и
запись этих 7 полей в локальную базу на компе пользователя.
Итого 13 раз нужно просчитать по базе.

Убрал лишний вывод на экран. Наверно тормоза МиниГуи были из-за него.
Теперь скорость просто чумовая:

База 100 000 записей с мемо-полями: ~120 Мб
Расчет по простому индексу 13 позиций:
1) локальная DBFCDX - 00:00:00
2) локальная LETO - 00:00:01
3) интернет LETO - 00:01:49

База 1 000 000 записей с мемо-полями: ~1,2 Гб
Расчет по простому индексу 13 позиций:
1) локальная DBFCDX - 00:00:06
2) локальная LETO - 00:00:09
3) интернет LETO - 00:18:15

Открыть в TBROWSE миллион записей из базы, которая находиться
неизвестно где (на просторах интернета) - это просто пипец (как говорит Аллочка из Универа)

Вывод: связка Harbour + LetoDB + MiniGui - отличная вещь в работе.
Это при том, что используется простой старый алгоритм, без переделки под Leto !

2 вопроса к форумчанам:

1) Протестируйте кто нибудь по сетке это пример. Ну нет у меня сетки под рукой. Там путь просто набить и будет работать.
2) Как улучшить алгоритм для Leto ?
Пример тут - https://cloud.mail.ru/public/DkoH/nSzvMbeCh

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4333
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.07.15 01:35. Заголовок: Как проверить на сер..


Как проверить на сервере LetoDB - подключена ли функция LTON ?



Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3292
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.07.15 08:14. Заголовок: Например, задать фил..


Например, задать фильтр:

set filter to LTON(<lExpr>)==1

и затем вызвать:
leto_IsFiltOptim()

Если вернет .t. - значит, функция выполняется на сервере

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4334
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.07.15 09:14. Заголовок: Pasha пишет: set fi..


Pasha пишет:

 цитата:
set filter to LTON(<lExpr>)==1
и затем вызвать:
leto_IsFiltOptim()
Если вернет .t. - значит, функция выполняется на сервере



Что-то сложноватая проверка.... А нет ли более простой ?
По типу hb_IsFunction( cFunc )
Программу ставишь и помнить надо - есть на сервере та или иная функция. Затратно как то.
А так у себя в коде поставил проверку - нет такой функции на сервере и уже понятней станет.
Это сейчас, когда ставишь сервер, помнишь, а потом забудется и будешь потом

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3293
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.07.15 12:36. Заголовок: Должна сработать фун..


Должна сработать функция (хотя она немного не для этих целей):

leto_UdfExist("LTON")

или (для соединения, которое не является текущим):

leto_UdfExist("//localhost:2812/LTON")


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4339
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.07.15 14:21. Заголовок: Pasha пишет: leto_U..


Pasha пишет:

 цитата:
leto_UdfExist("LTON")


Сработало ! Спасибо !

Pasha пишет:

 цитата:
Можно еще добавить перед внешним циклом:
leto_SetSkipBuffer(<побольше>)
Тогда и он будет выполняться быстрее, так как запросов к серверу будет меньше.


А сколько <побольше> ?
Диапазон подскажи...

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3294
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.07.15 15:25. Заголовок: Прикидывайте сами. Р..


Прикидывайте сами. Размер буфера зависит только от размера и содержимого записей. Запись передается подпакованная, без лишних пробелов.
Пусть размер записи 100 байт. Передаваемый с сервера размер (он непостоянный) - пусть будет 40 байт.
Тогда, если установлен leto_SetSkipBuffer(1000), размер буфера с содержимым 1000 записей будет примерно 40000 байт. Из этих соображений и надо исходить. Соображение примерно те же, что и при передаче больших файлов.
leto_SetSkipBuffer устанавливается для каждой рабочей области отдельно. Перед большим циклом его
можно установить большим, а после выполнения цикла - вернуть стандартное значение:
leto_SetSkipBuffer(10)

Для циклов, внутри которых выполняется обновление данных с блокировкой каждой записи, skip-буфер сбрасывается, поэтому его увеличивать нет смысла.

Спасибо: 0 
Профиль
PSP
постоянный участник


Пост N: 1077
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 01.07.15 16:10. Заголовок: Паша, а сколько врем..


Паша, а сколько времени "живет" этот буфер? 1 сек?
С какого момента отсчет начинается?
Что произойдет, если это время закончится раньше, чем закончится выборка в цикле?
Что произойдет, если это время закончится в момент передачи уже выбранных данных с сервера клиенту?

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3295
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.07.15 16:19. Заголовок: Да, 1 секунда. По ок..


Да, 1 секунда. По окончании которой данные с сервера будут запрашиваться повторно.
Отсчет времени идет после получения данных с сервера, так что время отклика сервера для проверки актуальности буфера роли не играет.

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 458
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет