Автор | Сообщение |
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, или к-во записей в группе
|
|
|
Ответов - 232
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
All
[только новые]
|
|
alx_on
|
| постоянный участник
|
Пост N: 131
Зарегистрирован: 07.07.09
|
|
Отправлено: 14.09.11 17:49. Заголовок: AlexMyr пишет: ERRO..
AlexMyr пишет: цитата: | ERROR! thread2() too big packet |
| старый клиент и новый сервер?
|
|
|
AlexMyr
|
| |
Пост N: 271
Зарегистрирован: 11.06.10
|
|
Отправлено: 14.09.11 21:49. Заголовок: alx_on пишет: стары..
alx_on пишет: цитата: | старый клиент и новый сервер? |
| может быть, завтра на работе проверю.
|
|
|
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
|
|
|
Pasha
|
| Администратор
|
Пост N: 2054
Зарегистрирован: 23.05.05
|
|
Отправлено: 15.09.11 09:31. Заголовок: Насчет too big packe..
Насчет too big packet - я тоже несколько раз в логе видел такое, когда обновлял сервер и случайно запускал старый клиент. readme - поправлю.
|
|
|
Pasha
|
| Администратор
|
Пост N: 2055
Зарегистрирован: 23.05.05
|
|
Отправлено: 15.09.11 11:07. Заголовок: Подумалось вот, что ..
Подумалось вот, что можно добавить на сервер функцию закрузки hrb-модуля с клиента, для последующего вызова с клиента функций из этого модуля на выполнение. Но при этом не будет никакой защиты от загрузки на сервер вредоносного кода. Так что делать ее нельзя, а жаль. Хотя даже сейчас такую функцию передачи и загрузки hrb-кода с клиента на сервер можно сделать в letoudf.hrb
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 1887
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.09.11 12:07. Заголовок: Pasha пишет: Но при..
Pasha пишет: цитата: | Но при этом не будет никакой защиты от загрузки на сервер вредоносного кода. |
| Тогда нужно сделать типа цифровой подписи разработчика на сервере и при передачи кода делать еще передачу цифровой подписи для этого кода и сравнивать - та подпись или не та. Только не слишком усложнять это.... И еще в настройках внести ГЛОБАЛЬНУЮ параметр ЗАПРЕТ/РАЗРЕШЕНИЯ выполнения кода на сервере.
|
|
|
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
|
|
|
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 ?
|
|
|
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 и пр. к имени файла надо добавить строку коннекта, вот и вся настройка.
|
|
|
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 ????
|
|
|
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
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 1914
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.11.11 22:17. Заголовок: Возвращаюсь ОПЯТЬ с ..
Возвращаюсь ОПЯТЬ с вопросом по индексным файлам. CDX поддерживает несколько индексных файлов для одной базы. Как перешел с NTX, так я у себя в программах и оставил. LetoDB пока не поддерживает (или уже сделали) такой нужной фичи... В коде править на один индексный файл у себя в проектах просто немеренно ... Будет ли реализована поддержка нескольких индексных файлов для одной базы в ближайшее время ?
|
|
|
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 не могу, сброшу позже, так что сделайте на своей локальной копии.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 1922
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.11.11 20:01. Заголовок: Pasha пишет: Я сейч..
Pasha пишет: цитата: | Я сейчас сбросить на CVS не могу, сброшу позже |
| Без вопросов... Подожду... Пока есть чем заняться...
|
|
|
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
|
|
|
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, передав полученную строку этой функции в качестве параметра. Можно передавать данные из нескольких р/о, массивом строк.
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 132
Зарегистрирован: 07.07.09
|
|
Отправлено: 06.12.11 17:55. Заголовок: Pasha пишет: Такие ..
Pasha пишет: цитата: | Такие ошибки, которые привели бы к падению самого сервера, я не представляю как сделать. Это должно быть нечто, приводящее к gpf, да и то сервер может выдержать и gpf. |
| Раз поднялась такая тема: единственный случай падения (жесткий, молча валится серверная часть, совсем!) - это ошибка в индексном файле (попортилась структура файла или антивирус не дал записать, считать). Не перехватывается корректно ошибка открытия такого индекса. PS т.к. ошибка быстро исправляется (переиндексация), то времени и желания на исправление, как всегда, нет...
|
|
|
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 Поскольку никаких способов воспроизвести эту ситуацию у меня нет, я и не ответил автору. Что там случилось - непонятно. Но ситуация явно тоже разовая. Пару раз видел нарушение индекса. Но там стабильно были (и есть) перебои по питанию.
|
|
|
Pasha
|
| Администратор
|
Пост N: 2252
Зарегистрирован: 23.05.05
|
|
Отправлено: 26.01.12 20:20. Заголовок: Добавил функцию для ..
Добавил функцию для блокировки новых коннектов: leto_LockConn( .T. ) После ее вызова сервер не будет устанавливать новые соединения, вплоть до вызова leto_LockConn( .F. ) Соответственно в утилиту magage добавлена кнопка lock/unlock.
|
|
|
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 ?
|
|
|
Ответов - 232
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
All
[только новые]
|
|