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




Пост N: 2728
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.03.13 11:27. Заголовок: Leto DB Server (продолжение 9)


Продолжаем тут

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


alkresin
moderator


Пост N: 763
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 04.01.14 17:59. Заголовок: Andrey пишет: Не см..


Andrey пишет:

 цитата:
Не смотря на праздники - работа идет !


Погода не очень - выходить из дома неохота. Слоняясь по квартире, иногда и к компьютеру подходишь... :)

С созданием dll вопрос решился просто - hbmk, все-таки, иногда бывает полезен.

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


Пост N: 764
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 09.01.14 10:46. Заголовок: По поводу добавления..


По поводу добавления bAutOpen:

лучше, наверное, сделать так же, как и с остальными установками (SetDeleted, SetCentury, etc.) - добавить в letocl.c static unsigned int s_uiAutOpen, соответствующую функцию LetoSetAutOpen(), добавить вызов этой функции в leto1.c в leto_SetOptions() и вызывать leto_SetOptions() из LetoOpen()

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




Пост N: 3112
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.01.14 14:34. Заголовок: Переделаю..


Переделаю

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


Пост N: 767
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 16.01.14 10:20. Заголовок: Добавил англоязычный..


Добавил англоязычный форум по letodb: https://sourceforge.net/apps/phpbb/letodb/index.php, надо будет и на сайте ( letodb.sourceforge.net ) что-нибудь вразумительное написать, а то новым пользователям непонятно даже, какую ветку использовать, как код брать.

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




Пост N: 3116
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 16.01.14 13:39. Заголовок: Можно было бы дать с..


Можно было бы дать ссылку на этот форум в Harbour Users

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


Пост N: 768
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 16.01.14 15:31. Заголовок: Дал. Хочу еще написа..


Дал.
Хочу еще написать php client. Попробовал уже простейшие вещи - присоединиться, получить management информацию - работает.

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




Пост N: 3214
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.01.14 13:48. Заголовок: alkresin пишет: Хоч..


alkresin пишет:

 цитата:
Хочу еще написать php client


Поддерживаем !
И что будет в результате: доступ через Харбор и доступ к базе на сайте через php client ?

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



Пост N: 22
Зарегистрирован: 22.03.06
ссылка на сообщение  Отправлено: 28.01.14 10:00. Заголовок: Александр, Паша в п..


Александр, Паша

в процессе тестирования LetoDb (v 1.350.2.172 2014/01/15 10:57:57)
сервер - linux, клиент - win7, обнаружил несколько ошибок.
Первые две ошибки, при попытке открыть не существующий в данный момент
dbf-файл, вызывают падение программы с "Exception error".
В зависимости от наличия алиаса в вызове функции DbUseArea
происходят разные ошибки.
Контрольный пример прилагается.
Надо раскоментировать строку с нужной ошибкой

/* test_error.prg
letoDbSrc - $Id: Changelog,v 1.350.2.172 2014/01/15 10:57:57 alkresin Exp $

Harbour Build Info
---------------------------
Version: Harbour 3.2.0dev (r1401142236)
Compiler: MinGW GNU C 4.8 (32-bit)
Platform: Windows 7 6.1.7600
PCode version: 0.3
ChangeLog last entry: 2014-01-14 23:36 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
ChangeLog ID: 89da1a2b87be5b1553225eba6b378c318c4a09ce
Built on: Jan 17 2014 14:28:19
Build options: (Clipper 5.3b) (Clipper 5.x undoc)
---------------------------

letoDb server - linux
client - win7
*/

REQUEST HB_CODEPAGE_RU866
REQUEST HB_LANG_RU866

REQUEST LETO

function Main( ... )
Hb_CDPSelect( "RU866" )
Hb_LangSelect( "RU866" )
HB_GtInfo( /*HB_GTI_CODEPAGE*/ 25, 255 ) // #define OEM_CHARSET 255 - from wingdi.h

RDDSETDEFAULT( "LETO" )

setcolor('14/1')
cls
? 'begin test LetoDb'

? leto_Connect( "//192.168.1.1:2812/" ) //existing path on LetoDb server

//error № 1
DbUseArea(.t.,,'dummy','DUMMY') //function commonError leto1c.c
//line 181 - hb_errPutFileName( pError, szFileName );
//szFileName - не инициализированный указатель
//вызывается из letoOpen line 2272 указатель ptr - не используется
//до самого вызова commonError если указан алиас в DbUseArea

//error № 2
//DbUseArea(.t.,,'dummy') //function letoClose leto1c.c
//line 1816 - if( pTable->pTagInfo )
//pTable==null в это время, в строке 1809 есть проверка указателя
//line 1809 - if( pTable && pTable->uiUpdated )
? Alias()

inkey(0)
DbCloseAll()

quit
return NIL //end Main()

ps
Большое спасибо за вашу работу.


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


Пост N: 774
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.01.14 17:25. Заголовок: kia пишет: в процес..


kia пишет:

 цитата:
в процессе тестирования LetoDb (v 1.350.2.172 2014/01/15 10:57:57)
сервер - linux, клиент - win7, обнаружил несколько ошибок.


Спасибо за информацию. Поправлю.

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


Пост N: 775
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.01.14 17:28. Заголовок: Andrey пишет: И что..


Andrey пишет:

 цитата:
И что будет в результате: доступ через Харбор и доступ к базе на сайте через php client ?


Да.
Собственно, кое-что уже работает, пример - на CVS.

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



Пост N: 23
Зарегистрирован: 22.03.06
ссылка на сообщение  Отправлено: 29.01.14 09:38. Заголовок: alkresin пишет: Спа..


alkresin пишет:

 цитата:
Спасибо за информацию. Поправлю.



Вот еще одно странное поведение сервера, похоже связанное с наследованием глобальных установок в тредах.
В настойках letodb.ini
LOWER_PATH = 1
но эта настройка не работает как надо.

тестовый пример (исходные данные как в предыдущем посте)
function Main( ... )
...

? leto_Connect( "//192.168.1.1:2812/" ) //existing path on LetoDb server
DbCreate('tmptest',{{'test','C',10,0}})
DbUseArea(.t.,,'tmptest')
? Alias()
DbCloseArea()

inkey(0)
DbUseArea(.t.,,'tmpTest') //здесь возникает ошибка! Error DBFCDX/1001 Open error: tmpTest.dbf
//код дос ошибки - 2 (File not found)
? Alias()
DbCloseArea()
inkey(0)
return NIL //end Main()

Если в файл server.prg после кода
line 909 IF ::lLower
SET( _SET_FILECASE, 1 )
SET( _SET_DIRCASE, 1 )
ENDIF
добавить wrlog(str(set(_SET_FILECASE)))
то в логе увидим результат 1, т.е. в этом месте установка сработала
но та же стока wrlog(str(set(_SET_FILECASE)))
в функции hs_opentable line 368
покажет что _SET_FILECASE установлен в 0 (уже правда в логе letodb_0.log а не в letodb.log)
если в функции hs_opentable добавить не только получение но и установку _SET_FILECASE
wrlog(str(set(_SET_FILECASE,1)))
то эта фича "LOWER_PATH" начинает работать правильно.

Спасибо за вашу работу.



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


Пост N: 776
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 04.02.14 12:47. Заголовок: kia пишет: Вот еще ..


kia пишет:

 цитата:
Вот еще одно странное поведение сервера, похоже связанное с наследованием глобальных установок в тредах.


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

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


Пост N: 777
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 04.02.14 13:10. Заголовок: Павел, мне непонятно..


Павел, мне непонятно предназначение опции TIMEOUT в letodb.ini.
Похоже, что если клиент не будет непрерывно посылать запросы серверу, соединение разорвется ?

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



Пост N: 25
Зарегистрирован: 22.03.06
ссылка на сообщение  Отправлено: 04.02.14 17:31. Заголовок: alkresin пишет: Кст..


alkresin пишет:

 цитата:
Кстати, ошибки с открытием несуществующей таблицы сегодня исправил.


Спасибо большое, завтра с утра проверю.

Нашел еще описку в функции leto_BagCheck файл common_c.c

...
line 171
p1 = ptr = szTable;
p2 = p4 = NULL;
while( ( c = *ptr) != 0 )
{
if( c == '/' || c == '\\' )
p2 = ptr; <---должно быть p1 = ptr+1; //ptr+1 т.к. ptr указывает на "\" а не на начало имени
else if( c == '.' )
p2 = ptr;
ptr ++;
}
if( !p2 || p2 < p1 )
p2 = ptr;

p3 = ptr = szBagName;
while( ( c = *ptr) != 0 )
{
if( c == '/' || c == '\\' )
p4 = ptr; <---должно быть p3 = ptr+1; //ptr+1 т.к. ptr указывает на "\" а не на начало имени
else if( c == '.' )
p4 = ptr;
ptr ++;
}
...

Ошибка проявлялась на структурных индексах (закрывались там где не должны были),
если в имени dbf был указан путь а в имени индекса нет или наоборот.
На сервере не устанавливался pIStru->bCompound
а на клиенте неправильно отрабатывала функция letoOrderListClear



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




Пост N: 3240
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.02.14 12:46. Заголовок: Можно ли на стороне ..


Можно ли на стороне сервера открыть файл, расшифровать его и передать как массив - клиенту ?

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




Пост N: 3118
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 24.02.14 08:56. Заголовок: Можно, с помощью udf..


Можно, с помощью udf-функции

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




Пост N: 3120
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 24.02.14 19:21. Заголовок: Пользователи letodb ..


Пользователи letodb жалуются, что неправильно работает LETO_ISFLTOPTIM для фильтра типа:

.T. .AND. At (I2Bin(n_field), "ABCD") <> 0

выяснилось, что причина этого - неправильная работа движка харбора, а именно:

вызов hb_macroGetType для выражения At (I2Bin(n_field), "ABCD") <> 0 дает результат не "L", как должно быть, а "UI"

точно так же работает движок клиппера, пример:

request L2Bin
Type('At (I2Bin(n_field), "ABCD") <> 0') // UI

Вывод из всего этого такой: для определения типа макровыражения недостаточно вызвать hb_macroGetType. Если этот вызов дает "UI", то для определения типа выражения придется его выполнить, и определить тип результата.


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




Пост N: 3843
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.02.14 22:03. Заголовок: Pasha пишет: hb_mac..


Pasha пишет:

 цитата:
hb_macroGetType


Эта функция еще рабочая ? Harbour (точнее Hbmk2) ее не видит...

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




Пост N: 3121
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 24.02.14 22:29. Заголовок: Dima пишет: Эта фун..


Dima пишет:

 цитата:
Эта функция еще рабочая ? Harbour (точнее Hbmk2) ее не видит...



Это сишная функция, для харбор-кода надо использовать Type(...)

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




Пост N: 3122
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.02.14 20:31. Заголовок: Просьба собрать и за..


Просьба собрать и запустить такой тест:

proc main
Local cPath := "//127.0.0.1:2812/"

REQUEST LETO
RDDSETDEFAULT( "LETO" )

cls
leto_connect(cPath)
if ! leto_File(cPath + "test.dbf")
dbCreate(cPath + "test.dbf", {{"C1", "C", 10, 0}, {"N1", "N", 10, 0}})
? "test.dbf created"
endif
use (cPath + "test") exclusive new
if ! NetErr()
? "Success"
append blank
Field->C1 := "test"
dbCommit()
wait
close
else
? "Open failed"
? "Quit succesfully, without crash"
endif
leto_disconnect(cPath)

return

Запустите один экземпляр программы. Будет выдано сообщение:

Success
Press any key to continue...

Не закрывая программу, запустите ее второй экземпляр.
Должно быть выдано сообщение:

Open failed
Quit succesfully, without crash

Если второй экземпляр программы так отработает, значит - все в порядке. У меня так и происходит
Если упадет с gpf - значит, есть какая-то проблема. Пользователи на нее жалуются, а я даже не могу воспроизвести ситуацию.

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