On-line: Andrey, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
Pasha
Администратор




Пост N: 1937
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.05.11 19:04. Заголовок: Leto DB Server


Добавил функцию:

LETO_GROUPBY(cGroup, cFields, [cFilter], [xScopeTop], [xScopeBottom])

cGroup - имя поля, по которому группируются данные;
cFields - список числовых полей через запятую, которые суммируются. Символ # обозначает к-во записей в группе

Функция возвращает двумерный массив строк.
1-й элемент каждой строки - значение поля cGroup, следующие элементы суммы полей, заданных в cFields, или к-во записей в группе


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


AlexMyr



Пост N: 176
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 20.05.11 15:39. Заголовок: Паша, а на сервер об..


Паша, а на сервер обновления не сбрасывали?

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




Пост N: 1944
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 20.05.11 15:55. Заголовок: Конечно Но мы работа..


Конечно
Но мы работаем не с основной revision
Надо при checkout указать revision - не Head. а выбрать rel-1-mt1 revision

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



Пост N: 177
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 20.05.11 15:57. Заголовок: Понял, списибо...


Понял, спасибо.

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


Пост N: 51
Зарегистрирован: 13.09.07
ссылка на сообщение  Отправлено: 22.05.11 12:51. Заголовок: А где на SVN нах..


А где на SVN находится Letodb?

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



Пост N: 178
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 22.05.11 22:05. Заголовок: Почему на svn? На CV..


Почему на svn? На CVS:

cvs -d:pserver:anonymous@letodb.cvs.sourceforge.net:/cvsroot/letodb login

cvs -z3 -d:pserver:anonymous@letodb.cvs.sourceforge.net:/cvsroot/letodb co -P modulename

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




Пост N: 1949
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 27.05.11 18:35. Заголовок: Добавил для leto_udf..


Добавил для leto_udf возможность передачи произвольного числа параметров любых типов на сервер, а также возврата результата любого типа. Для этого используются функции hb_serialize и hb_deserialize. Поскольку сервер сейчас собирается только под Harbour, для сборки клиента под xHarbour добавил версии этих функций от Harbour
Также добавил функцию на сервере:

LETO_RECLOCK( nUserStru [, nRecord] )

которая может вызываться из udf-функций

udf-функция может вернуть в качестве результата клиенту значение текущей записи с помощью вызова функции LETO_REC(). Клиент при этом должен вызвать функцию Leto_ParseRec для установки текущей записи.

Пример вызова с клиента:

Leto_ParseRec( Leto_Udf("UDF_AppendRec", <cFieldName>, [<cOrder>|<nOrder>]) )

Также в tests добавил пример udf-функции.


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



Пост N: 182
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 30.05.11 14:55. Заголовок: Паша, скачал rel-1-..


Паша,

скачал rel-1-mt, собираю с hbmk2: letodb.exe собирается, потом ищу библиотеку rddleto - не нахожу, нету даже папки lib, смотрю в корне валяется libletodb в rddleto.hbp вместо -olib/rddleto указано -oletodb. Соответсвенно не собираются тесты т.к. в rddleto.hbc указано libs=rddleto. Идут какие-то изменения? В readme ничего не нашел, все по старому и структура каталогов и названия библиотек.

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




Пост N: 1951
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.05.11 15:10. Заголовок: Библиотека стала так..


Библиотека стала так называться при сборке через hbmk2 после

2011-04-29 15:27 UTC+0300 Alexander Okhotnikov (alxokhotnikov/at/gmail.com)


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




Пост N: 1952
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.05.11 15:12. Заголовок: В настоящее время мо..


В настоящее время можно на сервере в подгружаемом файле letoudf.prg писать полноценные udf-функции. UDF-функции с клиента можно передать произвольное количество параметров любых типов.
В функциях можно использовать обычные методы rdd, за исключением блокировок - вместо rlock/dbrlock/dbunlock надо использовать leto_reclock() и leto_recunlock(), поскольку блокировки выполняются не средствами rdd, а средствами leto.
Эти функции могут после выполнения каких-либо действий возвращать клиенту новую текущую запись с помощью вызова leto_Rec(), а клиент в свою очередь может принять эту текущую запись с помощью leto_parserec
Пример парочки таких функций я выложил: одна добавляет запись с заполняет значение ключевого поля, вторая - удаляет записи по указанному фильтру.
Но все это работает в текущей рабочей области.
Теперь как сделать работу в udf-функции с несколькими рабочими областями. Вызов серверного алиаса через leto_alias мне не очень нравится, поэтому возникла другая идея.
Сделать на клиенте функцию leto_areaid(), и передавать на сервер номера рабочих областей в качестве параметров.
В udf-функции эти номера можно использовать для вызова leto_SelectArea( nuserStru, nAreaId ), и в дальнейшем использовать это рабочую область
Для leto_reclock, leto_recunlock и leto_rec ввести еще один необязательный параметр - nAreaId
udf-функция могла бы возвращать массив с данными нескольких рабочх областей: {cRecBuf1, cRecBuf2, ...}, а на клиенте можно было бы обрабатывать этот массив вызовами leto_ParseRec
Только надо будет доработать leto_FreeArea, чтобы при завершении udf-функции освобождать рабочие области (кроме текущей).
Какие будут предложения ? Может быть, есть способ получше ?


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



Пост N: 183
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 30.05.11 15:15. Заголовок: Да я уже вижу, а смы..


Pasha пишет:

 цитата:
Библиотека стала так называться при сборке через hbmk2 после

2011-04-29 15:27 UTC+0300 Alexander Okhotnikov (alxokhotnikov/at/gmail.com)



Да я уже вижу, а смысл?

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



Пост N: 184
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 30.05.11 15:21. Заголовок: Pasha пишет: Какие ..


Pasha пишет:

 цитата:
Какие будут предложения ? Может быть, есть способ получше ?



Я думаю, что очень мало людей думает об этом, потому как сделаете так и будет.

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


Пост N: 109
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 31.05.11 00:06. Заголовок: Pasha пишет: Вызов ..


Pasha пишет:

 цитата:
Вызов серверного алиаса через leto_alias мне не очень нравится


Чем плохо? Скорость (больше ничего на ум не приходит)? Ведь нагляднее и проще передать алиас.

 цитата:
Для leto_reclock, leto_recunlock и leto_rec ввести еще один необязательный параметр - nAreaId.
udf-функция могла бы возвращать массив с данными нескольких рабочх областей


Излишний функционал (к тому же с переделкой протокола).
Я вижу это так:
1. Открыли на клиенте все таблицы (либо сделать функцию открытия на сервере)
2. Вызвали leto_alias и leto_SelectArea (можно даже в переменной сохранить AreaID для скорости)
3. Собрали результат
4. Повторили п.2 для следующего параметра
5. Вернули массив
Ведь это обычный clipper/harbour -код

 цитата:
Только надо будет доработать leto_FreeArea, чтобы при завершении udf-функции освобождать рабочие области (кроме текущей)


leto_FreeArea отдает ВСЕ раб.области, открытые в этом потоке.

 цитата:
Какие будут предложения ? Может быть, есть способ получше ?


Единственная доработка, которая требуется, на мой взгляд (сам не использую пока UDF) - это открытие таблиц в UDF

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


Пост N: 110
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 31.05.11 00:20. Заголовок: AlexMyr пишет: Идут..


AlexMyr пишет:

 цитата:
Идут какие-то изменения? В readme ничего не нашел, все по старому и структура каталогов и названия библиотек


Я, честно говоря, выложил версию с потоками "на посмотреть". Т.е. в корне папки исходников ничего не трогал. А оно как все завертелось!
У меня свои скрипты компиляции клиента. Можете Вы у себя переделаеть rddleto.hbp и rddleto.hbc? Опубликуете в этом форуме - я выложу на CVS.

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



Пост N: 185
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 31.05.11 09:08. Заголовок: alx_on пишет: Я, че..


alx_on пишет:

 цитата:
Я, честно говоря, выложил версию с потоками "на посмотреть".


Ясно, а все доработки потом перейдут в основную ветку или как?

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




Пост N: 1954
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 31.05.11 09:26. Заголовок: AlexMyr пишет: Ясно..


AlexMyr пишет:

 цитата:
Ясно, а все доработки потом перейдут в основную ветку или как?



Версия с потоками куда перспективнее, и она просто должна стать основной. Поэтому letodb без потоков даже не хочется трогать.
Хотелось бы, чтобы на новую версию посмотрел А.Кресин.

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



Пост N: 186
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 31.05.11 09:33. Заголовок: Pasha пишет: Хотело..


Pasha пишет:

 цитата:
Хотелось бы, чтобы на новую версию посмотрел А.Кресин.



А написать Александру не пытались? Что-то давно он сюда не заглядывал.

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




Пост N: 1955
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 31.05.11 09:38. Заголовок: alx_on пишет: Чем п..


alx_on пишет:

 цитата:
Чем плохо? Скорость (больше ничего на ум не приходит)? Ведь нагляднее и проще передать алиас.



Тогда еще на сервере надо добавить функцию leto_areaid() для текущей р/о, для 2-го параметра в leto_selectarea

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


Пост N: 111
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 31.05.11 12:57. Заголовок: Руки дошли до семейс..


Руки дошли до семейства LETO_VAR*()
Переделал под текущую схему (с потоками)
Вроде работает. Кто использует? Проверьте на реальном проекте на нюансы...

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



Пост N: 187
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 31.05.11 13:10. Заголовок: Вот что получил при ..


Вот что получил при сборке (/* $Id: Changelog,v 1.350.2.14 2011/05/31 09:51:51 aokhotnikov Exp $ */):

hbmk2: Compiling...
hbmk2: C/C++ compiler command:
gcc.exe -c -O3 -march=i586 -mtune=pentiumpro -fomit-frame-pointer -W -Wall -pipe -Ic:/dev/harbour/include -I../../../../include ../../../../bin/.hbmk/win/mingw/server.c ../../../../bin/.hbmk/win/mingw/errorsys.c ../../../../bin/.hbmk/win/mingw/common.c ../../../../source/server/errint.c ../../../../source/server/leto_win.c ../../../../source/server/letoacc.c ../../../../source/server/letovars.c ../../../../source/server/letofunc.c ../../../../source/server/leto_2.c ../../../../source/common/blowfish.c ../../../../source/common/common_c.c ../../../../bin/.hbmk/win/mingw/_hbmkaut_server.c
../../../../source/server/letofunc.c: In function 'letoFillTransInfo':
../../../../source/server/letofunc.c:6776:7: warning: format '%d' expects type 'int *', but argument 3 has type 'HB_USHORT *'
../../../../source/server/letofunc.c:6781:7: warning: format '%d' expects type 'int *', but argument 3 has type 'HB_USHORT *'
../../../../source/server/letofunc.c:6794:25: warning: format '%d' expects type 'int *', but argument 3 has type 'HB_USHORT *'
../../../../source/server/letofunc.c:6794:25: warning: format '%d' expects type 'int *', but argument 4 has type 'HB_USHORT *'
../../../../source/server/letofunc.c: In function 'leto_Trans':
../../../../source/server/letofunc.c:6865:16: warning: format '%d' expects type 'int *', but argument 3 has type 'HB_USHORT *'
../../../../source/server/letofunc.c:6885:32: warning: format '%d' expects type 'int *', but argument 3 has type 'HB_USHORT *'
../../../../source/server/letofunc.c:6885:32: warning: format '%d' expects type 'int *', but argument 4 has type 'HB_USHORT *'
../../../../source/server/letofunc.c: In function 'ParseCommand':
../../../../source/server/letofunc.c:7222:45: error: 'mutex_VARS' undeclared (first use in this function)
../../../../source/server/letofunc.c:7222:45: note: each undeclared identifier is reported only once for each function it appears in
hbmk2: Error: Running C/C++ compiler. 1
gcc.exe -c -O3 -march=i586 -mtune=pentiumpro -fomit-frame-pointer -W -Wall -pipe -Ic:/dev/harbour/include -I../../../../include ../../../../bin/.hbmk/win/mingw/server.c ../../../../bin/.hbmk/win/mingw/errorsys.c ../../../../bin/.hbmk/win/mingw/common.c ../../../../source/server/errint.c ../../../../source/server/leto_win.c ../../../../source/server/letoacc.c ../../../../source/server/letovars.c ../../../../source/server/letofunc.c ../../../../source/server/leto_2.c ../../../../source/common/blowfish.c ../../../../source/common/common_c.c ../../../../bin/.hbmk/win/mingw/_hbmkaut_server.c


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


Пост N: 112
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 31.05.11 13:45. Заголовок: AlexMyr Странно... ..


AlexMyr
Странно...
Перевыложил

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



Пост N: 188
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 31.05.11 13:53. Заголовок: alx_on пишет: AlexM..


alx_on пишет:

 цитата:
AlexMyr
Странно...
Перевыложил



Теперь нормально собралось.

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



Пост N: 189
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 31.05.11 14:00. Заголовок: Останавливаю сервер,..


Останавливаю сервер, в логе запись
05/31/11 13:57:23: Send STOP to server...

может быть так
05/31/11 13:57:23: Send STOP to server... Done.

а то послали stop а результата в логе нет.

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



Пост N: 190
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 31.05.11 14:10. Заголовок: О, увидел, оказывает..


О, увидел, оказывается задержка есть 3 сек.

05/31/11 14:08:22: Send STOP to server...
05/31/11 14:08:25: Server has been closed.

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


Пост N: 113
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 31.05.11 15:47. Заголовок: Pasha пишет: Версия..


Pasha пишет:

 цитата:
Версия с потоками куда перспективнее, и она просто должна стать основной


Я считаю, что текущая реализация хороша, но до определенных пределов
Какие есть недостатки:
1. Запуск отдельного потока для каждого подключения накладно. Как по времени запуска, так и по ресурсам.
На машинке (win) с 2Гб у меня запустилось около 800 потоков (вроде много, но если клиентов около 100 и каждый создал по 10
соединений, например, это многопоточное клиентское приложение, то к пределу мы уже подошли)
2. Неэффективное использование ядер (больше времени уходит на переключение между ядрами, чем на работу

Хочется переделать на использование ограниченного кол-ва рабочих потоков (в идеале, примерно, равное кол-ву ядер)
Плюс оптимизация сетевой подсистемы (с учетом реализации стека TCP/IP конкретной ОС)

Но! То что поточная реализация точно лучше старой - это факт.

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


Пост N: 114
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 01.06.11 13:16. Заголовок: Pasha пишет: надо д..


Pasha пишет:

 цитата:
надо добавить функцию leto_areaid()


Я (пока?) не использую UDF
Поэтому добавить то могу, но тестировать не на чем. Да и времени сейчас на это нет, честно говоря.
Исправляю и добавляю только по мере необходимости, как это не грустно

PS leto_ClearAreaEnv() вызывается каждый раз перед завершением операции
Так ли это необходимо?
Вызова leto_SetAreaEnv() перед операцией вполне достаточно
Какие есть мнения?

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




Пост N: 1960
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.06.11 14:32. Заголовок: Да функцию я и сам д..


Да функцию я и сам добавлю
А leto_ClearAreaEnv() для версии с двумя потоками был просто необходим, так как рабочая область таблицы для всех пользователей была общая, и ее обязательно надо было сбрасывать
Для mt-версии наверное это и не надо.

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




Пост N: 1962
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 02.06.11 09:56. Заголовок: Странно, функция let..


Странно, функция leto_areaid() и не понадобилась

Сделал udf-функцию для каскадного обновления (вечером выложу):

/* 
* UDF_UpdCascade - cascade update key fields in main and relation table
* Parameters:
* nRecNo - record number in the main table
* cKeyField - field name in the main table (primary key)
* xKeyNew - new value of key field
* cClientAlias - client alias of the relation table
* cKeyField2 - field name in the relation table (foreign key)
* xOrder - order name or order number in the relation table
*
* This function return array of record buffer in two tables
* Call from client:
*
* aRecBuf := Leto_Udf("UDF_UpdCascade", ... )
* (table1)->( leto_ParseRec( aRecBuf[1] ) )
* (table2)->( leto_ParseRec( aRecBuf[2] ) )
*/
FUNCTION UDF_UpdCascade( nUserStru, nRecNo, cKeyField, xKeyNew, cClientAlias, cKeyField2, xOrder )
LOCAL xKeyOld, cLetoAlias, cArea := Alias()
LOCAL nPos := FieldPos( cKeyField ), nPos2

dbGoto( nRecNo )
xKeyOld := FieldGet( nPos )
IF xKeyOld != xKeyNew .and. leto_RecLock( nUserStru, nRecNo )
FieldPut( nPos, xKeyNew )
leto_RecUnlock( nUserStru, nRecNo )

cLetoAlias := leto_Alias( nUserStru, cClientAlias )
dbSelectArea( cLetoAlias )
IF Empty( cKeyField2 )
cKeyField2 := cKeyField
ENDIF
nPos2 := FieldPos( cKeyField2 )
IF ! Empty( xOrder )
ordSetFocus( xOrder )
ENDIF
WHILE dbSeek( xKeyOld )
IF leto_RecLock( nUserStru, RecNo() )
FieldPut( nPos2, xKeyNew )
leto_RecUnlock( nUserStru, RecNo() )
ELSE
EXIT
ENDIF
ENDDO
dbSeek( xKeyNew )

dbSelectArea( cArea )

ENDIF
RETURN { leto_rec( nUserStru ), (cLetoAlias)->(leto_rec( nUserStru)) }


И оказалось, что при выборе текущей раб.области pUStru->pCurAStru сам присваивается, только мне непонятно как


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


Пост N: 115
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 02.06.11 10:32. Заголовок: Pasha пишет: pUStru..


Pasha пишет:

 цитата:
pUStru->pCurAStru сам присваивается, только мне непонятно как


leto_Alias() - вызывает leto_SelectArea(), там все делается

 цитата:
IF ! Empty( xOrder )
ordSetFocus( xOrder )
ENDIF
WHILE dbSeek( xKeyOld )


Вот здесь я был бы осторожнее, т.к. не факт, что от другого UDF не остались установленные фильтры и скопы
Лучше все сбрасывать перед операциями поиска и прохода по записям


Кстати, недостатки текущей реализации UDF:
1 неудобно каждый раз вручную обновлять файл UDF на сервере
2 требуется рестарт сервера
3 непонятно какая именно версия UDF на сервере

Как такая идея работы с UDF:
1. Написать функцию отдачи версии UDF-файла (или каждая UDF-функция должна уметь вернуть свою версию)
2. Написать функцию обновления версии UDF-файла (соответственно сервер должен уметь перечитать его)
3. удаление UDF-файла

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




Пост N: 1963
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 02.06.11 11:09. Заголовок: По поводу areaid - н..


По поводу areaid - не все так просто. leto_rec использует текущий алиас - pArea, и текущую pUStru->pCurAStru.
А они в UDF_UpdCascade оказываются разные: AREASTRU для обоих вызовов одинаковая.
Так что запрос areaid и ее установка через leto_selectarea() все-таки нужна. Может лучше передавать ее параметром (необязательным) в leto_rec, leto_reclock, leto_recunlock ?

Насчет фильтров - ведь каждая udf-функция вызывается по отдельному запросу с клиента, и после ее работы отрабатывается FreeArea, которая должна все сбросить. Это получается как для leto_ClearAreaEnv(). Установленный фильтр надо проверять разве что если одна UDF-функция вызывается из другой.

Reload/Unload для UDF сделаю, по аналогии с отработки команды stop - LETO_STOPSERVER. Там надо вызывать hb_hrbunload/hb_hrbload

По поводу версии UDF. Может в hrb-модуль добавить функцию UDF_Version, которая возвращала бы строку версии, и с клиента ее можно опросить обычным вызовом leto_Udf('UDF_Version') ?
Кстати, можно еще определить функию UDF_INIT, которую сервер вызывал бы при загрузке UDF (если она есть в модуле, конечно)

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




Пост N: 1964
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 02.06.11 11:14. Заголовок: alx_on пишет: 2. На..


alx_on пишет:

 цитата:
2. Написать функцию обновления версии UDF-файла (соответственно сервер должен уметь перечитать его)



А, это запросом с клиента обновлять UDF ? Можно и так, добавить команду, и с ней передавать hrb-файл, который сервер бы загружал

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


Пост N: 116
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 02.06.11 11:39. Заголовок: Pasha пишет: leto_r..


Pasha пишет:

 цитата:
leto_rec использует текущий алиас - pArea, и текущую pUStru->pCurAStru.


Вот именно. Т.е. использование UDF требует аккуратности (мало ли где еще неявно что то используется)
Например можно вместо:

dbSelectArea( cArea )
ENDIF
RETURN { leto_rec( nUserStru ), (cLetoAlias)->(leto_rec( nUserStru)) }

написать так:
LOCAL aRet := {,}
.......
.......
aRet[2] := leto_rec( nUserStru )
dbSelectArea( cArea )
aRet[1] := leto_rec( nUserStru )
ENDIF
RETURN aRet

Плюс правильно отработать условие "IF xKeyOld != xKeyNew .and. leto_RecLock( nUserStru, nRecNo )" -
(пустой массив)
Сейчас просто будет падать (cLetoAlias == NIL)


 цитата:
после ее работы отрабатывается FreeArea, которая должна все сбросить. Это получается как для leto_ClearAreaEnv()


leto_FreeArea() не сбрасывает ничего (явно, по крайней мере), она только передает таблицу в общее пользование потокам

 цитата:
Может в hrb-модуль добавить функцию UDF_Version


Как вариант, да согласен

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




Пост N: 1970
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.06.11 21:23. Заголовок: Обновление обьекта t..


Обновление обьекта tbrowse происходит так:
go top
перемещение в начало, вывод строки
skip 1
вывод строки
skip 1
...
skip -n
возврат на первую строку

Применительно к letodb это будет выглядеть так:
go top
выборка записи с сервера
skip 1
n записей со 2-й выбираются с сеовера
skip 1
запись берется из буфера без обращения к серверу
...
skip -n
записи с n до 2 беоутся из буфера, а 1-я вновь запрашивается с сервера

Чтобы избежать лишнего запроса, я сделал буферизацию записи, которая получена при gotop/gobottom/goto/seek
Таким образом, теперь при стабилизации tbrowse к letodb клиент посылает всего 2 запроса:
gotop
skip

Конечно, при этом буфер для skip должен быть не меньше, чем количество строк в tbrowse
Для этого можно вызвать:
leto_SetSkipBuffer( oB:rowCount() )

Заодно добавил оптимизацию dbGoto: если запрашиваемая запись есть в буфере, она не считывается с сервера.


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




Пост N: 1971
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.06.11 16:15. Заголовок: Помимо буферизации s..


Помимо буферизации skip хочется добавить в letodb буферизацию seek.
Предполагается делать буферизацию исключительно на клиенте, сервер при этом задействован не будет. После выполнения seek, если это не поиск по частичному ключу и не поиск последнего ключа, результат поиска добавляется в буфер.
Время актуальности буфера - BUFF_REFRESH_TIME (1 сек)
Если ключ для seek найден в буфере, то запрос к серверу не выполняется, а запись берется из буфера. Буфер хранится в LETOTAGINFO. При записи в таблице буфер очищается.
Использование seek buffer будет целесообразно для небольших справочников, для которых постоянно вызывается seek, а также при задании set relation.
Для р/о, в которой задано использование seek buffer, количество мелких запросов к серверу (seek) может быть сокращено в десятки раз.
В Ads, насколько я знаю, подобного механизма нет.
Какие будут мысли, идеи, сомнения ? Стоит ли использовать такой механизм по умолчанию для всех р/о, или только для заданных ? Как ограничивать размер такого буфера ?


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




Пост N: 1972
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.06.11 17:52. Заголовок: Добавил поддержку se..


Добавил поддержку seek-буфера. По умолчанию он выключен. Чтобы его включить, надо вызвать leto_setseekbuffer( nRecs ) для соответствующего индекса. Параметр - максимальное количество записей в буфере.
Использование такого буфера для таблиц, в которых используется преимущественно индексный метод доступа, позволяет существенно сократить количество запросов к серверу. В моем тесте для не очень большой выборки число "попаданий" в буфер достигало тысяч.

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


Пост N: 117
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 14.06.11 09:24. Заголовок: Pasha пишет: Добави..


Pasha пишет:

 цитата:
Добавил поддержку seek-буфера


1. поменялся фильтр (выполняемый на сервере)
2. поменялся scope
3. поменяли видимость удаленных записей
в этих случаях буфер поиска необходимо сбрасывать (или не учитывать)

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




Пост N: 1973
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.06.11 12:57. Заголовок: alx_on пишет: 1. по..


alx_on пишет:

 цитата:
1. поменялся фильтр (выполняемый на сервере)
2. поменялся scope
3. поменяли видимость удаленных записей
в этих случаях буфер поиска необходимо сбрасывать (или не учитывать)



Сделаю. Заодно и для skipbuf, там тоже этого нет. set deleted перехватывать не получится, так что прийдется добавить этот флаг в буфер, и проверять его при использовании буфера. Сделаю отдельную структуру для буфера. Зодно хочется добавить статистику запросов для р.о на клиенте - количество запросов, количество попаданий в буфер

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




Пост N: 1975
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.06.11 19:10. Заголовок: Сделал Вызов leto_Se..


Сделал
Вызов leto_SetSkipBuffer() и leto_SetSeekBuffer теперь возвращает статистику использования буфера для текущей р/о или индекса: сколько раз записи выбирались из буфера, а не запрашивались с сервера.

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




Пост N: 1978
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 04.07.11 18:02. Заголовок: Собрал letodb под wi..


Собрал letodb под win64 с помощью mingw64. Работает.

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


Пост N: 118
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 04.07.11 23:30. Заголовок: Pasha пишет: Собрал..


Pasha пишет:

 цитата:
Собрал letodb под win64 с помощью mingw64. Работает


у меня и раньше работало (правда MAC OS X 64-бита и gcc)
есть какая то разница между mingw64 и gcc?

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


Пост N: 520
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 05.07.11 01:11. Заголовок: Pasha пишет: Собрал..


Pasha пишет:

 цитата:
Собрал letodb под win64 с помощью mingw64. Работает.




Паш, и чего, ни разу приведения pointer к int по всему коду не было? Абалдеть!

P.S. Не советую тешиться

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




Пост N: 1979
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.07.11 10:15. Заголовок: alx_on пишет: у мен..


alx_on пишет:

 цитата:
у меня и раньше работало (правда MAC OS X 64-бита и gcc)
есть какая то разница между mingw64 и gcc?



Да, собиралось и раньше, но в редких случаях могла быть некорректная работа
Я убрал варнинги, кое-где поставил вместо ULONG 8-байтный HB_SIZE
Думаю, для letodb64 надо давать возможность работать и 32, и 64 разрядным клиентам
А в mingw64 используется тот же gcc

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




Пост N: 1980
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.07.11 10:20. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:


Паш, и чего, ни разу приведения pointer к int по всему коду не было? Абалдеть!

P.S. Не советую тешиться



Заслуга в том, что легким движением руки брюки превратились в элегантные шорты, не в letodb, а в истинной многоплатформенности харбора. В харборе напрямую тип __int 64 (longlong) не используется, а используются свои типы, которые в зависимости от архитектуры могут быть 4-х байтными или 8-ми байтными
Никто же не специально не делал letodb под MacOS. Оказалось достаточно его собрать, и работает

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


Пост N: 119
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 05.07.11 10:54. Заголовок: Pasha пишет: Я убра..


Pasha пишет:

 цитата:
Я убрал варнинги


Появились новые

server/letofunc.c: In function ...leto_Mgmt...:
server/letofunc.c:5344: warning: format ...%I64u... expects type ...unsigned int..., but argument 19 has type ...HB_SIZE...
server/letofunc.c:5344: warning: format ...%I64u... expects type ...unsigned int..., but argument 20 has type ...HB_SIZE...
server/letofunc.c: In function ...leto_udf...:
server/letofunc.c:7071: warning: format ...%I64u... expects type ...unsigned int *..., but argument 3 has type ...HB_SIZE *...
server/letofunc.c:7071: warning: format ...%I64u... expects type ...unsigned int *..., but argument 3 has type ...HB_SIZE *...


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




Пост N: 1981
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.07.11 11:21. Заголовок: Это для 64-битной сб..


Это для 64-битной сборки ? Для mingw64 этих варнингов нет

В некоторых компиляторах для 8-байтных целых используется формат не %I64u, а %llu
Если использовать для LETO_SIZE_FORMAT %llu, варнинги будут ?

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


Пост N: 120
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 05.07.11 18:13. Заголовок: Pasha пишет: Если и..


Pasha пишет:

 цитата:
Если использовать для LETO_SIZE_FORMAT %llu, варнинги будут ?


warning: format ‘%llu’ expects type ‘long long unsigned int’, but argument 19 has type ‘HB_SIZE’

PS letodb: Mach-O 64-bit executable x86_64

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


Пост N: 121
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 05.07.11 18:25. Заголовок: Заметил плохую вещь,..


Заметил плохую вещь, пока не разбирался

на клиенте cp1251
таблицы cp866

установка фильтра с русскими буквами (например: "FIELD->PARAM=='привет'") лажается
такие записи точно есть (без лето работает)

дополнение:
в функции leto_SetFilter() принудительно вызывается leto_SetUserEnv()
если вызов leto_SetUserEnv() убрать, то все нормально
странно...

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




Пост N: 1982
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.07.11 21:31. Заголовок: alx_on пишет: warni..


alx_on пишет:

 цитата:
warning: format ‘%llu’ expects type ‘long long unsigned int’, but argument 19 has type ‘HB_SIZE’

PS letodb: Mach-O 64-bit executable x86_64



Странно. А что в этой сборке показывает

sizeof(HB_SIZE)

?

Должно быть 8

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




Пост N: 1983
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.07.11 21:51. Заголовок: Pasha пишет: Замети..


Pasha пишет:

 цитата:
Заметил плохую вещь, пока не разбирался

на клиенте cp1251
таблицы cp866

установка фильтра с русскими буквами (например: "FIELD->PARAM=='привет'") лажается
такие записи точно есть (без лето работает)

дополнение:
в функции leto_SetFilter() принудительно вызывается leto_SetUserEnv()
если вызов leto_SetUserEnv() убрать, то все нормально
странно...



То есть, имеем установку:

hb_SetCodepage( "RU1251" )
use ... codepage RU866

Фильтр устанавливаем в cp1251
На клиенте он перекодируется в 866, и сервер его получает в 866
На сервере leto_SetFilter() вызывает leto_SetUserEnv(), который на сервере устанавливает текущую cp1251
Поле при чтении на сервере перекодируется 866->1251, и сравнивается со строкой фильтра в 866. Фильтр не срабатывает.
Вызов leto_SetUserEnv() на сервере нужен для установки формата даты, да и для кодовой страницы тоже, чтобы правильно работал upprt/lower
Наверное, надо убрать перекодировку строки фильтра на клиенте, и передавать фильтр на сервер без перекодировки, чтобы сервер перекодировал значение поля, и сравнивал его с фильтром.
Завтра внимательно протестирую.


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


Пост N: 122
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 05.07.11 22:07. Заголовок: Pasha пишет: Должно..


Pasha пишет:

 цитата:
Должно быть 8


Так и есть
sizeof(HB_SIZE)=8

компилятор
i686-apple-darwin11-llvm-gcc-4.2

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




Пост N: 1984
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.07.11 09:49. Заголовок: Да, перекодировку ст..


Да, перекодировку строки фильтра на клиенте надо убрать.
Еще, на сервере в leto_RequestArea можно не устанавливать hb_cdpSelect, ведь это делается в leto_SetUserEnv
Можно правда включить в leto_RequestArea leto_SetUserEnv, надо подумать


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


Пост N: 123
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 06.07.11 11:04. Заголовок: Pasha пишет: в leto..


Pasha пишет:

 цитата:
в leto_RequestArea можно не устанавливать hb_cdpSelect, ведь это делается в leto_SetUserEnv



На каждое соединение свой поток
В начале инициализации потока один раз вызвать leto_SetUserEnv()
Плохо только, если клиент позже сменил, например, кодовую страницу через hb_cdpSelect()
Но это и сейчас не отрабатывается

в leto_RequestArea() надо устанавливать hb_cdpSelect
т.к. я могу подряд вызвать, например, два USE с разными codepage
даже не так - hb_cdpSelect надо устанавливать в leto_SelectArea (в одной команде
используется много таблиц с разными codepage, например, в UDF)

Оффтоп:
Przemysław Czerpak:

On Tue, 24 May 2011, marek.horody...@interia.pl wrote:
> Can I in this version, when yes - how, reduce the effects of hb_cdpSelect () only to the current thread?

This is default behavior - hb_cdpSelect() changes codepage only for
current threads. It does not effect any other threads.

Look at doc/xhb-diff.txt, section "MULTI THREAD SUPPORT"



Кстати, если использовать для LETO_SIZE_FORMAT %lu, то варнингов нет

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




Пост N: 1985
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.07.11 15:02. Заголовок: alx_on пишет: Кстат..


alx_on пишет:

 цитата:
Кстати, если использовать для LETO_SIZE_FORMAT %lu, то варнингов нет



Но они есть в mingw64. Надо определить формат, устраивающий все компиляторы, или считывать int не через sscanf
Один и тот же формат %lu не может использоваться и для 4, и для 8-ми байтовых int

Какая размерность int у i686-apple-darwin11-llvm-gcc-4.2 ?
Прогоните тест

func main
? 'Hello', U_Long(1), U_Long(2), U_Long(3), U_Long(4), U_Long(5)
return nil

#pragma BEGINDUMP

#define LETO_SIZE_FORMAT "%I64u"

#include "hbapi.h"

HB_FUNC( U_LONG )
{
int iSize = 0;

switch( hb_parni(1) )
{
case 1:
iSize = sizeof( ULONG );
//4
break;
case 2:
iSize = sizeof( HB_SIZE );
//8
break;
case 3:
iSize = sizeof( int );
//4
break;
case 4:
iSize = sizeof( long );
//4
break;
case 5:
//8
iSize = sizeof( long long );
break;
}
hb_retnl( iSize );
}

HB_FUNC( U_FORMAT )
{
HB_SIZE nSize;
long lNum;
long long llNum;

sscanf(hb_parc(1), "Read" LETO_SIZE_FORMAT ";", &nSize);
sscanf(hb_parc(1), "%lu", &lNum);
sscanf(hb_parc(1), "%lu", &llNum);
sscanf(hb_parc(1), "%I64u", &llNum);
hb_retnll(nSize);
}

#pragma ENDDUMP

Какие варнинги у последней функции ?


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


Пост N: 124
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 06.07.11 15:38. Заголовок: ../../../test_c.c:1:..


../../../test_c.c:1: warning: ignoring #pragma BEGINDUMP
../../../test_c.c: In function ‘HB_FUN_U_FORMAT’:
../../../test_c.c:43: warning: format ‘%I64u’ expects type ‘unsigned int *’, but argument 3 has type ‘HB_SIZE *’
../../../test_c.c:43: warning: format ‘%I64u’ expects type ‘unsigned int *’, but argument 3 has type ‘HB_SIZE *’
../../../test_c.c:45: warning: format ‘%lu’ expects type ‘long unsigned int *’, but argument 3 has type ‘long long int *’
../../../test_c.c:45: warning: format ‘%lu’ expects type ‘long unsigned int *’, but argument 3 has type ‘long long int *’
../../../test_c.c:46: warning: format ‘%I64u’ expects type ‘unsigned int *’, but argument 3 has type ‘long long int *’
../../../test_c.c:46: warning: format ‘%I64u’ expects type ‘unsigned int *’, but argument 3 has type ‘long long int *’
../../../test_c.c: At top level:
../../../test_c.c:50: warning: ignoring #pragma ENDDUMP

Вывод:
Hello 8 8 4 8 8

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




Пост N: 1986
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.07.11 15:54. Заголовок: т.е, для gcc darwin ..


т.е, для gcc darwin ULONG - это 8 байт, и формат %lu предназначен для int 64 bit, он подходит и для ULONG, и для HB_SIZE
а для gcc mingw64 ULONG - это 4 байт, и формат %lu предназначен для int 32 bit, и формат должен быть разным


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




Пост N: 1987
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.07.11 16:28. Заголовок: Все уже украдено при..


Все уже украдено придумано до нас

Надо вместо LETO_SIZE_FORMAT использовать "%" HB_PFS


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


Пост N: 125
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 06.07.11 16:40. Заголовок: Отлично (в xHarbour ..


Отлично
(в xHarbour также есть HB_PFS ?)

Что решаем с фильтром?

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




Пост N: 1988
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.07.11 16:44. Заголовок: В харбор - нет, но т..


В хХарбор - нет, но там и HB_SIZE тоже нет, так что это не вопрос
А с фильтром - убрать перекодировку на клиенте. Я проверил различные случаи - работает как надо
Через часик выложу

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




Пост N: 1989
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.07.11 16:49. Заголовок: Кстати, смотрю: # ..


Кстати, смотрю:

# if defined( HB_OS_DARWIN ) || defined( HB_OS_SUNOS ) || defined( HB_OS_HPUX )
# define HB_BIG_ENDIAN

darwin это не big endian часом ?

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


Пост N: 126
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 06.07.11 17:02. Заголовок: Pasha пишет: darwin..


Pasha пишет:

 цитата:
darwin это не big endian часом ?


Какая то проблема с этим?

PS на самом деле это там от безысходности :)
/* We cannot detect byte order, we will have to guess */

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




Пост N: 1990
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.07.11 18:32. Заголовок: sf упал... некстати ..


sf упал... некстати :(

Вот коммит
http://files.mail.ru/H12VQJ

Как поднимут - сброшу

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


Пост N: 127
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 07.07.11 09:42. Заголовок: По поводу фильтра Пр..


По поводу фильтра
Примерно, до июня все работало
Смотрю код - ничего с фильтрами и codepage не менялось (явно, по крайней мере)

Нашел!
Оказывается я поправил передачу команды "intro"
Определение codepage клиента заработало - соответственно фильтр упал :)

PS может проще обратно поломать intro? :)
шЮтка

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




Пост N: 1991
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.07.11 10:48. Заголовок: Да, я тоже проверил,..


Да, я тоже проверил, вернул leto без mt - фильтр в таком случае не работает. А там схема работы была точно такой же.
Так что повода для беспокойства нет

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




Пост N: 1992
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.07.11 15:23. Заголовок: Добавил на сервере ф..


Добавил на сервере функции

letoUseArea( nUserStru, nUserStru, cFileName, cAlias, lShared, lReadOnly, cdp ) --> nAreaId
letoOrdListAdd( nUserStru, cBagName ) --> Nil
letoOrdCreate( nUserStru, cBagName, cKey, cTagName,
lUnique, cFor, cWhile, lAll, nRecNo,
nNext, lRest, lDesc, lCustom,
lAdditive ) --> Nil
letoCloseArea( nUserStru ) --> Nil

Эти функции можно вызывать из udf-функции в модуле letoudf

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



Пост N: 211
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 12.07.11 15:12. Заголовок: Обновил LetoDB /* ..


Обновил LetoDB /* $Id: Changelog,v 1.350.2.32 2011/07/08 12:15:46 ptsarenko Exp $ */, собрал, сервер не запускается, пишет:
07/12/11 15:07:45: LetoDB service has had some problems

В чем может быть проблема?

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




Пост N: 1993
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.07.11 18:42. Заголовок: У меня было такое со..


У меня было такое сообщение, когда я случайно инсталлировал службу с subst-диска
Еще вариант - запуск блокирует firewall, например от drweb. Ему надо задать правило для letodb.
Какое сообщение выдается при ручном запуске службы ?

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



Пост N: 212
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 12.07.11 19:54. Заголовок: Pasha пишет: Какое ..


Pasha пишет:

 цитата:
Какое сообщение выдается при ручном запуске службы ?


Как раз вручную и запускал.
До этого собирал официальным mingw, а эту собрал TDM-GCC, может поэтому глючит?

Фаервол, антивирусы не устанавливал.

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




Пост N: 1995
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.07.11 20:09. Заголовок: AlexMyr пишет: Как ..


AlexMyr пишет:

 цитата:
Как раз вручную и запускал.
До этого собирал официальным mingw, а эту собрал TDM-GCC, может поэтому глючит?

Фаервол, антивирусы не устанавливал.



Т.е., сборка с mingw запускается, а с tdm-gcc нет ? Я собирал только с официальным mingw, mingw64 и bcc, и все успешно. Насчет tdm-gcc ничего не могу сказать.
А что говорит по этому поводу event viewer ?

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




Пост N: 1996
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.07.11 20:15. Заголовок: К слову. Копирую из ..


К слову. Копирую из своего лога:

07/01/11 20:24:31: LetoDB service has had some problems

Это я по недосмотру собрал сервер без -D__WIN_SERVICE__, служба уже была инсталлирована ранее, пытался ее запустить, и конечно получил по заслугам

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



Пост N: 213
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 13.07.11 10:10. Заголовок: Пересобрал официальн..


Пересобрал официальным mingw, проблема осталась:
07/13/11 10:07:08: LetoDB service has had some problems

В event viewer ничего нет

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



Пост N: 214
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 13.07.11 10:54. Заголовок: Собрал без -D__WIN_S..


Собрал без -D__WIN_SERVICE__, перестало записывать в letodb.ini сообщение при старте letodb. При попытке остановить сервер в letodb.log:
07/13/11 10:23:08: Can't STOP the server (not started?)...

Есть версия:
/* $Id: Changelog,v 1.350.2.15 2011/05/31 10:44:43 aokhotnikov Exp $ */

тут все нормально:
07/13/11 10:53:14: Leto DB Server has been started.
Leto DB Server v.2.02 ! INIT: DataPath=, ShareTables=0, MaxUsers=500, MaxTables=5000, CacheRecords=10
07/13/11 10:53:24: Send STOP to server...
07/13/11 10:53:27: Server has been closed.

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




Пост N: 1997
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.07.11 11:12. Заголовок: AlexMyr пишет: Собр..


AlexMyr пишет:

 цитата:
Собрал без -D__WIN_SERVICE__,



Для windows надо собирать или с флагом

__WIN_SERVICE__

или с

__WIN_DAEMON__


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



Пост N: 215
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 13.07.11 11:19. Заголовок: собрал с -prgflag={w..


собрал с
-prgflag={win}-D__WIN_DAEMON__
#-prgflag={win}-D__WIN_SERVICE__

заработало

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




Пост N: 1998
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.07.11 12:01. Заголовок: А сервис letodb ни н..


А сервис letodb ни на каком компьютере не запускается ?

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




Пост N: 1999
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.07.11 12:05. Заголовок: Службу я надеюсь вы ..


Службу я надеюсь вы инсталлировали ? Т.е.

letodb install

?

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



Пост N: 216
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 13.07.11 12:14. Заголовок: Pasha пишет: А серв..


Pasha пишет:

 цитата:
А сервис letodb ни на каком компьютере не запускается ?


Letodb крутится на win98 и на win server 2003 еще старая версия (я уже не помню какой сборки).

Pasha пишет:

 цитата:
Службу я надеюсь вы инсталлировали ? Т.е.

letodb install

?


Нет, просто запускал, как всегда. А где шла речь о letodb install, м.б. я пропустил этот момент?

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




Пост N: 2000
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.07.11 12:38. Заголовок: Семен Семеныч ! Дык ..


Семен Семеныч !
Дык службу надо сначала инсталлировать
А потом запускать из Панель управления - Администрирование - Службы
Разобрались :)


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



Пост N: 217
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 13.07.11 12:43. Заголовок: Pasha пишет: Разобр..


Pasha пишет:

 цитата:
Разобрались :)



Так, собрал с
#-prgflag={win}-D__WIN_DAEMON__
-prgflag={win}-D__WIN_SERVICE__

потом letodb install, перезапустил комп, все работает.
Спасибо.

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




Пост N: 83
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 13.07.11 16:55. Заголовок: Похоже что есть проблема с COPY TO и APPEND FROM !


Привет !
Тестирую LetoDB MT CVS(rel-1-mt)

написал такую прогу

//////////////////////////
PROCEDURE main()
LOCAL _Server := '//127.0.0.1:2812/'

REQUEST LETO
RDDSETDEFAULT( "LETO" )

use (_Server + 'DVIG') new excl
browse()
copy to (_Server + 'WORK')
use
inkey()
use (_Server + 'WORK') new excl
browse()

RETURN

второй browse() почемуто пустой ?!

с APPEND FROM дело похожее

а может я чтото не так делаю !

P.S. в ST версии LeoDB все работает. Я использую COPY ТО и APPEND FROM для обновления структур свойх таблиц

use table new
copy to temp
use
dbcreate( 'table' , aStru )
use table new
append from temp

в SQL-e хорошо там есть ALTER TABLE




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




Пост N: 2002
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.07.11 21:36. Заголовок: sashaBG пишет: втор..


sashaBG пишет:

 цитата:
второй browse() почемуто пустой ?!

с APPEND FROM дело похожее

а может я чтото не так делаю !

P.S. в ST версии LeoDB все работает.



Поправил. На клиенте изменился протокол для этой команды, а сервер не отрабатывал это изменение.

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




Пост N: 2005
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.07.11 19:44. Заголовок: Переименовал (вернул..


Переименовал (вернул) letodb.lib(a) в rddleto.lib(a). Думаю, так будет лучше, все rdd-либы Harbour имеют префикс rdd
Добавил пару строк под комментарием в качестве примера, как собрать клиентскую shared-библиотеку (dll/so/dylib/sl)

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



Пост N: 242
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 21.07.11 09:33. Заголовок: При остановке службы..


При остановке службы бывает, что выскакивает такое сообщение

но служба останавливается. Что может быть?

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



Пост N: 244
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 21.07.11 09:56. Заголовок: Pasha пишет: Переим..


Pasha пишет:

 цитата:
Переименовал (вернул) letodb.lib(a) в rddleto.lib(a).


Паша, в старой версии было по правилам, библиотеки в папке lib
-olib/rddleto

Если можно, то поменяйте.

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



Пост N: 245
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 21.07.11 10:06. Заголовок: Пересобираю letodb и..


Пересобираю letodb и получаю
../../../source/common/net.c:144:18: error: 'MAX_COMPUTERNAME_LENGTH' undeclared (first use in this function)
../../../source/common/net.c:144:18: note: each undeclared identifier is reported only once for each function it appears in
../../../source/common/net.c:148:4: warning: implicit declaration of function 'GetComputerName'
../../../source/common/net.c:145:9: warning: unused variable 'szValue'
hbmk2: Error: Running C/C++ compiler. 1
gcc.exe -c -O3 -march=i586 -mtune=pentiumpro -fomit-frame-pointer -W -Wall -pipe -Ic:/dev/harbour/include -I../../../include ../../../.hbmk/win/mingw/rddsys.c ../../../source/client/leto1.c ../../../source/client/letomgmn.c ../../../source/common/blowfish.c ../../../source/common/common_c.c ../../../source/common/hbip.c ../../../source/common/net.c

Вроде ничего глобально не менялось, а такое вылезло и что делать?

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




Пост N: 2008
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.07.11 10:07. Заголовок: AlexMyr пишет: и чт..


AlexMyr пишет:

 цитата:
и что делать?



Это не вопрос letodb и не вопрос харбора
MAX_COMPUTERNAME_LENGTH для mingw определен в include\winbase.h. Проверьте, может берутся какие-то другие *.h файлы
Насчет обновления - сделаю в начале августа, т.к. сейчас я в командировке.

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




Пост N: 88
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 25.07.11 16:29. Заголовок: Я еще нашел разницу в работе ST и MT версий


Я еще нашел разницу в работе ST и MT версий со SET SCOPE

Первая запись попадающая в SCOPE у меня отображается 2 раза

Картинка

а в ST нет , на картинке видно как я вызываю SCOPE

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


Пост N: 128
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 28.07.11 14:12. Заголовок: sashaBG пишет: Перв..


sashaBG пишет:

 цитата:
Первая запись попадающая в SCOPE у меня отображается 2 раза


Нужен пример самодостаточный
тогда смогу посмотреть

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




Пост N: 89
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 28.07.11 21:14. Заголовок: Тест МТ


вот таким образом я получил подобную ситуацию как в моей MiniGui программе


PROCEDURE MAIN()
LOCAL _Server := '//127.0.0.1:2812/'

REQUEST LETO
RDDSETDEFAULT( "LETO" )

USE (_Server + 'DFAKT_0' ) NEW
INDEX ON DOK TAG DOK
ORDSETFOCUS('DOK')

USE (_Server + 'DFAKT_N' ) NEW
INDEX ON DOK TAG DOK
ORDSETFOCUS('DOK')

SELECT DFAKT_0
GO TOP

SELECT DFAKT_N
SET_SCOPE( )
skip -1
BROWSE()

SELECT DFAKT_0
SKIP

SELECT DFAKT_N
SET_SCOPE( )
skip -1
BROWSE()

RETURN
//----------------------------------------------------
STATIC PROCEDURE SET_SCOPE( )
DFAKT_N->( ORDSCOPE( 0, DFAKT_0->DOK ) )
DFAKT_N->( ORDSCOPE( 1, DFAKT_0->DOK ) )
DFAKT_N->( DBGOTOP() )
RETURN

click here


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




Пост N: 2009
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.07.11 13:33. Заголовок: sashaBG пишет: Я ещ..


sashaBG пишет:

 цитата:
Я еще нашел разницу в работе ST и MT версий со SET SCOPE

Первая запись попадающая в SCOPE у меня отображается 2 раза



Разобрался.
source\client\leto1.c
Стр. 1791
ULONG ulDataLen, ulRecLen, ulRecNo = 0;

Стр. 1908 - 1911
{
bCurRecInBuf = TRUE;
ulRecNo = pArea->ulRecNo;
}

Стр. 1935
if( ! bCurRecInBuf || ( pArea->ulRecNo == ulRecNo ) )

Я смогу сделать коммит на следующей неделе.


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




Пост N: 2010
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.08.11 19:18. Заголовок: Отправил изменения..


Отправил изменения

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




Пост N: 2015
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.08.11 13:47. Заголовок: Я смотрю, в Harbour ..


Я смотрю, в Harbour SVN убрали HB_LEGACY_TYPES_OFF, и теперь letodb не собирается, хотя с Harbour 3.0 сборка еще работает.
Та же проблема и с hwgui
Надо менять типы данных
ULONG -> HB_ULONG, и т.д
и макросы
ISBYREF -> HB_ISBYREF. и т.д.

Думаю, надо определиться с перечнем версий харбора, для которых возможна сборка letodb
Для Harbour это пусть будут версии 1.0, 2.0, 3.0 и SVN (если с 1.0 еще сборка возможна), для
xHarbour - надо посмотреть.
Думаю, надо отказаться от рудиментов и атавизмов старых версий, и за основу взять новое API.
Скажем, использовать не BOOL, а HB_BOOL, и так далее

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



Пост N: 256
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 05.08.11 16:26. Заголовок: Pasha пишет: Думаю,..


Pasha пишет:

 цитата:
Думаю, надо отказаться от рудиментов и атавизмов старых версий, и за основу взять новое API.
Скажем, использовать не BOOL, а HB_BOOL, и так далее


Я тоже так думаю. Хочу попробовать поправить код hwgui, уже малую часть исправил, но времени не хватает (с нашим законодательством и семейством 1с уже замучился бороться и слов не хватает никаких). Так что с меня +1.

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




Пост N: 2017
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.08.11 20:32. Заголовок: Не стал выдумывать в..


Не стал выдумывать велосипед, и сделал как Przemek для hwgui
Поддержку Harbour 1.0 сделать не получилось.

С MAX_COMPUTERNAME_LENGTH дело оказалось вот в чем:
После

2011-07-17 16:21 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

windows.h неявно не включается, и его надо указывать напрямую

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




Пост N: 2018
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.08.11 22:33. Заголовок: Я получил рекламацию..


Я получил рекламацию из Бразилии, что служба не запускается. Добавил в лог код ошибки - пишут, что ошибка 0.
У меня запуск службы выполняется
Непонятно. Как в той пословице: чи рыба чи рак - Кандыба дурак. Чи рак чи рыба - всэ дурэнь Кандыба.
Подтвердите запуск или незапуск службы.

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



Пост N: 258
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 08.08.11 09:54. Заголовок: Pasha пишет: Подтве..


Pasha пишет:

 цитата:
Подтвердите запуск или незапуск службы.


Сегодня собрал /* $Id: Changelog,v 1.350.2.38 2011/08/07 06:15:27 ptsarenko Exp $ */
Результат:
08/08/11 09:52:24: Leto DB Server has been started.
Leto DB Server v.2.02 ! INIT: DataPath=, ShareTables=0, MaxUsers=500, MaxTables=5000, CacheRecords=10

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




Пост N: 2021
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.08.11 10:56. Заголовок: И у меня тоже все в ..


И у меня тоже все в порядке. По-видимому, у моего корреспондента проблема не с letodb

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



Пост N: 259
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 09.08.11 11:39. Заголовок: Еще test_tr не собир..


Еще test_tr не собирается:

Generating C source output to 'd:\tmp\hbmk_7iyn9u.dir\test_tr.c'... Done.
hbmk2: C/C++ compiler command:
gcc.exe -c -O3 -march=i586 -mtune=pentiumpro -fomit-frame-pointer -W -Wall -pipe -Ic:/dev/harbour/include -IC:/dev/letodb/include d:/tmp/hbmk_7iyn9u.dir/test_tr.c d:/tmp/hbmk_o9bjra.c
tests\test_tr.prg: In function 'HB_FUN_LETO_DBTRANS':
tests\test_tr.prg:56:4: warning: implicit declaration of function 'ISNUM'
tests\test_tr.prg:85:13: warning: implicit declaration of function 'ISNIL'
hbmk2: Linker command:
gcc.exe d:/tmp/hbmk_7iyn9u.dir/test_tr.o d:/tmp/hbmk_7iyn9u.dir/hbmk_o9bjra.o -mconsole -Wl,--start-group -lrddleto -lhbextern -lhbdebug -lhbvm -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainstd -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre -lhbzlib -Wl,--end-group -otest_tr.exe -Lc:/dev/harbour/lib/win/mingw -Lc:/dev/harbour/bin -Llib
d:/tmp/hbmk_7iyn9u.dir/test_tr.o:test_tr.c:(.text+0x5e): undefined reference to `ISNIL'
d:/tmp/hbmk_7iyn9u.dir/test_tr.o:test_tr.c:(.text+0x247): undefined reference to `ISNUM'
d:/tmp/hbmk_7iyn9u.dir/test_tr.o:test_tr.c:(.text+0x3ef): undefined reference to `ISNIL'
d:/tmp/hbmk_7iyn9u.dir/test_tr.o:test_tr.c:(.text+0x4ce): undefined reference to `ISNIL'
collect2: ld returned 1 exit status
hbmk2: Error: Running linker. 1
gcc.exe d:/tmp/hbmk_7iyn9u.dir/test_tr.o d:/tmp/hbmk_7iyn9u.dir/hbmk_o9bjra.o -mconsole -Wl,--start-group -lrddleto -lhbextern -lhbdebug -lhbvm -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainstd -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre -lhbzlib -Wl,--end-group -otest_tr.exe -Lc:/dev/harbour/lib/win/mingw -Lc:/dev/harbour/bin -Llib

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




Пост N: 2022
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.08.11 11:49. Заголовок: Надо сделать замену ..


Надо сделать замену IS* => HB_IS*

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




Пост N: 90
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 22.08.11 14:39. Заголовок: LetoDB и Linux UBUNTU !


Здравствуйте , захотелось попробовать как работает LetoDB под линукс .
Слил HARBOUR из SVNa , установил необходимые библиотеки и компиляторы
сделал make install и Harbour откомпилировалсая и устоновился в usr/local/bin , библиотеки в usr/local/lib/harbour, include в usr/lib/harbour
потом тупо скопировал из windows компютера LetodbMT . Почитал readme.txt .
въполнил ./make_linux.sh , получилась ошибка bash: ./make_linux.sh /bin/bash^M: bad interpreter: No such fil or directory

потом попробовал hbmk2 rddleto.hbp lrtodb.hbp
Выдало куча ошибок компиляции ERR

Посоветуйте пожалуста как откомпилировать сервер !



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


Пост N: 129
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 22.08.11 15:55. Заголовок: sashaBG пишет: ошиб..


sashaBG пишет:

 цитата:
ошибка bash: ./make_linux.sh /bin/bash^M: bad interpreter: No such fil or directory


Переводы строк в скрипте виндовые
Надо либо с CVS тянуть в linux
либо окончания строк поменять в формате linux (т.е. только 10, а не 13,10)


 цитата:
потом попробовал hbmk2 rddleto.hbp lrtodb.hbp
Выдало куча ошибок компиляции ERR


А вот это странно. Файлы не те? По новой с CVS и еще раз

UPD: "lrtodb.hbp" - шо це тако???

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



Пост N: 51
Зарегистрирован: 14.01.09
ссылка на сообщение  Отправлено: 22.08.11 16:14. Заголовок: Я как-то делал компиляцию под UBUNTU


Зайдите на мой бложик, там на http://dimao.blogspot.com/p/blog-page.html есть мои пошаговые заметки. Буду рад, если поможет.

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




Пост N: 91
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 22.08.11 16:17. Заголовок: alx_on пишет: UPD: ..


alx_on пишет:

 цитата:
UPD: "lrtodb.hbp" - шо це тако???



lеtodb.hbp конечно , опечатка вышла :)
попробую тянуть с CVS


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


Пост N: 577
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 22.08.11 16:25. Заголовок: dimao, скажите, вы с..


dimao, скажите, вы сталкивались на Ubuntu с таким "эффектом", что letodb не реагирует на установку ShareTables? Т.е. всегда ведет себя так, как будто ShareTables = 1.

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



Пост N: 52
Зарегистрирован: 14.01.09
ссылка на сообщение  Отправлено: 22.08.11 16:31. Заголовок: Я глубоко не копал. ..


Я глубоко не копал. собралось, тесты простенькие потянуло. мне большего и не надо пока. К сожалению давно отошел от программирования - просто тусоваться тут приятно, тешить себя мыслью "и я таким же умным был когда-то"

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



Пост N: 53
Зарегистрирован: 14.01.09
ссылка на сообщение  Отправлено: 22.08.11 16:35. Заголовок: А вот подскажите, че..


А вот подскажите, честной народ, какую версию ЛЕТО взять для продуктивной системы? и каким Харбуром компилировать. Требование - максимально возможное отсутствие глюков. Главное, чтобы меньше старые проги переделывать для работы.

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




Пост N: 92
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 22.08.11 16:56. Заголовок: CVS



Не знаю как быть с rel-1-mt где указать етот параметр .Я выполнил cvs -d:pserver:anonymous@letodb.cvs.sourceforge.net:/cvsroot/letodb checkout letodb и получил ST версию


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


Пост N: 130
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 22.08.11 17:01. Заголовок: cvs -d:pserver:anony..


cvs -d:pserver:anonymous@letodb.cvs.sourceforge.net:/cvsroot/letodb checkout -r rel-1-mt letodb

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




Пост N: 2042
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.08.11 07:52. Заголовок: alx_on пишет: цит..


alx_on пишет:

 цитата:

цитата:
потом попробовал hbmk2 rddleto.hbp lrtodb.hbp
Выдало куча ошибок компиляции ERR



А вот это странно.



Похоже, ситуация следующая. Типы данных BOOL, SHORT/USHORT, LONG/ULONG, константы FALSE/TRUE уже не харборовские.
Под windows сборка получается, потому что все они определены во включаемых файлах windows.
Под linux они не определены.

Вывод: надо в letodb делать глобальную замену:

ULONG --> HB_ULONG
BOOL --> HB_BOOL
и так далее

PS. Это все касается Harbour SVN. В релизе 3.0 сборка выполняется.

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




Пост N: 2043
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.08.11 07:57. Заголовок: dimao пишет: А вот ..


dimao пишет:

 цитата:
А вот подскажите, честной народ, какую версию ЛЕТО взять для продуктивной системы? и каким Харбуром компилировать.



Я сейчас использую letodb с CVS (mt), собранный Harbour 3.0. На текущий момент глюков не обнаружено (все обнаруженные пофиксены). Падения сервера не видел ни разу.

Спасибо: 1 
Профиль
dimao



Пост N: 54
Зарегистрирован: 14.01.09
ссылка на сообщение  Отправлено: 23.08.11 09:04. Заголовок: Pasha, спасибо. А на..


Pasha, спасибо. А на какой системе? (WIN?LIN?) Заманчиво сделать маленький LINUX сервачок без иксов с малым энергопотреблением. Есть какие-то наработки? Есть ли в ЛЕТО какие-то механизмы резервного копирования?

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




Пост N: 2044
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.08.11 09:27. Заголовок: Я ставлю сервер под ..


Я ставлю сервер под windows, под линукс не приходилось
Насчет резервного копирования - я думал над этим
Видится это как отдельная утилита, которая бы крутилась на сервере, сканировала заданные папки, если это таблицы dbf - открывала бы их через letodb с локальным коннектом, блокировала их через fillock. копировала через Copy To, и результирующую папку архивировала бы
Какие будут мысли ?

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




Пост N: 93
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 23.08.11 09:33. Заголовок: hbmk2 все откопилилось


через hbmk2 все откопилилось , Но не удалось запустить теперь при старте -> letodb: error while loading shared libraries: libharbour.so.3.0: cannot open shared object file: No such file or directory

копировал е етот фал в папке где находится letodb и там где harbour но все равно не хочет . А может ето у меня из за линукса я експериментирую на ZENTYAL Linux Small Business Server www.zentyal.org он базирован на Ubuntu 10.04 . Хороший сервер у меня на нем фирменное FTP, VPN и куча всего. Для тех кому интерсно что ето такое click here



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




Пост N: 2045
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.08.11 09:46. Заголовок: sashaBG пишет: чере..


sashaBG пишет:

 цитата:
через hbmk2 все откопилилось , Но не удалось запустить теперь при старте -> letodb: error while loading shared libraries: libharbour.so.3.0: cannot open shared object file: No such file or directory



Насколько я помню, делал так:

в /etc/ld.so.conf.d задаем:
echo /usr/local/lib/harbour > harbour.conf
ldconfig

только надо уточнить каталог, куда установлен Harbour

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




Пост N: 2046
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.08.11 09:48. Заголовок: sashaBG пишет: копи..


sashaBG пишет:

 цитата:
копировал е етот фал в папке где находится letodb и там где harbour но все равно не хочет



Там же много so-библиотек. Надо копировать их все, а лучше настроить путь доступа к ним

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


Пост N: 230
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 23.08.11 10:40. Заголовок: Паша пишет Насчет р..


Паша пишет

 цитата:
Насчет резервного копирования


Я примерно так делал для 1с, хотя там есть и специальные приблуды.
В нужное время планировщик запускал батник.
В батнике было
- скопировать нужные файлы по маске в указанное место
- создать архив (arj, rar)
Копировать dbf в 1с можно и при запущенной программе, если нет монопольного открытия баз.
Разрывов баз не наблюдалось. Копирование назначалось на время наименьшей активностью пользователей: в обед, вечером или ночью (если сервер не выключается).
В letodb вам видннее, можно ли базы скопировать внешней программой или нет. Если ничто там монопольно не открывается, наверно можно


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




Пост N: 94
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 23.08.11 11:51. Заголовок: Спасибо Паша !


Спасибо большое Паша

 цитата:
в /etc/ld.so.conf.d задаем:
echo /usr/local/lib/harbour > harbour.conf
ldconfig


ето помогло

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




Пост N: 2047
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.08.11 12:21. Заголовок: Vlad04 пишет: Если ..


Vlad04 пишет:

 цитата:
Если ничто там монопольно не открывается,



Как раз в основном режиме БД открывается монопольно, так что и резервное копирование надо делать через letodb

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




Пост N: 1872
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 02.09.11 11:17. Заголовок: Вопрос чисто теорити..


Вопрос чисто теоритический:
1) А сколько юзеров потянет LetoDB если СЕРВЕР-LetoDB расположить в каком нибудь ДАТА-Центре ?
2) Какие ресурсы (память, процессор...) нужно заказывать у провайдера ?
3) Хочется такое разделение по папкам городов (у меня программа работает в нескольких городах)
\город1\
\город2\
........
\городN\
Как тогда использовать LetoDb (что лучше): запускать для каждого города свой Сервер-LetoDB или ОДИН Сервер-LetoDB ?
Преимущества и недостатки этих вариантов...
4) На какой платформе делать Сервер-LetoDB: Linux или Windows (клиенты будут под Windows) ?

Заранее спасибо за ответ.

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




Пост N: 2050
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.09.11 09:58. Заголовок: 1. Ограничения на ко..


1. Ограничения на количество юзеров нет. Сколько потянет - могу только сказать, что очень много.
2. Могу только сказать по поводу процессора: чем больше ядер - тем лучше. Насчет оперативки: так как она сейчас измеряется гигабайтами, а letodb занимает в памяти мегабайты, плюс сотни килобайт на каждого подключенного юзера (порядок примерно такой), то ОП - это некритичный ресурс.
3. Да ради бога, можно так и организовать. Сервер путь будет один. Пусть сама БД располагается в какой-нибудь папке, ее и указать в letodb.ini.
У каждого клиента сделать настройку папки, где располагается его БД
В строке коннекта ее и указывать.
А несколько копий letodb можно запускать, если указать каждому серверу в настройке отдельный порт. Но если letodb собран как служба windows, такой вариант не получится, поскольку служба может быть только одна
4. Могу сказать, что letodb хорошо работает и под linux, и под windows.

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




Пост N: 1881
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.09.11 10:34. Заголовок: Pasha Спасибо БОЛЬШО..


Pasha Спасибо БОЛЬШОЕ !!!
Буду пробовать.

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



Пост N: 270
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 14.09.11 17:07. Заголовок: Пытаюсь перелезть на..


Пытаюсь перелезть на новые версии harbour и letodb, собираю под вин98, в логе есть записи
09/14/11 16:46:58: Leto DB Server has been started.
Leto DB Server v.2.02 ! INIT: DataPath=c:\dbfs, ShareTables=0, MaxUsers=500, MaxTables=5000, CacheRecords=10
ERROR! thread2() too big packet
ERROR! thread2() too big packet
09/14/11 17:03:01: Send STOP to server...
09/14/11 17:03:05: Server has been closed.

Как влияют на работу сервера эти ERROR!

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


Пост N: 131
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 14.09.11 17:49. Заголовок: AlexMyr пишет: ERRO..


AlexMyr пишет:

 цитата:
ERROR! thread2() too big packet


старый клиент и новый сервер?

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



Пост N: 271
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 14.09.11 21:49. Заголовок: alx_on пишет: стары..


alx_on пишет:

 цитата:
старый клиент и новый сервер?


может быть, завтра на работе проверю.

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



Пост N: 273
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 15.09.11 08:27. Заголовок: Маленькие неточности..


Маленькие неточности:
В readme_rus.txt

Для удаления службы, вызовите letodb с параметром 'uninstall':

letodb.exe install

в readme.txt

To uninstall service, run letodb with 'install' parameter:

letodb.exe install


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




Пост N: 2054
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.09.11 09:31. Заголовок: Насчет too big packe..


Насчет too big packet - я тоже несколько раз в логе видел такое, когда обновлял сервер и случайно запускал старый клиент.
readme - поправлю.

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




Пост N: 2055
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.09.11 11:07. Заголовок: Подумалось вот, что ..


Подумалось вот, что можно добавить на сервер функцию закрузки hrb-модуля с клиента, для последующего вызова с клиента функций из этого модуля на выполнение.
Но при этом не будет никакой защиты от загрузки на сервер вредоносного кода. Так что делать ее нельзя, а жаль.
Хотя даже сейчас такую функцию передачи и загрузки hrb-кода с клиента на сервер можно сделать в letoudf.hrb

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




Пост N: 1887
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.09.11 12:07. Заголовок: Pasha пишет: Но при..


Pasha пишет:

 цитата:
Но при этом не будет никакой защиты от загрузки на сервер вредоносного кода.



Тогда нужно сделать типа цифровой подписи разработчика на сервере и при передачи кода делать еще передачу цифровой подписи для этого кода и сравнивать - та подпись или не та.
Только не слишком усложнять это....

И еще в настройках внести ГЛОБАЛЬНУЮ параметр ЗАПРЕТ/РАЗРЕШЕНИЯ выполнения кода на сервере.




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



Пост N: 276
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 19.09.11 11:06. Заголовок: В readme.txt еще ост..


В readme.txt еще осталось

To uninstall service, run letodb with 'install' parameter:

letodb.exe uninstall

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




Пост N: 1891
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.09.11 23:40. Заголовок: Теперь вопрос чисто ..


Теперь вопрос чисто практический:
1) Возможно ли организовать шифрованную передачу данных между СЕРВЕРОМ и КЛИЕНТАМИ ?
Alexander S.Kresin писал где-то ранее, что часть (текстовые данные) шифрации уже реализована.
2) Механизм шифрации, какой в LetoDB ?
3) Возможно ли прикрутить "железяку" для шифрования/дешифрования. Имеется в виду ключ HASP-HL, в него встроен
криптопроцессор (используется публичный алгоритм шифрования AES/128, RSA/1024).
В поставке ключа есть функции обращения к ключу (на С) - зашифровать и расшифровать строку.
4) Возможно ли использовать LetoDB в муниципальных (федеральных) органах. Там же требуется сертификация, и всякая другая
фигня.... Где и как можно это сделать (сертификацию), может кто сталкивался ?
Если можно будет "прикрутить" HASP-HL, я думаю сертификация не потребуется....
5) Дайте примеры пожалуйста как настроить СЕРВЕР и КЛИЕНТА для работы.
И как на клиенте будет выглядеть запрос к БД-LetoDB ?



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




Пост N: 2075
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 27.09.11 08:37. Заголовок: 1. Да, шифрование тр..


1. Да, шифрование траффика есть. И для новых команд я стараюсь делать сразу поддержку и шифрованного траффика
2. Используется симметричный криптоалгоритм blowfish. Ключ - фиксированная строка длиной 10 символов, котораю зашита и на сервере, и на клиенте.
3. Я с ними дела не имел. Этот ключ надо использовать и на сервере, и на клиентах ? Там есть какая-то dll, и протокол обращения к ней ?
4. По поводу сертификации в России - ничего сказать не могу, я ведь живу на Украине.
5. Примеры..
На сервере надо задать параметры в файле leotdb.ini, их описание имеется. Основной параметр - DataPath
На клиенте - в командах/функцих use, dbCreate и пр. к имени файла надо добавить строку коннекта, вот и вся настройка.


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




Пост N: 1892
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.09.11 10:59. Заголовок: Pasha пишет: Этот к..


Pasha пишет:

 цитата:
Этот ключ надо использовать и на сервере, и на клиентах ? Там есть какая-то dll, и протокол обращения к ней ?


Да, вставляем ключ на сервер и другой ключ на клиента.

Есть и dll и исходные коды на С. Мне под хХарбор на С сделали функции Encrypting/Decrypting - работают на порядок быстрей чем через dll.

Pasha пишет:

 цитата:
На клиенте - в командах/функцих use, dbCreate и пр. к имени файла надо добавить строку коннекта, вот и вся настройка.


Не совсем понял. Что за строка "коннекта" ? Дайте пожалуйста описание.
USE "//127.0.0.1:2812/@/data/test" VIA ????

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




Пост N: 2077
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 27.09.11 11:53. Заголовок: Andrey пишет: Не со..


Andrey пишет:

 цитата:
Не совсем понял. Что за строка "коннекта" ? Дайте пожалуйста описание.
USE "//127.0.0.1:2812/@/data/test" VIA ????



Андрей, а в реадми ты заглядывал ? Я даже на русский язык его перевел:

5. Соединение с сервером клиентских программ

Чтобы сконнектиться с сервером, прежде всего необходимо прилинковать rddleto.lib (Windows)
или librddleto.a (Linux) у своему приложению, и добавить в начале своей программы
две строки:

REQUEST LETO
RDDSETDEFAULT( "LETO" )

Для открытия файла dbf на сервере необходимо вставить в оператор SET PATH TO,
или в команду USE путь к серверу в стандартной форме:
//ip_address:port/data_path/file_name.

Если задан параметр 'DataPath' в конфигурационном файле сервера, и он имеет
непустое значение, необходимо указывать не полный путь к файлу на сервере,
а путь относительный ( относительно значению 'DataPath' ).
Например, если необходимо открыть файл test.dbf, который расположен на
сервере 192.168.5.22 в каталоге /data/mydir и значение параметра 'DataPath'
( в файле конфигурации сервере letodb.ini ) '/data', синтаксис должен быть
таким:

USE "//192.168.5.22:2812/mydir/test"

Если сервер не запущен или Вы указали неверный путь, будет сгенерирована ошибка открытия.
Возможно проверить доступность сервера перед открытием файлов вызовом функции
leto_Connect( cAddress ), которая вернет -1 в случае неудачной попытки:

IF leto_Connect( "//192.168.5.22:2812/mydir/" ) == -1
Alert( "Can't connect to server ..." )
ENDIF


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




Пост N: 1914
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.11.11 22:17. Заголовок: Возвращаюсь ОПЯТЬ с ..


Возвращаюсь ОПЯТЬ с вопросом по индексным файлам.
CDX поддерживает несколько индексных файлов для одной базы. Как перешел с NTX, так я у себя в программах и оставил.
LetoDB пока не поддерживает (или уже сделали) такой нужной фичи...
В коде править на один индексный файл у себя в проектах просто немеренно ...
Будет ли реализована поддержка нескольких индексных файлов для одной базы в ближайшее время ?

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




Пост N: 2148
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.11.11 19:01. Заголовок: source\server ..


source\server\server.prg, надо строку 748 изложить в такой редакции:

nIndexStru := leto_InitIndex( nUserStru, OrdBagName( OrdCount() ), cBagName )

Думаю, это решит проблему.
Я сейчас сбросить на CVS не могу, сброшу позже, так что сделайте на своей локальной копии.


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




Пост N: 1922
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.11.11 20:01. Заголовок: Pasha пишет: Я сейч..


Pasha пишет:

 цитата:
Я сейчас сбросить на CVS не могу, сброшу позже



Без вопросов... Подожду...
Пока есть чем заняться...

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




Пост N: 95
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 06.12.11 16:04. Заголовок: Leto_UDF


Паша у меня просьба к тебе , Расскажи пожалуйста по-подробнее правила работы с LETO_UDF()
я почитал в tests\letoudf.prg но к сожалению не все понял , если не трудно
сделайте маленький рабочий примерчик .

LetoDB отличный сервер я активно им пользуюсь , на нем я перевел свои бухгалтерские программы
работает отлично без сбоев. Нагрузка около 50 компов без проблем . Другая моя програма для сервиса сельхоз техники тоже на нем работает
,сервер на Линуксе (помните я спрашивал как откомпилировать, Спасобо все получилось и отлично работает )
, по моим наблюдениям работает быстрее чем под Windows Server 2008 64 bit ( может надо LetoDB сервера собрать тоже в 64 бит. )

Теперь хочется повозится и с Leto_UDF и в связи с етим возникли вопросы:

1. Какая разница между функциями для выполняния на сервере типиа LETO_RECLOCK и обычный RLOCK т.д. для осталных , т.е. какие когда надо использовать ?
2. Что произойдет если получится ошибка при выполнении функций из letoudf.hrb


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




Пост N: 2191
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.12.11 17:14. Заголовок: Сервер letodb выполн..


Сервер letodb выполняет блокировки не стандартными средствами rdd, а хранит списки блокированных записей. При блокировке записи она добавляется в этот список, при разблокировке удаляется.
Правда, есть еще режим, когда записи блокируются средствами rdd: если в letodb.ini установить параметр "NO_SAVE_WA".
Поэтому в udf-функциях лучще использовать только средства letodb для lock/unlock, и не использовать RLock()/dbUnlock().
Если выдать просто RLock(), то сервер не будет знать, что запись блокирована, так как ее нет в списке блокировок, и другой клиент получит неверную информацию.

А насчет ошибки: стандартные ошибки харбора перехватываются, так что при возникновении ошибки выполнение udf-функции будет прекращено, и она вернет результат типа Nil.
Конечно, функци udf должны быть хорошо отлажены, так как их падение может привести к падению клиента.
Такие ошибки, которые привели бы к падению самого сервера, я не представляю как сделать. Это должно быть нечто, приводящее к gpf, да и то сервер может выдержать и gpf.

А примеры - так letoudf.prg и есть примеры таких udf-функций. Это что-то вроде storedproc для sql, только пишется функции на харборе. Функция выполняется в той рабочей области, в которой она запущена. Если надо выбирать данные с другой р/о, то она должна получить клиентский алиас, преобразовать его в серверный алиас вызовом leto_Alias. Пример работы с несколькими р/о смотрите в UDF_UpdCascade.
udf-функция может изменить текущую запись для клиента. Для этого она должна вернуть строку с записью, которая формируется функцией leto_rec. Клиент, получив эту строку, должен вызвать LETO_PARSEREC, передав полученную строку этой функции в качестве параметра. Можно передавать данные из нескольких р/о, массивом строк.


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


Пост N: 132
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 06.12.11 17:55. Заголовок: Pasha пишет: Такие ..


Pasha пишет:

 цитата:
Такие ошибки, которые привели бы к падению самого сервера, я не представляю как сделать. Это должно быть нечто, приводящее к gpf, да и то сервер может выдержать и gpf.


Раз поднялась такая тема: единственный случай падения (жесткий, молча валится серверная часть, совсем!) - это ошибка в индексном файле
(попортилась структура файла или антивирус не дал записать, считать). Не перехватывается корректно ошибка открытия такого индекса.

PS т.к. ошибка быстро исправляется (переиндексация), то времени и желания на исправление, как всегда, нет...

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




Пост N: 2192
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.12.11 19:16. Заголовок: У себя (а это нескол..


У себя (а это несколько десятков серверов letodb, часть из которых работает без перезагрузки месяцами) падения сервера мне не пришлось видеть ни разу. В прошлом месяце я получил письмо из Бразилии с таким текстом:

Letodb server down while rlock() operation fails.
See letodb.log
Leto DB Server v.2.02 ! INIT: DataPath=c:\MASTER\DADOS, ShareTables=1,
MaxUsers=500, MaxTables=5000, CacheRecords=10
leto_errInternal!!!!!!!!!!!!!!!!!!
Same error if ShareTables=0

Поскольку никаких способов воспроизвести эту ситуацию у меня нет, я и не ответил автору. Что там случилось - непонятно. Но ситуация явно тоже разовая.
Пару раз видел нарушение индекса. Но там стабильно были (и есть) перебои по питанию.

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




Пост N: 2252
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.01.12 20:20. Заголовок: Добавил функцию для ..


Добавил функцию для блокировки новых коннектов: leto_LockConn( .T. )
После ее вызова сервер не будет устанавливать новые соединения, вплоть до вызова leto_LockConn( .F. )
Соответственно в утилиту magage добавлена кнопка lock/unlock.

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




Пост N: 2254
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.02.12 17:47. Заголовок: В настоящее время в ..


В настоящее время в letodb используется skip-буфер: при выполнении skip 1/-1 сервер передает клиенту не одну запись, в много, и при следующем skip клиент не обращается к серверу, а берет запись из буфера.
При обновлении данных буфер очищается.
Если после skip данные обновляются, то возникает нехорошая ситуация:
Сервер передал клиенту 10 (к примеру) записей, клиент сделал dbCommit, сбросил буфер, и опять запросил dbSkip(1). Сервер опять передал клинету 10 записей, и так далее.
В этом случае использование skip-буфера приводит не у уменьшению, а к увеличению траффика. Как этого избежать ?
Можно скажем при отработке commit на сервере устанавливать флаг для рабочей области, чтобы буфер следующий раз не использовать. А при выполнении skip выбирать одну запись, и сбрасывать этот флаг.
Или что-то другое ? Как в этом случае поступает Ads ?


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




Пост N: 2294
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.02.12 18:03. Заголовок: Pasha пишет: Как в ..


Pasha пишет:

 цитата:
Как в этом случае поступает Ads ?


Почитай описание AX_CacheRecords() , может поможет чем.

 


AX_CacheRecords( [<nNumRecords>] ) -> числовое значение

<nNumRecords> - количество записей, которое будет отправлено клиенту
с опережением после выполнения операции Skip

Возвращаемое значение

Если в функцию не передано никаких параметров, то она возвращает те-
кущее количество записей, предварительно отправляемых клиенту для те-
кущей рабочей области. Если в функцию переданы параметры, то функция
возвращает предыдущее значение количества записей, предварительно
отправляемых клиенту для текущей рабочей области.

Описание

Advantage использует схему кэширования с предварительным чтением.
Функция AX_CacheRecords() позволяет вам установить значение количест-
ва записей, которые будут предварительно считаны и отправлены клиен-
ту. Как только вы выполните операцию Skip после любой операции пере-
мещения по таблице в вашем приложении, то не одна, а следующие nNum-
Records записей будут считаны и отправлены на клиентскую машину. Это
позволяет выполнить следующие nNumRecords - 1 операций Skip на ло-
кальной машине. Т.о. запись к которой вы перемещались посредством
операции Skip будет извлечены из памяти клиентской машины, а не счи-
тана с сетевого сервера. Это позволяет достичь значительного увеличе-
ния скорости выполнения операций Skip, особенно когда вы производите
заполнение вашего browse-окна. Умалчиваемое количество записей, кото-
рые будут предварительно считаны на клиентскую машину - меньшее из
значений 10 и числа записей, которые могут уместиться в пакетах, пе-
редаваемых за один сеанс связи Advantage Database Server и Advantage
client (по умолчанию - 8 Кбайт).

Замечание: Некоторые предварительно считанные к клиенту записи могут
не отражать изменения, сделанные другими пользователями, для которых
действительными являются записи, находящиеся в таблице на сервере.
Чтобы сбросить записи кэшируемые в данный момент в памяти на клиент-
ской машине и обновить текущую запись, используйте операцию "SKIP 0",
которая принудительно сбросит кэшируемые на клиентской машине записи.

Вызов функции AX_CacheRecords() со значениями 0 или 1 отключает кэши-
рование записей.

Максимальное количество записей, которые могут быть кэшированы у кли-
ента - количество, соответствующее 64 Кбайтам данных. Т.к. каждая за-
пись имеет 4 дополнительных (служебных) байта, то мы получим макси-
мальное количество записей:

nNumRecords = 65535 / ( размер записи + 4 )

Теоретически, оптимальное количество кэшируемых записей - количество
записей, которое обычно появляется в browse-окнах вашего приложения.
Например, если browse-окно вашего приложения содержит 20 записей, то
вы должны рассматривать изменение значения кэшируемых записей т.о.,
чтобы все 20 записей могли быть прочтены за один запрос к серверу.
Однако, если в вашем приложении часто выполняется всего одна операция
Skip, то чтение каждый раз 20 записей и не использование их может
уменьшить скорость работы вашего приложения. Лучше всего провести
эксперимент, для определения оптимального количества кэшируемых запи-
сей в вашем приложении (или функции).



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




Пост N: 2256
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.02.12 23:36. Заголовок: Судя по описанию, в ..


Судя по описанию, в Ads забота об актуальности буфера возлагается на клиента, и больше никаких действий с ним не предпринимается.
Правда, проблем из-за этого я не замечал (когда работал с Ads).
В letodb я добавил ограничение на использование буфера. Небольшой (не такой, как ожидалось) выигрыш в производительности наблюдается.
Заодно еще кое-что немного оптимизировал.

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



Пост N: 25
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 25.02.12 00:23. Заголовок: Извините если не в т..


Извините если не в ту ветку забрёл ... Подскажите где можно скачать готовый пакет LETODB (WINDOWS). Я пока хотел-бы изучить синтаксис команд и тд . Есть-ли описание функций на русском языке ? Буду очень признателен . Нужно переходить со старого доброго 5.3+ADS на Harbour+MiniGUI ну и LETO DB видимо ..... Пока тяжеловато получается ..... в основном из-за отсутствия примеров c описанием .

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




Пост N: 2065
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.02.12 09:02. Заголовок: Softlog86 пишет: П..


Softlog86 пишет:

 цитата:
Пока тяжеловато получается ..... в основном из-за отсутствия примеров c описанием .



Harbour+MiniGUI - куча примеров.

LETO DB - вообще для новичков сложен....
Нужно бы описание краткое ИДЕОЛОГИИ и ПРИМЕР для новичков. Но времени у наших гуру (как и у всех) не хватает !

Я бы тестером выступил в составление этого руководства....

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




Пост N: 2273
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 25.02.12 09:55. Заголовок: letodb - это сервер ..


letodb - это сервер и клиентская библиотека. Готовый к употреблению сервер конечно можно собрать и выложить, а с клиенткой библиотекой - много их прийдется собирать, для разных версий харбора, с иксом или без, и для разных C компиляторов.
Так что лучше сделайте это сами, тем более это рутинная тривиальная операция. А раз клиента соберете, то нет никакой проблемы и сервер заодно собрать.
Насчет примеров я в затруднении. Дело в том, что новых команд у letodb нет никаких. Это rdd, и его использование такое же, как у dbfcdx/dbfntx. Отличается строка коннекта в имени файла, а она подробно описана.
Есть дополнительные функции, они описаны плохо, но они предназначены для продвинутого использования, а для простой замены dbfcdx/ads на letodb необязательны.
Давать примеры использования use, index, go top, skip, seek, locate что ли ? Зачем ? Отсутствие таких примеров разве являеся препятствием к использованию letodb ? Мне кажется, препятствием является что-то другое.
Мне так же не очень понятно, как можно быть тестером описания. Андрей, ты же пробовал работать с letodb ? Вот и описал бы свои попытки, что получилось, что нет.


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




Пост N: 2066
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.02.12 10:18. Заголовок: Pasha пишет: Андрей..


Pasha пишет:

 цитата:
Андрей, ты же пробовал работать с letodb ? Вот и описал бы свои попытки, что получилось, что нет.



Пробовал, но потом забросил. Рутина заела, времени не хватает...
Под тестером, подразумеваю - сборку клиента и сервера и проверку на примерах по шагам с описанием.

Давай хотя бы вступление напиши (я не смогу)...
Начало уже есть:
letodb - это сервер и клиентская библиотека.
letodb - это rdd, и его использование такое же, как у dbfcdx/dbfntx.



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




Пост N: 2274
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 25.02.12 10:30. Заголовок: Инструкция на русско..


Инструкция на русском языке есть.
Последовательность действий:
Скачать letodb с помощью TortoiseCVS

:pserver:anonymous@letodb.cvs.sourceforge.net:/cvsroot/letodb
указать branch (на вкладке revison TortoiseCVS)
rel-1-mt

Затем сборка: сервер собрать с помощью letodb.hbp под Harbour,
а клиентскую библиотеку: для Harbour - с помощью rddleto.hbp, для xHarbour - make_b32.bat
Свои программы собирать с rddleto.lib
Пример программы можно посмотреть: tests\test_ta.prg


Спасибо: 1 
Профиль
Softlog86



Пост N: 26
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 25.02.12 17:16. Заголовок: Спасибо за "Стар..


Спасибо за "Старт" , но вопросов еще больше ... Скачал кучу раных Harbour / MiniGui и т д . Попробовал всё поставить ,,,, но видно какая-то несовместимость ... Подскажите проверенные "комплекты" . Есть HWGUI есть MiniGUI - внутри есть то-же каталоги Harbour ... Тот-ли это что надо или нужно брать из C:\HARBOUR - установленный из другого пакета ? Есть HARBOUR 3.0 Есть 2.0 . Голова круом идёт

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




Пост N: 2326
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.02.12 17:52. Заголовок: Softlog86 пишет: ук..


Softlog86 пишет:

 цитата:
указать branch (на вкладке revison TortoiseCVS)
rel-1-mt


Чес слово не понял где это указывать.



TortoiseCVS версия 1.12.5

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



Пост N: 27
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 25.02.12 17:59. Заголовок: Сервер & LIB L..


Сервер & LIB LETO я вроде сделал .... Пытаюсь собрать утилиты и примеры .... не получается . Постоянно чего-то нехватает ....

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




Пост N: 2067
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.02.12 18:45. Заголовок: Softlog86 пишет: Ес..


Softlog86 пишет:

 цитата:
Есть HWGUI есть MiniGUI - внутри есть то-же каталоги Harbour ... Тот-ли это что надо или нужно брать из C:\HARBOUR - установленный из другого пакета ? Есть HARBOUR 3.0 Есть 2.0 . Голова круом идёт



Сначала реши на чем будешь делать проги !
Если терминалку, то MiniGUI не нужно, достаточно только HARBOUR 3.0 !
Если Win32 то ставь только MiniGUI !


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


Пост N: 744
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 25.02.12 19:00. Заголовок: Dima, я загружаю ком..


Dima,
я загружаю командой:
cvs -d:pserver:anonymous@letodb.cvs.sourceforge.net:/cvsroot/letodb checkout -r rel-1-mt letodb

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




Пост N: 2327
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.02.12 19:17. Заголовок: PSP Консольный CVS ..


PSP
Консольный CVS я где то посеял ;)
Слушай а выложи комплект сырцов Letodb на обменник.
Спасибо !

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




Пост N: 2068
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.02.12 20:02. Заголовок: Dima пишет: Слушай ..


Dima пишет:

 цитата:
Слушай а выложи комплект сырцов Letodb на обменник.



Присоединяюсь !!! Я бы тоже не отказался.

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




Пост N: 2276
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 25.02.12 20:21. Заголовок: Выложить несложно, н..


Выложить несложно, но конечно хочется, чтобы letodb собирали сами. Каждый раз ведь выкладывать не получится ? А изменения есть.
Поэтому хотелось бы, чтобы и сборка была максимально простой. Говорите, какие есть проблемы со сборкой.
Я не из вредности, сам могу выложить.

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


Пост N: 745
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 25.02.12 20:25. Заголовок: Dima, лови: http://f..


Dima, лови: http://files.mail.ru/V9107O Это - сырцы, бинарника и библиотеки нет, как просил. Но, лучше б, конечно, как Паша говорит...

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




Пост N: 2277
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 25.02.12 20:29. Заголовок: Dima пишет: Чес сло..


Dima пишет:

 цитата:
Чес слово не понял где это указывать.



На 2-й вкладке надо отметить Выберите ветку или метку, и там указать rel-1-mt

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




Пост N: 2328
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.02.12 22:03. Заголовок: Pasha пишет: На 2-й..


Pasha пишет:

 цитата:
На 2-й вкладке надо отметить Выберите ветку или метку, и там указать rel-1-mt


Сработало .
Спасибо !
А "branch (на вкладке revison TortoiseCVS) " не нужен ?

PSP
Спасибо !


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



Пост N: 28
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 26.02.12 01:57. Заголовок: Не могу собрать библ..


Не могу собрать библиотеки HwGUI :


Читал что нужно обновить сырцы .... Не могу найти что-то поновее ....
CVS-ом обновил и LETODB и сам HARBOUR .....

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




Пост N: 2278
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.02.12 10:07. Заголовок: Dima пишет: А "..


Dima пишет:

 цитата:
А "branch (на вкладке revison TortoiseCVS) " не нужен ?



Это одно и то же, у меня просто нерусифицированный TortoiseCVS

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




Пост N: 2279
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.02.12 10:09. Заголовок: Softlog86 пишет: Не..


Softlog86 пишет:

 цитата:
Не могу собрать библиотеки HwGUI :



Надо обновить сырцы hwgui.
Сейчас в функции INFLATERECT стоят вызовы:

hb_storvni( pRect.left, 1, 1 );
hb_storvni( pRect.top, 1, 2 );
hb_storvni( pRect.right, 1, 3 );
hb_storvni( pRect.bottom, 1, 4 );


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



Пост N: 29
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 26.02.12 11:32. Заголовок: Pasha , подскажите п..


Pasha , подскажите параметры сервера обновления HWGUI через CVS или может есть ссылка?

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



Пост N: 448
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 26.02.12 11:54. Заголовок: svn.exe co https://h..

Спасибо: 1 
Профиль
AlexMyr



Пост N: 449
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 26.02.12 12:01. Заголовок: Если кому интересно,..


Оффтоп: Если кому интересно, использую консольній sliksvn __http://www.sliksvn.com/en/download

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




Пост N: 2070
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.02.12 12:29. Заголовок: Pasha пишет: Выложи..


Pasha пишет:

 цитата:
Выложить несложно, но конечно хочется, чтобы letodb собирали сами. Каждый раз ведь выкладывать не получится ? А изменения есть.
Поэтому хотелось бы, чтобы и сборка была максимально простой. Говорите, какие есть проблемы со сборкой.
Я не из вредности, сам могу выложить.



Паша, хотелось бы иметь ВСЕГДА рабочую версию в бинарниках, под текущие версии Харбора и хХарбора !
Как в Харборе и хХарборе !!!

Пускай будут отставать изменения, не важно (хоть по полгода будут отставать) !
Сам Харбор и хХарбор лежат же в бинарниках, а кто может тот собирает.

Я то может и соберу... А вот сборка у новичков точно охоту отобьет !


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



Пост N: 450
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 26.02.12 13:23. Заголовок: Andrey пишет: А вот..


Andrey пишет:

 цитата:
А вот сборка у новичков точно охоту отобьет !

Letodb точно такой же проект как и все программы которые мы собираем, ничего сложного нет, нужно читать хотя бы readme! По бинарникам тоже могут возникнуть вопросы - как запустить, как настроить, запускать как сервис или нет. Еще раз README

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




Пост N: 2072
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.02.12 13:39. Заголовок: AlexMyr пишет: Let..


AlexMyr пишет:

 цитата:

Letodb точно такой же проект как и все программы которые мы собираем, ничего сложного нет, нужно читать хотя бы readme!


Согласен. Но для новичков нужно проще сделать !
Хотя бы рабочую (предыдущую) версию выкладывать. Чтоб установил и заработало !!!
А там дальше новичок и втянется....

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



Пост N: 30
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 26.02.12 13:45. Заголовок: Просто в разные хран..


Просто в разные хранилища выкладываются исходники .... И нужна информация где чего брать свеженького :) А вобще - спасибо всем , кто помог ! ( LETODB заработало ! ). Пытаюсь теперь потихоньку перевести свою складскую программу ( писано с 1995 года) на HARBOUR .
С организацией данных всё понятно . ВОт в раздумьях - нужен-ли моим пользователям GUI ? Работа с такого вида системами сводится как правило к нажатию стрелок курсора / ENTER/ESC/ и ввод буквенно-цифровой информации . Графическая среда нужна будет только для отображения фотографий товара и тому подобного .... Собственно переход в основном будет связан с новым способом доступа к данным ( LETO/ADS ) и возможностью работы в среде VISTA/WIN7 ......
Пока использую MiniGui и кой какие утилитки уже работают пару лет у клиентов (Программа прайс-лист- фотографии цены и обновление данных через Интернет) . В общем пишется несложно - тут снимаю шляпу перед разработчиками ! а вот с HWGUI не пробовал - смущает что проект вроде утих .....

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



Пост N: 451
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 26.02.12 13:54. Заголовок: Softlog86 пишет: Пр..


Softlog86 пишет:

 цитата:
Просто в разные храничлища выкладываются исходники .... И нужна информация где чего брать свеженького

Хранилище одно: http://sourceforge.net/projects/letodb/
Softlog86 пишет:

 цитата:
ВОт в раздумьях - нужен-ли моим пользователям GUI ?

Если они просят, то может и нужен.
Softlog86 пишет:

 цитата:
а вот с HWGUI не пробовал - смущает что проект вроде утих .....

надо попробовать и потом для себя уяснить подходит проект вам или нет. Меня hwgui устраивает всем, немного бы дизайнер отчетов улучшить, а так все гуд. Есть конечно проблемы у организованности разработчиков, но думаю скоро все прояснится.

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




Пост N: 2280
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.02.12 15:02. Заголовок: Andrey пишет: Согла..


Andrey пишет:

 цитата:
Согласен. Но для новичков нужно проще сделать !
Хотя бы рабочую (предыдущую) версию выкладывать. Чтоб установил и заработало !!!
А там дальше новичок и втянется....



У меня, собственно, возражений нет. И лучше сборку выкладывать на сайте проекта:
https://sourceforge.net/projects/letodb/files/
Вот только не могу разобраться, как туда ее выложить. Зашел под своим эккаунтом, и не вижу, как туда что-то добавить.
Может быть, это может сделать только администратор проекта ? Никто ничего не подскажет ?

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



Пост N: 32
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 26.02.12 22:25. Заголовок: Выходные занял полез..


Выходные занял полезным делом : Изучаю LETO и заодно кой-чего экспериментирую .
Появились вопросы :
1) LETODB - Если IP-сервера у нас не фиксирован а выделяется динамически . Вот у меня в сети компьютеры загружаются в разное время - соответственно роутер выделяет адреса ( ну такая архитектура у нас) - тоесть Динамически . Сегодня у "Сервера" будет 192.168.0.0 а завтра он может быть 192.168.0.10 .
Вопрос - есть-ли способ как-то достучаться до сервера не зная его IP а лишь имея Название в сети ?
2) По программированию вопрос . Как сейчас удачнее всего реализовать поиск фрагментов строк в базе имея такую структуру файла :

CODE N /5 <- Код довара 1
TYPE C 100 <- Наименование Ручка дверная 2012-R Левая передняя производство Польша
COMMENT C 100 <- Описание OPEL VECTRA 95-97/ OPEL ZAFIRA

Поиск должен возвращать массив Номеров записи или значений поля CODE в случае обнаружения , например по такому запросу :
"перед FIRA 20 " <- То есть я хотел "спросить" как-бы : Дай все записи где есть следующие фрагменты слов "
"перед" ( в базе есть строки со словами передний(передняя и тд) + "FIRA" - есть в базе "ZAFIRA" и "20" - есть "2012"

Сейчас в CLIPPER я пользуюсь хорошей библиотекой xFinder , а как обстоят дела с таким поиском в среде HARBOUR ? Может есть RDD с уже встроенными функциями такого поиска ? Для меня это ключевой вопрос - потому как это самая главная функция для быстрого поиска в базах ..... Ну так я приучил клиентов .... Они точно не запоминают ассортиментный перечень но по ключевым фразам моментально находят что нужно ...



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



Пост N: 452
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 26.02.12 22:42. Заголовок: Softlog86 пишет: 1)..


Softlog86 пишет:

 цитата:
1) LETODB - Если IP-сервера у нас не фиксирован а выделяется динамически .

Проще зарезервировать за mac адресом постоянный ip в настройках dhcp сервера, зачем что-то выдумывать.

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



Пост N: 453
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 26.02.12 22:49. Заголовок: Softlog86 пишет: 2)..


Softlog86 пишет:

 цитата:
2) По программированию вопрос . Как сейчас удачнее всего реализовать поиск фрагментов строк в базе имея такую структуру файла :

см. ordwildseek()

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




Пост N: 2331
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.02.12 23:13. Заголовок: Softlog86 пишет: Се..


Softlog86 пишет:

 цитата:
Сейчас в CLIPPER я пользуюсь хорошей библиотекой xFinder


Выложи на обменник глянуть что за зверь.

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




Пост N: 2281
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.02.12 23:20. Заголовок: Softlog86 пишет: Вы..


Softlog86 пишет:

 цитата:
Выходные занял полезным делом : Изучаю LETO и заодно кой-чего экспериментирую .
Появились вопросы :



1. Коннект возможен не только по ip, но и по имени компьютера в сети:

//servername:2812

2. Если нет индекса по type, то можно использовать обычный фильтр.
Он будет обрабатываться на сервере, а клиент получит только совпадающие строки

Строка фильтра:
'"' + cStr1 + '"$Type.and.''"' + cStr2 + '"$Type' + ...


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



Пост N: 457
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 27.02.12 17:26. Заголовок: Паша! А не могли бы ..


Паша!
А не могли бы Вы на __http://sourceforge.net/projects/letodb/ указать где-то, что нужно скачивать rel-1-mt ревизию, а то человек Bruno пробует собрать letodb почти годичной давности свежим Harbourом и ничего не получается.

Pasha пишет:

 цитата:
Может быть, это может сделать только администратор проекта ? Никто ничего не подскажет ?

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

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




Пост N: 2285
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 27.02.12 19:33. Заголовок: Я вчера другому поль..


Я вчера другому пользователю из другой страны подсказывал тоже самое.
Написал в форум на sf, и Александру тоже.

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





Пост N: 49
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 28.02.12 17:02. Заголовок: Pasha Для доступа в..


Pasha

Для доступа в https://sourceforge.net/projects/letodb/files/ вам нужны права администратора.
Сейчас админ Александр, он должен вам дать права.




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



Пост N: 459
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 29.02.12 15:57. Заголовок: Паша! Вот письмо Pr..


Паша!

Вот письмо Przmeka с harbour-users list по поводу сборки под линуксом и он приложил diff файл, может посмотришь.

I've just tested it (rel-1-mt) and LETO uses native windows
types in its code and this is the source of the problem.
Below I'm attaching workaround for it (it defines BOOL, LONG,
UINT, ...) which resolves the problem with Harbour builds but
I suggest to clean LETO code and replace all such types with
native Harbour.
I also suggest to create one header file included by leto
source code which will have all macros necessary to hide
differences between Harbour and xHarbour and older versions
of both compilers instead of hardcoding them in different
places. The code will be much cleaner and easier to update.

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




Пост N: 2288
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.02.12 19:27. Заголовок: Спасибо что подсказа..


Спасибо что подсказали, а то я эту группу не читаю, так бы и прозевал. Только что к ней присоединился.
Алексей, а не могли бы переслать мне на ящик это обсуждение, с вложением ? А то у меня сообщения через
http://groups.google.com/group/harbour-users?hl=ru
почему-то не открываются, а на мыло приходят только новые.

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



Пост N: 460
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 29.02.12 21:22. Заголовок: Паша, вложение отпра..


Паша, вложение отправил на email с профиля, а обсуждали там про ошибки сборки под убунтой.
попробуйте это http://groups.google.com/group/harbour-users/browse_thread/thread/c2ee05c7604baf2b?hl=ru#
и http://groups.google.com/group/harbour-users/browse_thread/thread/8891537a9041b743?hl=ru#

если не получится прочитать, то завтра с работы отправлю обсуждение.

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




Пост N: 2289
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.03.12 09:08. Заголовок: Да обсуждение уже и ..


Да обсуждение уже и не нужно, спасибо, суть понятна, главное есть патч.
Хотя почему-то у меня эти странички открываются пустые. С 3-х провайдеров пробовал.

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





Пост N: 50
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 01.03.12 20:56. Заголовок: И у меня тоже пустые..


И у меня тоже пустые страницы, у разных провайдеров


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



Пост N: 468
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 01.03.12 21:06. Заголовок: кеш чистили, может п..


кеш чистили, может поможет?

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




Пост N: 2338
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.03.12 22:21. Заголовок: У меня все нормально..


У меня все нормально.

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





Пост N: 51
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 01.03.12 23:27. Заголовок: У меня всё нормально..


У меня всё нормально в Firefox, в опере не показывает.

Обновил оперу и всё стало ок.

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



Пост N: 46
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 08.03.12 19:09. Заголовок: Подскажите - как нуж..


Подскажите - как нужно коннектиться к LETODB на локальном компьютере ? Дома приходится работать ....
Соединение со строкой "//192.168.0.101:2812/" не проходит ...


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




Пост N: 2351
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.03.12 19:40. Заголовок: Softlog86 Почитай ,..


Softlog86
Почитай , должно помочь. Возможно что то не так сделал.
http://zalil.ru/32839487

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



Пост N: 47
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 08.03.12 20:59. Заголовок: Всё вроде правильно ..


Всё вроде правильно написал :
REQUEST LETO
RDDSETDEFAULT( "LETO" )

IF leto_Connect( "//192.168.0.101:2812/" ) == -1 && Проверяем загруже-ли LETO-SERVER
Alert("LETO-DB NOT CONNECTED " )
ENDIF

USE ("//192.168.0.101:2812/DETAL.DBF") SHARED NEW <------ Генерирует страшную ошибку !




PS : Собрал LETO (LIB) из исходников под xHarbour .
Может что не так ?
Видимо какие-то проблемы с генерацией библиотеки . Только что обновил через CVS
получился RDDLETO.LIB РАЗМЕР - 92672 . у всех такой для xHarbour ??
при линковке с новой библиотекой при вызове CONNET_LETO() выскакивает по ошибке :
Неисправимая ошибка 9009: hb_xrealloc не может перераспределить память ....


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




Пост N: 2352
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.03.12 22:11. Заголовок: А сервер запускал ?..


А сервер запускал ?

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



Пост N: 48
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 08.03.12 22:17. Заголовок: Да - он работает ! В..


Да - он работает ! В я уже проверял . - ошибку соединения не генерирует ..... а вот при вызове USE - проблема .....
Бросьте в меня RDDLETO.LIB для xHARBOUR ..... Похоже в этом дело

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



Пост N: 49
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 09.03.12 16:43. Заголовок: Разобрался с глюками..


Разобрался с глюками ..... перекомпилировал . Получил :LETO DB Server 2.03 . Возможно это и есть последний релиз ... По крайней мере получается хоть что-то делать ...

Вопрос ?->
Всё это находится на LETO-DB сервере :
Имеется DBF и индекс к нему c несколькими Тэгами .
LAN:="//192.168.0.101:2812/" <---- Это маршрут
INDEX ON CODE TAG CODE TO (LAN+"JRINDEX.CDX") <--- По коду товара
INDEX ON OPER TAG OPER TO (LAN+"JRINDEX.CDX") <--- По коду операции
INDEX ON DATEP TAG DATEP TO (LAN+"JRINDEX.CDX") <---- По дате
INDEX ON OPTCODE TAG OPTCODE TO (LAN+"JRINDEX.CDX") <---- По коду клиента
эти индексы - как-бы общие для всех режимов и пользователей

в CLIPPER я использовал "дополнительный-временный" индекс , но организовывал его отдельным файлом в нужный момент (просмотр) :

MyBAG:=LAN+"RTMP.CDX" && OPTCODE- поле КОД КЛИЕНТА , Z - нужный в данный момент код клиента

INDEX ON DATEP TAG DATX FOR (OPTCODE = Z) TO (MyBAG) UNIQUE ADDITIVE

То есть на основе уже имеющегося индекса (DATEP-даты операций) достраивал по условию (OPTCODE=Z - оставить только для клиента Z)

SET ORDER TO TAG DATX
(Теперь у нас есть все даты (DATEP) для клиента OPTCODE=Z )
.... просмотр данных

По окончании просмотра - убираем за собой
DELETE TAG DATX
DELETE FILE (MyBAG)

Но такая конструкция отказывается работать c LETODB .....

Как я понял - к одному DBF файлу нельзя прицепить несколько CDX , да ещё и на разных дисках (LETO / локальный ) ?
Хотя должно вроде повторять конструкцию из CLIPPER..... обидно .....
в мануале написано что не все RDD могут поддерживать это ....



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




Пост N: 2296
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.03.12 09:28. Заголовок: В харборе для времен..


В харборе для временных индексов есть опция команды INDEX: temporary. Используйте ее. Но такой индекс будет доступен только для одного клиента. Так поступать крайне неэффективно.
Я бы просто в таком случае добавил бы еще один постоянный индекс:
OptCode+DTOS(DateP)
Это было бы куда эффективнее, и, собственно, так и надо делать. Нет необходимости строить левый индекс для каждого клиента, он всегда есть.
А letodb не поддерживает собственные индексы и локальные. Поддерживаются только индексы на сервере.


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




Пост N: 2297
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.03.12 09:32. Заголовок: А еще лучше модифици..


А еще лучше модифицировать индексное выражение для 4-го индекса:
Вместо

OptCode

использовать

OptCode+DTOS(DateP)

Если поле OptCode числовое, то

Str(OptCode)+DTOS(DateP)

Так убиваются все зайцы одним выстрелом.

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



Пост N: 50
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 10.03.12 19:03. Заголовок: Паша , спасибо ! В п..


Паша , спасибо ! В принципе построение дополнительного индекса было решением "на ходу" ..... а так как систему полностью перелопачиваю - буду оптимизировать и старый код .


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



Пост N: 51
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 13.03.12 23:40. Заголовок: При вызове ORDKEYGOTO вылазит ALERT


Подскажите .... При вызове ORDKEYGOTO()
Выскакивает ALERT :


Собирал из последних (Получилась версия LETO SERVER : 2.03)

ЧТо у меня не так ? Может сие лаконичное сообщение говорит о несовместимости какой ?


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




Пост N: 2299
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.03.12 09:08. Заголовок: В letodb никаких але..


В letodb никаких алертов и в помине нет, конечно. Если выскакивает такое сообщение - это либо неправильная сборка, либо где-то в программе вызывается этот Alert.
Во всяком случае, вызов OrdKeyGoto(<nPos>)

эквивалентен

dbOrderInfo(DBOI_POSITION,,, <nPos>)

с #include "dbinfo.ch", конечно
Попробуйте заменить

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



Пост N: 52
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 14.03.12 11:51. Заголовок: Паша , спасибо Вам з..


Паша , спасибо Вам за регулярные подсказки и помощь ! А проблема была странная :
в тексте у меня была функция-заменитель :
OKEYGOTO(nPOS)
IF AX_LOADED()
(вызов этой функции для работы с ADS-сервером)
ELSE
ORDKEYGOTO(nPOS)
ENDIF
Return

Заменил во всех вызовах на штатный ORDKEYGOTO ..... и всё стало нормально

Хотелось-бы чтоб сообщения об ошибках в LETO были более вразумительные
Заметил что в LETO не работает EVAL + EVERY конструкция :
INDEX ON CODE TAG CODE TO (LAN+"DETAL.CDX") EVAL {|| MyMETER()} EVERY REC_INCREMENT
Хотел ползунок пришпандорить при индексации ....

Ну и обязательный синтаксис с TAG !!! : INDEX ON (ключ) TAG (название) TO (Индексный файл)
Если без TAG - будет ошибка !

Поправьте если ошибаюсь

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




Пост N: 2301
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 14.03.12 12:19. Заголовок: Softlog86 пишет: Хо..


Softlog86 пишет:

 цитата:
Хотелось-бы чтб сообщения об ошибках в LETO были более вразумительные
Заметил что в LETO не работает EVAL + EVERY конструкция :
INDEX ON CODE TAG CODE TO (LAN+"DETAL.CDX") EVAL {|| MyMETER()} EVERY REC_INCREMENT
Хотел ползунок пришпандорить при индексации ....



Эти опции не поддерживаются. Чтобы сделать их поддержку, надо заметно усложнить индексацию.
Сейчас алгоритм простой: клиент дает команду серверу на создание индекса, и ждет ее завершения.
С этими опциями пришлось бы организовывать обмен пакетами между клиентом и сервером:
в процессе индексации сервер должен отправлять клиенту промежуточный пакет, клиент выполнит свой блок кода, даст команду на продолжение индексации, и так далее. Это приведет и к снижению быстродействия. Мне бы не хотелось с этим заморачиваться.


 цитата:
Ну и обязательный синтаксис с TAG !!! : INDEX ON (ключ) TAG (название) TO (Индексный файл)
Если без TAG - будет ошибка !



Такое использование нестандартно для dbfcdx. Я добавлял поддержку такого синтаксиса, но серьезно его не проверял.

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




Пост N: 2108
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.03.12 18:56. Заголовок: Pasha пишет: Это пр..


Pasha пишет:

 цитата:
Это приведет и к снижению быстродействия. Мне бы не хотелось с этим заморачиваться.


Правильно! И не надо снижать быстродействие.
Только в доку написать что НЕ поддерживается !

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



Пост N: 53
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 14.03.12 20:49. Заголовок: Andrey - вот на это ..


Andrey - вот на это самое я и намекал ! Именно описать в доках ! А то приходится часами ковыряться и самого себя десятки раз перепроверять .....

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




Пост N: 283
Зарегистрирован: 06.02.07
ссылка на сообщение  Отправлено: 15.03.12 14:42. Заголовок: Кто ковыряет LETODB ..


Кто ковыряет LETODB и немножко сечет в Вики-редактировании - ну нарисуйте главу про него в Вики-книжку по Harbour, что я начал делать на Вики-книге: [url=http://ru.wikibooks.org/wiki/Harbour_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)]вот в этой[/url] . Многим же легче будет при структурированной доке!..

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




Пост N: 2303
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.03.12 20:45. Заголовок: Бывает необходимость..


Бывает необходимость проверить существование множества файлов в несколькиих каталогах.
Скажем, для десятка (или не одного десятка) dbf-файлов, плюс их индексы, это приведет к нескольким десяткам запросов к серверу.
Написал маленькую (ну очень) udf-функцию, которая делает это одним запросом.
Как обычно - в tests\letoudf.prg


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




Пост N: 2306
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 16.03.12 15:31. Заголовок: gustow пишет: Кто к..


gustow пишет:

 цитата:
Кто ковыряет LETODB и немножко сечет в Вики-редактировании - ну нарисуйте главу про него в Вики-книжку по Harbour, что я начал делать на Вики-книге: [url=http://ru.wikibooks.org/wiki/Harbour_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)]вот в этой[/url] . Многим же легче будет при структурированной доке!..



Алексей, я когда-то сочинил такой текст (см. ниже). Если есть возможность, закиньте пожалуйста его в вики.

Что такое Leto DB Server?

Leto DB Server (letodb) – это 32/64-разрядный многоплатформенный сервер Баз Данных, в основном предназначенный для клиентских программ, написанных на языке Harbour, для доступа к файлам dbf. Проект Letodb стартовал в 2008-м году, его автор - Александр Кресин. В 2011-м году Letodb был существенно доработан.
Letodb – это высокоэффективный RDBMS клиент-сервер для сетевых, автономных (локальных) и интернет - приложений базы данных. Letodb представлен как Open Source проект, разработанный под лицензией GPL, дающей право на его свободное использование. Преимуществом letodb является объединение традиционных средств xBase для доступа Базам Данных и клиент-серверной технологии. Сервер letodb ответственен за весь доступ к базе данных (от имени клиентов). С оптимизированной методологией доступа к данным Letodb обеспечивает безопасность, стабильность и целостность данных при минимальных требованиях к обслуживанию.
Сервер Базы данных letodb улучшает работу с базой данных сети. Letodb разгружает большую часть работы, обычно выполняемой каждым автоматизированным рабочим местом клиента. Работая с сетью, letodb обрабатывает запросы данных и возвращает информацию клиентам сети. Сервер Базы данных letodb использует архитектуру клиент-сервер, улучшая многопользовательскую работу, стабильность базы данных, и безопасность базы данных. Сервер letodb поддерживает транзакции. При этом есть гарантия того, что сложная операция обновления Базы данных будет выполнена целиком. Также имеется возможность создания серверных процедур, которые вызываются с клиента и выполняются на сервере.
Структурно letodb состоит из серверной и клиентской части. Letodb (как серверная, так и клиентская часть) может использоваться для операционных систем MS Windows, Linux и MacOS. Для MS Windows поддерживаются операционные системы Windows 98/ME, Windows NT/2000/2003, Windows XP 32/64 бит, Windows Vista 32/64 и Windows 7 32/64 бит.
Под управлением MS Windows сервер letodb запускается как служба, но есть возможность собрать его как приложение. Для всей линейки разрядных ОС Windows: от Windows 98 до Windows 7 используется одна и та же сборка сервера. Под управлением ОС Linux сервер letodb запускается как демон. Как правило, для различных версий Linux сервер letodb надо собирать отдельно для каждой. Сервер letodb (как и Harbour) поставляется с исходными текстами и правилами сборки. Сервер letodb прост в настройке: достаточно указать папку, в которой располагаются Базы Данных, и некоторые другие настройки. В процессе работы сервер letodb не требует специального обслуживания. Letodb соединяется с клиентскими приложениями по протоколу TCP/IP. По умолчанию при этом используется порт 2812, хотя допускается работа и через другой порт. Соединение с сервером возможно как через локальную сеть, так и через интернет и интранет сети.
Сервер letodb обеспечивает безопасность доступа к данным. Имеется возможность включить режим шифрования передаваемого трафика. Также есть средства авторизации пользователей. В этом случае сервер letodb будет обслуживать только те соединения, в которых указаны параметры авторизации: имя пользователя и пароль. Для пользователей можно установить права на администрирование сервера, управление сервером, а также право на изменение данных.
Клиентская часть letodb – это библиотека, содержащая драйвер letodb для Harbour – модуль rdd, который удовлетворяет стандарту замещаемых драйверов баз данных языка Harbour, совместимых с драйверами dbfcdx/dbfntx, и поддерживающих их базовую функциональность. Клиентская библиотека letodb также содержит набор функций для управления и администрирования сервером letodb, функции работы с транзакциями, а также набор дополнительных функций для оптимизации работы с Базой данных. Клиентская библиотека letodb позволяет собрать приложение, работающее с сервером letodb, как для ОС MS Windows, так для Linux. Клиентское приложение может работать в гетерогенной сети, в которой используются сервера letodb, работающие под управлением различных ОС: как MS Windows, так и Linux.
Для настройки клиентского приложения достаточно указать IP-адрес или имя компьютера, на котором запущен сервер letodb, номер используемого порта, а также папки на сервере, в которых располагается база данных. Для работы с базой данных нет необходимости открывать сетевые ресурсы. Доступ к различным метаданным (шаблонам документов, скриптам, отчетам) также выполняется не через файловые операции, а с помощью запросов к серверу letodb. Возможно соединение приложений, использующих клиентскую библиотеку letodb, с удаленными Базами Данных через интернет и интранет сеть.
Для управления сервером предоставляется отдельная утилита, которую можно запустить как на клиенте, так и на компьютере, на котором запущен сервер. С помощью этой утилиты можно просмотреть все клиентские приложения, которые соединились с сервером letodb, а также открытые таблицы Базы Данных. При необходимости есть возможность управления (отключения) соединениями.


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




Пост N: 285
Зарегистрирован: 06.02.07
ссылка на сообщение  Отправлено: 19.03.12 07:32. Заголовок: Pasha , спасибо, уже..


Pasha , спасибо, уже что-то :) Добавил в Википедию в статью про Harbour в главку "Разработка клиент-серверных и Web-приложений".

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




Пост N: 2311
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.03.12 16:25. Заголовок: Мне тут поступила ре..


Мне тут поступила рекламация из соседнего полушария нашей планеты. Народ использует инет-соединение для letodb. Обычные операции выборки из БД работают на ура, т.е. быстро. А вот просмотр в гриде - а именно xbrowse fwh - медленно, сильно тормозит. Думаю, тоже самое будет иметь место и для других гридов, в частности tsbrowse.
Анализ показал, что причина этого - многочисленные запросы reccount(), которые вызывает грид. Я уже подготовил лекарство. Суть в чем. При получении данных текущей записи я также стал передавать текущее к-во записей. И при запросе reccount можно не выдавать запрос к серверу, а использовать ранее полученное значение.
Эта фича включается (по умолчанию она выключена) вызовом:

rddInfo(RDDI_REFRESHCOUNT, .f.,, nConnection)

Если эта фича включена, то клиент увидит увеличение к-ва записей в таблице не сразу после ее добавления другим клиентом, а только после того, как будет обновлена текущая запись.

Кстати, в Ads тоже есть такая фича, но в rddads нет возможности ее включить.


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


Пост N: 751
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 19.03.12 16:34. Заголовок: Pasha пишет: Народ ..


Pasha пишет:

 цитата:
Народ использует инет-соединение для letodb


Интересно, какая скорость uplink-а со стороны сервера.

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




Пост N: 2314
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.03.12 17:39. Заголовок: PSP пишет: Интересн..


PSP пишет:

 цитата:
Интересно, какая скорость uplink-а со стороны сервера.



Вот чего не знаю, того не знаю

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




Пост N: 2351
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 17.05.12 22:37. Заголовок: Добавил параметр nTi..


Добавил параметр nTimeOut в функции leto_Connect для соединения с сервером, а также опцию "TimeOut=..." в letodb.ini на сервере


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



Пост N: 490
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 22.05.12 13:00. Заголовок: В тестовый пример до..


В тестовый пример добавил orddescend
 
use ( cPath+"Nakl1" ) New
index on Dtos(DORD)+Str(NORD,10) TAG DATA
orddescend(,,.t.)

и прога вываливается
 
C:\dev\letodb\tests\>test_ta.exe

Start
Files has been created
Error LETO/1021 Data type error: -003
Called from ORDDESCEND(0)
Called from MAIN(20)


Раньше вроде работало.

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




Пост N: 2355
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 22.05.12 18:58. Заголовок: AlexMyr пишет: Рань..


AlexMyr пишет:

 цитата:
Раньше вроде работало.



Работало в версии 1.х.
Поправил.

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



Пост N: 491
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 22.05.12 20:04. Заголовок: Паша, спасибо, завтр..


Паша, спасибо, завтра проверю на работе.

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



Пост N: 492
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 23.05.12 09:26. Заголовок: Pasha пишет: Поправ..


Pasha пишет:

 цитата:
Поправил.

работает, спасибо

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




Пост N: 106
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 07.06.12 00:10. Заголовок: Letodb stop !


Заметил что по команде letodb stop под Win7 процесс Letodb не закрывается
а в логе пишет Can't STOP the server (not started?)...
под XP все нормально.

Замечание: Запускаю и останавливаю из другой программы

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


Пост N: 767
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 07.06.12 08:45. Заголовок: sashaBG, а не собран..


sashaBG, а не собран ли letodb.exe как сервис (служба)?

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




Пост N: 2364
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.06.12 09:03. Заголовок: PSP пишет: а не соб..


PSP пишет:

 цитата:
а не собран ли letodb.exe как сервис (служба)?



Так эта команда как раз останавливает сервис.
letodb stop коннектится с запущенным сервисом, и посылает ему команду stop.
Что-то мещает сконнектиться с сервисом.

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




Пост N: 2365
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.06.12 09:04. Заголовок: Я проверил на 2-х ко..


Я проверил на 2-х компьютерах с win7 - работает
Возможно, эту команду блокирует брандмауэр

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




Пост N: 107
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 07.06.12 11:04. Заголовок: LetoDB собран с __WIN_DAEMON__


LetoDB собран с __WIN_DAEMON__
последовательност комманд :

letodb
letodb stop


letodb.log

06/07/12 10:46:49: Leto DB Server has been started.
Leto DB Server v.2.05 ! INIT: DataPath=C:\LetoDB, ShareTables=0, MaxUsers=500, MaxTables=5000, CacheRecords=10
06/07/12 10:47:07: Can't STOP the server (not started?)...



а кода LetoDb собран как сервис

letodb install
дает следующее

06/07/12 11:02:05: Error installing LetoDB service: 1072


ето все при использовании BCC55 и батник make_b32.bat

когда собраю через hbmk2 service запускается и останавливается (и BCC55 и MINGW )

а через __WIN_DAEMON__ запускается , но не останавливается

может я неправильно собираю , вот скрипт:


setlocal
set path=C:\borland\bcc55\bin;c:\harbour\bin
hbmk2 rddleto.hbp letodb.hbp
endlocal


Пока вернулся на старую сборку с марта месяца , там все везде работает :(

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




Пост N: 108
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 07.06.12 17:06. Заголовок: Проверил


Паша

после последних 2-х commit-ов у меня через __WIN_DAEMON__ не работает
а до того (2012-04-05 19:20) включительно работает.



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




Пост N: 2368
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.06.12 19:41. Заголовок: sashaBG пишет: посл..


sashaBG пишет:

 цитата:
после последних 2-х commit-ов у меня через __WIN_DAEMON__ не работает
а до того (2012-04-05 19:20) включительно работает.



Поправил
Как оказалось, была необходима инициализация значения timeout для передачи сообщения.

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



Пост N: 66
Зарегистрирован: 12.07.06
ссылка на сообщение  Отправлено: 19.06.12 14:24. Заголовок: Всем людям доброй воли


Не без труда разобрался и скачал последние исходники и собрал сервер с клиентом.
Использую MiniGui+Bcc+Harbour и для экономии времини на освоение прошу поделиться, кому не жалко работающими примерами. Особенно интересует совместная работа на общих таблицах в сети, хотя не откажусь и от любых других исходников.
Заранее благодарен

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



Пост N: 516
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 19.06.12 14:31. Заголовок: В папке tests есть п..


В папке tests есть примеры, к-е можно пощупать.

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




Пост N: 2401
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.06.12 14:51. Заголовок: Различие между rdd d..


Различие между rdd dbfcdx и leto заключается только в открытии файла (команда use), а именно в том, что перед именем открываемого файла надо указать строку коннекта к серверу.
Все остальные rdd-функции, в том числе совместный доступ к файлам по сети, работают без изменений, и отдельных примеров для них не надо.
Еще по-другому надо исмользовать файловые операции, такие как File(), MemoRead() и пр, если предполагается работать с файлами через сервер letodb. Но тут пример не сделаешь, каждый использует эти функции по своему.

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




Пост N: 2251
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.06.12 16:48. Заголовок: Pasha пишет: Еще по..


Pasha пишет:

 цитата:
Еще по-другому надо исмользовать файловые операции, такие как File(), MemoRead() и пр, если предполагается работать с файлами через сервер letodb. Но тут пример не сделаешь, каждый использует эти функции по своему.


А примерчик небольшой хоть дайте на File() ?

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




Пост N: 2410
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 20.06.12 17:49. Заголовок: Andrey пишет: А при..


Andrey пишет:

 цитата:
А примерчик небольшой хоть дайте на File() ?



Вот же неисправимый любитель примеров :)
Даю пример

Local cPath := "//127.0.0.1:2812/temp/"

? leto_File( cPath + cFile )

сильно такой пример поможет ? Наверное, и без примера можно сообразить, как использовать такую функцию


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




Пост N: 2252
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.06.12 00:06. Заголовок: Pasha пишет: Вот же..


Pasha пишет:

 цитата:
Вот же неисправимый любитель примеров :)



Я опыта набираюсь !
А файловые операции для клиент-серверных программ для меня загадка.
Видел в других системах на ADS-клиенте (Delphi) следующее. Программа учета субсидий за квартплату.
Приносят базу плательщиков (DBF порядка 30 000 записей) за текущий месяц из ЕРЦ. Так вот чтоб ее принять, т.е. скопировать с клиентского места в рабочую базу, программа тупо копирует по одной записи. Времени уходит примерно 4 часа.

Я программисту предлагал, т.к. базы напрямую не доступны, сделать архив DBF, скопировать на сервер, там распаковать и добавить уже на сервере. У него почему-то не получилось. Так юзера и мучаются который год уже....

Вот я и хочу пример на LetoDB сделать для себя на будущее...
Операции по добавлению чужих баз очень затратные по времени.
Или я не прав ?

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




Пост N: 2411
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 21.06.12 08:23. Заголовок: Andrey пишет: Или я..


Andrey пишет:

 цитата:
Или я не прав ?



В чем не прав ? Какая проблема для программиста скопировать файл ? Странные какие-то проблемы и многочасовые мучения. Это программист неправильный

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




Пост N: 2253
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.06.12 09:48. Заголовок: Andrey пишет: скопи..


Andrey пишет:

 цитата:
скопировать на сервер,


Имеется ввиду через порт.

Как скопировать файл с флешки в каталог БАЗЫ на LetoDB ?

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



Пост N: 520
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 21.06.12 10:07. Заголовок: Andrey пишет: Как с..


Andrey пишет:

 цитата:
Как скопировать файл с флешки в каталог БАЗЫ на LetoDB ?

Кажется что это двойная работа, сначала данные забросить на сервер а потом эти же данные втянуть в базу. Или я не прав?

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




Пост N: 2412
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 21.06.12 10:09. Заголовок: Andrey пишет: Имеет..


Andrey пишет:

 цитата:
Имеется ввиду через порт.



Подумаешь, порт. Какие проблемы у могут быть у программиста с портом ? Тем более на Дельфи. Или лучше заставить юзера помучиться ?


 цитата:
Как скопировать файл с флешки в каталог БАЗЫ на LetoDB ?



В readme_rus.txt даже не заглядываем ?

Если файл небольщой, и его можно полностью прочитать в память, то одним вызовом Leto_MemoWrite
Если файл монструазный, то в цикле порциями с помощью функции Leto_FileWrite


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




Пост N: 2254
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.06.12 11:32. Заголовок: Pasha пишет: В read..


Pasha пишет:

 цитата:
В readme_rus.txt даже не заглядываем ?



В последней версии для скачки letodb-0.8.src нет его.
Нашел так. Пошел изучать матчасть.....

А как кстати проделать обратную операцию: из папки сервера LetoDB переписать файл формы *.fr3 на локальный компьютер ?

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




Пост N: 2413
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 21.06.12 12:35. Заголовок: Andrey пишет: В пос..


Andrey пишет:

 цитата:
В последней версии для скачки letodb-0.8.src нет его.



Так там много чего нет, это версия 3-х летней давности. Файлы для скачивания может заливать только админ проекта, т.е. А.Кресин. Последний раз он это делал давно.
Скачивать надо сырцы с CVS, ветвь rel-1-mt


 цитата:
Нашел так. Пошел изучать матчасть.....

А как кстати проделать обратную операцию: из папки сервера LetoDB переписать файл формы *.fr3 на локальный компьютер ?



Дык надо курить leto_memoread и Leto_FileRead

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