Автор | Сообщение |
|
| moderator
|
Пост N: 971
Зарегистрирован: 06.07.06
|
|
Отправлено: 12.06.16 17:05. Заголовок: LetoDB 2.17
Обновил номер сборки с 1 до 2 и выложил исходники на Sourceforge, а то там лежала версия более чем годичной давности.
|
 |

|
Ответов - 45
, стр:
1
2
3
All
[только новые]
|
|
|
| moderator
|
Пост N: 1040
Зарегистрирован: 06.07.06
|
|
Отправлено: 12.10.16 11:39. Заголовок: LetoDB 2.17 build 3
|
 |

|
|
| постоянный участник
|
Пост N: 7866
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.09.24 23:45. Заголовок: Какая сейчас последн..
Какая сейчас последняя версия LetoDB ? Судя по сайту - 2.17 b3, это правильно ? Там сборка для Debian 7 32-bit, а на Debian 11 64-bit она будет работать ? Какие есть возможности архивирования одного файла на сервере ? Как можно сделать архив всех баз каталога ? Возможно ли отображение бегунка архивации у клиента, кто делает архив ? Поделитесь опытом пожалуйста.
|
 |

|
|
| moderator
|
Пост N: 1616
Зарегистрирован: 06.07.06
|
|
Отправлено: 27.09.24 14:09. Заголовок: Да, 2.17 b3. > ..
Да, 2.17 b3. > Там сборка для Debian 7 32-bit, а на Debian 11 64-bit она будет работать ? Нет. А в чем проблема собрать из исходников? Хотя я могу выложить Debian 11 64-bit, если надо. > Какие есть возможности архивирования одного файла на сервере ? > Как можно сделать архив всех баз каталога ? Наверное, через udf можно. Я архивацию баз обычно запускаю через cron (планировщик заданий в Линукс).
|
 |

|
|
| постоянный участник
|
Пост N: 7871
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.09.24 14:19. Заголовок: alkresin пишет: Нет..
alkresin пишет: цитата: | Нет. А в чем проблема собрать из исходников? Хотя я могу выложить Debian 11 64-bit, если надо. |
| Спасибо ! Мне уже собрали, пока тестирую. 
|
 |

|
|
| постоянный участник
|
Пост N: 7873
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.09.24 16:20. Заголовок: LetoDB стоит на Linu..
LetoDB стоит на Linux, делаю: start dbedit -f -letodb=//000.000.000.000:2880/ Не работает с версией 2.17 Но наверное, так и должно быть...
|
 |

|
|
| Администратор
|
Пост N: 4182
Зарегистрирован: 23.05.05
|
|
Отправлено: 28.09.24 08:42. Заголовок: Andrey пишет: start..
Andrey пишет: цитата: | start dbedit -f -letodb=//000.000.000.000:2880/ |
| Почему такой ip ? И порт не стандартный. С такими параметрами наверное так и должно быть
|
 |

|
|
| постоянный участник
|
Пост N: 7874
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.09.24 13:23. Заголовок: Ip правильный, порт ..
Ip правильный, порт тоже. Здесь просто 0 показал. На сервере установлено 2 задачи LetoDB и LetoDbf
|
 |

|
|
| Администратор
|
Пост N: 4183
Зарегистрирован: 23.05.05
|
|
Отправлено: 28.09.24 13:26. Заголовок: Если харбор-программ..
Если харбор-программа, утилита manage коннектится с такими параметрами, то и dbedit тоже будет коннектиться.
|
 |

|
|
| постоянный участник
|
Пост N: 7875
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.09.24 15:14. Заголовок: Утилита manage конне..
Утилита manage коннектится с такими параметрами, а dbedit - нет. После нескольких попыток, перестановок, запустилось окно. Спасибо Pasha ! 
|
 |

|
|
| постоянный участник
|
Пост N: 7882
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.10.24 23:01. Заголовок: А как отображать дли..
А как отображать длительные расчёты в функциях UDF, которые выполняются на сервере ? Как показать бегунок процесса расчётов ? Программа при длительном запросе UDF просто висит - белый экран и отображается: Программа не отвечает 
|
 |

|
|
| Администратор
|
Пост N: 4184
Зарегистрирован: 23.05.05
|
|
Отправлено: 04.10.24 08:49. Заголовок: Клиент выдает запрос..
Клиент выдает запрос серверу и ждет ответа, сервер выполняет udf и возвращает результат. В процессе выполнения udf никакого обмена пакетами между клиентом и сервером нет и быть не может. Поэтому перед вызовом udf надо повесить сообщение, и ждать результата. Ну или выполнять udf в отдельном потоке.
|
 |

|
|
|
| постоянный участник
|
Пост N: 1744
Зарегистрирован: 27.01.07
|
|
Отправлено: 04.10.24 11:31. Заголовок: Andrey пишет: Как п..
Andrey пишет: цитата: | Как показать бегунок процесса расчётов ? |
| Вот в майкрософт не сильно парятся про это) Делают какие-нибудь двигающиеся кружочки/квадратики, чтобы видно было, что процесс не завис. И похер им, что проценты не показывает) И ты так сделай)
|
 |

|
|
| постоянный участник
|
Пост N: 4642
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.10.24 12:43. Заголовок: Andrey пишет: Как по..
Andrey пишет: цитата: | Как показать бегунок процесса расчётов ? |
| Можно исп. переменные сервера, для user, перед запуском создать, на сервере их заполнить в начале длит. операции (счетчик и max. значение). По мере работы, переменную счетчик, вести на сервере, на клиенте по таймеру считывать их значения и считать процент, по окончании операции с клиента переменные удалить - практически все так же, как и обычная работа длит. операции с прерыванием по Esc, например. Это то же можно предусмотреть добавив переменную сервера для прерывания, ее анализировать в длит. операции. Схема, совершенно такая же, как и в обычной работе. Имена переменных делать от user-а (nUserStru для leto 2.17, leto_MgID() для leto 3.0) например или еще как, решения есть
|
 |

|
|
| постоянный участник
|
Пост N: 7883
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.10.24 13:11. Заголовок: PSP пишет: Делают к..
PSP пишет: цитата: | Делают какие-нибудь двигающиеся кружочки/квадратики, чтобы видно было, что процесс не завис. И похер им, что проценты не показывает) И ты так сделай) |
| Сделал. Авишка висит и не двигается... Правда отдельный поток не пробовал ещё.
|
 |

|
|
| moderator
|
Пост N: 1617
Зарегистрирован: 06.07.06
|
|
Отправлено: 04.10.24 19:16. Заголовок: На самом деле вариан..
На самом деле варианты решения разные есть, надо только проявить фантазию. Можно, например, написать небольшую программу, которая будет по запросу выполнять эти "длительные расчёты", сделать ее клиентом letodb и запускать ее автоматически. Программа должна будет с определенной периодичностью опрашивать переменную letodb (leto_varget()) и, если найдет там запрос на работу, выполнит ее, записав результат (leto_varset()) в другую переменную. Может и промежуточные сведения записывать. Другие клиетны должны будут просто писать запрос в определенную переменную letodb и периодически опрашивать ее в ожидании ответа.
|
 |

|
|
| Администратор
|
Пост N: 4185
Зарегистрирован: 23.05.05
|
|
Отправлено: 04.10.24 20:02. Заголовок: Можно фрагментироват..
Можно фрагментировать долгоиграющую udf на много мелких. Скажем, вместо udf, которая считает всех абонентов, использовать udf, которая считает абонентов из некоего диапазона, и вызывать эту udf много раз, перебрав всех.
|
 |

|
|
| постоянный участник
|
Пост N: 7884
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.10.24 14:15. Заголовок: А нельзя в сам серве..
А нельзя в сам сервер встроить механизм загрузки программ клиента. Т.е. даёшь в коде программы команду загрузить допустим <мой_код>.hrb (.prg, не надо) Который располагаешь рядом с letoudf.hrb или в другом каталоге, потом выполняешь свой код, а потом при завершении выгружаешь этот <мой_код>.hrb И в letoudf.hrb лишнего кода не будет и программисту лишний раз его пере компилировать НЕ НАДО !
|
 |

|
|
| Администратор
|
Пост N: 4186
Зарегистрирован: 23.05.05
|
|
Отправлено: 05.10.24 19:44. Заголовок: Да можно В letoudf...
Да можно В letoudf.hrb надо добавить функцию: #ifndef HB_HRB_BIND_DEFAULT #define HB_HRB_BIND_DEFAULT 0x0 #endif Function UDF_HrbLoad( nUserStru, cHrbName ) Local pHrb := hb_HrbLoad(HB_HRB_BIND_DEFAULT, hb_dirBase() + cHrbName ) Return ! Empty(pHrb) Положить свой hrb модуль в папку letodb на сервере, и вызывать загрузку этого модуля с клиента.
|
 |

|
|
| постоянный участник
|
Пост N: 7886
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.10.24 23:03. Заголовок: Pasha пишет: Положи..
Pasha пишет: цитата: | Положить свой hrb модуль в папку letodb на сервере, и вызывать загрузку этого модуля с клиента. |
| А как выгружать ? Или не нужно этого делать ? 
|
 |

|
|
| Администратор
|
Пост N: 4187
Зарегистрирован: 23.05.05
|
|
Отправлено: 06.10.24 08:34. Заголовок: Можно так: #ifndef ..
Можно так: #ifndef HB_HRB_BIND_DEFAULT #define HB_HRB_BIND_DEFAULT 0x0 #endif Static aHrb := {} ... Function UDF_HrbLoad( nUserStru, cHrbName ) Local pHrb := hb_HrbLoad(HB_HRB_BIND_DEFAULT, hb_dirBase() + cHrbName ) Local nId if ! Empty(pHrb) AADD(aHrb, pHrb) nId := Len(aHrb) else nId := 0 endif Return nId Function UDF_HrbUnload( nUserStru, nId ) if nId # 0 .and. nId <= Len(aHrb) .and. aHrb[nId] # 0 hb_hrbUnload(aHrb[nId]) aHrb[nId] := 0 endif Return nil
|
 |

|
Ответов - 45
, стр:
1
2
3
All
[только новые]
|
|