Форум » LetoDB, HbNetio. » Вопросы новичка... » Ответить

Вопросы новичка...

Andrey: Взял последнюю версию с "Новая страница с бинарниками", установил на 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" Помню что где то обсуждали, а результат не запомнил...

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

PSP: Вот в такой обычной конструкции увеличение чего нужно использовать: skip- или seek- буфера? Или и того, и другого? DBSeek( <...> ) WHILE <...> .... DBSkip() END

Pasha: Для [индексно]последовательной выборки (а это как раз она) надо использовать skip-буфер. Для индексной, а это seek, причем seek по частичному ключу не катит, надо использовать seek-буфер. Пример - ну скажем, есть список абонентов с адресами, которые выбираются по справочнику населенных пунктов и улиц. Если для этих справочников задействовать seek-буфер, то наиболее часто используемые элементы справочника окажутся в seek-буфере, и в конце концов число обращений к ним (операций seek) резко уменьшится.

PSP: Всё понятно. Спасибо за объяснение.


Andrey: Использую bat-файл с командой: "C:\Program Files\CVSNT\cvs.exe" -d:pserver:anonymous@letodb.cvs.sourceforge.net:/cvsroot/letodb co -P -r rel-1-mt letodb При старте выдаёт окно с ошибкой: Но потом вроде нормально загружает обновления. Так должно быть или нет ?

PSP: Andrey в заголовке окна слово "advert" по-моему явно указывает на рекламу.

Andrey: PSP пишет: в заголовке окна слово "advert" по-моему явно указывает на рекламу. Да кто же знает, что это за хрень... Раздражает, вот и спрашиваю.

Andrey: Пытаюсь собрать сервер Лето по инструкции: Для сборки сервера с поддержкой функций leto_Zip и leto_Unzip необходимо установить макрос __ZIP: hbmk2 -env:__ZIP=yes letodb.hbp Нужно подключить функцию из tools: LTON на сервере letodb Для этого надо в source\server.prg добавить строку: request lton в letodb.hbp добавить строку: -lhbct и пересобрать сервер letodb Вот letodb.hbp # # $Id: letodb.hbp,v 1.8.2.6 2015/05/26 15:01:20 ptsarenko Exp $ # #-env:__BM=yes -env:__ZIP=yes -inc -obin/letodb -iinclude -n -w -q0 -es2 #-warn=max -prgflag={unix}-D__LINUX_DAEMON__ -prgflag={unix}-D__LINUX__ {__BM}-prgflag=-D__BM #-prgflag={win}-D__WIN_DAEMON__ -prgflag={win}-D__WIN_SERVICE__ -cflag={allmsvc}-D_CRT_SECURE_NO_DEPRECATE -cflag={win}-D__WIN_SERVICE__ {__BM}-cflag=-D__BM -gui -mt {__BM}-lrddbm {__ZIP}-lhbziparc {__ZIP}-lhbmzip {__ZIP}-lminizip -lhbct source/server/server.prg source/server/errorsys.prg source/server/errint.c {unix}source/server/leto_lnx.c {win}source/server/leto_win.c source/server/letoacc.c source/server/letovars.c source/server/letofunc.c source/server/letolist.c source/server/leto_2.c {__BM}source/server/letobm.prg {__ZIP}source/server/letozip.prg source/common/blowfish.c source/common/common_c.c source/common/common.prg {__BM}source/common/letoserv.prg В make_b32.bat прописал: @echo off SET HB_PATH=Z:\MiniGUI\Harbour Сделал.... Затем запустите make_b32.bat, и исполняемый файл сервера letodb.exe будет создан в каталоге bin/, а библиотека rdd rddleto.lib - в каталоге lib/. Не создаётся.... Вот make_b32.log MAKE Version 5.2 Copyright (c) 1987, 2000 Borland bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\letocl.obj source\client\letocl.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland source\client\letocl.c: bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\leto1.obj source\client\leto1.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland source\client\leto1.c: bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\letomgmn.obj source\client\letomgmn.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland source\client\letomgmn.c: Warning W8060 source\client\letomgmn.c 742: Possibly incorrect assignment in function HB_FUN_LETO_SETSEEKBUFFER bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\hbip.obj source\common\hbip.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland source\common\hbip.c: bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\common_c.obj source\common\common_c.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland source\common\common_c.c: bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\blowfish.obj source\common\blowfish.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland source\common\blowfish.c: Z:\MiniGUI\Harbour\bin\harbour.exe -iinclude;Z:\MiniGUI\Harbour\include -n -q0 -w -es2 -gc0 -d__WIN_SERVICE__ source\client\rddsys.prg -oobj\b32\rddsys.c bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\rddsys.obj obj\b32\rddsys.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland obj\b32\rddsys.c: IF EXIST "lib\rddleto.lib" del "lib\rddleto.lib" > NUL TLIB "lib\rddleto.lib" /0 @MAKE0000.@@@ TLIB 4.5 Copyright (c) 1987, 1999 Inprise Corporation +obj\b32\letocl.obj & +obj\b32\leto1.obj & +obj\b32\letomgmn.obj & +obj\b32\hbip.obj & +obj\b32\common_c.obj & +obj\b32\blowfish.obj & +obj\b32\rddsys.obj & + IF EXIST "lib\leto.lib" del "lib\leto.lib" > NUL TLIB "lib\leto.lib" /0 @MAKE0001.@@@ TLIB 4.5 Copyright (c) 1987, 1999 Inprise Corporation +obj\b32\letocl.obj & +obj\b32\hbip.obj & +obj\b32\common_c.obj & +obj\b32\blowfish.obj & + Z:\MiniGUI\Harbour\bin\harbour.exe -iinclude;Z:\MiniGUI\Harbour\include -n -q0 -w -es2 -gc0 -d__WIN_SERVICE__ source\server\server.prg -oobj\b32\server.c bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\server.obj obj\b32\server.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland obj\b32\server.c: Z:\MiniGUI\Harbour\bin\harbour.exe -iinclude;Z:\MiniGUI\Harbour\include -n -q0 -w -es2 -gc0 -d__WIN_SERVICE__ source\common\common.prg -oobj\b32\common.c bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\common.obj obj\b32\common.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland obj\b32\common.c: bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\letofunc.obj source\server\letofunc.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland source\server\letofunc.c: Warning W8012 source\server\letofunc.c 1348: Comparing signed and unsigned values in function leto_CheckClientVer bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\letolist.obj source\server\letolist.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland source\server\letolist.c: bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\leto_2.obj source\server\leto_2.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland source\server\leto_2.c: bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\letoacc.obj source\server\letoacc.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland source\server\letoacc.c: bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\letovars.obj source\server\letovars.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland source\server\letovars.c: bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\leto_win.obj source\server\leto_win.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland source\server\leto_win.c: Warning W8004 source\server\leto_win.c 104: 'State' is assigned a value that is never used in function leto_ServiceControlHandler Warning W8004 source\server\leto_win.c 262: 'dwWaitTime' is assigned a value that is never used in function HB_FUN_LETO_SERVICEDELETE bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\errint.obj source\server\errint.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland source\server\errint.c: Z:\MiniGUI\Harbour\bin\harbour.exe -iinclude;Z:\MiniGUI\Harbour\include -n -q0 -w -es2 -gc0 -d__WIN_SERVICE__ source\server\errorsys.prg -oobj\b32\errorsys.c bcc32 -c -Iinclude;Z:\MiniGUI\Harbour\include -d -tWM -D__WIN32__ -D__WIN_SERVICE__ -oobj\b32\errorsys.obj obj\b32\errorsys.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland obj\b32\errorsys.c: IF EXIST "bin\letodb.exe" del "bin\letodb.exe" > NUL bcc32 @MAKE0002.@@@ Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland Turbo Incremental Link 5.66 Copyright (c) 1997-2002 Borland Error: Unresolved external '_HB_FUN_LTON' referenced from Z:\LETODB CVS\LETODB\OBJ\B32\SERVER.OBJ ** error 1 ** deleting bin\letodb.exe Библиотека есть - Z:\MiniGUI\Harbour\lib\hbct.lib Что не так делаю ?

Pasha: make_b32 собирает только клиентскую библиотеку, по правилам из makefile.bc Сервер (да и желательно клиент) надо собирать с помощью hbmk2 Прмерно так: set path=%path%;\bcc55\bin <hbpath>\hbmk2 -env:__ZIP=yes letodb.hbp <hbpath>\hbmk2 rddleto.hbp

Andrey: Понял. Спасибо ! Я просто по доке читал и слепо выполнял, что там написано.

Andrey: Павел. Собрал по твоим рекомендациям алгоритм. Скорость просто потрясающая ! Тестирование АЛГОРИТМА-2 только для LETO. База в интернете, сервер - Leto DB Server v.2.15b3 Суммирование по 7 полям - 13 раз, т.е. обращение к серверу производиться всего 13 раз. Расчет по базе 100 000 записей (~120 Мб) - 00:00:01 Расчет по базе 1 000 000 записей (~1,2 Гб) - 00:00:08 Для сравнения. Расчет по локальной базе на DBFCDX - 6 сек.

Andrey: Делаю так: // ---------- по @aRetCalc вернуть массив расчёта ---------------- lResult := Leto_udf('UDF_Test', cAliasMain, nOrd, aMast, @aRetCalc ) MsgDebug(aRetCalc) // возвращает {} А в UDF_Test делаю создание массива aRetCalc и запись в него значений. Не работает возврат по ссылке. Или не должно работать ?

Pasha: Переменные по ссылке не поддерживаются. Надо возвращать сам массив.

Andrey: Понял. Спасибо !

Andrey: Разобрался наконец то с UDF-функциями. Сделал 3-ий алгоритм. Тестирование АЛГОРИТМА-3 только для LETO. База в интернете, сервер - Leto DB Server v.2.15b3m1 (m1-моя модификация) Расчёт по базе происходит на сервере, клиенту возвращается результат через массив. Расчет по базе на сервере 100 000 записей (~120 Мб) - 00:00:00 Расчет по базе на сервере 1 000 000 записей (~1,2 Гб) - 00:00:05 Для сравнения, расчет по АЛГОРИТМУ-1 по локальной базе (локальный комп) из 1 000 000 записей на DBFCDX - 6 сек. Пример и описание как делать (в конце файлов исходников Algorithm2.prg, Algorithm3.prg), здесь - https://cloud.mail.ru/public/6Tw4/JGGSA941Q Комментарии и критика приветствуется.

Andrey: Сделал еще отдельный тест на сервере 5 000 000 записей (~5,9 Гб) База в интернете, сервер - Leto DB Server v.2.15b3m1 Расчёт по АЛГОРИТМУ-2 - 00:00:34 Расчёт по АЛГОРИТМУ-3 - 00:00:26 Для сравнения, расчет по АЛГОРИТМУ-1 по локальной базе (локальный комп) из 5 000 000 записей на DBFCDX - 00:15:17

Pasha: Запись в базу: WMASTER->ZPROSR := aResult[nI,2] WMASTER->ZNEVIP := aResult[nI,3] WMASTER->KV1 := aResult[nI,4] WMASTER->KV2 := aResult[nI,5] WMASTER->KV3 := aResult[nI,6] WMASTER->KV4 := aResult[nI,7] WMASTER->KV5 := aResult[nI,8] тоже можно делать на сервере в функции udf_test. Будет еще быстрее.

Andrey: Pasha пишет: тоже можно делать на сервере в функции udf_test Так база WMASTER на локальном компе находиться. Специально созданная для временного показа.

Andrey: Имею сайт на MySql и базу LETODB на одном сервере. С MySql не работал вообще, из-за этого и спрашиваю. Можно ли сделать UDF-функцию которая бы открывала базу на MySql и копировала запись с базы LETODB ? Какие подводные камни могут быть ?

alex_II:

Andrey: alex_II пишет: Будет ли letoDB работать на Windows 8.1 x64? Да будет ! Даже он уже работает на Windows Server 2012 64bit !



полная версия страницы