Hatalar, hatalar, sorular - sayfa 2709

 
Stanislav Korotky :

MQL'de neden kendi fabrika yönteminizden korumalı bir kurucu çağıramıyorsunuz?

Sorun varsayılan değerdir, kaldırırsanız her şey olması gerektiği gibi çalışır:

 class A1
{
   protected :
    A1( const bool x = false ){}
   public :  
     static A1 *creator()
    {
       return new A1( true );
    }
};

void OnStart ()
{
  A1 *a = A1::creator();
}
 
Stanislav Korotky :

MQL'de neden kendi fabrika yönteminizden korumalı bir kurucu çağıramıyorsunuz?

Bunun nerede yararlı olabileceğini tahmin edemedim.

 
fxsaber :

Bunun nerede yararlı olabileceğini tahmin edemedim.

Singleton modelinin klasik uygulaması.

 
Sergey Dzyublik :

Singleton modelinin klasik uygulaması.

Belirli bir sınıftan belirli sayıda nesneden fazlasını yaratmayı imkansız kılmak için mi?

 
fxsaber :

Belirli bir sınıftan belirli sayıda nesneden fazlasını yaratmayı imkansız kılmak için mi?

Evet, programın tüm bölümlerinden durum bilgisi olan bir sınıfın örneğine tek bir erişim noktası olması için.
İşte bugün resimlerdeki kalıplar ve sözde kodlar hakkında bulduğum harika bir site: https://refactoring.guru/ru/design-patterns/singleton

Одиночка
Одиночка
  • refactoring.guru
Одиночка — это порождающий паттерн проектирования, который гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа. Проблема Одиночка решает сразу две проблемы, нарушая принцип единственной ответственности класса. Гарантирует наличие единственного экземпляра класса. Чаще всего это полезно для...
 
Sergey Dzyublik :

Evet, programın tüm bölümlerinden durum bilgisi olan bir sınıfın örneğine tek bir erişim noktası olması için.
İşte resimlerdeki desenler ve sözde kodlar hakkında bugün bulduğum harika bir site: https://refactoring.guru/en/design-patterns/singleton

Anladım teşekkürler. Bu tasarımı daha önce kullanmıştım.

 template < typename T>
struct PTR
{
  T* Ptr;

  PTR( void ) : Ptr( NULL )
  {
  }

  PTR( T* ptr ) : Ptr(ptr)
  {
  }

  ~PTR( void )
  {
     if ( this .Ptr)
       delete this .Ptr;
  }

   bool Set( T* ptr )
  {
     this .Ptr = ptr;

     return ( true );
  }

   void operator =( bool )
  {
  }
};

class CLASS
{
private :
#define THIS CLASS::sPtr.Ptr
   static PTR<CLASS> sPtr;

  CLASS( const bool x /* = false */ )
  {
  }
    
   static bool Set()
  {
     return (THIS ? false : CLASS::sPtr.Set( new CLASS( true )));
  }  
#undef THIS  
};

// Создается скрытый объект CLASS со скрытым конструктором.
// Ни создать CLASS-объект, ни обратиться к существующему нельзя
static PTR<CLASS> CLASS::sPtr = CLASS::Set();
 
Sergey Dzyublik :

Sorun varsayılan değerdir, kaldırırsanız her şey olması gerektiği gibi çalışır:

Ancak C++'da varsayılan değerle de çalışır. Ve nasıl etkiler?

 

Web yuvalarından deflate sıkıştırması ile MQL CryptEncode (CRYPT_ARCH_ZIP, data[], key[] = {1,0,0,0}, sonuç[]) ile arkadaş olmayı başaran var mı? Genel yankı sunucusu (echo.websocket.org) bu uzantıyı desteklemiyor gibi görünüyor, başka bir yankı sunucusu bulamadım ve yerel node.js, sıkıştırılmış dosyanın şifresini çözmeye çalışırken "zlib geçersiz mesafe çok geri" hatası veriyor. veri. Başlıkta maksimum server_max_window_bits=15; client_max_window_bits=15 sunucu bu ayarları onaylar. Ve MQL tarafından {1,0,0,0} anahtarından başka hiçbir şey yapılandırılamaz ;-(.

 
Stanislav Korotky :

Web yuvalarından deflate sıkıştırması ile MQL CryptEncode(CRYPT_ARCH_ZIP, data[], key[] = {1,0,0,0}, result[]) ile arkadaş olmayı başaran var mı? Genel yankı sunucusu (echo.websocket.org) bu uzantıyı desteklemiyor gibi görünüyor, başka bir yankı sunucusu bulamadım ve yerel node.js, sıkıştırılmış dosyanın şifresini çözmeye çalışırken "zlib geçersiz mesafe çok geri" hatası veriyor. veri. Başlıkta maksimum server_max_window_bits=15; client_max_window_bits=15 sunucu bu ayarları onaylar. Ve MQL tarafından {1,0,0,0} anahtarından başka hiçbir şey yapılandırılamaz ;-(.

Soruyu doğru anlarsam, veri paketleme için web soketlerinde esas olarak GZIP sıkıştırması kullanırlar.
CRYPT_ARCH_ZIP sabiti büyük olasılıkla normal bir ZIP'de toplanır.
GZIP'yi mql5 kullanarak nasıl paketleyeceğinizi/açacağınızı biliyorsanız, ben de ilgileniyorum.

 
Roman :

Soruyu doğru anlarsam, veri paketleme için web soketlerinde esas olarak GZIP sıkıştırması kullanırlar.
CRYPT_ARCH_ZIP sabiti büyük olasılıkla normal bir ZIP'de toplanır.
GZIP'yi mql5 kullanarak nasıl paketleyeceğinizi/açacağınızı biliyorsanız, ben de ilgileniyorum.

Bildiğim kadarıyla, {1,0,0,0} anahtarı tüm çerçeveyi kaldırır ve yalnızca sıkıştırılmış paketi bırakır. En azından "Merhaba" kelimesi, CryptEncode çıktısında deflate'de olduğu gibi sıkıştırılır. Buna göre, ters yönde çalışması gerekir. Ancak MQL daha fazla ayar sağlamaz ve kullandığı "varsayılan" söndürme ayarlarını açıklamaz. Açıkçası, farklıdırlar, ancak web yuvalarında yalnızca max_window_bits ve no_context_takeover kontrol edilebilir - birincisi, deflate algoritmasından (sunucuda yapılandırılan) açıkça daha azı vardır ve ikinci olarak, CryptEncode/'da yapılandırılamazlar. kodunu çöz.