Автор | Сообщение |
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 на Харборе, ... и вообще все в наших руках :). Кто хочет участвовать в разработке, тестировании - пишите.
|
|
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|
alkresin
|
| moderator
|
Пост N: 420
Зарегистрирован: 06.07.06
|
|
Отправлено: 11.09.10 21:26. Заголовок: Pasha пишет: Хочетс..
Pasha пишет: цитата: | Хочется добавить еще одну файловую функцию, которая возвращала бы информацию о файле: размер, дату и время создания и пр. Тогда можно было бы написать утилиту, которая проверяла и скачивала бы с сервера обновления бинарников посредством leto_memoread. |
| Такой функции и leto_memoread недостаточно для реализации обновления клиентской программы. Я думал об этом пару лет назад и тоже хотел сначала сделать это через letodb. Но проблема в том, что информация о файлах, необходимых для работы клиента ( бинарник, ini, шаблоны отчетов и пр. ) должна лежать на сервере. Клиент может и не знать, какие файлы нужны - при первоначальной установке, или если вы добавили новые файлы ... Т.е. на сервере должен быть, скажем так, ini - файл со списком каталогов и файлов для каждого клиентского модуля, и сервер должен читать этот файл при запуске, а при запросе со стороны клиента отдавать ему список нужных файлов с датой/временем создания, чтобы клиентская утилита могла определить, какие файлы ей затребовать. Словом, на сервер возлагается ряд нетипичных для letodb задач, поэтому я и написал для этого другую серверную программу, которая все это делает. В принципе, я могу ее выложить куда-нибудь, только нету времени потом на вопросы по ней отвечать :)
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 1553
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.09.10 19:02. Заголовок: Pasha пишет: Тогда ..
Pasha пишет: цитата: | Тогда можно было бы написать утилиту, которая проверяла и скачивала бы с сервера обновления бинарников посредством leto_memoread. |
| Pasha пишет: цитата: | Собственно, такую фунцию можно реализовать с помощью механизма udf, но, мне кажется, она будет нелишней в ядре leto Какие будут мнения ? |
| Полностью поддерживаю ! Эта просто НУЖНАЯ ВЕЩЬ для разработчика !!!
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 1554
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.09.10 19:08. Заголовок: alkresin пишет: Сло..
alkresin пишет: цитата: | Словом, на сервер возлагается ряд нетипичных для letodb задач, поэтому я и написал для этого другую серверную программу, которая все это делает. В принципе, я могу ее выложить куда-нибудь, только нету времени потом на вопросы по ней отвечать :) |
| Я и раньше просил про такую программу, но что-то вы не ответили ! Было бы неплохо всем желающим посмотреть, а все остальное потом ....
|
|
|
alkresin
|
| moderator
|
Пост N: 421
Зарегистрирован: 06.07.06
|
|
Отправлено: 13.09.10 10:00. Заголовок: Andrey пишет: Я и р..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 1555
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.09.10 15:12. Заголовок: alkresin пишет: alk..
alkresin пишет: Спасибо большое !
|
|
|
Pasha
|
| Администратор
|
Пост N: 1656
Зарегистрирован: 23.05.05
|
|
Отправлено: 22.09.10 15:34. Заголовок: alkresin пишет: Так..
alkresin пишет: цитата: | Такой функции и leto_memoread недостаточно для реализации обновления клиентской программы. Я думал об этом пару лет назад и тоже хотел сначала сделать это через letodb. Но проблема в том, что информация о файлах, необходимых для работы клиента ( бинарник, ini, шаблоны отчетов и пр. ) должна лежать на сервере. Клиент может и не знать, какие файлы нужны - при первоначальной установке, или если вы добавили новые файлы ... Т.е. на сервере должен быть, скажем так, ini - файл со списком каталогов и файлов для каждого клиентского модуля, и сервер должен читать этот файл при запуске, а при запросе со стороны клиента отдавать ему список нужных файлов с датой/временем создания, чтобы клиентская утилита могла определить, какие файлы ей затребовать. Словом, на сервер возлагается ряд нетипичных для letodb задач, поэтому я и написал для этого другую серверную программу, которая все это делает. |
| Тогда лучше хранить информацию о бинарниках: размер, дату создания, может быть версию, или хэш-значение, или crc32 - в дбф. На сервере пусть запускается утилитка, которая обновляет эту информацию. На клиенте другая утилитка пусть сканирует этот дбф, и, при необходимости, обновляет у себя бинарники посредством leto_memoread. Тогда эту схему можно реализовать через letodb
|
|
|
Pasha
|
| Администратор
|
Пост N: 1657
Зарегистрирован: 23.05.05
|
|
Отправлено: 27.09.10 09:42. Заголовок: Как передавать от се..
Как передавать от сервера клиенту большие пакеты ? Большие пакеты разбиваются на несколько маленьких, а в leto1.c - leto_Recv есть проверка: if( ( lLen > 0 && lLen+iLenLen+1 <= ptr-szBuffer ) || ( iLenLen >= 10 && *(ptr-1) == '\n' && *(ptr-2) == '\r' ) ) break; При приеме может возникнуть случай, когда 1-й байт пакета, на который дробится большой пакет, больше 10, а два последних - перевод строки. При возникновении такой ситуации передача прерывается. Как раз я наткнулся на такой случай в leto_Memoread. Александр, я вам отправил этот пример. Но как решить этот вопрос в общем случае ? Такая ситуация может возникнуть и при чтении memo-поля
|
|
|
Pasha
|
| Администратор
|
Пост N: 1658
Зарегистрирован: 23.05.05
|
|
Отправлено: 27.09.10 10:41. Заголовок: Уже разобрался, вопр..
Уже разобрался, вопрос снят
|
|
|
Pasha
|
| Администратор
|
Пост N: 1664
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.10.10 12:59. Заголовок: Добавил поддержку дл..
Добавил поддержку для операции letoTrans. Теперь команды COPY TO/APPEND FROM будут выполняться сервером. Поскольку в стандартных функциях __dbTrans(), __dbCopy(), __dbApp() условие для FOR/WHILE передается как блок кода, а для выполнения на сервере необходимо строковое представление, добавил в tests пример с аналогами этих функций.
|
|
|
Pasha
|
| Администратор
|
Пост N: 1665
Зарегистрирован: 23.05.05
|
|
Отправлено: 12.10.10 12:26. Заголовок: LETO IndexOrd(), Ord..
LETO IndexExt(), OrdBagExt() возвращает имя ".CDX" на верхнем регистре. DBFCDX - на нижнем. Думаю, стоит использовать нижний регистр и для LETO, тем более для unix регистр существенен. Изменить ? Ни у кого проблем с совместимостью с прежними версиями не возникнет ?
|
|
|
AlexMyr
|
| |
Пост N: 60
Зарегистрирован: 11.06.10
|
|
Отправлено: 12.10.10 16:23. Заголовок: Pasha пишет: Думаю,..
Pasha пишет: цитата: | Думаю, стоит использовать нижний регистр и для LETO, тем более для unix регистр существенен. Изменить ? |
| +1
|
|
|
|
PSP
|
| постоянный участник
|
Пост N: 463
Зарегистрирован: 27.01.07
|
|
Отправлено: 12.10.10 22:44. Заголовок: В letodb.ini есть па..
В letodb.ini есть параметр Lower_Path. Может нужно его установку учесть?
|
|
|
AlexMyr
|
| |
Пост N: 61
Зарегистрирован: 11.06.10
|
|
Отправлено: 13.10.10 08:16. Заголовок: В readme_rus написан..
В readme_rus написано: Lower_Path = 0 - если 1, преобразовать все пути к нижнему регистру; т.е. распространяется только на пути.
|
|
|
Pasha
|
| Администратор
|
Пост N: 1666
Зарегистрирован: 23.05.05
|
|
Отправлено: 13.10.10 09:44. Заголовок: Судя по сырцам, это ..
Судя по сырцам, это установка только для сервера, она влияет только на SET( _SET_FILECASE, 1 ) SET( _SET_DIRCASE, 1 ) _SET_FILECASE должен по идее действовать на файловые функции харбора. Но я смотрю, индекс все равно создается с расширением на верхнем регистре, по крайней мере для xHarbour (bagname я формирую на клиенте с использованием IndexBagExt() и передаю на сервер) Так что думаю, на клиенте надо возвращать расширение все-таки на нижнем регистре, хотя бы для совместимости с DBFCDX Еще заодно надо поменять RDDI_ORDBAGEXT, заодно и RDDI_TABLEEXT, да и прочие *EXT - надо возвращать расширение с точкой.
|
|
|
Дигидроген монооксид
|
| |
Не зарегистрирован
Зарегистрирован: 13.10.10
|
|
Отправлено: 13.10.10 20:43. Заголовок: Ставлю последний har..
Ставлю последний harbour из SVN, последние HwGUI и LetoDB из CVS. Успешно собираю сервер. Собираю Manager. Но при попытке его запустить, он только записывает в лог цитата: | Application Internal Error - (null) Terminated at: 2010.10.13 16:37:04 Unrecoverable error 9000: Module 'manage.prg' was compiled with unsupported PCODE version 0.3. Please recompile. ------------------------------------------------ |
| ЧЯДНТ?
|
|
|
Pasha
|
| Администратор
|
Пост N: 1671
Зарегистрирован: 23.05.05
|
|
Отправлено: 13.10.10 21:40. Заголовок: Дигидроген монооксид..
Дигидроген монооксид пишет: Возможно, letodb manager и hwgui собраны разными версиями harbour, об этом свидетельствует сообщение о неподдерживаемой версии пи-кода Лучше пересобрать также и hwgui
|
|
|
dimao
|
| |
Пост N: 7
Зарегистрирован: 14.01.09
|
|
Отправлено: 31.10.10 16:16. Заголовок: слетае сервер под линукс!
|
|
|
Pasha
|
| Администратор
|
Пост N: 1684
Зарегистрирован: 23.05.05
|
|
Отправлено: 31.10.10 17:46. Заголовок: Проблема у snake был..
Проблема у snake была 2 года назад, и проблема непонятная. Сервер letodb падает, но падает как-то непонятно, не совсем, так что потом не запускается ? Прежде всего надо выяснить, почему он упал. Сервер не должен падать, даже если с ним некорректно работает клиент. Что привело к падению сервера ? Какие ошибки в клиентской программе ? В логе что-нибудь есть ?
|
|
|
dimao
|
| |
Пост N: 8
Зарегистрирован: 14.01.09
|
|
Отправлено: 01.11.10 14:13. Заголовок: в логе ничего нет, к..
в логе ничего нет, кроме сообщений о старте и том, что он уже выполняется. ps не выводит в списке процессов. воспроизвести ситуацию не могу пока, так как на радостях пользовал его по разному. так как за долгие годы подзабыл синтаксис - много раз вылетали проги. я не сразу насторожился при появлении Error LETO/1. в сях и линуксях я не силен, не могу посмотреть, как он определяет наличие выполняющегося себя. ладно, если еще появится трабла - попытаюсь сделать инструкцию по ее повторению.
|
|
|
dimao
|
| |
Пост N: 9
Зарегистрирован: 14.01.09
|
|
Отправлено: 01.11.10 15:37. Заголовок: ну вот опять! со вче..
ну вот опять! со вчерашнего дня оставил сервер. Сегодня смотрю - нет в процессах, логов нет. на предложение запустить - говорит, что уже работает. на предложение остановить - никакой реакции. Где смотреть? как он видит, что уже запущен?
|
|
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|