On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
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 [только новые]


nbatocanin



Пост N: 84
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 16.05.16 16:22. Заголовок: Лучше удалять при вх..



 цитата:
Лучше удалять при входе, так гарантированно удалится весь мусор если даже прога слетела аварийно.
или двойная проверка - при выходе и при входе



Это не так просто (хотя и возможно). Если программа позволяет использовать несколько старт на той же рабочей станции (USER-1, USER-2...), как вы знаете, какие таблицы следует исключить?

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



Пост N: 85
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 16.05.16 16:44. Заголовок: А откуда такая инфа ..



 цитата:
А откуда такая инфа про ограничение в около 500-600,000 (я так понял записей) ?



Да, 600,000 записей. Я попробовал, а потом подтвердили на Harbour-users. Конечно, зависит от объема доступной памяти.

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


Пост N: 969
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.05.16 17:10. Заголовок: nbatocanin пишет: (..


nbatocanin пишет:

 цитата:
(USER-1, USER-2...), как вы знаете, какие таблицы следует исключить?


я обычно времянки делаю в домашнем каталоге пользователя , там же сохраняю настройки персонально под пользователя

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


Пост N: 1196
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 16.05.16 21:51. Заголовок: nbatocanin пишет: ..


nbatocanin пишет:

 цитата:

Это не так просто (хотя и возможно). Если программа позволяет использовать несколько старт на той же рабочей станции (USER-1, USER-2...), как вы знаете, какие таблицы следует исключить?



А зачем вам это знать? Пусть программа сама формирует имена временных файлов, сохраняет их и удаляет

STATIC aTmpFiles

INIT PROCEDURE InitTmpFiles
aTmpFiles := {}
..
RETURN


PROCEDURE Main
LOCAL cTmp
..
// конечно здесь можно и директорию указать и префикс присвоить, например, привязав его к текущему пользователю,
// и расширение для текущего RDD получить автоматом, но в этом случае - это не столь существенно

FClose( hb_FTempCreateEx( @cTmp, NIL, "tmp_", ".cdx" ) )
AAdd(aTmpFiles, cTmp)
..
FErase(cTmp)
INDEX ON &cExp TO (cTmp)
..
RETURN


EXIT PROCEDURE DeleteAllTmpFile()
LOCAL tmpFile
..
FOR EACH tmpFile IN aTmpFiles
FErase(tmpFile)
NEXT
..
RETURN


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



Пост N: 88
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 17.05.16 02:04. Заголовок: А зачем вам это знат..



 цитата:
А зачем вам это знать? Пусть программа сама формирует имена временных файлов, сохраняет их и удаляет



Я не уверен, что мы понимаем друг друга - простите, мое знание русского языка очень плохое.

Моя программа работает таким образом: создаются автоматически временны файлов и система заботится об их удалении. Вот как выглядят мои программы:

T_BEGIN 
T_DEFINE TMP
TMP FIELD t_id NUMERIC 10,0
TMP FIELD t_naz CHAR 35
TMP INDEX Upper(t_naz) TAG Tmp
T_CREATE TMP ALIAS Tmp

T_USE Partneri
T_Order ("Par_Naz")
T_RELATION TO p_id INTO Kartice
T_FLock ("Partneri")
...
T_END


Когда программа выполнить команду T_END, удаляет все временные файлы, закрывает DBF, возвращает оригинал Order... Если какой-либо из этих команд не выполняется (например T_Flock()), система возвращается в прежнее состояние. Временные файлы создаются/удаляются на рабочей станции. Теперь мне нужно создать временные файлы на сервере (которые LetoDB, к сожалению, не поддерживается). Вот почему мне нужен индекс в другую папку. Если смешать временные файлы и основные данные, могут возникнуть проблемы, например, в случае различных авария.



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



Пост N: 21
Зарегистрирован: 10.01.15
ссылка на сообщение  Отправлено: 17.05.16 08:49. Заголовок: Ненаде погледај прим..


Ненаде погледај пример који сам закачио.
Сваки клијент креира своје привремене датотеке на серверу које се не поклапају ни са једним другим клијентом и на крају извршавања програма се бришу.
Овде сам поставио и питање за грешку у leto_groupby. Цео пример ради са мојим сервером који се налази видљив на интернету.
[url=https://drive.google.com/open?id=0B2TAOFowS46iTzg1a3N0Vk9Hdkk[/url]

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




Пост N: 4932
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.05.16 14:29. Заголовок: nbatocanin пишет: Т..


nbatocanin пишет:

 цитата:
Теперь мне нужно создать временные файлы на сервере (которые LetoDB, к сожалению, не поддерживается).


Да не нужно создавать временный индексы на локальной станции.
Создавай в той же папке что и база на Leto. Какая разница где создавать индексы. Это не принципиально для программы.
Просто сделай чтобы программа запоминала список индексов, КОТОРЫЕ ПОТОМ НУЖНО УДАЛИТЬ - и всех делов то...


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



Пост N: 90
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 17.05.16 16:48. Заголовок: Да не нужно создават..



 цитата:
Да не нужно создавать временный индексы на локальной станции.
Создавай в той же папке что и база на Leto. Какая разница где создавать индексы. Это не принципиально для программы.
Просто сделай чтобы программа запоминала список индексов, КОТОРЫЕ ПОТОМ НУЖНО УДАЛИТЬ - и всех делов то...



Я уже делаю именно так. Почему я хочу отделить мои временные файлы? Если смешать временные файлы и основные данные, могут возникнуть проблемы, например, в случае различных авария. Теперь все временные файлы в //192.168.99.1/Temp. В случае повреждения, я могу легко найти их, анализировать и удалить. Это не так легко, если они находятся между основными данными.

Но все это не имеет ничего с командой INDEX которая теперь содержит ошибку, которая должна быть исправлена.

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


Пост N: 1197
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 17.05.16 22:11. Заголовок: nbatocanin пишет: Я..


nbatocanin пишет:

 цитата:
Я не уверен, что мы понимаем друг друга - простите, мое знание русского языка очень плохое.


Я думаю, что не только язык приводит нас к непониманию

nbatocanin пишет:

 цитата:
Моя программа работает таким образом: создаются автоматически временны файлов и система заботится об их удалении. Вот как выглядят мои программы:

T_BEGIN
T_DEFINE TMP
TMP FIELD t_id NUMERIC 10,0
TMP FIELD t_naz CHAR 35
TMP INDEX Upper(t_naz) TAG Tmp
T_CREATE TMP ALIAS Tmp

T_USE Partneri
T_Order ("Par_Naz")
T_RELATION TO p_id INTO Kartice
T_FLock ("Partneri")
...
T_END



Из этого фрагмента нельзя даже понять зачем вы создали TMP.

В harbour для создания временных файлов (таблиц) есть специальная функция hb_dbCreateTemp.
От того, что обыкновенную таблицу вы назвали Tmp она временной не стала.
Вы можете легко найти свою "временную" таблицу с помощью hb_dbExists() и после анализа удалить с помощью hb_dbDrop().
и т.д. и т.п.

nbatocanin пишет:

 цитата:
Но все это не имеет ничего с командой INDEX которая теперь содержит ошибку, которая должна быть исправлена.



Команду INDEX не правильно обрабатывает препроцессор?

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



Пост N: 93
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 18.05.16 03:01. Заголовок: Из этого фрагмента н..



 цитата:
Из этого фрагмента нельзя даже понять зачем вы создали TMP.



Эта программа только показывает как работает моя система для временных файлов. Вместо того:
 
cFile := HB_DbCreateTemp()
DBCreate (..)
...
HB_FErase (cFile)


Я пишу:
 
T_BEGIN
T_DEFINE TMP
...
T_CREATE TMP ALIAS Tmp
...
T_END

И тогда все T_ команды препроцессор переводит в DBCreateTemp, DBCreate... Я надеюсь, что я сейчас лучше объяснить?


 цитата:
Команду INDEX не правильно обрабатывает препроцессор?



Нет. Препроцессор не может знать содержимое переменной cTmp. Я думаю, что проблема в том, что препроцессор в зависимости от опций TAG транслируется в две команды:
 
INDEX ON p_tmp TAG "test" TO (cTmp) => ordCreate( (cTmp), "test", "p_tmp", {|| p_tmp}, )
INDEX ON p_tmp TO (cTmp) => dbCreateIndex( (cTmp), "p_tmp", {|| p_tmp}, if( .F., .T., NIL ) )


OrdCreate работает правильно, DBCreateIndex не работает нормально в этом случае.


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




Пост N: 3450
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.05.16 14:00. Заголовок: В letodb.ini добавил..


В letodb.ini добавил:
Default_Driver = NTX

Сделал простой тест:

proc main
request leto, DBFCDX
Local cPath := "//127.0.0.1:2812/"

RddSetDefault ("LETO")
Leto_Connect (cPath)
USE (cPath + 'account') SHARED NEW
index on kors to (cPath+'apt10/a.ntx')
retu nil

в результате в папке apt10 создался индекс a.ntx, как и заказывали, т.е. все отработало так, как и в DBFNTX


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


Пост N: 1198
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 18.05.16 18:30. Заголовок: nbatocanin пишет: ..


nbatocanin пишет:

 цитата:

OrdCreate работает правильно, DBCreateIndex не работает нормально в этом случае.



FUNCTION dbCreateIndex( cOrderBagName, cKeyExpr, bKeyExpr, lUnique, cOrderName )
RETURN ordCreate( cOrderBagName, cOrderName, cKeyExpr, bKeyExpr, lUnique )

nbatocanin пишет:

 цитата:
Эта программа только показывает как работает моя система для временных файлов. Вместо того:

cFile := HB_DbCreateTemp()
DBCreate (..)
...
HB_FErase (cFile)



??????????????????

hb_dbCreateTemp( <cAlias>, <aStruct>, <cRDD>, <nConnection> ) -> <lSuccess>

Generates and opens a new dbf with a temporary filename in exclusive mode, deletes it automatically when closed.
All indexes created for this table, should ideally have the temporary flag on, so those get deleted too, when closed.




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



Пост N: 94
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 19.05.16 04:08. Заголовок: USE (cPath + 'ac..



 цитата:
USE (cPath + 'account') SHARED NEW
index on kors to (cPath+'apt10/a.ntx')
retu nil

в результате в папке apt10 создался индекс a.ntx, как и заказывали, т.е. все отработало так, как и в DBFNTX



Вы правы, я сделал что-то неправильно :( Извините.

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



Пост N: 95
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 19.05.16 04:27. Заголовок: Петр пишет: ???????..


Петр пишет:

 цитата:
??????????????????

hb_dbCreateTemp( <cAlias>, <aStruct>, <cRDD>, <nConnection> ) -> <lSuccess>



Я смешал с командой HB_FTempCreate, извините. Система, которую я использую есть "framework" для таких команд, как dbCreateTemp. Я не использую dbCreateTemp, потому что, когда я делал эту систему команда не существует. Но система работает точно так же, как вы писали, только обеспечивает более чистый код и более простое управление. Система поддерживает несколько команд, а не только временных файлов (FLock, RELATION, Order, FILTER..).

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



Пост N: 96
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 19.05.16 04:49. Заголовок: Я нашел ошибку. Паша..


Я нашел ошибку. Паша, пожалуйста, попробуйте эту программу:

 
DBRoot := "//192.168.99.10:2807/xApp"
a := {{"t_name", "C", 30, 0}}
DBCreate (DBroot + "\test", a)
USE Test EXCLUSIVE ALIAS Test NEW
Test->(DBAppend())
Test->t_name := "Bbbbbbb"
Test->(DBAppend())
Test->t_name := "Aaaaaaa"
Test->(DBAppend())
Test->t_name := "Ccccccc"

cTmp := DbRoot + "\temp\test02"
INDEX ON Upper(t_name) TO (cTmp)

GO TOP
Browse() // B, A, C ???

cTmp := DbRoot + "\temp\test03"
INDEX ON Upper(t_name) TAG "test" TO (cTmp)

GO TOP
Browse() // A, B, C


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




Пост N: 3455
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.05.16 17:53. Заголовок: Поправил..


Поправил

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



Пост N: 97
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 20.05.16 04:31. Заголовок: работает, большое сп..


работает, большое спасибо!

NB

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




Пост N: 5028
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.07.16 12:15. Заголовок: Сервер LetoDb начал ..


Сервер LetoDb начал аварийно падать...
Прошёл год, не знал ни каких проблем...
Падает так, что ручками заново приходиться поднимать...

Сервер стоит на CentOS release 6.7 (Final), версия чуть-чуть подправленная.
Вот что в логе:
Leto DB Server v.2.15b3.1 ! INIT: DataPath=/apps/letodb/data, ShareTables=0, MaxUsers=500, MaxTables=5000, CacheRecords=10
07/30/16 15:12:59: /apps/letodb/bin/letoudf.hrb has been loaded.

30.07.2016 16:08:47: Error DBFCDX/1011 Write error: /apps/letodb/data/dbasezaivki/18_sklad.dbf

ERROR! SETHRBERROR - pUStru not found!!!!!!!!!!!!!!!!!!!!
leto_errInternal!!!!!!!!!!!!!!!!!!


База 18_sklad.dbf то пишется, то не пишется...
Индекс тоже делается через раз.

Что за ошибка такая ?
Подскажите в чем дело ?


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




Пост N: 3472
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 31.07.16 14:31. Заголовок: Andrey пишет: Серве..


Andrey пишет:

 цитата:
Сервер LetoDb начал аварийно падать...
Прошёл год, не знал ни каких проблем...
Падает так, что ручками заново приходиться поднимать...

Сервер стоит на CentOS release 6.7 (Final), версия чуть-чуть подправленная.
Вот что в логе:
Leto DB Server v.2.15b3.1 ! INIT: DataPath=/apps/letodb/data, ShareTables=0, MaxUsers=500, MaxTables=5000, CacheRecords=10
07/30/16 15:12:59: /apps/letodb/bin/letoudf.hrb has been loaded.

30.07.2016 16:08:47: Error DBFCDX/1011 Write error: /apps/letodb/data/dbasezaivki/18_sklad.dbf

ERROR! SETHRBERROR - pUStru not found!!!!!!!!!!!!!!!!!!!!
leto_errInternal!!!!!!!!!!!!!!!!!!

База 18_sklad.dbf то пишется, то не пишется...
Индекс тоже делается через раз.

Что за ошибка такая ?
Подскажите в чем дело ?



Мне практически невозможно ответить на этот вопрос. Сервер судя по всему не пересобирался, раз версия там 2.15b3.1.
Что менялось ? Непонятно. Какой код приводит к ошибке ? Фиг его знает.
Мне пару месяцев назад товарищ из-за рубежа начал жаловаться на падение сервере с ошибкой leto_errInternal!!!!!!!!!!!!!!!!!!
Ничего, кроме этого сообщения в letodb.log я от него так и не добился. Ну и естественно, ничем не смог помочь.
Это как раз похожий случай. Помочь я смогу, если буду иметь максимум информации о ситуации, приводящей к ошибке.

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




Пост N: 5030
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.07.16 20:46. Заголовок: Pasha пишет: Это ка..


Pasha пишет:

 цитата:
Это как раз похожий случай. Помочь я смогу, если буду иметь максимум информации о ситуации, приводящей к ошибке.



Паша, случай у меня оказывается тяжёлый. Третий день прога падает. Юзера задолбали, это еще выходные ...
Сайт уже давно не трогал, программу отправки на сайт тоже не трогал.
Тестировал прогу и сам сервер на Windows-машине, всё отлично идёт !
Беда оказывается в самой CentOS release 6.7
Она зараза работает даже когда на диске места нет !
Т.е. сервер LetoDB работает, когда приходит время записывать в базу, если десяток байт есть - пишет,
нет - то не пишет и "падает" !
Всё просто оказывается - нет места на диске под базы и индекс.
На Винде такой проблемы нет (там диски большие), а на CentOS есть (лимит на машину у провайдера).
Было бы ОЧЕНЬ хорошо при сваливании такой ошибке в log-файле писалось сколько места на диске есть !!!
Тогда хоть понимать будем в чём ошибка.
Функции же нет в LetoDB - сколько свободного места на диске.
Сделай тогда пожалуйста отладку в лог-файл в следующей версии сервера.


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