Jump to content

Tokay

uniGUI Subscriber
  • Posts

    839
  • Joined

  • Last visited

  • Days Won

    19

Posts posted by Tokay

  1. Eurekalog и Mad Except очень помогают в сложных случаях. Как поиска утечек, так и поиска проблемных мест. Тулы работают в любых условиях - стендэлон, isapi (dll), сервис, 32 и 64 бита. У нас софт (порядка миллиона строк) работать в весьма ответственных местах, без заметных сложностей, с Унигуем в качестве интерфейса. Указанные тулы помогают постоянно. Если действительно хочется решить проблемы, а не нагнетать, рекомендую разобраться с отладочными тулами. Так же есть удаленная отладка. Можно 'прицепиться' почти к любому бинарнику, как exe так и dll. Мы как-то в сложном случае, отлаживали удаленно в Канаде, за часа два примерно разобрались.

  2. топикстартеру: что именно вызывает затруднение?

    послать файл юзеру можно, например, с помощью UniSession.SendFile. прямо из потока, правда, не получится. но можно сделать какой-то флаг, что файл для посылки готов, его проверять по юзерскому таймеру (TUniTimer), и как файл 'созрел', кинуть его юзеру.

  3. Okay, here's this module.

    Usage, forms, pas:

    procedure TUniForm14.UniFormClose(Sender: TObject; var Action: TCloseAction);
    begin
     JvFormStorage1.StoredValues.Values['Form14Width'].Value  := Width;
     JvFormStorage1.StoredValues.Values['Form14Height'].Value := Height;
     SaveGridLayout;
     JvFormStorage1.SaveFormPlacement;
    end;
    
    procedure TUniForm14.UniFormCreate(Sender: TObject);
    begin
     JvFormStorage1.AppStorage := UniMainModule.AppRegistryStorage;
     JvFormStorage1.RestoreFormPlacement;
     Width  := JvFormStorage1.StoredValues.Values['Form14Width'].Value;
     Height := JvFormStorage1.StoredValues.Values['Form14Height'].Value;
     LoadGridLayout;
    end;
    
    procedure TUniForm14.SaveGridLayout;
    var
     SaveLayout: TUniGridLayOut;
    begin
     SaveLayout := TUniGridLayOut.Create(nil);
     try
      SaveLayout.SaveLayout(JvFormStorage1, UniDBGrid1, 'Form14Grid1');
      SaveLayout.SaveLayout(JvFormStorage1, UniDBGrid2, 'Form14Grid2');
     finally
      FreeAndNil(SaveLayout);
     end;
    end;
    
    procedure TUniForm14.LoadGridLayout;
    var
     LoadLayout: TUniGridLayOut;
    begin
     LoadLayout := TUniGridLayOut.Create(nil);
     try
      LoadLayout.LoadLayout(JvFormStorage1, UniDBGrid1, 'Form14Grid1');
      LoadLayout.LoadLayout(JvFormStorage1, UniDBGrid2, 'Form14Grid2');
     finally
      FreeAndNil(LoadLayout);
     end;
    end;

    DFM:

      object JvFormStorage1: TJvFormStorage
        Active = False
        AppStoragePath = 'Form14Placement\'
        Options = []
        StoredValues = <
          item
            Name = 'Form14Width'
            Value = 943
          end
          item
            Name = 'Form14Height'
            Value = 688
          end>
        Left = 559
        Top = 164
      end

    Usage, the MainModule, pas:

    procedure TUniMainModule.UniGUIMainModuleBeforeLogin(Sender: TObject; var Handled: boolean);
    begin
     if Handled then
     begin
      .....
      AppRegistryStorage.Root := AppRegistryStorage.Root + '\' + UniMainModule.LoggedUserUID;
     end;
    end;

    DFM:

      object AppRegistryStorage: TJvAppRegistryStorage
        StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y'
        StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N'
        Root = 'Software\ACME Software\UniGuiStorage'
        SubStorages = <>
        Left = 504
        Top = 216
      end

     

    SaveUniGrid.pas

  4. I have wrote such a class. But it has the dependence of the JVCL library. I don't know, is it good idea to piblish it. It can save and restore Width, Index, Visible and Expanded properties of each column in a TUniDBGrid. On the server side, store by user, in registry, db, xml or ini file.

  5. Quote

    Я не совсем понимаю, каким образом его заставить работать на нескольких машинах, т.е. сам гиперсервер находится на одной машине, а процессы запускаются на второй и третьей ?

    Да, о нем. Насколько я понял идею - то процессы запускаются на разных машинах. Иначе не имеет смысла :)

  6. Quote

    Я Вам рекомендую проверить на одном пользователе, а потом умножить потребляемую мощность на ожидаемое количество.

    Надежнее проверять на 10-20 юзеров, так как есть какое-то общее потребление ресурсов (памяти, и т п) а есть по-юзерно. На множестве юзеров будет точнее видно. Можно поставить балансировщик (HyperServer), посмотреть как пойдет на 2-3 машинах и докидывать их по мере надобности. Опять же - можно и памяти в одну добавить, если процессорного ресурса хватает. 32мя гигами оперативки на сервере мало кого сейчас можно удивить. Я частично связан с машинным обучением, там, бывает, вообще по 100+ гиг бывает нужно :) Что тут про 32 говорить.

  7. On 10/26/2018 at 7:48 PM, TELELIST said:

    Подскажите, пожалуйста, минимальные и рекомендуемые параметры сервера для приложения на UniGUI

    СУБД FireBird, MySQL (пока выбираем)

    Количество одновременно подключенных пользователей ~ 10-50

    Думаю, что обычного среднего компьютера достаточно. 2 ядра, 2 гига оперативки.

×
×
  • Create New...