问:
Wix v3 Bootstrapper RUN EXE automatically
I'm trying to Run my intalled Exe automatically

I have a bootstrapper and msi setup projects all working.

I really don't get this structure, and i don't know where and what to write to run what i have installed under my C:

BOOTSTRAPPER has:

Bundle.wxs

Localization.wxl

BUNDLE wsx :

```<code><?xml version="1.0" encoding="UTF-8"?>
<?define Guid_Product_Update = "AEBD5517-1875-44F1-86C0-CC0C08C82A5D"?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
     xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"
     xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">

  <Bundle Name="!(loc.GBCloudStart)"
          IconSourceFile="G:\Progetti.NET\GBCloudStart Setup\GBCloudStartSetupFile4WiX\GBCloudStart.ico"
          Version="$(var.BuildVersion)"
          Copyright="(c) All rights reserved."
          Manufacturer="!(loc.Manufacturer)"
          HelpTelephone="!(loc.HelpPhone)"
          HelpUrl="!(loc.AboutUrl)"
          UpdateUrl="!(loc.AboutUrl)"
          AboutUrl="!(loc.AboutUrl)"
          UpgradeCode="$(var.Guid_Product_Update)">

    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkSidebarLicense" >
      <bal:WixStandardBootstrapperApplication
        SuppressOptionsUI="yes"
        ShowFilesInUse="yes"
        ShowVersion="yes"
        LicenseFile="Resources\Documents\license.rtf"
        LicenseUrl="https://www.gbsoftware.it"
        LogoFile="Resources\Images\GBLogo64x64.png"
        LogoSideFile="Resources\Images\LogoGbVerticale.png"
        LocalizationFile="Resources/GBHyperlinkLargeTheme.wxl"
        ThemeFile="Resources\GBHyperlinkLargeTheme.xml" />

    </BootstrapperApplicationRef>

    <!--
       Elenco delle variabili built-in presenti in Wix
        https://wixtoolset.org/documentation/manual/v3/bundle/bundle_built_in_variables.html
       Versioni del SO
        https://learn.microsoft.com/it-it/windows/win32/sysinfo/operating-system-version?redirectedfrom=MSDN
    -->

    <bal:Condition Message="Questo software può essere installato solamente su un computer con sistema operativo Windows 7 o superiore">
      <![CDATA[VersionNT >= v6.1]]>
    </bal:Condition>

    <Chain>

      <!-- TODO: Define the list of chained packages. -->
      <MsiPackage DisplayInternalUI="no"
                  Id="GBCloudStart"
                  Cache="no"
                  DisplayName="!(loc.GBCloudStart)"
                  SourceFile="$(var.CloudStartSetup.TargetPath)"
                  Visible="no">
      </MsiPackage>

    </Chain>
    <Variable Name="LaunchTarget" Value="C:\GBCloud\Prog\GBCloudStart.exe"/>
  </Bundle>
</Wix>

</code>```

MSI SETUP has:

Product.wxs

Localization.wxl

Product.wxs :

```<code><?xml version="1.0" encoding="UTF-8"?>
<?define Guid_Product = "AEBD5517-1875-44F1-86C0-CC0C08C82A5D"?>
<?define VERSION = "!(bind.fileVersion.F_CloudStartExe)"?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
     xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"
     xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">

  <Product Id="*" Name="!(loc.GBCloudStart)" Language="1040" Version="$(var.VERSION)" Manufacturer="!(loc.Manufacturer)"
           UpgradeCode="$(var.Guid_Product)">

    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

        <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeErrorMessage)" />
        <MediaTemplate EmbedCab="yes" />

    <Property Id="INSTALLFOLDER" Value="C:\GBCloud\Prog\" />

    <SetDirectory Id="MYDESTINATIONDIRECTORY" Value="[WindowsVolume]GBCloud\Prog" />

        <Feature Id="ProductFeature" Title="CloudStartSetup" Level="1">
      <ComponentRef Id="ApplicationShortcutDesktop"/>
      <ComponentRef Id="CMP_CloudStartExe"/>
      <ComponentRef Id="CMP_CloudStartPdb"/>
      <ComponentRef Id="CMP_CloudStartExeConfig"/>
      <ComponentRef Id="CMP_CloudStartIco"/>
      <ComponentRef Id="CMP_AutoUpdaterDll"/>
      <ComponentRef Id="CMP_AutoUpdaterPdb"/>
      <ComponentRef Id="CMP_AxInteropMSTSCLib"/>
      <ComponentRef Id="CMP_GBassistPaghe"/>
      <ComponentRef Id="CMP_GBAssistSup"/>
      <ComponentRef Id="CMP_GBAssistTV"/>
      <ComponentRef Id="CMP_GbPagheWebExe"/>
      <ComponentRef Id="CMP_GbPagheWebConfig"/>
      <ComponentRef Id="CMP_GBSplashLoader"/>
      <ComponentRef Id="CMP_InteropIWshRuntimeLibraryDll"/>
      <ComponentRef Id="CMP_InteropMSTSCLibDll"/>
      <ComponentRef Id="CMP_log4netDll"/>
      <ComponentRef Id="CMP_MeetingTvidc7txc6fcExe"/>
      <ComponentRef Id="CMP_SumatraPDFExe"/>
      <ComponentRef Id="CMP_SumatraPDFSettings"/>
    </Feature>
    </Product>

    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="DesktopFolder" Name="Desktop">
        <Component Id="ApplicationShortcutDesktop" Guid="*">
          <Shortcut Id="ApplicationDesktopShortcut"
                    Name="!(loc.GBCloudStart)"
                    Description="Avvia !(loc.GBCloudStart)"
                    Target="[INSTALLFOLDER]GBCloudStart.exe"
                    WorkingDirectory="INSTALLFOLDER"/>

          <!-- Usando nel Target [System64Folder] questo perchè viene mappata automaticamente la
          cartella sia a 64-bit oppure a 32-bit in base al sistema operativo che viene usato nel pc
          dell'utente -->
          <Shortcut Id="UninstallShortcutClientSetup"
                    Name="Uninstall !(loc.GBCloudStart)"
                    Description=
                    "Uninstalls !(loc.GBCloudStart) e tutti i componenti"
                    Target="[System64Folder]msiexec.exe"
                    Arguments="/x [ProductCode]"
                    Directory="MYDESTINATIONDIRECTORY" />

          <RemoveFolder Id="DesktopFolder" On="uninstall"/>

          <RegistryValue
            Root="HKCU"
            Key="Software\!(loc.Manufacturer)\!(loc.GBCloudStart)"
            Name="installed"
            Type="integer"
            Value="1"
            KeyPath="yes"/>
        </Component>
            </Directory>
      <Directory Id="MYDESTINATIONDIRECTORY" />
    </Directory>
    </Fragment>

    <Fragment>
    <Component Id="CMP_CloudStartExe" Guid="30B5E511-2E04-4AFB-884B-2289B6F91EB1" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_CloudStartExe"
            Source="$(var.PathFilesInclude)GBCloudStart.exe"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_CloudStartPdb" Guid="7FA55FFA-6E6E-427E-8C00-639D4B5B95B3" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_CloudStartPdb"
            Source="$(var.PathFilesInclude)GBCloudStart.pdb"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_CloudStartExeConfig" Guid="4818B72C-268D-41D8-811B-96CA380CAFB4" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_CloudStartExeConfig"
            Source="$(var.PathFilesInclude)GBCloudStart.exe.config"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_CloudStartIco" Guid="F8B54D6D-A554-4727-9253-AD2D5A8FFEB6" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_CloudStartIco"
            Source="$(var.PathFilesInclude)GBCloudStart.ico"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_AutoUpdaterDll" Guid="423F8AB0-5A27-44DB-84C4-B70A42605B73" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_AutoUpdaterDll"
            Source="$(var.PathFilesInclude)AutoUpdater.NET.dll"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_AutoUpdaterPdb" Guid="3A5B517F-CE2D-4712-AEC6-53873EE87092" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_AutoUpdaterPdb"
            Source="$(var.PathFilesInclude)AutoUpdater.NET.pdb"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_AxInteropMSTSCLib" Guid="BAE3EB7B-CFDE-4E3E-8065-17510F6F489C" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_AxInteropMSTSCLib"
            Source="$(var.PathFilesInclude)AxInterop.MSTSCLib.dll"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_GBassistPaghe" Guid="DEB5C44F-BBEF-409E-A226-95A623EC3FA2" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_GBassistPaghe"
            Source="$(var.PathFilesInclude)GBassist_Paghe.exe"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_GBAssistSup" Guid="B0E695B0-8C3D-4951-BD0D-0C2308B14CCD" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_GBAssistSup"
            Source="$(var.PathFilesInclude)GBAssist_Sup.exe"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_GBAssistTV" Guid="CEB6E97E-B543-4B5D-BB31-444BD239E97A" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_GBAssistTV"
            Source="$(var.PathFilesInclude)GbAssist_TV.exe"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_GbPagheWebExe" Guid="B62B55BF-9896-4215-BE44-F9F1839529AA" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_GbPagheWebExe"
            Source="$(var.PathFilesInclude)GbPagheWeb.exe"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_GbPagheWebConfig" Guid="695F5C9F-1669-417C-8E09-014AF067B66F" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_GbPagheWebConfig"
            Source="$(var.PathFilesInclude)GbPagheWeb.exe.config"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_GBSplashLoader" Guid="69F8A34D-9BB2-48CB-BDD9-70B30FBD2A02" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_GBSplashLoader"
            Source="$(var.PathFilesInclude)GBSplashLoader.dll"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_InteropIWshRuntimeLibraryDll" Guid="02B1D1C6-1106-4D5E-86F2-A0A33760C8A9" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_InteropIWshRuntimeLibraryDll"
            Source="$(var.PathFilesInclude)Interop.IWshRuntimeLibrary.dll"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_InteropMSTSCLibDll" Guid="75DBE257-06D4-4CE3-9017-47059E8274DE" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_InteropMSTSCLibDll"
            Source="$(var.PathFilesInclude)Interop.MSTSCLib.dll"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_log4netDll" Guid="00CE6B48-FC91-493E-A9B9-E28AE7B64D6D" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_log4netDll"
            Source="$(var.PathFilesInclude)log4net.dll"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_MeetingTvidc7txc6fcExe" Guid="8EE3CAEA-02C2-481E-899A-DB008BD50215" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_MeetingTvidc7txc6fcExe"
            Source="$(var.PathFilesInclude)Meeting-tv-idc7txc6fc.exe"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_SumatraPDFExe" Guid="5ABB6BC7-A040-4F07-A51A-2C02184305EC" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_SumatraPDFExe"
            Source="$(var.PathFilesInclude)SumatraPDF.exe"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_SumatraPDFSettings" Guid="09778715-60DF-4974-AF7A-266359ADC95B" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_SumatraPDFSettings"
            Source="$(var.PathFilesInclude)SumatraPDF-settings.txt"
            KeyPath="yes" />
    </Component>

  </Fragment>
</Wix>

</code>```

I tried to run my installed EXE after the bootstrapper

Body:
I'm trying to Run my intalled Exe automatically

I have a bootstrapper and msi setup projects all working.

I really don't get this structure, and i don't know where and what to write to run what i have installed under my C:

BOOTSTRAPPER has:

Bundle.wxs

Localization.wxl

BUNDLE wsx :

<?xml version="1.0" encoding="UTF-8"?>
<?define Guid_Product_Update = "AEBD5517-1875-44F1-86C0-CC0C08C82A5D"?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
     xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"
     xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">

  <Bundle Name="!(loc.GBCloudStart)"
          IconSourceFile="G:\Progetti.NET\GBCloudStart Setup\GBCloudStartSetupFile4WiX\GBCloudStart.ico"
          Version="$(var.BuildVersion)"
          Copyright="(c) All rights reserved."
          Manufacturer="!(loc.Manufacturer)"
          HelpTelephone="!(loc.HelpPhone)"
          HelpUrl="!(loc.AboutUrl)"
          UpdateUrl="!(loc.AboutUrl)"
          AboutUrl="!(loc.AboutUrl)"
          UpgradeCode="$(var.Guid_Product_Update)">

    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkSidebarLicense" >
      <bal:WixStandardBootstrapperApplication
        SuppressOptionsUI="yes"
        ShowFilesInUse="yes"
        ShowVersion="yes"
        LicenseFile="Resources\Documents\license.rtf"
        LicenseUrl="https://www.gbsoftware.it"
        LogoFile="Resources\Images\GBLogo64x64.png"
        LogoSideFile="Resources\Images\LogoGbVerticale.png"
        LocalizationFile="Resources/GBHyperlinkLargeTheme.wxl"
        ThemeFile="Resources\GBHyperlinkLargeTheme.xml" />

    </BootstrapperApplicationRef>

    <bal:Condition Message="Questo software può essere installato solamente su un computer con sistema operativo Windows 7 o superiore">
      <![CDATA[VersionNT >= v6.1]]>
    </bal:Condition>

    <Chain>

      <MsiPackage DisplayInternalUI="no"
                  Id="GBCloudStart"
                  Cache="no"
                  DisplayName="!(loc.GBCloudStart)"
                  SourceFile="$(var.CloudStartSetup.TargetPath)"
                  Visible="no">
      </MsiPackage>

    </Chain>
    <Variable Name="LaunchTarget" Value="C:\GBCloud\Prog\GBCloudStart.exe"/>
  </Bundle>
</Wix>

MSI SETUP has:

Product.wxs

Localization.wxl

Product.wxs :

<?xml version="1.0" encoding="UTF-8"?>
<?define Guid_Product = "AEBD5517-1875-44F1-86C0-CC0C08C82A5D"?>
<?define VERSION = "!(bind.fileVersion.F_CloudStartExe)"?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
     xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"
     xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">

  <Product Id="*" Name="!(loc.GBCloudStart)" Language="1040" Version="$(var.VERSION)" Manufacturer="!(loc.Manufacturer)"
           UpgradeCode="$(var.Guid_Product)">

    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

        <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeErrorMessage)" />
        <MediaTemplate EmbedCab="yes" />

    <Property Id="INSTALLFOLDER" Value="C:\GBCloud\Prog\" />

    <SetDirectory Id="MYDESTINATIONDIRECTORY" Value="[WindowsVolume]GBCloud\Prog" />

        <Feature Id="ProductFeature" Title="CloudStartSetup" Level="1">
      <ComponentRef Id="ApplicationShortcutDesktop"/>
      <ComponentRef Id="CMP_CloudStartExe"/>
      <ComponentRef Id="CMP_CloudStartPdb"/>
      <ComponentRef Id="CMP_CloudStartExeConfig"/>
      <ComponentRef Id="CMP_CloudStartIco"/>
      <ComponentRef Id="CMP_AutoUpdaterDll"/>
      <ComponentRef Id="CMP_AutoUpdaterPdb"/>
      <ComponentRef Id="CMP_AxInteropMSTSCLib"/>
      <ComponentRef Id="CMP_GBassistPaghe"/>
      <ComponentRef Id="CMP_GBAssistSup"/>
      <ComponentRef Id="CMP_GBAssistTV"/>
      <ComponentRef Id="CMP_GbPagheWebExe"/>
      <ComponentRef Id="CMP_GbPagheWebConfig"/>
      <ComponentRef Id="CMP_GBSplashLoader"/>
      <ComponentRef Id="CMP_InteropIWshRuntimeLibraryDll"/>
      <ComponentRef Id="CMP_InteropMSTSCLibDll"/>
      <ComponentRef Id="CMP_log4netDll"/>
      <ComponentRef Id="CMP_MeetingTvidc7txc6fcExe"/>
      <ComponentRef Id="CMP_SumatraPDFExe"/>
      <ComponentRef Id="CMP_SumatraPDFSettings"/>
    </Feature>
    </Product>

    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="DesktopFolder" Name="Desktop">
        <Component Id="ApplicationShortcutDesktop" Guid="*">
          <Shortcut Id="ApplicationDesktopShortcut"
                    Name="!(loc.GBCloudStart)"
                    Description="Avvia !(loc.GBCloudStart)"
                    Target="[INSTALLFOLDER]GBCloudStart.exe"
                    WorkingDirectory="INSTALLFOLDER"/>

          <Shortcut Id="UninstallShortcutClientSetup"
                    Name="Uninstall !(loc.GBCloudStart)"
                    Description=
                    "Uninstalls !(loc.GBCloudStart) e tutti i componenti"
                    Target="[System64Folder]msiexec.exe"
                    Arguments="/x [ProductCode]"
                    Directory="MYDESTINATIONDIRECTORY" />

          <RemoveFolder Id="DesktopFolder" On="uninstall"/>

          <RegistryValue
            Root="HKCU"
            Key="Software\!(loc.Manufacturer)\!(loc.GBCloudStart)"
            Name="installed"
            Type="integer"
            Value="1"
            KeyPath="yes"/>
        </Component>
            </Directory>
      <Directory Id="MYDESTINATIONDIRECTORY" />
    </Directory>
    </Fragment>

    <Fragment>
    <Component Id="CMP_CloudStartExe" Guid="30B5E511-2E04-4AFB-884B-2289B6F91EB1" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_CloudStartExe"
            Source="$(var.PathFilesInclude)GBCloudStart.exe"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_CloudStartPdb" Guid="7FA55FFA-6E6E-427E-8C00-639D4B5B95B3" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_CloudStartPdb"
            Source="$(var.PathFilesInclude)GBCloudStart.pdb"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_CloudStartExeConfig" Guid="4818B72C-268D-41D8-811B-96CA380CAFB4" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_CloudStartExeConfig"
            Source="$(var.PathFilesInclude)GBCloudStart.exe.config"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_CloudStartIco" Guid="F8B54D6D-A554-4727-9253-AD2D5A8FFEB6" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_CloudStartIco"
            Source="$(var.PathFilesInclude)GBCloudStart.ico"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_AutoUpdaterDll" Guid="423F8AB0-5A27-44DB-84C4-B70A42605B73" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_AutoUpdaterDll"
            Source="$(var.PathFilesInclude)AutoUpdater.NET.dll"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_AutoUpdaterPdb" Guid="3A5B517F-CE2D-4712-AEC6-53873EE87092" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_AutoUpdaterPdb"
            Source="$(var.PathFilesInclude)AutoUpdater.NET.pdb"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_AxInteropMSTSCLib" Guid="BAE3EB7B-CFDE-4E3E-8065-17510F6F489C" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_AxInteropMSTSCLib"
            Source="$(var.PathFilesInclude)AxInterop.MSTSCLib.dll"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_GBassistPaghe" Guid="DEB5C44F-BBEF-409E-A226-95A623EC3FA2" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_GBassistPaghe"
            Source="$(var.PathFilesInclude)GBassist_Paghe.exe"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_GBAssistSup" Guid="B0E695B0-8C3D-4951-BD0D-0C2308B14CCD" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_GBAssistSup"
            Source="$(var.PathFilesInclude)GBAssist_Sup.exe"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_GBAssistTV" Guid="CEB6E97E-B543-4B5D-BB31-444BD239E97A" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_GBAssistTV"
            Source="$(var.PathFilesInclude)GbAssist_TV.exe"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_GbPagheWebExe" Guid="B62B55BF-9896-4215-BE44-F9F1839529AA" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_GbPagheWebExe"
            Source="$(var.PathFilesInclude)GbPagheWeb.exe"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_GbPagheWebConfig" Guid="695F5C9F-1669-417C-8E09-014AF067B66F" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_GbPagheWebConfig"
            Source="$(var.PathFilesInclude)GbPagheWeb.exe.config"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_GBSplashLoader" Guid="69F8A34D-9BB2-48CB-BDD9-70B30FBD2A02" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_GBSplashLoader"
            Source="$(var.PathFilesInclude)GBSplashLoader.dll"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_InteropIWshRuntimeLibraryDll" Guid="02B1D1C6-1106-4D5E-86F2-A0A33760C8A9" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_InteropIWshRuntimeLibraryDll"
            Source="$(var.PathFilesInclude)Interop.IWshRuntimeLibrary.dll"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_InteropMSTSCLibDll" Guid="75DBE257-06D4-4CE3-9017-47059E8274DE" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_InteropMSTSCLibDll"
            Source="$(var.PathFilesInclude)Interop.MSTSCLib.dll"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_log4netDll" Guid="00CE6B48-FC91-493E-A9B9-E28AE7B64D6D" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_log4netDll"
            Source="$(var.PathFilesInclude)log4net.dll"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_MeetingTvidc7txc6fcExe" Guid="8EE3CAEA-02C2-481E-899A-DB008BD50215" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_MeetingTvidc7txc6fcExe"
            Source="$(var.PathFilesInclude)Meeting-tv-idc7txc6fc.exe"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_SumatraPDFExe" Guid="5ABB6BC7-A040-4F07-A51A-2C02184305EC" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_SumatraPDFExe"
            Source="$(var.PathFilesInclude)SumatraPDF.exe"
            KeyPath="yes" />
    </Component>
    <Component Id="CMP_SumatraPDFSettings" Guid="09778715-60DF-4974-AF7A-266359ADC95B" Directory="MYDESTINATIONDIRECTORY">
      <File Id="F_SumatraPDFSettings"
            Source="$(var.PathFilesInclude)SumatraPDF-settings.txt"
            KeyPath="yes" />
    </Component>

  </Fragment>
</Wix>

I tried to run my installed EXE after the bootstrapper


来源: stackexchange

问:
How to export PNG image without breaking the RGB channels using photoshop?
When I export an image with a transparent background the RGB channels are missing color information.
For example: I have an image, I used photoshop to remove the background after that I save the result as png.
The problem is that when I use the result image to get the rgb channels it misses some parts.

I tried this example:
Initial image
Image with transparent background using photoshop
the mask used to get the result image
the result image when I visualize only RGB channels (without the channel of transparency)

But the result I want is similar to the initial image expected result

ContentLicense: CC BY-SA 4.0


问:
How to setup django-q in a IIS server for async views?
I have a Django app that runs i a IIS server and now i need to use django-q package on it,

how can i setup IIS to do this since i can't run python manage.py qcluster?

[Q] INFO Enqueued 8
Async view don't run without python manage.py qcluster.


问:
can we reverse proxy for 2 different site on same localhost
I have httpd.conf configuration like below,

```<code>SSLProxyEngine on
ProxyPassMatch ^/(.*)$ https://mysite1.com/$1
ProxyPassReverse ^/(.*)$ https://mysite1.com/$1
</code>```

When I am running httpd and over the browser when I do http://localhost, it's redirects to the landing page of site https://mysite1.com perfectly.

Now on button click over landing page, browser navigates to other site https://my-OTHER-site1.com/oauth2/....

Question, How I can configure reverse proxy for other site https://my-OTHER-site1.com along with my site https://mysite1.com?

I tried below config, but not working, please suggest?

```<code>SSLProxyEngine on
ProxyPassMatch ^/(.*)$ https://mysite1.com/$1
ProxyPassReverse ^/(.*)$ https://mysite1.com/$1
ProxyPassMatch ^/(.*)$ https://my-OTHER-site1.com/$1
ProxyPassReverse ^/(.*)$ https://my-OTHER-site1.com/$1
</code>```

EDIT

The landing page is https://site1.mydoamin.com and after that it is redirected to the auth site https://site2.mydoamin.com/oauth2/auth?client_id...

```<code>https://site1.mydoamin.com/
https://site2.mydoamin.com/oauth2/auth?client_id...
</code>```

I tried to differentiate both like below, but no luck, any suggestion please ?

```<code>ProxyPassMatch ^/(.*)$ https://site1.mydoamin.com/$1
ProxyPassMatch ^/oauth2/(.*)$ https://site2.mydoamin.com/$1
</code>```

Body:
I have httpd.conf configuration like below,

SSLProxyEngine on
ProxyPassMatch ^/(.*)$ https://mysite1.com/$1
ProxyPassReverse ^/(.*)$ https://mysite1.com/$1

When I am running httpd and over the browser when I do http://localhost, it's redirects to the landing page of site https://mysite1.com perfectly.

Now on button click over landing page, browser navigates to other site https://my-OTHER-site1.com/oauth2/....

Question, How I can configure reverse proxy for other site https://my-OTHER-site1.com along with my site https://mysite1.com?

I tried below config, but not working, please suggest?

SSLProxyEngine on
ProxyPassMatch ^/(.*)$ https://mysite1.com/$1
ProxyPassReverse ^/(.*)$ https://mysite1.com/$1
ProxyPassMatch ^/(.*)$ https://my-OTHER-site1.com/$1
ProxyPassReverse ^/(.*)$ https://my-OTHER-site1.com/$1

EDIT

The landing page is https://site1.mydoamin.com and after that it is redirected to the auth site https://site2.mydoamin.com/oauth2/auth?client_id...

https://site1.mydoamin.com/
https://site2.mydoamin.com/oauth2/auth?client_id...

I tried to differentiate both like below, but no luck, any suggestion please ?

ProxyPassMatch ^/(.*)$ https://site1.mydoamin.com/$1
ProxyPassMatch ^/oauth2/(.*)$ https://site2.mydoamin.com/$1


问:
rollback transaction if outer logic fails_
In C#, with EF Core I want to

Make some (bulk) database updates in a transaction

Publish an event that new data has been added

class ClothesService
{
    public Task HandleNewClothes(data)
    {
      _clothesRepo.UpdateNewClothes(data);
      _publishingService.PublishNewClothesReady();
    }
}

class ClothesRepo
{
    public Task UpdateNewClothes(data)
    {
        using var trans = await _dbContext.Database.BeginTransactionAsync();
        try
        {
            //do updates
            trans.Commit()
        }
        catch
        {
            trans.Rollback()
        }
    }
}
```

Now to my problem. I want to rollback the transaction if step 2 (publish event) fails.
I dont want to to publish-logic in my repo. Can I somehow return the transaction-object and have another method that takes that transaction and commits it. Is this way recommended?

Body:
In C#, with EF Core I want to

Make some (bulk) database updates in a transaction

Publish an event that new data has been added

class ClothesService
{
    public Task HandleNewClothes(data)
    {
      _clothesRepo.UpdateNewClothes(data);
      _publishingService.PublishNewClothesReady();
    }
}

class ClothesRepo
{
    public Task UpdateNewClothes(data)
    {
        using var trans = await _dbContext.Database.BeginTransactionAsync();
        try
        {
            //do updates
            trans.Commit()
        }
        catch
        {
            trans.Rollback()
        }
    }
}

Now to my problem. I want to rollback the transaction if step 2 (publish event) fails.
I dont want to to publish-logic in my repo. Can I somehow return the transaction-object and have another method that takes that transaction and commits it. Is this way recommended?


问:
Getting a net:ERR_FILE_NOT_FOUND when clicking a link in my app
Creating a really simple HTML app which runs fine in a browser. However, whenever I build it via VoltBuilder or Html2Apk I get the same error when clicking a link on my index page. Its just a simple href but every time it causes the following issue:

"Application Error net:ERR_FILE_NOT_FOUND
(file//android_asset/www/untitled-1.html)"

My code looks like this for the index file:

```<code>    <html>
   <body>
    <main>
     <h1>Simple Game</h1>
    <section>
     <img src="imagewasherebutremovedasnoreputation" alt="Charging Logo">
    </section>
    <section>
    <h2><a href="untitled-1.html">Begin...</a></h2>
    </section>

    </html>
</code>```

Have attempted to change href= to wss/untitled-1.html and even used capitals for "Untitled".

Body:
Creating a really simple HTML app which runs fine in a browser. However, whenever I build it via VoltBuilder or Html2Apk I get the same error when clicking a link on my index page. Its just a simple href but every time it causes the following issue:

"Application Error net:ERR_FILE_NOT_FOUND
(file//android_asset/www/untitled-1.html)"

My code looks like this for the index file:

Simple Game

Begin...

Have attempted to change href= to wss/untitled-1.html and even used capitals for "Untitled".


问:
Blazor, import module, call a function for every page with the same layout
I have a js library provided by a 3rd party.  I want to import the module, and call a function, for any page that uses a common layout.

To do this,  in my layout, my code looks like this:

```<code>@code {
    @inject IJSRuntime _js
    private IJSObjectReference Prettifier { get; set; }

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender)
        {
            Prettifier = await _js.InvokeAsync<IJSObjectReference>("import", "./lib/Prettifier/prettify.js");

            await Prettifier.InvokeVoidAsync("prettyPrint");
        }
    }

    public async ValueTask DisposeAsync()
    {
        if (Prettifier != null)
        {
            await Prettifier.DisposeAsync();
        }
    }
}
</code>```

This does load the module, but the functions are not exported, so the call to InvokeVoidAsync fails, stating that prettyPrint is undefined.   Also,  I want to call the function on each page, but I don't want to define that logic on each page.  Am I doing this right?

Body:
I have a js library provided by a 3rd party.  I want to import the module, and call a function, for any page that uses a common layout.

To do this,  in my layout, my code looks like this:

@code {
    @inject IJSRuntime _js
    private IJSObjectReference Prettifier { get; set; }

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender)
        {
            Prettifier = await _js.InvokeAsync<IJSObjectReference>("import", "./lib/Prettifier/prettify.js");

            await Prettifier.InvokeVoidAsync("prettyPrint");
        }
    }

    public async ValueTask DisposeAsync()
    {
        if (Prettifier != null)
        {
            await Prettifier.DisposeAsync();
        }
    }
}

This does load the module, but the functions are not exported, so the call to InvokeVoidAsync fails, stating that prettyPrint is undefined.   Also,  I want to call the function on each page, but I don't want to define that logic on each page.  Am I doing this right?


问:
UDP packet more than 1472 not going backend servers via nginx load balancer
We are using Nginx in Ubuntu for load-balancing UDP.

When the packet size is small, it is working fine in the round-robin.

When packet size is more, for example, more than 1472 chars those packs are reaching load balancer server . But not upstream servers .

In case I connect directly to upstream servers (from the client, not via load balancer) and send packets of more than 1472 chars also works fine.

is there any suggestion to overcome on this issue


问:
TypeORM not recognizing migrations path
I'm trying to create migrations for my application in typeorm, but I'm getting the error

```<code>No changes in database schema were found - cannot generate a migration. To create a new empty migration use "typeorm migration:create" command
</code>```

However, the migrations folder is properly configured in the database config and also with the "npm run migrate:generate" command within my package.json

package.json

```<code>{
  "dependencies": {
    "@types/body-parser": "^1.19.2",
    "@types/cors": "^2.8.13",
    "@types/dotenv": "^8.2.0",
    "@types/express": "^4.17.15",
    "body-parser": "^1.20.1",
    "cors": "^2.8.5",
    "dotenv": "^16.0.3",
    "express": "^4.18.2",
    "nodemon": "^2.0.20",
    "pg": "^8.8.0",
    "reflect-metadata": "^0.1.13",
    "typeorm": "^0.3.11",
    "typescript": "^4.9.4"
  },
  "name": "networking_api",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "build": "rimraf dist & tsc",
    "dev": "nodemon --exec ts-node ./src/server.ts",
    "migration:generate": "typeorm-ts-node-commonjs -d ./src/database/config.ts migration:generate ./src/database/migrations/default",
    "migration:run": "typeorm-ts-node-commonjs -d ./src/database/config.ts migration:run"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "devDependencies": {
    "@types/node": "^18.11.15",
    "ts-node": "^10.9.1"
  }
}

</code>```

src/database/config.ts

```<code>import { DataSource } from "typeorm";
import dotenv from 'dotenv';

dotenv.config();

export const AppDataSource = new DataSource({
    type: "postgres",
    host: process.env.DATABASE_HOST,
    port: 5433,
    username: process.env.DATABASE_USERNAME,
    password: process.env.DATABASE_PASSWORD,
    database: process.env.DATABASE_NAME,
    synchronize: true,
    logging: true,
    entities: [`${__dirname}/../entities/*.{ts,js}`],
    migrations: [`${__dirname}/migrations/*.{ts,js}`],
});
</code>```

Title: TypeORM not recognizing migrations path

Body:
I'm trying to create migrations for my application in typeorm, but I'm getting the error

No changes in database schema were found - cannot generate a migration. To create a new empty migration use "typeorm migration:create" command

However, the migrations folder is properly configured in the database config and also with the "npm run migrate:generate" command within my package.json

package.json

{
  "dependencies": {
    "@types/body-parser": "^1.19.2",
    "@types/cors": "^2.8.13",
    "@types/dotenv": "^8.2.0",
    "@types/express": "^4.17.15",
    "body-parser": "^1.20.1",
    "cors": "^2.8.5",
    "dotenv": "^16.0.3",
    "express": "^4.18.2",
    "nodemon": "^2.0.20",
    "pg": "^8.8.0",
    "reflect-metadata": "^0.1.13",
    "typeorm": "^0.3.11",
    "typescript": "^4.9.4"
  },
  "name": "networking_api",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "build": "rimraf dist & tsc",
    "dev": "nodemon --exec ts-node ./src/server.ts",
    "migration:generate": "typeorm-ts-node-commonjs -d ./src/database/config.ts migration:generate ./src/database/migrations/default",
    "migration:run": "typeorm-ts-node-commonjs -d ./src/database/config.ts migration:run"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "devDependencies": {
    "@types/node": "^18.11.15",
    "ts-node": "^10.9.1"
  }
}

src/database/config.ts

import { DataSource } from "typeorm";
import dotenv from 'dotenv';

dotenv.config();

export const AppDataSource = new DataSource({
    type: "postgres",
    host: process.env.DATABASE_HOST,
    port: 5433,
    username: process.env.DATABASE_USERNAME,
    password: process.env.DATABASE_PASSWORD,
    database: process.env.DATABASE_NAME,
    synchronize: true,
    logging: true,
    entities: [`${__dirname}/../entities/*.{ts,js}`],
    migrations: [`${__dirname}/migrations/*.{ts,js}`],
});


问:
How to use SQLSyntaxSupport with a case class containing other case classes
I'm trying to use Scalikejbdc's ORM with SQLSyntaxSupport

The table layout is as follows:

```<code>create table samples (
    id text
    event_name text
    event_data text
    created_at timestamp
    scope text
)
</code>```

The classes in Scala are as follows

```<code>case class SampleData(id: String, eventName: String, eventData: String)
case class SampleMetadata(createdAt: OffsetDateTime, scope: String)
case class Sample(data: SampleData, metadata: SampleMetadata)
</code>```

I would like to use SQLSyntaxSupport like so

```<code>object SampleSchema extends SQLSyntaxSupport[Sample] {
  override val tableName = "sources"

  override lazy val columns = Seq(
    "id",
    "event_name",
    "event_data",
    "created_at",
    "scope"
  )

  val insertColumns = Seq(
    column.id,
    column.eventName,
    column.eventData,
    column.createdAt,
    column.scope
  )
}
</code>```

and later be able to do:

```<code>  def insert(source: Source): Unit = DB localTx { implicit session =>
      applyUpdate {
        insertInto(SampleSchema)
          .columns(SampleSchema.insertColumns: _*)
          .values(SampleSchema.toInsertValues(session, source): _*)
      }
  }
</code>```

Code doesn't compile; with errors like

```<code> Sample#eventName not found. Expected fields are #data, #metadata
 column.eventName
</code>```

Is there a way to make it work without flattening the case class Sample ?

Body:
I'm trying to use Scalikejbdc's ORM with SQLSyntaxSupport

The table layout is as follows:

create table samples (
    id text
    event_name text
    event_data text
    created_at timestamp
    scope text
)

The classes in Scala are as follows

case class SampleData(id: String, eventName: String, eventData: String)
case class SampleMetadata(createdAt: OffsetDateTime, scope: String)
case class Sample(data: SampleData, metadata: SampleMetadata)

I would like to use SQLSyntaxSupport like so

object SampleSchema extends SQLSyntaxSupport[Sample] {
  override val tableName = "sources"

  override lazy val columns = Seq(
    "id",
    "event_name",
    "event_data",
    "created_at",
    "scope"
  )

  val insertColumns = Seq(
    column.id,
    column.eventName,
    column.eventData,
    column.createdAt,
    column.scope
  )
}

and later be able to do:

  def insert(source: Source): Unit = DB localTx { implicit session =>
      applyUpdate {
        insertInto(SampleSchema)
          .columns(SampleSchema.insertColumns: _*)
          .values(SampleSchema.toInsertValues(session, source): _*)
      }
  }

Code doesn't compile; with errors like

 Sample#eventName not found. Expected fields are #data, #metadata
 column.eventName

Is there a way to make it work without flattening the case class Sample ?


问:
Maven problem with jquery-i18n-properties
I'm trying to add jquery-i18n-properties through maven. I have the dependency in the pom like:

```<code>\<dependency\>
    \<groupId\>org.webjars\</groupId\>
    \<artifactId\>jquery-i18n-properties\</artifactId\>
    \<version\>1.2.7\</version\>
\</dependency\>
</code>```

And in the dependencies it appears:

However, when I run it in the browser it gives me 404 for the  jquery.i18n.properties.min.js and, in fact, it doesn't appear in the source generated:

Can someone help me here, please?

I was hoping to find it listed in the source generated in the browser

Body:
I'm trying to add jquery-i18n-properties through maven. I have the dependency in the pom like:

\<dependency\>
    \<groupId\>org.webjars\</groupId\>
    \<artifactId\>jquery-i18n-properties\</artifactId\>
    \<version\>1.2.7\</version\>
\</dependency\>

And in the dependencies it appears:

However, when I run it in the browser it gives me 404 for the  jquery.i18n.properties.min.js and, in fact, it doesn't appear in the source generated:

Can someone help me here, please?

I was hoping to find it listed in the source generated in the browser


问:
Django send json formatted logs to logstash
I am trying to send logs to logstash with python-logstash package and i need logs to be in json format. I wrote custom json formatter for my logstash handler.
My settings logging configuration:

```<code>LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'main_formatter': {
            '()': CustomJsonFormatter,
        },
    },
    'handlers': {
        'file': {
            'level': 'ERROR',
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, "debug.log"),
        },
        'info_logger_file': {
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, "development.log"),
            'formatter': 'main_formatter',
        },
        'logstash': {
            'level': 'INFO',
            'class': 'logstash.UDPLogstashHandler',
            'host': 'logstash.example.com',
            'port': 8080,
            'version': 1,
            'message_type': 'logstash',
            'fqdn': False,
            'tags': ['app'],
            'formatter': 'main_formatter',
        }
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'ERROR',
            'propagate': True,
        },
        'info_logger': {
            'handlers': ['info_logger_file', 'logstash'],
            'level': 'INFO',
            'propagate': True,
        },
    },
}
</code>```

my CustomJsonFormatter:

```<code>from pythonjsonlogger import jsonlogger

class CustomJsonFormatter(jsonlogger.JsonFormatter):
    def add_fields(self, log_record, record, message_dict):
        super(CustomJsonFormatter, self).add_fields(log_record, record, message_dict)
        if not log_record.get('timestamp'):
            # this doesn't use record.created, so it is slightly off
            now = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%fZ')
            log_record['timestamp'] = now
        if log_record.get('level'):
            log_record['level'] = log_record['level'].upper()
        else:
            log_record['level'] = record.levelname

        log_record['application'] = 'production'
</code>```

But when i'm trying to log something, it throws exception:

```<code>import logging
log = logging.getLogger('info_logger')

log.info("test")
</code>```

Body:
I am trying to send logs to logstash with python-logstash package and i need logs to be in json format. I wrote custom json formatter for my logstash handler.
My settings logging configuration:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'main_formatter': {
            '()': CustomJsonFormatter,
        },
    },
    'handlers': {
        'file': {
            'level': 'ERROR',
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, "debug.log"),
        },
        'info_logger_file': {
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, "development.log"),
            'formatter': 'main_formatter',
        },
        'logstash': {
            'level': 'INFO',
            'class': 'logstash.UDPLogstashHandler',
            'host': 'logstash.example.com',
            'port': 8080,
            'version': 1,
            'message_type': 'logstash',
            'fqdn': False,
            'tags': ['app'],
            'formatter': 'main_formatter',
        }
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'ERROR',
            'propagate': True,
        },
        'info_logger': {
            'handlers': ['info_logger_file', 'logstash'],
            'level': 'INFO',
            'propagate': True,
        },
    },
}

my CustomJsonFormatter:

from pythonjsonlogger import jsonlogger

class CustomJsonFormatter(jsonlogger.JsonFormatter):
    def add_fields(self, log_record, record, message_dict):
        super(CustomJsonFormatter, self).add_fields(log_record, record, message_dict)
        if not log_record.get('timestamp'):
            # this doesn't use record.created, so it is slightly off
            now = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%fZ')
            log_record['timestamp'] = now
        if log_record.get('level'):
            log_record['level'] = log_record['level'].upper()
        else:
            log_record['level'] = record.levelname

        log_record['application'] = 'production'

But when i'm trying to log something, it throws exception:

import logging
log = logging.getLogger('info_logger')

log.info("test")


问:
SVG source not correct
I have a brand new create react app with typescript and storybook. When I try to get a svg source code I get something like this "e4392967a87a6d4ec600.svg" and not the source. Am I missing a loader or something.

My code is like this:

```<code>  import(`/svg-embed/basket.svg`).then((content) => {
    console.log("content: ", content);
    return(setSvgContent(content.default));
  });
</code>```

My content.default is just e4392967a87a6d4ec600.svg

Title: SVG source not correct

Body:
I have a brand new create react app with typescript and storybook. When I try to get a svg source code I get something like this "e4392967a87a6d4ec600.svg" and not the source. Am I missing a loader or something.

My code is like this:

  import(`/svg-embed/basket.svg`).then((content) => {
    console.log("content: ", content);
    return(setSvgContent(content.default));
  });

My content.default is just e4392967a87a6d4ec600.svg


问:
Solr Cloud with ZooKeeper in local machine
I am trying to setup up in my local laptop with 3 Solr, 3 ZooKeeper and 1 Load Balancer.
I have followed the post https://www.codehousegroup.com/insight-and-inspiration/tech-stream/how-to-configure-sitecore-with-solr-cloud and https://medium.com/@sarkaramrit2/setting-up-solr-cloud-6-3-0-with-zookeeper-3-4-6-867b96ec4272 and few others

I have setup successfully 3 solr in my laptop and URL's are as follows

https://solrcloud1:6161/solr/#/

https://solrcloud2:6162/solr/#/

https://solrcloud3:6163/solr/#/

I have installed the local load balancer "GoBetween" and mapped my above 3 solr paths over there. When I hit https://solrcloud:3010/solr/#/ this URL, I am able to receive response from different Solr instances also. It looks it's working fine as well.

ZooKeeer
I have downloaded zookeeper and placed that in all the 3 Solr locations as well
E.g.: SolrCloud1 = \LocalSolrCloud\SolrCloud1\ contains "solr-8.8.2" and "zookeeper-3.5.6" same structure for SolrCloud2 and SolrCloud3 also.

In Each zookeeper location, I have created a data folder and created "myid" file and placed the value as "1", "2", "3" respectively.

Each zoopkeeper's "zoo.cfg" file contains the below

```<code>tickTime=2000
initLimit=10
syncLimit=5
dataDir=/SolrCloud1/zookeeper-3.5.6/data
clientPort=2181
autopurge.snapRetainCount=4
autopurge.purgeInterval=24
server.1=locahost:2888:3888
server.2=locahost:2889:3889
server.3=locahost:2890:3890
</code>```

When I run the zooKeeper from the command prompt, I am getting the below error.

```<code>2022-12-15 11:47:20,051 [myid:1] - WARN  [WorkerSender[myid=1]:QuorumCnxManager@679] -
 Cannot open channel to 2 at election address localhost/127.0.0.1:3889
 java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:650)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:707)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:620)
    at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:477)
    at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:456)
    at java.lang.Thread.run(Thread.java:748)
</code>```

Body:
I am trying to setup up in my local laptop with 3 Solr, 3 ZooKeeper and 1 Load Balancer.
I have followed the post https://www.codehousegroup.com/insight-and-inspiration/tech-stream/how-to-configure-sitecore-with-solr-cloud and https://medium.com/@sarkaramrit2/setting-up-solr-cloud-6-3-0-with-zookeeper-3-4-6-867b96ec4272 and few others

I have setup successfully 3 solr in my laptop and URL's are as follows

https://solrcloud1:6161/solr/#/

https://solrcloud2:6162/solr/#/

https://solrcloud3:6163/solr/#/

I have installed the local load balancer "GoBetween" and mapped my above 3 solr paths over there. When I hit https://solrcloud:3010/solr/#/ this URL, I am able to receive response from different Solr instances also. It looks it's working fine as well.

ZooKeeer
I have downloaded zookeeper and placed that in all the 3 Solr locations as well
E.g.: SolrCloud1 = \LocalSolrCloud\SolrCloud1\ contains "solr-8.8.2" and "zookeeper-3.5.6" same structure for SolrCloud2 and SolrCloud3 also.

In Each zookeeper location, I have created a data folder and created "myid" file and placed the value as "1", "2", "3" respectively.

Each zoopkeeper's "zoo.cfg" file contains the below

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/SolrCloud1/zookeeper-3.5.6/data
clientPort=2181
autopurge.snapRetainCount=4
autopurge.purgeInterval=24
server.1=locahost:2888:3888
server.2=locahost:2889:3889
server.3=locahost:2890:3890

When I run the zooKeeper from the command prompt, I am getting the below error.

2022-12-15 11:47:20,051 [myid:1] - WARN  [WorkerSender[myid=1]:QuorumCnxManager@679] -
 Cannot open channel to 2 at election address localhost/127.0.0.1:3889
 java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:650)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:707)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:620)
    at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:477)
    at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:456)
    at java.lang.Thread.run(Thread.java:748)


问:
uWSGI + Nginx, all upstreams become unavailable (Denial-of-Service ) if there are too many headers in the request
If uWSGI receives a request with more headers than specified in the max-vars option it does not return a bad request, it brokes the socket connection or something like that.

uWSGI error:

```<code>max vec size reached. skip this var.
</code>```

Nginx perceive this as an error and marks the upstream as "unavailable" and passes the request to the next one, as a result all the upstreams becomes unavailable for ~11s with only 1 request.

Nginx error:

```<code>2022/12/07 10:22:22 [error] 28#28: *4 upstream prematurely closed connection while reading response header from upstream, client: .....
2022/12/07 10:22:22 [warn] 28#28: *4 upstream server temporarily disabled while reading response header from upstream, client: .....
</code>```

This does not happen if you have just one upstream in Nginx.

Increasing the option max_fails in the upstream changes nothing because you can send just more requests, filtering proxy_next_upstream is not possible because Nginx perceive this as an error, and that is always considered unsuccessful attempt.

The only option I see is setting max-vars (uWSGI) to a really high value (if possibile).

Is there a way to set the max number of headers in Nginx, or "handle" this strange behaviour in uWSGI?

Body:
If uWSGI receives a request with more headers than specified in the max-vars option it does not return a bad request, it brokes the socket connection or something like that.

uWSGI error:

max vec size reached. skip this var.

Nginx perceive this as an error and marks the upstream as "unavailable" and passes the request to the next one, as a result all the upstreams becomes unavailable for ~11s with only 1 request.

Nginx error:

2022/12/07 10:22:22 [error] 28#28: *4 upstream prematurely closed connection while reading response header from upstream, client: .....
2022/12/07 10:22:22 [warn] 28#28: *4 upstream server temporarily disabled while reading response header from upstream, client: .....

This does not happen if you have just one upstream in Nginx.

Increasing the option max_fails in the upstream changes nothing because you can send just more requests, filtering proxy_next_upstream is not possible because Nginx perceive this as an error, and that is always considered unsuccessful attempt.

The only option I see is setting max-vars (uWSGI) to a really high value (if possibile).

Is there a way to set the max number of headers in Nginx, or "handle" this strange behaviour in uWSGI?


问:
Can an activity problem with unknown start time be solved with a greedy algorithm?
Given the classic activity problem of maximizing the number of activities in a given interval where t has to be smaller than k. However, in this case, the interval does not start before we select the first activity and the activity is constant, ie there is no start time.

Can this problem be solved with a greedy algorithm? If not is there another type of algorithm that can solve this problem in an optimal way?

My first thought was that we need to find the interval with the highest density of activities.


问:
Java Immutables builder interface defintion in parent class?
In the Immutables documentation it says that:

For advanced use cases, it may be desirable to have builders that produce different types of objects but conform to the same interface, akin to the original Builder pattern. This is achievable by declaring a static nested class named “Builder” which will be extended by the generated builder.

It then provides an example where:

there is an interface that multiple Immutable classes implement called Vehicle

there is an interface for the builders the Immutable class will generate call VehicleBuilder

the two abstract Immutable classes Scooter and Automobile implement Vehicle and have a abstract static class that implements VehicleBuilder.

This is super useful but it means every Immutable implementation needs to duplicate the abstract static class line. Is there any way to push this up into the parent definition?

I've tried making Vehicle an abstract class and moving the abstract static class into it:

public abstract class Vehicle {
  public abstract static class Builder implements VehicleBuilder {}
}
```

However this does not work and the builder on the generated class does not extend it.

Body:
In the Immutables <a href="https://immutables.github.io/immutable.html#builder:%7E:text=For%20advanced%20use%20cases%2C%20it%20may%20be%20desirable%20to%20have%20builders%20that%20produce%20different%20types%20of%20objects%20but%20conform%20to%20the%20same%20interface%2C%20akin%20to%20the%20original%20Builder%20pattern.%20This%20is%20achievable%20by%20declaring%20a%20static%20nested%20class%20named%20%E2%80%9CBuilder%E2%80%9D%20which%20will%20be%20extended%20by%20the%20generated%20builder." rel="nofollow noreferrer">documentation it says that:

For advanced use cases, it may be desirable to have builders that produce different types of objects but conform to the same interface, akin to the original Builder pattern. This is achievable by declaring a static nested class named “Builder” which will be extended by the generated builder.

It then provides an example where:

there is an interface that multiple Immutable classes implement called Vehicle

there is an interface for the builders the Immutable class will generate call VehicleBuilder

the two abstract Immutable classes Scooter and Automobile implement Vehicle and have a abstract static class that implements VehicleBuilder.

This is super useful but it means every Immutable implementation needs to duplicate the abstract static class line. Is there any way to push this up into the parent definition?

I've tried making Vehicle an abstract class and moving the abstract static class into it:

public abstract class Vehicle {
  public abstract static class Builder implements VehicleBuilder {}
}

However this does not work and the builder on the generated class does not extend it.


问:
Updating a card with a onEdit() trigger
I'm working on a google App Script add-on and I would like it to change the Card my add-on is showing when a value on my spreadsheets changes, is that posible?

I've tried with this:

```<code>function onEdit(e) {

     var card=CardService
     .newCardBuilder()
     .setHeader(
         CardService.newCardHeader()
             .setTitle('test')
             .setSubtitle('Check out these widgets')
             .setImageStyle(CardService.ImageStyle.SQUARE)
             .setImageUrl(
                 'https://www.example.com/images/headerImage.png'))
     .addSection(
          CardService.newCardSection()
              .setHeader('Simple widgets')  // optional
              .addWidget(CardService.newTextParagraph().setText(
                  'These widgets are display-only. ' +
                  'A text paragraph can have multiple lines and ' +
                  'formatting.'))
              .addWidget(CardService.newImage().setImageUrl(
                  'https://www.example.com/images/mapsImage.png')))
     .addCardAction(CardService.newCardAction().setText('Gmail').setOpenLink(
         CardService.newOpenLink().setUrl('https://mail.google.com/mail')));

   try {
          let nav = CardService.newNavigation().pushCard(card.build());
           return CardService.newActionResponseBuilder()
            .setNavigation(nav)
            .build();

    }catch(e){
    Logger.log(e);
    }
</code>```

But it doesn't work

Title: Updating a card with a onEdit() trigger

Body:
I'm working on a google App Script add-on and I would like it to change the Card my add-on is showing when a value on my spreadsheets changes, is that posible?

I've tried with this:

function onEdit(e) {

     var card=CardService
     .newCardBuilder()
     .setHeader(
         CardService.newCardHeader()
             .setTitle('test')
             .setSubtitle('Check out these widgets')
             .setImageStyle(CardService.ImageStyle.SQUARE)
             .setImageUrl(
                 'https://www.example.com/images/headerImage.png'))
     .addSection(
          CardService.newCardSection()
              .setHeader('Simple widgets')  // optional
              .addWidget(CardService.newTextParagraph().setText(
                  'These widgets are display-only. ' +
                  'A text paragraph can have multiple lines and ' +
                  'formatting.'))
              .addWidget(CardService.newImage().setImageUrl(
                  'https://www.example.com/images/mapsImage.png')))
     .addCardAction(CardService.newCardAction().setText('Gmail').setOpenLink(
         CardService.newOpenLink().setUrl('https://mail.google.com/mail')));

   try {
          let nav = CardService.newNavigation().pushCard(card.build());
           return CardService.newActionResponseBuilder()
            .setNavigation(nav)
            .build();

    }catch(e){
    Logger.log(e);
    }

But it doesn't work


问:
How to validate XML against XSD using the Moxy implementation without POJO and capture all errors?
I would like to validate the XML against XSD using the Moxy implementation so I have added the dependency for the same in pom.xmml:

```<code><dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>org.eclipse.persistence.moxy</artifactId>
    <version>4.0.0</version>
</dependency>
</code>```

I have created custom ErrorHandler to handle all the errors:

```<code>import jakarta.xml.bind.ValidationEvent;
import jakarta.xml.bind.ValidationEventHandler;

public class MyValidationEventHandler implements ValidationEventHandler {

    public boolean handleEvent(ValidationEvent event) {
        System.out.println("EVENT");
        System.out.println("SEVERITY: " + event.getSeverity());
        System.out.println("MESSAGE: " + event.getMessage());
        System.out.println("LINKED EXCEPTION: " + event.getLinkedException());
        System.out.println("LOCATOR");
        System.out.println("LINE NUMBER: " + event.getLocator().getLineNumber());
        System.out.println("COLUMN NUMBER: " + event.getLocator().getColumnNumber());
        System.out.println("OFFSET: " + event.getLocator().getOffset());
        System.out.println("OBJECT: " + event.getLocator().getObject());
        System.out.println("NODE: " + event.getLocator().getNode());
        System.out.println("URL: " + event.getLocator().getURL());
        System.out.println("\n \n");
        return true;
    }
}
</code>```

Following is my Main class to validate the XML:

```<code>import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.Unmarshaller;

import javax.xml.XMLConstants;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import java.io.InputStream;

public class ValidateXmlWithXsd {
    public static void main(String[] args) throws Exception {
        // Create a SchemaFactory object
        SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

        // Load the XSD schema file
        final InputStream xsdDocument = TestMain.class.getResourceAsStream("/xsd/myXSD.xsd");
        final Source xsdSource = new StreamSource(xsdDocument);
        Schema schema = sf.newSchema(xsdSource);

        // Create a JAXBContext
        JAXBContext jc = JAXBContext.newInstance();

        // Create an Unmarshaller object
        Unmarshaller unmarshaller = jc.createUnmarshaller();
        unmarshaller.setSchema(schema);
        unmarshaller.setEventHandler(new MyValidationEventHandler());

        // Unmarshal the XML document, using the schema for validation
        final InputStream xmlDocument = TestMain.class.getResourceAsStream( "/myXML.xml");
        unmarshaller.unmarshal(xmlDocument);
    }
}
</code>```

I am facing few issues:

I am unable to add the JAXBContext from Moxy then I try to add something like this then I get the error:

```<code>// Create a JAXBContext
org.eclipse.persistence.jaxb.JAXBContext jc = org.eclipse.persistence.jaxb.JAXBContext.newInstance();
</code>```

Then I get the error:

```<code>Required type: org.eclipse.persistence.jaxb.JAXBContext
Provided: jakarta.xml.bind.JAXBContext
</code>```

When I use the jakarta.xml.bind.JAXBContext and validate my XML then I for some reason get all the errors for all elements which should not happen because my XSD does not require all elements.

I would like to know how to validate a XML against XSD using the Moxy without needing to use the POJO class and how to capture all the errors not just a single error and throw exception.

Body:
I would like to validate the XML against XSD using the Moxy implementation so I have added the dependency for the same in pom.xmml:

<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>org.eclipse.persistence.moxy</artifactId>
    <version>4.0.0</version>
</dependency>

I have created custom ErrorHandler to handle all the errors:

import jakarta.xml.bind.ValidationEvent;
import jakarta.xml.bind.ValidationEventHandler;

public class MyValidationEventHandler implements ValidationEventHandler {

    public boolean handleEvent(ValidationEvent event) {
        System.out.println("EVENT");
        System.out.println("SEVERITY: " + event.getSeverity());
        System.out.println("MESSAGE: " + event.getMessage());
        System.out.println("LINKED EXCEPTION: " + event.getLinkedException());
        System.out.println("LOCATOR");
        System.out.println("LINE NUMBER: " + event.getLocator().getLineNumber());
        System.out.println("COLUMN NUMBER: " + event.getLocator().getColumnNumber());
        System.out.println("OFFSET: " + event.getLocator().getOffset());
        System.out.println("OBJECT: " + event.getLocator().getObject());
        System.out.println("NODE: " + event.getLocator().getNode());
        System.out.println("URL: " + event.getLocator().getURL());
        System.out.println("\n \n");
        return true;
    }
}

Following is my Main class to validate the XML:

import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.Unmarshaller;

import javax.xml.XMLConstants;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import java.io.InputStream;

public class ValidateXmlWithXsd {
    public static void main(String[] args) throws Exception {
        // Create a SchemaFactory object
        SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

        // Load the XSD schema file
        final InputStream xsdDocument = TestMain.class.getResourceAsStream("/xsd/myXSD.xsd");
        final Source xsdSource = new StreamSource(xsdDocument);
        Schema schema = sf.newSchema(xsdSource);

        // Create a JAXBContext
        JAXBContext jc = JAXBContext.newInstance();

        // Create an Unmarshaller object
        Unmarshaller unmarshaller = jc.createUnmarshaller();
        unmarshaller.setSchema(schema);
        unmarshaller.setEventHandler(new MyValidationEventHandler());

        // Unmarshal the XML document, using the schema for validation
        final InputStream xmlDocument = TestMain.class.getResourceAsStream( "/myXML.xml");
        unmarshaller.unmarshal(xmlDocument);
    }
}

I am facing few issues:

I am unable to add the JAXBContext from Moxy then I try to add something like this then I get the error:

// Create a JAXBContext
org.eclipse.persistence.jaxb.JAXBContext jc = org.eclipse.persistence.jaxb.JAXBContext.newInstance();

Then I get the error:

Required type: org.eclipse.persistence.jaxb.JAXBContext
Provided: jakarta.xml.bind.JAXBContext

When I use the jakarta.xml.bind.JAXBContext and validate my XML then I for some reason get all the errors for all elements which should not happen because my XSD does not require all elements.

I would like to know how to validate a XML against XSD using the Moxy without needing to use the POJO class and how to capture all the errors not just a single error and throw exception.


问:
Force JsonConvert.DeserializeObject<book__entity> to execute a method instead of assigning property value
I have been stuck for days because of this problem, let me explain, I have the following classes:

In the entity layer:

```<code>    [JsonObject(MemberSerialization.OptIn)]
    public class telephone__entity
    {
        [JsonProperty("id")] internal int _id;
        [JsonProperty("number")] internal string _number;

        public int id { get; set; }
        public string number { get; set; }
    }

    [JsonObject(MemberSerialization.OptIn)]
    public class autor__entity
    {
        [JsonProperty("id")] internal int _id;
        [JsonProperty("name")] internal string _name;
        [JsonProperty("telephones")] internal BindingList<telephone__entity> _telephones;

        public int id { get; set; }
        public string name { get; set; }
        public BindingList<telephone__entity> telephones { get; set; }

        public autor__entity()
        {
            _telephones = new BindingList<telephone__entity>();

            telephones.ListChanged += telephones_ListChanged;
        }

        private void telephones_ListChanged(object sender, ListChangedEventArgs e)
        {
            // VALIDATIONS AND CUSTOM OPERATIOS
        }
    }

    [JsonObject(MemberSerialization.OptIn)]
    public class book__entity
    {
        [JsonProperty("title")] internal string _title;
        [JsonProperty("autors")] internal BindingList<autor__entity> _autors;

        public string titulo { get; set; }
        public BindingList<autor__entity> autors { get; set; }

        public book__entity()
        {
            _autors = new BindingList<autor__entity>();

            autors.ListChanged += autors_ListChanged;
        }

        private void autors_ListChanged(object sender, ListChangedEventArgs e)
        {
            // VALIDATIONS AND CUSTOM OPERATIOS
        }
    }

    [JsonObject(MemberSerialization.OptIn)]
    public class library__entity
    {
        [JsonProperty("id")] internal int _id;
        [JsonProperty("books")] internal BindingList<book__entity> _books;

        public int id { get; set; }
        public BindingList<book__entity> books { get; set; }

        public library__entity()
        {
            _books = new BindingList<book__entity>();

            books.ListChanged += books_ListChanged;
        }

        private void books_ListChanged(object sender, ListChangedEventArgs e)
        {
            // VALIDATIONS AND CUSTOM OPERATIOS
        }
    }
</code>```

In the same layer I have a class that adds the AddRange functionality BindingList type (I will use this functionality in the data layer):

```<code>public static class BindingListExtensions
{
    public static void AddRange<T>(this System.ComponentModel.BindingList<T> bindingList, IEnumerable<T> collection, bool raise_events_enabled = false)
    {
        if (collection != null)
        {
            var oldRaiseEventsValue = bindingList.RaiseListChangedEvents;

            try
            {
                bindingList.RaiseListChangedEvents = false;

                foreach (var value in collection)
                {
                    bindingList.Add(value);
                }
            }

            finally
            {
                bindingList.RaiseListChangedEvents = oldRaiseEventsValue;

                if (raise_events_enabled && bindingList.RaiseListChangedEvents)
                {
                    bindingList.ResetBindings();
                }
            }
        }
    }
}
</code>```

Now in the data layer, I have a method that receives a parameter of type IDataReader to then perform the cast accordingly.

```<code>using (var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
    while (reader.Read())
    {
        var record = new library__entity();
        {
            record._id = Convert.ToInt32(reader["ID"]);
            record._books.AddRange(JsonConvert.DeserializeObject<book__entity>(Convert.ToString(reader["BOOKS"]))); // THIS IS WHERE I HAVE THE ERROR, BECAUSE THE TELEPHONES_LISTCHANGED EVENT OF THE AUTOR__ENTITY CLASS IS BEING FIRED

            // 1) CONVERT.TOSTRING(READER["BOOKS"]) GETS A JSON STRING FROM THE DATABASE
            // 2) I AM USING RECORD._BOOKS.ADDRANGE TO PREVENT THE BOOKS_LISTCHANGED EVENT FROM FIRING
            // 3) I GUESS THE PROBLEM WITH USING JSONCONVERT.DESERIALIZEOBJECT<BOOK__ENTITY> IS THAT THE USE OF ADDRANGE IS OMITTED. ANY IDEAS HOW I CAN FIX THIS?
        }

        return record;
    }
}
</code>```

Thanks.

Body:
I have been stuck for days because of this problem, let me explain, I have the following classes:

In the entity layer:

    [JsonObject(MemberSerialization.OptIn)]
    public class telephone__entity
    {
        [JsonProperty("id")] internal int _id;
        [JsonProperty("number")] internal string _number;

        public int id { get; set; }
        public string number { get; set; }
    }

    [JsonObject(MemberSerialization.OptIn)]
    public class autor__entity
    {
        [JsonProperty("id")] internal int _id;
        [JsonProperty("name")] internal string _name;
        [JsonProperty("telephones")] internal BindingList<telephone__entity> _telephones;

        public int id { get; set; }
        public string name { get; set; }
        public BindingList<telephone__entity> telephones { get; set; }

        public autor__entity()
        {
            _telephones = new BindingList<telephone__entity>();

            telephones.ListChanged += telephones_ListChanged;
        }

        private void telephones_ListChanged(object sender, ListChangedEventArgs e)
        {
            // VALIDATIONS AND CUSTOM OPERATIOS
        }
    }

    [JsonObject(MemberSerialization.OptIn)]
    public class book__entity
    {
        [JsonProperty("title")] internal string _title;
        [JsonProperty("autors")] internal BindingList<autor__entity> _autors;

        public string titulo { get; set; }
        public BindingList<autor__entity> autors { get; set; }

        public book__entity()
        {
            _autors = new BindingList<autor__entity>();

            autors.ListChanged += autors_ListChanged;
        }

        private void autors_ListChanged(object sender, ListChangedEventArgs e)
        {
            // VALIDATIONS AND CUSTOM OPERATIOS
        }
    }

    [JsonObject(MemberSerialization.OptIn)]
    public class library__entity
    {
        [JsonProperty("id")] internal int _id;
        [JsonProperty("books")] internal BindingList<book__entity> _books;

        public int id { get; set; }
        public BindingList<book__entity> books { get; set; }

        public library__entity()
        {
            _books = new BindingList<book__entity>();

            books.ListChanged += books_ListChanged;
        }

        private void books_ListChanged(object sender, ListChangedEventArgs e)
        {
            // VALIDATIONS AND CUSTOM OPERATIOS
        }
    }

In the same layer I have a class that adds the AddRange functionality BindingList type (I will use this functionality in the data layer):

public static class BindingListExtensions
{
    public static void AddRange<T>(this System.ComponentModel.BindingList<T> bindingList, IEnumerable<T> collection, bool raise_events_enabled = false)
    {
        if (collection != null)
        {
            var oldRaiseEventsValue = bindingList.RaiseListChangedEvents;

            try
            {
                bindingList.RaiseListChangedEvents = false;

                foreach (var value in collection)
                {
                    bindingList.Add(value);
                }
            }

            finally
            {
                bindingList.RaiseListChangedEvents = oldRaiseEventsValue;

                if (raise_events_enabled && bindingList.RaiseListChangedEvents)
                {
                    bindingList.ResetBindings();
                }
            }
        }
    }
}

Now in the data layer, I have a method that receives a parameter of type IDataReader to then perform the cast accordingly.

using (var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
    while (reader.Read())
    {
        var record = new library__entity();
        {
            record._id = Convert.ToInt32(reader["ID"]);
            record._books.AddRange(JsonConvert.DeserializeObject<book__entity>(Convert.ToString(reader["BOOKS"]))); // THIS IS WHERE I HAVE THE ERROR, BECAUSE THE TELEPHONES_LISTCHANGED EVENT OF THE AUTOR__ENTITY CLASS IS BEING FIRED

            // 1) CONVERT.TOSTRING(READER["BOOKS"]) GETS A JSON STRING FROM THE DATABASE
            // 2) I AM USING RECORD._BOOKS.ADDRANGE TO PREVENT THE BOOKS_LISTCHANGED EVENT FROM FIRING
            // 3) I GUESS THE PROBLEM WITH USING JSONCONVERT.DESERIALIZEOBJECT<BOOK__ENTITY> IS THAT THE USE OF ADDRANGE IS OMITTED. ANY IDEAS HOW I CAN FIX THIS?
        }

        return record;
    }
}

Thanks.


问:
How to add sections and subsections to chapters Overleaf/Latex
when working with folders in Overleaf I have a main.tex file and others including the chapters of my work, however, it's not possible to make the sections and subsections work properly in my chapters, they are added to the Cotents page without problems but are not taken as sections when compiling in PFD, here a patch of my code:

Main section:

```<code>\RequirePackage[l2tabu,orthodox]{nag}

\documentclass[headsepline,footsepline,footinclude=false,fontsize=11pt,paper=a4,listof=totoc,bibliography=totoc,BCOR=12mm,DIV=12]{scrbook}

\input{packages}
%\makealeletter

\newcommand{\cmark}{\ding{51}}%
\newcommand{\done}{\rlap{$\square$}{\raisebox{2pt}{\large\hspace{1pt}\cmark}}%
\hspace{-2.5pt}}

\input{settings}
\input{commands}
\input{pages/cover}

\addbibresource{literature.bib}

\begin{document}

\maketitle

    \definecolor{Blue}{rgb}{.035,.353,.651}
    \definecolor{White}{rgb}{0.9,0.9,0.9}

    % front page
    \frontmatter{}

    \input{pages/title}
    \input{pages/disclaimer}
    \input{pages/abstract}
    \tableofcontents{}
    \input{pages/dedication}

    \mainmatter{}

    %\input{00_ToDo}
    \input{Chapters/00_intro.tex}
    \input{Chapters/01_Chapter1.tex}
    .
    .
    .
</code>```

Chapter which I want to add sections and subsections:

```<code>%!TeX root = ../main.tex
\chapter{Chapter 1: Theoretical Perspective}\label{chapter:Chapter1}

\section{Remote Sensing}
.
.
.
</code>```

And the result...

Actually I added the !Tex root = ... but didn't work, do you know guys what could actually been affecting the correct working of the Overleaf compilation?

I expect the correct displaying of the section but instead of that I get the results as presented in the attached image.

Body:
when working with folders in Overleaf I have a main.tex file and others including the chapters of my work, however, it's not possible to make the sections and subsections work properly in my chapters, they are added to the Cotents page without problems but are not taken as sections when compiling in PFD, here a patch of my code:

Main section:

\RequirePackage[l2tabu,orthodox]{nag}

\documentclass[headsepline,footsepline,footinclude=false,fontsize=11pt,paper=a4,listof=totoc,bibliography=totoc,BCOR=12mm,DIV=12]{scrbook}

\input{packages}
%\makealeletter

\newcommand{\cmark}{\ding{51}}%
\newcommand{\done}{\rlap{$\square$}{\raisebox{2pt}{\large\hspace{1pt}\cmark}}%
\hspace{-2.5pt}}

\input{settings}
\input{commands}
\input{pages/cover}

\addbibresource{literature.bib}

\begin{document}

\maketitle

    \definecolor{Blue}{rgb}{.035,.353,.651}
    \definecolor{White}{rgb}{0.9,0.9,0.9}

    % front page
    \frontmatter{}

    \input{pages/title}
    \input{pages/disclaimer}
    \input{pages/abstract}
    \tableofcontents{}
    \input{pages/dedication}

    \mainmatter{}

    %\input{00_ToDo}
    \input{Chapters/00_intro.tex}
    \input{Chapters/01_Chapter1.tex}
    .
    .
    .

Chapter which I want to add sections and subsections:

%!TeX root = ../main.tex
\chapter{Chapter 1: Theoretical Perspective}\label{chapter:Chapter1}

\section{Remote Sensing}
.
.
.

And the result...

Actually I added the !Tex root = ... but didn't work, do you know guys what could actually been affecting the correct working of the Overleaf compilation?

I expect the correct displaying of the section but instead of that I get the results as presented in the attached image.


问:
MAUI image crop example and display it
I need to crop and display an image using ImageCropper.MAUI, I can't get the image to show up and I get image not found exception.

https://github.com/jbowmanp1107/ImageCropper.Maui

I have added code where I can get the image path after cropped.

```<code>ImageCrop.Success = (imageFile) =>
    {
        Application.Current.Dispatcher.Dispatch(async () =>
            {
                imageFile = imageFile.Replace(@"/my_images/Pictures/", "");

                var _d = FileSystem.Current.AppDataDirectory;

                var pathTemp = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), imageFile);
        //"/my_images/Pictures/cropped2795616814194734447.png"
                //cropped2795616814194734447.png
                //cropped9006441269099458689.png
                if (File.Exists(pathTemp))
                {
                    //Check for file exists or not
                }

                path = pathTemp;
                resultImage.Source = ImageSource.FromFile(pathTemp);
                await Empty();
            });
    }
</code>```

I have also attached the path of image as below in emulator.

Image path in emulator

Title: MAUI image crop example and display it

Body:
I need to crop and display an image using ImageCropper.MAUI, I can't get the image to show up and I get image not found exception.

https://github.com/jbowmanp1107/ImageCropper.Maui

I have added code where I can get the image path after cropped.

ImageCrop.Success = (imageFile) =>
    {
        Application.Current.Dispatcher.Dispatch(async () =>
            {
                imageFile = imageFile.Replace(@"/my_images/Pictures/", "");

                var _d = FileSystem.Current.AppDataDirectory;

                var pathTemp = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), imageFile);
        //"/my_images/Pictures/cropped2795616814194734447.png"
                //cropped2795616814194734447.png
                //cropped9006441269099458689.png
                if (File.Exists(pathTemp))
                {
                    //Check for file exists or not
                }

                path = pathTemp;
                resultImage.Source = ImageSource.FromFile(pathTemp);
                await Empty();
            });
    }

I have also attached the path of image as below in emulator.

Image path in emulator


问:
Trigger GitLab pipeline to enviroment X only when a pipeline from environment Y finishes
Currently I have this script in my .gitlab-ci.yml file:

```<code>image: node:16

cache:
  paths:
    - .npm
    - cache/Cypress
    - node_modules

stages:
  - build
  - deploy
  - test

install:dependencies:
  stage: build
  script:
    - yarn install
  artifacts:
    paths:
      - node_modules/
  only:
    - merge_requests

test:unit:
  stage: test
  script: yarn test --ci --coverage
  needs: ["install:dependencies"]
  artifacts:
    when: always
    paths:
      - coverage
    expire_in: 30 days
  only:
    - merge_requests

deploy-to-vercel:
  stage: deploy
  image: node:16
  script:
    - npm i -g vercel
    - DEPLOYMENT_URL=$(vercel -t $VERCEL_TOKEN --confirm)
    - echo $DEPLOYMENT_URL > vercel_deployment_url.txt
    - cat vercel_deployment_url.txt
  artifacts:
    when: on_success
    paths:
      - vercel_deployment_url.txt
  only:
    - merge_requests
</code>```

I need to trigger a pipeline to an environment called playground but only when a pipeline from test enviroment is finished, when a pipeline to master happens, I don't to mirror to the playground environment.

Everything is deployed to vercel, and the project is powered by Next JS.

Body:
Currently I have this script in my .gitlab-ci.yml file:

image: node:16

cache:
  paths:
    - .npm
    - cache/Cypress
    - node_modules

stages:
  - build
  - deploy
  - test

install:dependencies:
  stage: build
  script:
    - yarn install
  artifacts:
    paths:
      - node_modules/
  only:
    - merge_requests

test:unit:
  stage: test
  script: yarn test --ci --coverage
  needs: ["install:dependencies"]
  artifacts:
    when: always
    paths:
      - coverage
    expire_in: 30 days
  only:
    - merge_requests

deploy-to-vercel:
  stage: deploy
  image: node:16
  script:
    - npm i -g vercel
    - DEPLOYMENT_URL=$(vercel -t $VERCEL_TOKEN --confirm)
    - echo $DEPLOYMENT_URL > vercel_deployment_url.txt
    - cat vercel_deployment_url.txt
  artifacts:
    when: on_success
    paths:
      - vercel_deployment_url.txt
  only:
    - merge_requests

I need to trigger a pipeline to an environment called playground but only when a pipeline from test enviroment is finished, when a pipeline to master happens, I don't to mirror to the playground environment.

Everything is deployed to vercel, and the project is powered by Next JS.


问:
Nesting null coalescing operator
```<code><?php

        $foo = null;
        $bar = null;
        $baz = 1;
        $qux = 2;

        echo $foo ?? $bar ?? $baz ?? $qux; // outputs 1
?>
</code>```

Hello everyone!

Here I'm using Nesting null coalescing operator. but why I am getting output 1? can you please explain this behavior?

Thank you!

Title: Nesting null coalescing operator

Body:
<?php

        $foo = null;
        $bar = null;
        $baz = 1;
        $qux = 2;

        echo $foo ?? $bar ?? $baz ?? $qux; // outputs 1
?>

Hello everyone!

Here I'm using Nesting null coalescing operator. but why I am getting output 1? can you please explain this behavior?

Thank you!


问:
Talk Back, Chromium, Confirm - Focus issue Workaround
I recently posted a message on Chromium's bug tracker (see here) related to JavaScript's confirm function and Android's TalkBack feature.

Does anyone here have a workaround to the issue I'm having? Chromium's team, within a day of posting the bug, said they can reproduce the issue and immediately marked it as WontFix!

Here's a rundown of the issue outlined on Chromium's tracker. Blind users are still users. We need to ensure that they are able to use our websites without getting lost.

Here's what we are doing: We use JavaScript confirm.

Here's what happens: TalkBack in Chrome focuses the browser's address bar. Reading out the address to the page the user is on. Which can be confusing to the user.

Here's what we expect: TalkBack should focus the confirm prompt and read the prompt to the user.

This flow doesn't make any sense.

Does anyone know of a good library that's as simple as using JavaScript's confirm function? We're already using BootStrap 3.0.

My main concerns are not introducing additional TalkBack issues from adding a workaround. The website is dirt simple for the most part. Each request is a new page, no ajax or background tasks. The entire purpose of the website is to do a single job well.

Right now, I'm in the process of building out a sample in BootStrap 3's Modal to run through testing. This wasn't originally tried because we thought we could rely on functionality built-in to the browser. This is taking a while as we're two major versions behind on BootStrap, and I'm digging through older documentation. BootStrap's newer documentation is much better.

My concern with this is it will not be as simple as the original confirm prompt. Since it will not be able to pause control-flow in the same manner as a single method call would. So we'll be spending some development time on refactoring the code.

There's also the concern for introducing additional TalkBack issues and testing to make sure whatever is behind the modal cannot be focused by TalkBack by swiping the screen (I'll find out once I finish writing the sample).


问:
Why is my fab button having another color below or around its edges?
Please view  image
I've called a backroundtint in xml and set its color to orange but I noticed that it has another underlying color blue how do I make the color go away and what is the reason for this ?

```<code>
</code>```
```<code>`<com.google.android.material.floatingactionbutton.FloatingActionButton
   ` android:id="@+id/contact_fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="16dp"
    android:backgroundTint="@color/brand_yellow"
    android:clickable="true"
    android:focusable="true"
    app:srcCompat="@drawable/ic_call_24"
    app:tint="@color/white" />``
</code>```
```<code>type here
</code>```

I've tried changing the background tint="#EFB627" to just background="EFB627" and this gives me a blue defaulted color . However the the defaulted color blue has no underlying color I noticed.  Can some one help me properly set a color for my fab button in xml.

Body:
Please view  image
I've called a backroundtint in xml and set its color to orange but I noticed that it has another underlying color blue how do I make the color go away and what is the reason for this ?

`<com.google.android.material.floatingactionbutton.FloatingActionButton
   ` android:id="@+id/contact_fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="16dp"
    android:backgroundTint="@color/brand_yellow"
    android:clickable="true"
    android:focusable="true"
    app:srcCompat="@drawable/ic_call_24"
    app:tint="@color/white" />``

type here

I've tried changing the background tint="#EFB627" to just background="EFB627" and this gives me a blue defaulted color . However the the defaulted color blue has no underlying color I noticed.  Can some one help me properly set a color for my fab button in xml.


问:
Envoy Lua Filter - How to make HTTP request?
I would like to make http request from my lua filter to an external server.
According to Envoy documentation, http call can be done using request_handle:httpCall:

```<code>function envoy_on_request(request_handle)
  -- Make an HTTP call to an upstream host with the following headers, body, and timeout.
  local headers, body = request_handle:httpCall(
  "lua_cluster",
  {
    [":method"] = "POST",
    [":path"] = "/",
    [":authority"] = "lua_cluster"
  },
  "hello world",
  5000)
</code>```

I have created a cluster called lua_cluster in my envoy.yaml file as needed, but the request doesn't reach my server and I'm getting 400 response.

Possible solution??

When changing the authority header from [":authority"] = "lua_cluster" to [":authority"] = "<cluster's url hostname>", the request arrived to the server and I got 200 response from the server. Can someone explain this? Is it a valid thing to do?

Body:
I would like to make http request from my lua filter to an external server.
According to Envoy documentation, http call can be done using request_handle:httpCall:

function envoy_on_request(request_handle)
  -- Make an HTTP call to an upstream host with the following headers, body, and timeout.
  local headers, body = request_handle:httpCall(
  "lua_cluster",
  {
    [":method"] = "POST",
    [":path"] = "/",
    [":authority"] = "lua_cluster"
  },
  "hello world",
  5000)

I have created a cluster called lua_cluster in my envoy.yaml file as needed, but the request doesn't reach my server and I'm getting 400 response.

Possible solution??

When changing the authority header from [":authority"] = "lua_cluster" to [":authority"] = "<cluster's url hostname>", the request arrived to the server and I got 200 response from the server. Can someone explain this? Is it a valid thing to do?


问:
SPIN: How to interact with this model checker passing parameter from outside?
I'm using SPIN Model Checker, I'd like to know If SPIN is a close box or not.
Can be used passing parameters from an upper level (ex: Phyton or batch?).
I'm interested on Simulation mode of SPIN, not on the Verification mode.

In the end, I'd like to know If (always in simulation mode) there is any method to write the simulation output to a phisical File, without using C embedded code.


问:
Spring Boot - Quartz Scheduler - Retrieve all jobs details
I am using below code to get the all Job Details and display them in my UI. But it is taking too long ( Around 35 seconds )  to fetch the job details ( around 150 Quartz jobs ) from QUARTZ using JDBC data store ( Oracle DB).

Is there any alternate ways to speed up the task?

Any API support available for pagination from Quartz?

```<code>//All below code can be written using Java 8 Streams as well. Broke down the code to understand which //operation is taking time

Scheduler scheduler = schedulerFactoryBean.getScheduler();

Set<TriggerKey> triggerKeys = scheduler.getTriggerKeys(GroupMatcher.triggerGroupEquals(groupName)); //groupName - my group name - filtering by groupname

Iterator iterator = triggerKeys .iterator();

//This while block is taking around 12 seconds for around 150 jobs
while(iterator.hasNext()){
TriggerKey triggerKey = (TriggerKey) iterator.next();
if(scheduler.getTriggerState(triggerKey).equals(TriggerState.NONE)){
    iterator.remove();
}

Map<TriggerKey, MyPOJO> myJobMap = new HashMap();

//This for loop is taking around 22 seconds for around 150 jobs
for(TriggerKey key : triggerKeys){

Trigger trigger = scheduler.getTrigger(key);

JobDataMap jobDataMap = scheduler.getJobDetail(trigger.getJobKey()).getJobDataMap();

MyPOJO myPOJO = jobDataMap.get("MYJOBPOJO");

myJobMap.put(key, myPOJO);

}

</code>```

I have gone through the Quartz documentation but did not find any specific details on how to improve this read operation performance

Body:
I am using below code to get the all Job Details and display them in my UI. But it is taking too long ( Around 35 seconds )  to fetch the job details ( around 150 Quartz jobs ) from QUARTZ using JDBC data store ( Oracle DB).

Is there any alternate ways to speed up the task?

Any API support available for pagination from Quartz?

//All below code can be written using Java 8 Streams as well. Broke down the code to understand which //operation is taking time

Scheduler scheduler = schedulerFactoryBean.getScheduler();

Set<TriggerKey> triggerKeys = scheduler.getTriggerKeys(GroupMatcher.triggerGroupEquals(groupName)); //groupName - my group name - filtering by groupname

Iterator iterator = triggerKeys .iterator();

//This while block is taking around 12 seconds for around 150 jobs
while(iterator.hasNext()){
TriggerKey triggerKey = (TriggerKey) iterator.next();
if(scheduler.getTriggerState(triggerKey).equals(TriggerState.NONE)){
    iterator.remove();
}

Map<TriggerKey, MyPOJO> myJobMap = new HashMap();

//This for loop is taking around 22 seconds for around 150 jobs
for(TriggerKey key : triggerKeys){

Trigger trigger = scheduler.getTrigger(key);

JobDataMap jobDataMap = scheduler.getJobDetail(trigger.getJobKey()).getJobDataMap();

MyPOJO myPOJO = jobDataMap.get("MYJOBPOJO");

myJobMap.put(key, myPOJO);

}

I have gone through the Quartz documentation but did not find any specific details on how to improve this read operation performance


问:
AttributeError: 'WebDriver' object has no attribute 'find_element_by_class_name'"
Im getting this error when trying to run my program i've tried many fixes including checking stack overflow for similar questions but still no help

```<code>Exception has occurred: NoSuchElementException
Message: no such element: Unable to locate element: {"method":"css selector","selector":".contentContainer activeContent contentContainerBordered"}
  (Session info: chrome=108.0.5359.124)
Stacktrace:
Backtrace:
    (No symbol) [0x009EF243]
    (No symbol) [0x00977FD1]
    (No symbol) [0x0086D04D]
    (No symbol) [0x0089C0B0]
    (No symbol) [0x0089C22B]
    (No symbol) [0x008CE612]
    (No symbol) [0x008B85D4]
    (No symbol) [0x008CC9EB]
    (No symbol) [0x008B8386]
    (No symbol) [0x0089163C]
    (No symbol) [0x0089269D]
    GetHandleVerifier [0x00C89A22+2655074]
    GetHandleVerifier [0x00C7CA24+2601828]
    GetHandleVerifier [0x00A98C0A+619850]
    GetHandleVerifier [0x00A97830+614768]
    (No symbol) [0x009805FC]
    (No symbol) [0x00985968]
    (No symbol) [0x00985A55]
    (No symbol) [0x0099051B]
    (No symbol) [0x7638F989]
    RtlGetAppContainerNamedObjectPath [0x771874B4+228]
    RtlGetAppContainerNamedObjectPath [0x77187484+180]
  File "C:\Users\S300079262\Desktop\pythonshit\autohitter.py", line 14, in <module>
    login_form_elements = driver.find_element(By.CLASS_NAME, 'contentContainer activeContent contentContainerBordered')
</code>```

This is the place where it is erroring

```<code>from selenium import webdriver
from selenium.webdriver.common.by import By

# Set the path to the Chrome driver executable
chrome_driver_path = '/path/to/chromedriver'

# Create a new Chrome webdriver
driver = webdriver.Chrome(chrome_driver_path)

# Navigate to the PayPal login page
driver.get('https://www.paypal.com/signin')

# Find all elements with the class 'login-form'
login_form_elements = driver.find_element(By.CLASS_NAME, 'contentContainer activeContent contentContainerBordered')

# Get the first element from the list
login_form = login_form_elements[0]

# Find the username field inside the login form
username_field = login_form.find_element_by_name('email')

# Find the password field inside the login form
password_field = login_form.find_element_by_name('password')

# Fill in the username and password
username_field.send_keys('your_username')
password_field.send_keys('your_password')

# Find the login button and click it
login_button = login_form.find_element_by_id('btnLogin')
login_button.click()

</code>```

What it is supposed to do is automatically launch the browser and login to my paypal account for me

Body:
Im getting this error when trying to run my program i've tried many fixes including checking stack overflow for similar questions but still no help

Exception has occurred: NoSuchElementException
Message: no such element: Unable to locate element: {"method":"css selector","selector":".contentContainer activeContent contentContainerBordered"}
  (Session info: chrome=108.0.5359.124)
Stacktrace:
Backtrace:
    (No symbol) [0x009EF243]
    (No symbol) [0x00977FD1]
    (No symbol) [0x0086D04D]
    (No symbol) [0x0089C0B0]
    (No symbol) [0x0089C22B]
    (No symbol) [0x008CE612]
    (No symbol) [0x008B85D4]
    (No symbol) [0x008CC9EB]
    (No symbol) [0x008B8386]
    (No symbol) [0x0089163C]
    (No symbol) [0x0089269D]
    GetHandleVerifier [0x00C89A22+2655074]
    GetHandleVerifier [0x00C7CA24+2601828]
    GetHandleVerifier [0x00A98C0A+619850]
    GetHandleVerifier [0x00A97830+614768]
    (No symbol) [0x009805FC]
    (No symbol) [0x00985968]
    (No symbol) [0x00985A55]
    (No symbol) [0x0099051B]
    (No symbol) [0x7638F989]
    RtlGetAppContainerNamedObjectPath [0x771874B4+228]
    RtlGetAppContainerNamedObjectPath [0x77187484+180]
  File "C:\Users\S300079262\Desktop\pythonshit\autohitter.py", line 14, in <module>
    login_form_elements = driver.find_element(By.CLASS_NAME, 'contentContainer activeContent contentContainerBordered')

This is the place where it is erroring

from selenium import webdriver
from selenium.webdriver.common.by import By

# Set the path to the Chrome driver executable
chrome_driver_path = '/path/to/chromedriver'

# Create a new Chrome webdriver
driver = webdriver.Chrome(chrome_driver_path)

# Navigate to the PayPal login page
driver.get('https://www.paypal.com/signin')

# Find all elements with the class 'login-form'
login_form_elements = driver.find_element(By.CLASS_NAME, 'contentContainer activeContent contentContainerBordered')

# Get the first element from the list
login_form = login_form_elements[0]

# Find the username field inside the login form
username_field = login_form.find_element_by_name('email')

# Find the password field inside the login form
password_field = login_form.find_element_by_name('password')

# Fill in the username and password
username_field.send_keys('your_username')
password_field.send_keys('your_password')

# Find the login button and click it
login_button = login_form.find_element_by_id('btnLogin')
login_button.click()

What it is supposed to do is automatically launch the browser and login to my paypal account for me