On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
alkresin
moderator


Пост N: 31
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 31.01.08 11:36. Заголовок: Leto DB Server(продолжение)


Только что открыл на Sourceforge новый проект - Leto DB Server - https://sourceforge.net/projects/letodb

Это мультиплатформенный ( Windows, Unix/Linux ) сервер баз данных, предоставляющий клиентским программам доступ к dbf/cdx файлам, находящимся на удаленном сервере ( можно и на локальном компьютере запускать - в отладочных целях ). В общем, как ADS :).

Проект - на стадии разработки, не все даже базовые функции еще реализованы, до оптимизации дело еще не дошло. Но работает :).
Крутится у меня на сервере несколько дней, подключал до 15 клиентов, пока не падает. Мои программы работают с ним нормально.

Преимущества по сравнению с обычным файл-сервером:
1) Безопасность - базы могут быть в каталоге, недоступном для клиентских компьютеров - никто их случайно не удалит и не повредит.
2) Поскольку базы открываются серверной программой, а не клиентской, ее целостности ничего не грозит при случайном отключении клиентского компьютера.
3) значительное уменьшение сетевого траффика.
4) Должен быть, по идее, выигрыш в скорости.
5) Возможность контроля за пользователями с помощью утилиты manage ( можно придумать и другие формы контроля ).
6) Можно будет сделать транзакции, stored procedures на Харборе, ... и вообще все в наших руках :).

Кто хочет участвовать в разработке, тестировании - пишите.



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


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


Пост N: 89
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 12.07.10 10:31. Заголовок: Pasha пишет: А что ..


Pasha пишет:

 цитата:
А что глючит ?


простой SKIP
Если выполнить выражение фильтра на записи, то все правильно (.F.)
Если SKIP, то на нее переходит (хотя не должен)

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




Пост N: 1581
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.07.10 10:41. Заголовок: А фильтр серверный и..


А фильтр серверный или клиентский ? С серверным должно быть все ok

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


Пост N: 90
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 12.07.10 10:42. Заголовок: Pasha пишет: А филь..


Pasha пишет:

 цитата:
А фильтр серверный или клиентский ?


клиентский

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




Пост N: 1582
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.07.10 10:49. Заголовок: Уже вижу, в letoSkip..


Уже вижу, в letoSkipRaw нет проверки на клиентский фильтр для буфера skip. Надо добавить. А scope тут ни при чем

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


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


Pasha пишет:

 цитата:
в letoSkipRaw нет проверки на клиентский фильтр для буфера skip


Как тогда работает MT вариант? :)

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




Пост N: 1583
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.07.10 11:20. Заголовок: Непонятно Точно клие..


Непонятно
Точно клиентский фильтр ? Т.е. сервер не может вычислить выражение фильтра, или задан только блок кода для фильтра ?

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



Пост N: 16
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 12.07.10 11:24. Заголовок: К вопросу о файловом..


К вопросу о файловом доступе:
А если реализовать это через BLOB поля?
Вот пример без letodb (проверял работает)

#include "blob.ch"

FUNCTION SHOWPIX()

LOCAL cPixFile := "ntimage.gif"
LOCAL nPos

REQUEST DBFCDX

rddSetDefault( "DBFCDX" )

dbCreate( "customer", { { "PIX","W",10,0 } } )
USE Customer NEW
dbAppend()
nPos := FieldPos( "Pix" )
BLOBIMPORT( nPos, "ved.prg" )
dbAppend()
IF !BLOBIMPORT( nPos, cPixFile )
Alert( "Export of picture " + cPixFile + " failed!" )
ENDIF
dbAppend()
BLOBIMPORT( nPos, "test_ta.exe" )
dbgotop()
BLOBEXPORT( nPos, "ved_new.prg", 0 )

dbGoBottom()
BLOBEXPORT( nPos, "test_ta_new.exe", 0 )
return

Если собрать этот пример с letodb, то letodb не может создать файл с полем типа W (blob поле), а если создать с MEMO полем, то letodb выдает ошибку:
Error LETO/0 Operation not supported
Called from DBFILEPUT(0)
Called from SHOWPIX(17)

Кто что скажет по поводу BLOB полей?

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


Пост N: 92
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 12.07.10 11:24. Заголовок: Pasha пишет: сервер..


Pasha пишет:

 цитата:
сервер не может вычислить выражение фильтра


да
LETO_ISFLTOPTIM() - .F.

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




Пост N: 1584
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.07.10 12:07. Заголовок: AlexMyr пишет: Кто ..


AlexMyr пишет:

 цитата:
Кто что скажет по поводу BLOB полей?



А что тут говорить... надо добавить в leto поддержку HB_FT_BLOB, HB_FT_PICTURE, HB_FT_OLE
Сейчас поддерживается только HB_FT_MEMO
Я использую memo, и проблем не было, ни с M, 10, ни с M, 4


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




Пост N: 1585
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.07.10 12:12. Заголовок: В M, 4 я храню в том..


В M, 4 я храню в том числе и картинки jpg. Сейчас проверил - работает и на чтение, и на запись

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




Пост N: 1586
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.07.10 12:14. Заголовок: Кстати, старый Harbo..


Кстати, старый Harbour 1.0 знает, что такое HB_FT_BLOB, HB_FT_PICTURE, HB_FT_OLE ?


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



Пост N: 17
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 12.07.10 12:34. Заголовок: Pasha пишет: Кстати..


Pasha пишет:

 цитата:
Кстати, старый Harbour 1.0 знает, что такое HB_FT_BLOB, HB_FT_PICTURE, HB_FT_OLE ?



Скорее всего да. В файле whatsnew.txt сказано:

Version 0.46 Alpha Build 46 (2006-05-29) tag: build46
...
- Added all Clipper 5.3 BLOB*() functions support.
- Added new RDD DBFBLOB compatible with Clipper 5.3 DBFBLOB. It
operates on memo files only (.dbv) without tables (.dbf).
...

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




Пост N: 1587
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.07.10 12:40. Заголовок: blob и прочая я уже ..


blob и прочая я уже добавил, вечером скину

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




Пост N: 1588
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.07.10 12:41. Заголовок: alx_on пишет: да L..


alx_on пишет:

 цитата:
да
LETO_ISFLTOPTIM() - .F.



Странно это. Я сейчас проверил - skip правильно отрабатывает клиентский фильтр. Тогда понятно только то, что ничего не понятно :(

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


Пост N: 93
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 12.07.10 12:51. Заголовок: Pasha пишет: Тогда ..


Pasha пишет:

 цитата:
Тогда понятно только то, что ничего не понятно


Вот и я о том же

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


Пост N: 94
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 12.07.10 16:18. Заголовок: Нашел проблему с фил..


Нашел проблему с фильтром
Была интересная проверка на длину LETO_MAX_EXP
У меня фильтр был больше и это воспринималось как снятие фильтра!
Выложу исправления - проверьте плз

Вопрос Александру: в каких глобальных целях используется функция leto_ParseFilter()?
Были какие то нюансы при простой проверке? (т.е. просто попробовать скомпилять блок кода)
Потому как его надо допиливать на предмет добавления проверки "FIELD->". Стоит это делать?

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


Пост N: 385
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 12.07.10 18:41. Заголовок: Вопрос Александру: в..



 цитата:
Вопрос Александру: в каких глобальных целях используется функция leto_ParseFilter()?


Представьте такое выражение фильтра:
SOME_FIELD == 1 .AND. Some_UDF()
Если мы его выполняем (для проверки) при текущем значении SOME_FIELD != 1, возвращается логическое выражение .F. и никакой ошибки, т.к. до выполнения Some_UDF() дело не доходит - получается, что выражение годно для выполнения на сервере, что неверно.

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


Пост N: 386
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 12.07.10 18:44. Заголовок: Потому как его надо ..



 цитата:
Потому как его надо допиливать на предмет добавления проверки "FIELD->".


А зачем использовать field-> в выражении для фильтра ?

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


Пост N: 95
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 12.07.10 22:01. Заголовок: alkresin пишет: Есл..


alkresin пишет:

 цитата:
Если мы его выполняем (для проверки)


Уже просто компиляция вернет ошибку (нет функции Some_UDF)

 цитата:
А зачем использовать field->


При строгой проверке (ключ -w3) без "FIELD->" макрокоманда "SET FILTER" не компиляется

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



Пост N: 18
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 12.07.10 22:25. Заголовок: Не могу собрать leto..


Не могу собрать letodb,

hbmk2: Processing local make script: hbmk.hbm
hbmk2: Compiling Harbour sources...
hbmk2: Harbour compiler command (embedded):
(c:\dev\harbour\bin\harbour.exe) -n1 source\client\rddsys.prg -n -w -q0 -es2 -olib\.hbmk\win\bcc\ -ic:\dev\harbour\include -iinclude
hbmk2: Compiling...
hbmk2: C/C++ compiler command:
bcc32.exe -c -q -d -6 -O2 -OS -Ov -Oi -Oc -tWM -w -Q -w-sig- -nlib\.hbmk\win\bcc -Ic:\dev\harbour\include -Iinclude lib\.hbmk\win\bcc\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
lib\.hbmk\win\bcc\rddsys.c:
source\client\leto1.c:
Error E2451 source\client\leto1.c 490: Undefined symbol 'HB_FT_PICTURE' in function letoIsBinaryField
Warning W8057 source\client\leto1.c 497: Parameter 'uiType' is never used in function letoIsBinaryField
Warning W8057 source\client\leto1.c 497: Parameter 'uiLen' is never used in function letoIsBinaryField
Error E2451 source\client\leto1.c 625: Undefined symbol 'HB_FT_PICTURE' in function leto_ParseRec
Error E2172 source\client\leto1.c 625: Duplicate case in function leto_ParseRec
Warning W8019 source\client\leto1.c 626: Code has no effect in function leto_ParseRec
Error E2379 source\client\leto1.c 626: Statement missing ; in function leto_ParseRec
Error E2451 source\client\leto1.c 1786: Undefined symbol 'HB_FT_PICTURE' in function letoGetValue
Error E2172 source\client\leto1.c 1786: Duplicate case in function letoGetValue
Warning W8019 source\client\leto1.c 1787: Code has no effect in function letoGetValue
Error E2379 source\client\leto1.c 1787: Statement missing ; in function letoGetValue
Error E2451 source\client\leto1.c 2196: Undefined symbol 'HB_FT_PICTURE' in function letoPutValue
Error E2172 source\client\leto1.c 2196: Duplicate case in function letoPutValue
Warning W8019 source\client\leto1.c 2197: Code has no effect in function letoPutValue
Error E2379 source\client\leto1.c 2197: Statement missing ; in function letoPutValue
Error E2451 source\client\leto1.c 2692: Undefined symbol 'HB_FT_PICTURE' in function letoCreate
Error E2172 source\client\leto1.c 2692: Duplicate case in function letoCreate
Error E2188 source\client\leto1.c 2693: Expression syntax in function letoCreate
Error E2451 source\client\leto1.c 2991: Undefined symbol 'HB_FT_PICTURE' in function letoOpen
*** 14 errors in Compile ***
source\client\letomgmn.c:
Warning W8075 source\client\letomgmn.c 116: Suspicious pointer conversion in function HB_FUN_LETO_FILE
Warning W8075 source\client\letomgmn.c 143: Suspicious pointer conversion in function HB_FUN_LETO_FERASE
Warning W8075 source\client\letomgmn.c 176: Suspicious pointer conversion in function HB_FUN_LETO_FRENAME
Warning W8075 source\client\letomgmn.c 628: Suspicious pointer conversion in function HB_FUN_LETO_VARSET
Warning W8075 source\client\letomgmn.c 635: Suspicious pointer conversion in function HB_FUN_LETO_VARSET
Warning W8080 source\client\letomgmn.c 797: 'cType' is declared but never used in function HB_FUN_LETO_VARINCR
Warning W8080 source\client\letomgmn.c 834: 'cType' is declared but never used in function HB_FUN_LETO_VARDECR
Warning W8080 source\client\letomgmn.c 866: 'lValue' is declared but never used in function HB_FUN_LETO_VARDEL
Warning W8080 source\client\letomgmn.c 866: 'cType' is declared but never used in function HB_FUN_LETO_VARDEL
Warning W8075 source\client\letomgmn.c 871: Suspicious pointer conversion in function HB_FUN_LETO_VARGETLIST
Warning W8080 source\client\letomgmn.c 955: 'ui' is declared but never used in function HB_FUN_LETO_VARGETLIST
source\common\blowfish.c:
source\common\common_c.c:
source\common\hbip.c:
Warning W8084 source\common\hbip.c 184: Suggest parentheses to clarify precedence in function hb_ipInit
source\common\net.c:
hbmk2: Error: Running C/C++ compiler. 1
bcc32.exe -c -q -d -6 -O2 -OS -Ov -Oi -Oc -tWM -w -Q -w-sig- -nlib\.hbmk\win\bcc -Ic:\dev\harbour\include -Iinclude lib\.hbmk\win\bcc\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 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 492
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет