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




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


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

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

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

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

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


Pasha
Администратор




Пост N: 3473
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 31.07.16 21:33. Заголовок: Andrey пишет: Она з..


Andrey пишет:

 цитата:
Она зараза работает даже когда на диске места нет !



Фантастика какая-то. А разве тек бывает ? При современных то гигантских дисках. Да еще на сервере.

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




Пост N: 5937
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.07.16 21:42. Заголовок: Pasha пишет: Фантас..


Pasha пишет:

 цитата:
Фантастика какая-то. А разве тек бывает ?


Паш так он же и пишет про лимит у прова , может там всего 20 метров арендовано ......

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


Пост N: 1220
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 31.07.16 23:14. Заголовок: Andrey пишет: Было ..


Andrey пишет:

 цитата:
Было бы ОЧЕНЬ хорошо при сваливании такой ошибке в log-файле писалось сколько места на диске есть !!!
Тогда хоть понимать будем в чём ошибка.
Функции же нет в LetoDB - сколько свободного места на диске.



Если внимательно разглядывать код server.prg, то можно найти

REQUEST .. hb_DiskSpace

Из чего следует, что выполнение строки типа
leto_udf( "hb_diskSpace", leto_GetAppOptions(1), HB_DISK_FREE ) должно привести к желаемому результату.

Как использовать результат и где его использовать вы можете придумать сами. Вариантов море, leto_udf(), leto_LockLock() помогут вам.

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



Пост N: 1112
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.07.16 23:35. Заголовок: Петр пишет leto_udf(..


Петр пишет
 цитата:
leto_udf( "hb_diskSpace", leto_GetAppOptions(1), HB_DISK_FREE ) должно привести к желаемому результату


В таком виде вряд ли, leto_GetAppOptions - ф-я сервера, попробовать так можно
cPth := leto_udf( "leto_GetAppOptions", 1) и потом
nFre := leto_udf( "hb_diskSpace", cPth, HB_DISK_FREE )
 цитата:
Вариантов море, leto_udf(), leto_LockLock() помогут вам.


это да


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


Пост N: 1221
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 31.07.16 23:48. Заголовок: SergKis пишет: В та..


SergKis пишет:

 цитата:
В таком виде вряд ли, leto_GetAppOptions - ф-я сервера, попробовать так можно
cPth := leto_udf( "leto_GetAppOptions", 1)


Ну да, увлекся, спасибо

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




Пост N: 5031
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.08.16 00:52. Заголовок: Dima пишет: пишет п..


Dima пишет:

 цитата:
пишет про лимит у прова , может там всего 20 метров арендовано ......



2 Gb - забили архивами и базы место порядочно забирают...
Больше года вообще не трогал сервер, падал несколько раз (5-7). А так работает сервер - как часы.

SergKis пишет:

 цитата:
cPth := leto_udf( "leto_GetAppOptions", 1) и потом
nFre := leto_udf( "hb_diskSpace", cPth, HB_DISK_FREE )


Блин, опять городить огород.
Ну есть же для Лето файловые функции, не ужели туда добавить как функцию нельзя ?

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


Пост N: 1251
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 01.08.16 08:20. Заголовок: Имхо, не только (или..


Имхо, не только (или не столько) свободное место на диске нужно контролировать, как обрабатывать ошибки записи/чтения. Они могут быть вызваны не только переполнением диска. Только вот что-то не соображу, как, используя letodb, это сделать. BEGIN/RECOVER/END работает с leto, кто знает?

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



Пост N: 1113
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.08.16 10:14. Заголовок: SergKis пишет cPth :..


SergKis пишет
 цитата:
cPth := leto_udf( "leto_GetAppOptions", 1)


так не будет работать (и это правильно !!!)
вызывать можно только UDF функцию, т.е. надо написать в letoudf.prg
FUNCTION UDF_DiskSpace( nUserStru, cDrive, nProp )
If cDrive = Nil; cDrive := leto_GetAppOptions(1)
EndIf
If nProp = Nil; nProp := HB_DISK_FREE
EndIf
RETURN hb_diskSpace( cDrive, nProp )


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


Пост N: 1222
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 01.08.16 22:33. Заголовок: SergKis пишет: так ..


SergKis пишет:

 цитата:
так не будет работать (и это правильно !!!)


Так работать будет !!! и это - не правильно

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



Пост N: 1115
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.08.16 22:54. Заголовок: Петр пишет Так работ..


Петр пишет
 цитата:
Так работать будет !!!


cPth := leto_udf( "leto_GetAppOptions", 1)
не работает, проверил, еси бы рабтало, то опасно
leto_udf( "fErase", myFile) и не нужны leto_ferase(...) и ключ ini EnableFileFunc = 0

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


Пост N: 1223
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 01.08.16 23:04. Заголовок: SergKis пишет: не р..


SergKis пишет:

 цитата:
не работает, проверил,




? leto_UDFEXIST( "leto_GetAppOptions" )
? leto_UDFEXIST( "UDF_DiskSpace" )
? leto_UDFEXIST( "STR" )

? leto_UDF( "leto_GetAppOptions", 1 )
? leto_UDF( "UDF_DiskSpace", "C:\", HB_DISK_FREE )
? leto_UDF( "leto_GetAppOptions", 1 )
? leto_UDF( "UDF_DiskSpace", "D:\", HB_DISK_FREE )
? leto_UDF( "leto_GetAppOptions", 1 )
? leto_UDF( "STR", 1 )

Проверьте еще

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



Пост N: 1116
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.08.16 23:34. Заголовок: Проверил cPath :..


Проверил
 
cPath := "//127.0.0.1:2812/temp/"
cIP := "//127.0.0.1:2812/"

? "1. leto_GetAppOptions:", Leto_Udf("leto_GetAppOptions", 1)
? "2. leto_GetAppOptions:", Leto_Udf(cIP+"leto_GetAppOptions", 1)
? "3. leto_GetAppOptions:", Leto_Udf("leto_GetAppOptions")
? "4. leto_GetAppOptions:", Leto_Udf(cIP+"leto_GetAppOptions")
результат:
1. leto_GetAppOptions: NIL
2. leto_GetAppOptions: NIL
3. leto_GetAppOptions: NIL
4. leto_GetAppOptions: NIL

др. вызовUDF
If ! leto_file(cPath+"test3"+".cdx")
USE ( cPath+"test3" ) New
INDEX ON NUM TAG KOD FOR ! deleted()
INDEX ON NAME TAG NAM FOR ! deleted()
INDEX ON NUM TAG DEL FOR deleted()
USE
? "File has been created", cPath+"test3"+".cdx"
EndIf

USE ( cPath+"test3" ) New SHARED
If OrdCount() > 0
OrdSetFocus(2)
EndIf
t := Seconds()
dbGotop()
If ! EOF()
aEval({10,20,30,40,50,60,70,80,90,99}, {|nR,nE,lR| dbGoto(nR), lR := RLock(), iif(lR, dbDelete(), ), ;
iif(lR, dbUnLock(), ) })
Leto_Udf("UDF_DeleteRecs", , , "DEL", , .F.)
dbGotop()
ENDIF

? "File has been opened", Used(), select(), Alias(), "Append UDF_...", IndexOrd(), OrdCount()

j := Valtype(NUM)
For i := 1 To 100
cRecBuf := Leto_Udf("UDF_AppendRec", 'NUM', {'KOD', 'DEL'}, 100)
Leto_ParseRec( cRecBuf )
// ? i, RecNo(), NUM
IF RLock()
REPL NAME with "Name_"+strzero(RecNo(), 7), ;
INFO with "Info_"+iif(j == "N", hb_ntos(NUM), NUM)+"-"+j
dbUnLock()
ENDIF
? i, RecNo(), NUM, NAME
Next

leto_commit()

? "File appendet", LastRec(), "time", seconds() - t
USE
? "Ok"

результат
TEST_DBF ( //127.0.0.1:2812/temp/ ) File = test3.dbf
File has been created //127.0.0.1:2812/temp/test3.dbf
File has been created //127.0.0.1:2812/temp/test3.cdx
File has been opened .T. 1 TEST3 Append UDF_... 2 3
1 1 101 Name_0000001
2 2 102 Name_0000002
3 3 103 Name_0000003
4 4 104 Name_0000004
5 5 105 Name_0000005
6 6 106 Name_0000006
7 7 107 Name_0000007
8 8 108 Name_0000008
9 9 109 Name_0000009
10 10 110 Name_0000010
11 11 111 Name_0000011
12 12 112 Name_0000012
13 13 113 Name_0000013
14 14 114 Name_0000014
15 15 115 Name_0000015
16 16 116 Name_0000016
17 17 117 Name_0000017
...
97 97 197 Name_0000097
98 98 198 Name_0000098
99 99 199 Name_0000099
100 100 200 Name_0000100
File appendet 100 time 8.89
Ok


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



Пост N: 1117
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.08.16 23:48. Заголовок: PS Используемые UDF ..


PS
Используемые UDF немного модифицированы под себя Скрытый текст


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


Пост N: 1224
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 02.08.16 00:00. Заголовок: Не на то обратили вн..


Не на то обратили внимание.

Вы не получили правильного результата, но функция на сервере выполнялась!
Вот протестируйте (не забудьте letodb_0.log посмотреть)

? leto_UDFEXIST( "STR" )
? leto_UDF( "STR" )
? leto_UDF( "STR", 20, 10, .t. )


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



Пост N: 1118
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.08.16 00:14. Заголовок: протестил ? "..


протестил
 
? "1. leto_GetAppOptions:", Leto_Udf("leto_GetAppOptions", 1)
? "2. leto_GetAppOptions:", Leto_Udf(cIP+"leto_GetAppOptions", 1)
? "3. leto_GetAppOptions:", Leto_Udf("leto_GetAppOptions")
? "4. leto_GetAppOptions:", Leto_Udf(cIP+"leto_GetAppOptions")
? "5. STR exist :", leto_UDFEXIST( "STR" )
? "6. STR :", leto_UDF( "STR" )
? "7. STR, 20, 10, .t. :", leto_UDF( "STR", 20, 10, .t. )
? "8. STR, 20, 10, 2 :", leto_UDF( "STR", 20, 10, 2 )

результат
1. leto_GetAppOptions: NIL
2. leto_GetAppOptions: NIL
3. leto_GetAppOptions: NIL
4. leto_GetAppOptions: NIL
5. STR exist : .T.
6. STR : NIL
7. STR, 20, 10, .t. : 0.0000000000
8. STR, 20, 10, 2 : 0.0000000000

letodb_0.log
127.0.0.1 LENOVO demo.exe

08/02/16 00:07:14: Error BASE/1099 Argument error: STR
Arguments: ( [ 1] = Type: N Val: 0, [ 2] = Type: U)

08/02/16 00:08:52: Error BASE/1099 Argument error: STR
Arguments: ( [ 1] = Type: N Val: 0, [ 2] = Type: U)


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



Пост N: 1119
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.08.16 00:16. Заголовок: PS. Leto DB Server v..


PS. Leto DB Server v.2.17b2

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



Пост N: 1120
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.08.16 08:50. Заголовок: Проверил на сборке с..


Проверил на сборке с hwg, получил
1. leto_GetAppOptions: .
2. leto_GetAppOptions: .
3. leto_GetAppOptions: .
4. leto_GetAppOptions: .
5. STR exist : .T.
6. STR : NIL
7. STR, 20, 10, .t. : 1.0000000000
8. STR, 20, 10, 2 : 1.0000000000
letodb_1.log
127.0.0.1 LENOVO Demo.exe

08/02/16 08:33:36: Error BASE/1099 Argument error: STR
Arguments: ( [ 1] = Type: N Val: 1, [ 2] = Type: U)

Если эти команды должны работать (я думал только из hrb и это мне нравилось), то надо копать у себя клиентов letodb
1. letodb server - borland, hb3.2 из последней MiniGui
2. letodb client - msvc, hb2.0 + MiniGui 2.07 + LV866 ( EN+LV+RU )
2. letodb client - msvc, hb3.2 + Hwg 2.19.b6 + LV866 ( EN+LV+RU )
Udf функции из letoudf.hrb - работают ok!

Петр спасибо за помощь


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




Пост N: 3474
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 02.08.16 09:07. Заголовок: Петр пишет: не работ..


Петр пишет:

 цитата:
не работает, проверил, еси бы рабтало, то опасно
leto_udf( "fErase", myFile) и не нужны leto_ferase(...) и ключ ini EnableFileFunc = 0



Такие опасные функции вызвать нельзя, поскольку они не прилинкованы к серверу.
Вызывать можно функции, указанные в request, ну и некоторые другие. Я пересматривал этот набор - он вполне безопасен.
Впрочем, я уже добавил параметр EnableUDF в letodb.ini, для возможности отключения udf.
Пока не сбросил это изменение - есть некоторые проблемы с правами доступа git

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



Пост N: 1121
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.08.16 09:57. Заголовок: Pasha пишет Впрочем,..


Pasha пишет
 цитата:
Впрочем, я уже добавил параметр EnableUDF в letodb.ini, для возможности отключения ud




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



Пост N: 1122
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.08.16 10:10. Заголовок: Pasha пишет Такие оп..


Pasha пишет
 цитата:
Такие опасные функции вызвать нельзя, поскольку они не прилинкованы к серверу.


Тут не все просто, если реализовывать запрос на сервере типа (через udf)
SELECT R_1,R_2,R_3,... AS Kod,Name,Cena,... From TablM01 WHERУ R_1=... ORDER BY upper(Name)
то fErase, fRename вполне могут понадобитьсяб, а возможность их вызова с клиента должна быть исключена, т.е.
hb_IsFunction("fErase") - не выполнять requect подключение
leto_Udf("UDF_fErase") - можно выполнять при наличии в hrb
мне как то так видится, при установке флага

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