On-line: Andrey, гостей 2. Всего: 3 [подробнее..]
АвторСообщение



Пост N: 12
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 18.02.18 03:12. Заголовок: С самого начала LetoDB ? и не только...


Всем привет,
по форуму тяжело ориентироваться ...
Скачал LetoDB и вопросы

- отдельно разархивировать к примеру в папку C:/LetoDB и прописать пути (и где) ? или надо распределить по структурам папок на c:/MiniGui ?

- исходники компилировал с помощью compile.bat (call c:\MiniGUI\Batch\Compile.Bat test /l hbmemio %1 %2 %3 %4 %5 %6 %7 %8 %9 >> Info.txt) - где и что прописать с учетом LetoDB или использовать hbmk2.bat ?

- Что лучше (на практике) запустить службой или процессом ?

- Какие изменения (минимум) ввести в программу для перехода на LetoDB (с учетом что ранее базы данных открыты в многопользовательском режиме с указанием месторасположения БД через переменную)

- Какие операторы используются вместо стандартных - типа (USE, REPLACE, APPEND и т.д.) или оставить как есть

- Учитываются ли - если к примеру, какой-нибудь клиент изменил данные БД, - изменения БД отображались на других клиентских машинах (конечно, если в этот момент данный клиент работает с данным БД)

- Какие грабли могут встретиться ? (что нужно заранее и в дальнейшем учитывать при переходе)

*то есть как можно быстро и безболезненно перейти - заранее извиняюсь, можно было не спеша сесть и разобраться - ток времени нет

**Также на ранее на Клиппере можно было использовать DLL-ки (удобства - во первых, при обновлении программы достаточно обновить DLL /будь это собственные библиотеки или задача разбита на подзадачи/, во-вторых, распределить крупную задачу на подзадачи/так как программа быстро разрастается/, и т.д.) - вопрос кто и как выходит из ситуации если программа сильно разрослась (кроме делении на несколько exe-файлов) ?

*** Также вопрос, - есть сервер, есть клиенты - и кто как мудрит ? насчет обновлений программ на клиентских машинах?
(к примеру, 1. каждой клиентской машине - установили клиентскую программу - но тогда, при каждом изменении требуется, бегать и менять в каждой клиентской машине (или при запуске программы определять и обновлять - все равно требуется предварительная программа проверки обновлений)
=== или ===
2. на сервере создали общую папку с указанием к примеру BASE$ /знак $ - то есть доступ есть но в сети не видно/ с exe'ками и БД, а на клиентских создали только ярлыки с указанием рабочей папки, но тогда чтобы обновить - все клиентские должны выйти из программы ===или=== какой-то другой вариант/ы/ ?) - особенно этот вопрос стоит при удаленном обслуживании (опять же. с DLL было бы проще)

****Также вопрос, ранее с данными в базе DBF - для себя администрировал на FOXPROL - так как можно быстро оперировать с БД, и при составлении небольших временных программ. Проблема - не запускается на 64битных машинах - соответственно вопрос - кто и чем пользуется при администрировании БД (не только просматривать, создавать и т.д., а в смысле - быстро наклепать небольшую программку - на FOXPROL было очень удобно, быстро создал маленькую прогу и запустил через DO) ?

****Также в программах интенсивно использую mem-базы данных, сперва подготавливаю переменную запроса(фильтр), копирую базу данных в память по запросу(фильтру), к примеру клиент проводит разные операции с этими данными, и далее эти изменения вношу уже в саму БД.
Возникает вопросы -
1. В некоторых случаях возникает ошибка создания БД в памяти (к примеру mem:test.dbf) (и самое странное, на одной клиентской машине работает без проблем, в тоже время на другой - выдает ошибку создания БД в памяти ) - в каких случаях это бывает ?
2. Также заметил, если клиентские машины открывают одну и ту же БД одним и тем же алиасом к примеру (TEST) то программа начинает тормозить, если задаю разные алиасы к примеру (для 1 компа - TEST01, 2 - TEST02 и т.д.) то программа начинает работать нормально - неудобство что требуется прописывать разные алиасы, то есть действовать через переменные.
= Вопрос - может быть это из-за того что запускаю на клиентских машинах программу на сервере через ярлыки ? (сомнение: если запустить EXE-файл /прогу/ подсредством ярлыка - EXE который находится на сервере - возможно тогда используется ресурсы сервера, типа становится как терминал ? или все-таки использует ресурсы клиентской машины ?)

... заранее извиняюсь, быстро написал свои маленькие проблемки...


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 3 [только новые]


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


Пост N: 1379
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 18.02.18 09:48. Заголовок: 1. В поставке letodb..


1. В поставке letodb есть readme, в котором прописано, как собирать сам сервер+клиентскую библу, а также, как прилепить к своей программе.
2. Зачем вам MiniGUI? Вы сразу будете делать gui-приложение или останетесь в консоли? Скачайте бинарники harbour и компилятор (я использую mingw). Пути к папкам harbour/bin и компилятор(bin) добавьте в переменную path. Для сборки используйте hbmk2. Бинарники - https://harbour.github.io/ (скачайте Nightly binary) Вот ТУТ много информации про harbour.
3. Имхо, лучше службой.
4. Изменения минимальны. Как подключаться к серверу написано в readme
5. Для сборки программы ничего менять не потребуется.
6. Все изменения, записанные в базу, видны для всех пользователей. Как и при использовании стандартных rdd.
7. Зависит от того, как написана ваша программа.
8. Пробуйте. Особых проблем быть не должно. Но разбираться всё равно придется.
9. Не использую. Не подскажу.
10. Вариантов много. У меня, к примеру, сделано так: на клиентах в отдельном потоке мониторится папка с обновлениями и, когда они там появляются, происходит скачивание и перезапуск для установки.
11. Напишите нужную маленькую программу, откомпилируйте и запустите.
12. В harbour есть библа memio. Попробуйте ее.
13. Тут вы намудрили что-то.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 610
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 18.02.18 11:36. Заголовок: Новичок пишет: - Чт..


Новичок пишет:

 цитата:
- Что лучше (на практике) запустить службой или процессом ?


Если запустите службой, то при перезагрузке сервера служба будет автоматически запущена вновь. Просто чуть удобнее.


 цитата:
- Какие операторы используются вместо стандартных - типа (USE, REPLACE, APPEND и т.д.) или оставить как есть


LetoDB(f) используется как RDD (Replaceable Database Driver) - т.е. все функции для манипуляции с таблицами остаются без изменений. Можно использовать функции семейства Leto_xxx..., которые дают специальные возможности по сравнению со стандартными dBase/Clipper/Harbour командами.


 цитата:
*** Также вопрос, - есть сервер, есть клиенты - и кто как мудрит ? насчет обновлений программ на клиентских машинах?


У меня на каждой машине прописан в автозагрузке update.bat, который обновляет принудительно в указанной папке exe с программой. Пофиг, безо всяких проверок: начиначется сеанс юзера - значит программа обновляется. Ооочень редко требуется обновить прямо во время работы (глюки и тп) - старший по офису получает команду "всем выйти из программы и запустить Пуск - Все программы - Автозагрузка - Update.bat"


 цитата:
если запустить EXE-файл /прогу/ подсредством ярлыка - EXE который находится на сервере - возможно тогда используется ресурсы сервера, типа становится как терминал ? или все-таки использует ресурсы клиентской машины ?)


Если запускать exe "ярлыком с сервера", то по сети будет загружен код с сервера на локальную машину и будет выполнен на локальной машине. Ресурсы сервера - вообще ни при чем. Единственное что - в дополнение к dbf и индексам по сети будут "летать" еще и подгружаемые динамически куски исполняемых программ. Что при сегодняшних пропускных способностях LAN - вообще не проблема.


 цитата:
- Какие грабли могут встретиться ? (что нужно заранее и в дальнейшем учитывать при переходе)


Грабли могут быть в том, что перейти-перейдете, а существенного прироста скорости не получите, тк (например) фильтры могут быть "сервер-оптимизированными", а могут быть и нет. Простой пример:

SET FILTER TO (table->date >= d1) .AND. (table->date <= d2)

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

SET FILT TO &("table->date >= 0d"+DTOS(d1)+" .AND. table->date <= 0d"+DTOS(d2))

сделает его оптимизированным, тк вместо переменных d1 и d2 в фильтре будут использованы константы, и выражение будет выглядеть, например так: "table->date >= 0d20180101 .AND. table->date <= 0d20180131". Для проверки фильтра есть функция Leto_IsFltOptim().


 цитата:
не только просматривать, создавать и т.д., а в смысле - быстро наклепать небольшую программку - на FOXPROL было очень удобно, быстро создал маленькую прогу и запустил через DO) ?


В Harbour для этого есть мощная штука: hb_CompileBuf(). Вместе с hb_hrbRun() они легко заменят FOXPROL или как его там.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3688
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.02.18 12:41. Заголовок: Новичок пишет: Скач..


Новичок пишет:

 цитата:
Скачал LetoDB и вопросы

- отдельно разархивировать к примеру в папку C:/LetoDB и прописать пути (и где) ? или надо распределить по структурам папок на c:/MiniGui ?



Разархивируйте у себя на компе разработчика, соберите сервер и клиентскую библиотеку. Соберите manage.exe из utils\manage (для сборки нужен hwgui).
На сервер (компьютер) скопируйте letodb.exe и letodb.ini,
пропишите в ini DataPath. Установите службу. С помощью manege.exe с клиента проверьте коннект с сервером.
Скопируйте rddeto.lib (librddleto.a) в папку lib харбора.


 цитата:
- исходники компилировал с помощью compile.bat (call c:\MiniGUI\Batch\Compile.Bat test /l hbmemio %1 %2 %3 %4 %5 %6 %7 %8 %9 >> Info.txt) - где и что прописать с учетом LetoDB или использовать hbmk2.bat ?



В батник сборки в список библиотек добавьте rddleto.lib


 цитата:
- Что лучше (на практике) запустить службой или процессом ?



Однозначно службой. Не только из соображений удобства.


 цитата:
- Какие изменения (минимум) ввести в программу для перехода на LetoDB (с учетом что ранее базы данных открыты в многопользовательском режиме с указанием месторасположения БД через переменную)



Укажите request leto, rddsetdefault("LETO"). Перед открытием базы вызвать leto_Connect с указанием строки коннекта. Команды set path/set default не нужны. Если все dbf/индексы в одной папке, то они откроются без дополнительных телодвижений.


 цитата:
- Какие операторы используются вместо стандартных - типа (USE, REPLACE, APPEND и т.д.) или оставить как есть



В use/index возможно потребуется указать путь к файлам, все остальное совместимо.


 цитата:
- Учитываются ли - если к примеру, какой-нибудь клиент изменил данные БД, - изменения БД отображались на других клиентских машинах (конечно, если в этот момент данный клиент работает с данным БД)



Нет. Второй клиент сам должен перевыбрать данные.



 цитата:
**Также на ранее на Клиппере можно было использовать DLL-ки (удобства - во первых, при обновлении программы достаточно обновить DLL /будь это собственные библиотеки или задача разбита на подзадачи/, во-вторых, распределить крупную задачу на подзадачи/так как программа быстро разрастается/, и т.д.) - вопрос кто и как выходит из ситуации если программа сильно разрослась (кроме делении на несколько exe-файлов) ?



Харбор поддерживает создание dll, тут возможностей масса. Я к примеру собираю rddleto в виде отдельной dll.



 цитата:
****Также вопрос, ранее с данными в базе DBF - для себя администрировал на FOXPROL - так как можно быстро оперировать с БД, и при составлении небольших временных программ. Проблема - не запускается на 64битных машинах - соответственно вопрос - кто и чем пользуется при администрировании БД (не только просматривать, создавать и т.д., а в смысле - быстро наклепать небольшую программку - на FOXPROL было очень удобно, быстро создал маленькую прогу и запустил через DO) ?



А что хоть за функции у этой утилиты ?


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 533
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет