Задать вопрос
Профиль пользователя заблокирован сроком с 16 октября 2023 г. и навсегда по причине: систематические нарушения правил сервиса
  • Как и чем тестировать GUI-приложения в среде .Net (WinForms c DevExpress)?

    Александр, Мне не попадалось.
    Есть силениум, но он для веба

    В принципе посмотрите у DevExpress возможно у них есть, у телерика такая штука присутствует, они обычно друг с другом соревнуются.

    https://dzone.com/articles/top-10-automated-softwa...
  • Есть ли какой-то класс алгоритмов, которые наиболее производительны на стороне СУБД?

    Насколько я в курсе, транзакции уже завезли во все нормальные языки программирования.
    И это там удобней реализовано. А для БД стоит оставить его главную задачу отдавать запросы и контролировать целостность данных, без проверок в коде, только ключами.

    Это конечно ИМХО.
  • Есть ли какой-то класс алгоритмов, которые наиболее производительны на стороне СУБД?

    Армянское Радио, Мы сейчас за суровый энтерпрайз или за веб?
    И что это вы предлагаете в количестве десятков мегабайт таскать?
    Я например имел в виду CRED операции по простому списку.
    Например вот апи для получения статей, по вкусу можно прикрутить лимиты, сортировку и прочее.
    В базе тоже не особо сложно, разве что метаполя для документа в json.

    /api/authors/42
    /api/articles/byauthor/42
    /api/articles/byauthor/42/23
    /api/articles/byauthor/42/23?type=pdf

    Хотя для бизнеса бывает нужно что то посложнее, но реально, там черт ногу сломит.

    То есть вы предлагаете что то типа такого?

    /****** Object:  StoredProcedure [dbo].[Akkum_Year]    Script Date: 25.11.2019 9:55:29 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- ================================== ----- =======================================================
    ALTER PROCEDURE [dbo].[Akkum_Year] 
    	@KindProvisionCorpCode int 
    AS
    Begin
    Declare 
    @RowNum int,
    @LicProvisionID int,
    @Value_Year decimal(15,4),
    @ObjCorpCode int,  
    @Year int,
    @Year_dt datetime,
    @Format int
    set Language russian -- для правильного формата даты
    -- Выбрать из LicProvisionValue все даты, соотв. фактической добыче нефти
    -- по месяцам
    Declare Cur_F cursor for
    SELECT  
    lv.LicProvisionID, 
    SUM(lv.Value) AS Value_Year, 
    YEAR(lv.DateStart) AS Year, 
    lv.ObjCorpCode
    FROM   dbo.LicProvision lp INNER JOIN
    dbo.LicProvisionValue lv ON lp.LicProvisionID = lv.LicProvisionID
    GROUP BY lp.KindProvisionCorpCode, 
    (lv.DateStart), 
    lp.EntityID, 
    lv.ObjCorpCode,
    lv.LicProvisionID,
    lv.SourceProvisionCorpCode,
    lv.DateStartFmt
    HAVING (lp.KindProvisionCorpCode = @KindProvisionCorpCode) 
    AND (lv.SourceProvisionCorpCode = 2309453) 
    AND (lv.DateStartFmt = 2187799)
    
    OPEN Cur_F
    FETCH NEXT FROM Cur_F
    INTO
     @LicProvisionID,
     @Value_Year,
     @Year,
     @ObjCorpCode 
    
    SET @RowNum = 0
    WHILE @@FETCH_STATUS = 0
    BEGIN
    set @RowNum = @RowNum + 1
    
    print cast(@RowNum as char(8)) + ' ' + cast( @Year as char(4))  
     + ' '+ cast(@Value_Year as char(15))
    set @Year_dt =Convert(datetime, '31.12.' + cast( @Year as char(4)))
    
    IF NOT EXISTS(SELECT LicProvisionValueID From LicProvisionValue 
    Where LicProvisionID = @LicProvisionID 
    AND YEAR(DateStart) =  @Year 
    AND DateStartFmt = 2187801 
    AND SourceProvisionCorpCode = 2309453)
    BEGIN
    
    INSERT INTO LicProvisionValue
    (LicProvisionID,
    ObjCorpCode,
    SourceProvisionCorpCode,
    DateStartFmt,
    DateStart,
    DateEndFmt,
    DateEnd,
    Value,
    DynamicFlag,
    AutoFlag
    )
    VALUES
    (
     @LicProvisionID,
     @ObjCorpCode,  
     2309453, --факт
     2187801, --год
     @Year_dt,
     2187801, --год
     @Year_dt,
     @Value_Year,
     1,
     1
    )
    END
    
     FETCH NEXT FROM Cur_F 
     INTO 
     @LicProvisionID,
     @Value_Year,
     @Year,
     @ObjCorpCode 
    END
    CLOSE Cur_F
    DEALLOCATE Cur_F
    end -- конец процедуры
    --
  • Есть ли какой-то класс алгоритмов, которые наиболее производительны на стороне СУБД?

    Иван Мельников,
    Преждевременная оптимизация — корень всех зол. — статья «Structured Programming with go to Statements» в сборнике «Computing Surveys» (Vol. ... Premature optimization is the root of all evil. Преждевременная оптимизация — корень всех (или большинства) проблем в программировании.

    Нет производительности как таковой, есть производительность в данном конкретном сценарии. Если она вас не устраивает, вы начинаете оптимизировать. А так пишите понятный код, возможно и не самый быстрый, потом исправите ну или нет если будет работать правильно.
  • Какой подход загрузки данных в Entity Framework 6 выбрать?

    Илья, Не делайте предположения за кого-то, не благодарное это дело.
    Я привел типичный кейс, который многим стоил головной боли, и более менее приемлемое решение.
  • Есть ли какой-то класс алгоритмов, которые наиболее производительны на стороне СУБД?

    Иван Мельников, Все это можно сделать в приложении, кроме того там вы получите большую гибкость и контроль за исполнением кода, и IDE не даст выстрелить в ногу.

    tsql, plsql слишком низкоуровневые. Применять их стоит крайне осторожно и только в случаях когда именно это место "узкое" и вы точно знаете что проблема именно тут. То есть вы получили отчет и видите что нужно больше скорости.
  • Почему гугл не индексирует компоненты VUE?

    Мне понравился пререндер, правда по другим причинам, не захотел поднимать полноценный сервер. Собрал сайт, получил пачку страниц, залил на сервер.

    https://github.com/chrisvfritz/prerender-spa-plugin
  • Как слить 2 objectId в один уникальный id?

    Tshmt, посмотрите в руководстве

    вам возможно стоит пересмотреть структуру сообщений.
    В записи указывать parentid.
    https://docs.mongodb.com/manual/indexes/

    Кроме того есть такая штука как вложенные наборы
    https://docs.mongodb.com/manual/tutorial/model-tre...
  • Как рассчитать расстояние от точки до точки api?

    danchikraw, И в чем проблема?
    Метод берет на входе 2 или более точек и тип маршрута. Возвращает обьект где есть длина время в пути и прочее
  • Есть ли базы данных, хранилища, бэкенды для конфиденциальных данных?

    * Не доверяйте пользователю.
    * Любой ввод санируйте теми же регэкспами.
    * Используйте ORM, они в общем виде сами эскейпят данные.
    * Сделайте прослойку в виде бизнес логики, даже если мусор попадет, то просто отдается пустой список, приложение вообще не знает о базе данных
    * Лимиты как вы правильно сказали, и не только при внешнем обращении, но и во внутренней логике.
    * не используйте "*"
    * не используйте широкие запросы для списка, только id, время модификациии и заголовок, всю конкретику можно получить позже, запросив индивидуальную запись.

    Готовых решений нет, ну или стоят как чугунный паровоз. Производят Cisco, Huawey, Checkpoint, Kaspersky (Infowatch) и другие менее известные.
  • Есть ли базы данных, хранилища, бэкенды для конфиденциальных данных?

    Антон Р., И что ? Уведут ФИО, почту, номер соц страховки, телефон, вопрос для восстановления, запасное мыло.
    Но бесполезный хэш будут расшифровывать очень долго. Так?

    Как по мне данные выше намного чувствительней.
  • Linux Mint в Hyper-V сильно тормозит. Почему?

    dmesg | grep fb

    Последняя строка выведет фрэймбуфер
  • Что выбрать: оригинальная Ubuntu или VirtualBox?

    usb over ethernet позволяет прокинуть даже флешку, всякие же токены прокидываются через rdp, это впрочем относится к гостевым системам на windows.

    https://habr.com/ru/post/308860/
  • Как передать значение типа double в базу данных?

    freshlemon, В общем случае сиквел пытается разобрать строку до самого конца. Проблема известная и заключается в культуре. Строки
    1,000.66
    1 000,66

    В принципе эквивалентны, но в разных культурах, отсюда и неприятные эффекты. Особенно когда приложение работает в русской версии и не хочет работать на английской версии системы.
  • Преобразование post в красивый URL или генерация псевдостраниц?

    По идее вот так. только проверьте включен ли модуль в апаче.

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    </IfModule>
    
    
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
  • Хорошо ли хранить serialize в БД?

    Barmunk, Все зависит от приложения. В общем случае я вообще стараюсь не хранить что то в БД.
    Точнее даже не так. Есть базовый набор параметров, которые доступны в БД, все остальное взаимодействие происходит выше уровнем, DB layer или BL layer.
    И ручками в sql вообще не лезть.

    Но вы видимо спрашиваете про транзакции между 2 строками? Грубо говоря перевод с одного счета на другой?
  • Хорошо ли хранить serialize в БД?

    FanatPHP,

    Вот вам пример, обратите внимание на поля [VirusInfoEx] [varbinary](max) NULL, [UnVersionedMetaInfo] [dbo].[tCompressedBinary] NULL, [FileFormatMetaInfo] [varbinary](max) NULL,

    USE [WSS_Content]
    GO
    
    /****** Object:  Table [dbo].[AllDocs]    Script Date: 11/23/2019 7:34:55 PM ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE TABLE [dbo].[AllDocs](
    	[Id] [uniqueidentifier] NOT NULL,
    	[SiteId] [uniqueidentifier] NOT NULL,
    	[DirName] [nvarchar](256) NOT NULL,
    	[LeafName] [nvarchar](128) NOT NULL,
    	[Level] [tinyint] NOT NULL,
    	[ParentId] [uniqueidentifier] NOT NULL,
    	[DeleteTransactionId] [varbinary](16) NOT NULL,
    	[WebId] [uniqueidentifier] NOT NULL,
    	[ListId] [uniqueidentifier] NULL,
    	[DoclibRowId] [int] NULL,
    	[Type] [tinyint] NOT NULL,
    	[SortBehavior] [tinyint] NOT NULL,
    	[Size] [int] NULL,
    	[ETagVersion]  AS (case when [InternalVersion] IS NULL then NULL else ([InternalVersion]+[BumpVersion]*(256))/(256) end),
    	[EffectiveVersion]  AS (case when [InternalVersion] IS NULL then NULL else [InternalVersion]+[BumpVersion]*(256) end),
    	[InternalVersion] [int] NULL,
    	[ContentVersion] [int] NOT NULL,
    	[NextBSN] [bigint] NULL,
    	[MetadataNextBSN] [bigint] NULL,
    	[StreamSchema] [tinyint] NULL,
    	[HasStream]  AS (case when [Type]=(0) AND ([DocFlags]&(256))=(256) AND [SetupPath] IS NULL OR [SetupPath] IS NOT NULL AND ([DocFlags]&(64))=(64) then (1) else (0) end),
    	[BumpVersion] [tinyint] NOT NULL,
    	[UIVersion] [int] NOT NULL,
    	[Dirty]  AS (case when [BumpVersion]<>(0) then CONVERT([bit],(1)) else CONVERT([bit],(0)) end),
    	[ListDataDirty] [bit] NOT NULL,
    	[DocFlags] [int] NULL,
    	[ThicketFlag] [bit] NULL,
    	[CharSet] [int] NULL,
    	[ProgId] [nvarchar](255) NULL,
    	[TimeCreated] [datetime] NOT NULL,
    	[TimeLastModified] [datetime] NOT NULL,
    	[NextToLastTimeModified] [datetime] NULL,
    	[MetaInfoTimeLastModified] [datetime] NULL,
    	[TimeLastWritten] [datetime] NULL,
    	[SetupPathVersion] [tinyint] NOT NULL,
    	[SetupPath] [nvarchar](255) NULL,
    	[SetupPathUser] [nvarchar](255) NULL,
    	[CheckoutUserId] [int] NULL,
    	[DraftOwnerId] [int] NULL,
    	[CheckoutDate] [datetime] NULL,
    	[CheckoutExpires] [datetime] NULL,
    	[VersionCreatedSinceSTCheckout] [bit] NOT NULL,
    	[LTCheckoutUserId]  AS (case when ([DocFlags]&(32))=(32) then [CheckoutUserId]  end),
    	[CheckinComment] [nvarchar](1023) NULL,
    	[IsCheckoutToLocal]  AS (case when ([DocFlags]&(512))=(512) then (1) else (0) end),
    	[VirusVendorID] [int] NULL,
    	[VirusStatus] [tinyint] NULL,
    	[VirusInfo] [nvarchar](255) SPARSE  NULL,
    	[VirusInfoEx] [varbinary](max) NULL,
    	[MetaInfo] [dbo].[tCompressedBinary] NULL,
    	[MetaInfoSize] [int] NULL,
    	[MetaInfoVersion] [int] NOT NULL,
    	[UnVersionedMetaInfo] [dbo].[tCompressedBinary] NULL,
    	[UnVersionedMetaInfoSize] [int] NULL,
    	[UnVersionedMetaInfoVersion] [int] NULL,
    	[WelcomePageUrl] [nvarchar](260) NULL,
    	[WelcomePageParameters] [nvarchar](max) NULL,
    	[IsCurrentVersion] [bit] NOT NULL,
    	[AuditFlags] [int] NULL,
    	[InheritAuditFlags] [int] NULL,
    	[UIVersionString]  AS ((CONVERT([nvarchar],[UIVersion]/(512))+'.')+CONVERT([nvarchar],[UIVersion]%(512))),
    	[ScopeId] [uniqueidentifier] NOT NULL,
    	[BuildDependencySet] [varbinary](max) NULL,
    	[ParentVersion] [int] NULL,
    	[ParentVersionString]  AS ((CONVERT([nvarchar],[ParentVersion]/(512))+'.')+CONVERT([nvarchar],[ParentVersion]%(512))),
    	[TransformerId] [uniqueidentifier] NULL,
    	[ParentLeafName] [nvarchar](128) NULL,
    	[CtoOffset] [smallint] NULL,
    	[Extension]  AS (case when charindex(N'.',[LeafName] collate Latin1_General_BIN)>(0) then right([LeafName],charindex(N'.',reverse([LeafName]) collate Latin1_General_BIN)-(1)) else N'' end),
    	[ExtensionForFile]  AS (case when [Type]=(0) AND charindex(N'.',[LeafName] collate Latin1_General_BIN)>(0) then right([LeafName],charindex(N'.',reverse([LeafName]) collate Latin1_General_BIN)-(1)) else N'' end),
    	[ItemChildCount] [int] NOT NULL,
    	[FolderChildCount] [int] NOT NULL,
    	[FileFormatMetaInfo] [varbinary](max) NULL,
    	[FileFormatMetaInfoSize] [int] NOT NULL,
    	[FFMConsistent] [bit] NULL,
    	[ListSchemaVersion] [int] NULL,
    	[ClientId] [varbinary](16) NULL,
     CONSTRAINT [AllDocs_ParentId] PRIMARY KEY CLUSTERED 
    (
    	[SiteId] ASC,
    	[DeleteTransactionId] ASC,
    	[ParentId] ASC,
    	[Id] ASC,
    	[Level] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 95) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GO
    
    ALTER TABLE [dbo].[AllDocs] SET (LOCK_ESCALATION = DISABLE)
    GO
    
    ALTER TABLE [dbo].[AllDocs] ADD  DEFAULT ((1)) FOR [Level]
    GO
    
    ALTER TABLE [dbo].[AllDocs] ADD  DEFAULT (0x) FOR [DeleteTransactionId]
    GO
    
    ALTER TABLE [dbo].[AllDocs] ADD  DEFAULT ((0)) FOR [SortBehavior]
    GO
    
    ALTER TABLE [dbo].[AllDocs] ADD  DEFAULT ((0)) FOR [ContentVersion]
    GO
    
    ALTER TABLE [dbo].[AllDocs] ADD  CONSTRAINT [DF_AllDocs_BumpVer_DefValue]  DEFAULT ((0)) FOR [BumpVersion]
    GO
    
    ALTER TABLE [dbo].[AllDocs] ADD  CONSTRAINT [DEFAULT_UIVersion]  DEFAULT ((512)) FOR [UIVersion]
    GO
    
    ALTER TABLE [dbo].[AllDocs] ADD  DEFAULT ((0)) FOR [ListDataDirty]
    GO
    
    ALTER TABLE [dbo].[AllDocs] ADD  DEFAULT ((0)) FOR [ThicketFlag]
    GO
    
    ALTER TABLE [dbo].[AllDocs] ADD  CONSTRAINT [setuppathversion_default]  DEFAULT ((15)) FOR [SetupPathVersion]
    GO
    
    ALTER TABLE [dbo].[AllDocs] ADD  DEFAULT ((0)) FOR [VersionCreatedSinceSTCheckout]
    GO
    
    ALTER TABLE [dbo].[AllDocs] ADD  DEFAULT ((1)) FOR [MetaInfoVersion]
    GO
    
    ALTER TABLE [dbo].[AllDocs] ADD  DEFAULT ((1)) FOR [IsCurrentVersion]
    GO
    
    ALTER TABLE [dbo].[AllDocs] ADD  DEFAULT ((0)) FOR [ItemChildCount]
    GO
    
    ALTER TABLE [dbo].[AllDocs] ADD  DEFAULT ((0)) FOR [FolderChildCount]
    GO
    
    ALTER TABLE [dbo].[AllDocs] ADD  DEFAULT ((0)) FOR [FileFormatMetaInfoSize]
    GO