зацените код. прилетел инцедент
От: undo75  
Дата: 12.02.24 07:54
Оценка: -3 :)
по таймауту у них падает.
опуская подробности чисто функция. комент убил наповал:
а действитель — херли тут по таймауту падать-то?
кто это пропустил я хз...
кстати. нахер так применять линкью? чтобы говно было геморней отлавливать в тексте на три экрана? кто-то может объяснить?

 protected override async Task<AgricultureJournalUnit[]> HandleAsync(
     GetSubOperations query,
     CancellationToken token = default)
 {
     using (var dbConnectionString = ConnectionFactory.CreateDbConnection(MainDb.Replica1))
     using (var context = ConnectionFactory.CreateWebDbContext(dbConnectionString))
     {
         var entities = context.SubOperations
             .AsNoTracking()
             .Include(x => x.Operation)
             .Include(x => x.User)
             .Include(x => x.Account)
             .Include($"{nameof(Db.Model.WebDb.Public.SubOperation.Seeds)}.{nameof(Db.Model.WebDb.Public.Seed)}.{nameof(Db.Model.WebDb.Public.Variety)}")
             .Include($"{nameof(Db.Model.WebDb.Public.SubOperation.Seeds)}.{nameof(Db.Model.WebDb.Public.SubOperationSoilProtector.Stock)}")
             .Include($"{nameof(Db.Model.WebDb.Public.SubOperation.SoilProtectors)}.{nameof(Db.Model.WebDb.Public.SubOperationSoilProtector.Stock)}")
             .Include($"{nameof(Db.Model.WebDb.Public.SubOperation.SoilProtectors)}.{nameof(Db.Model.WebDb.Public.SubOperationSoilProtector.SoilProtector)}")
             .Include($"{nameof(Db.Model.WebDb.Public.SubOperation.Fertilizers)}.{nameof(Db.Model.WebDb.Public.SubOperationFertilizer.Stock)}")
             .Include($"{nameof(Db.Model.WebDb.Public.SubOperation.Fertilizers)}.{nameof(Db.Model.WebDb.Public.SubOperationFertilizer.Fertilizer)}")
             .Include($"{nameof(Db.Model.WebDb.Public.Machine)}.{nameof(Db.Model.WebDb.Public.Model)}.{nameof(Db.Model.WebDb.Manufacturer)}")
             .Include($"{nameof(Db.Model.WebDb.Public.AgroInstrument)}.{nameof(Db.Model.WebDb.Public.Model)}.{nameof(Db.Model.WebDb.Manufacturer)}");
         entities = entities.Where(x => x.Operation.CropField.Field.Layer.ClientId == query.CurrentClientId);

         if (query.Ids.Any())
         {
             entities = entities.Where(x => query.Ids.Contains(x.Id));
         }

         if (query.Years.Any())
         {
             entities = entities.Where(x => query.Years.Contains(x.Operation.CropField.Year));
         }

         if (query.OperationModifiedIdFrom.HasValue)
         {
             entities = entities.Where(x => x.Operation.ModifiedId >= query.OperationModifiedIdFrom && x.Operation.ModifiedId <= query.OperationModifiedIdTo);
         }
         else if (query.OperationIds.Any())
         {
             entities = entities.Where(x => query.OperationIds.Contains(x.OperationId));
         }

         if (!query.IncludeDeleted)
         {
             entities = entities.Where(x => !x.IsDeleted && !x.Operation.IsDeleted);
         }

         if (query.TreatmentId.HasValue)
         {
             entities = entities.Where(x => x.Operation.TreatmentTypeId == query.TreatmentId.Value);
         }

         if (query.AgroUnitType.HasValue)
         {
             entities = entities.Where(x => x.PlanType == (int)query.AgroUnitType.Value);
         }

         if (query.PlanType.HasValue)
         {
             entities = entities.Where(x => x.Operation.PlantType == (int)query.PlanType.Value);
         }

         if (query.DateFrom.HasValue)
         {
             entities = entities.Where(x => x.DateStart >= query.DateFrom.Value);
         }

         if (query.DateTo.HasValue)
         {
             entities = entities.Where(x => x.DateEnd <= query.DateTo.Value);
         }

         // почему тут огромный селект? потому что Seed.SoilProtectionsJson не селектится, но будем считать, что это для перформанса выборки семечек:)
         return (await entities.Select(x => new
         {
             x.Id,
             x.OperationId,
             x.DateStart,
             x.DateEnd,
             x.Square,
             x.PlanType,
             x.MachineId,
             x.MachineModelId,
             x.AgroInstrumentId,
             x.AmountInstrument,
             x.UserId,
             x.Fuel,
             x.FuelTotal,
             x.FuelNormal,
             x.Comment,
             x.IsNightShift,
             x.DistanceTraveled,
             x.Created,
             x.Quota,
             x.HandSquare,
             x.AppgoverUserId,
             x.ResponsibleId,
             x.CreatorId,
             x.Route,
             x.SquareWorkOnField,
             x.EngineWorkTime,
             x.Series,
             x.QualityControl,
             x.SpeedometerReadingsStart,
             x.SpeedometerReadingsEnd,
             x.RidersWithLoad,
             x.RidersWithoutLoad,
             x.TransportedTons,
             x.TotalMileage,
             x.IsExportedTo1C,
             x.IsChronometrage,
             x.IsAssist,
             x.IsApproved,
             x.AssistPercent,
             x.LastRecalculate,
             x.AccountId,
             x.WaybillNumber,
             x.WaybillNumberAddedManually,
             x.DataFillingMethod,
             x.IsDeleted,
             x.Fertilizers,
             x.SoilProtectors,
             x.Machine,
             x.AgroInstrument,
             x.Operation.CropField.Field.LayerId,
             User = x.UserId != null
                 ? new
                 {
                     x.User.Id,
                     x.User.Name,
                     x.User.Surname,
                     x.User.MiddleName,
                     x.User.Birthday,
                     x.User.DrivingLicenseNumber,
                     x.User.PersonnelNumber,
                 }
                 : null,
             x.Account,
             Seeds = x.Seeds.Select(s => new
             {
                 s.Id,
                 s.SeedId,
                 s.Amount,
                 s.AmountTotalHand,
                 Stock = s.Stock,
                 Seed = new
                 {
                     s.SeedId,
                     s.Seed.Reproduction,
                     s.Seed.VarietyId,
                     Variety = new
                     {
                         s.Seed.Variety.Id,
                         s.Seed.Variety.Name,
                         s.Seed.Variety.CropId,
                         s.Seed.Reproduction,
                     }
                 }
             })
         }).ToArrayAsync(token))
         .Where(x => (!query.LayerIds.Any() || query.LayerIds.Contains(x.LayerId) || query.LayerIds.Contains(query.SystemLayerId))
             && (!query.AvailableLayerIds.Any() || query.AvailableLayerIds.Contains(x.LayerId)))
         .Select(x =>
         {
             var result = new AgricultureJournalUnit
             {
                 Id = x.Id,
                 IdJournal = x.OperationId,
                 DateStart = x.DateStart,
                 DateEnd = x.DateEnd,
                 Square = _rounderSquare.Round(x.Square),
                 PlanType = (AgroUnitType)x.PlanType,
                 IdMachine = x.MachineId,
                 IdModelTS = x.MachineModelId,
                 IdInstrument = x.AgroInstrumentId,
                 AmountInstrument = x.AmountInstrument,
                 IdUser = x.UserId,
                 Fuel = x.Fuel,
                 FuelTotal = x.FuelTotal,
                 NormaFuel = x.FuelNormal,
                 Comment = x.Comment,
                 IsNigthShift = x.IsNightShift,
                 DistanceTraveled = x.DistanceTraveled,
                 Created = x.Created,
                 Quota = x.Quota,
                 SquareHand = _rounderSquare.Round(x.HandSquare ?? 0),
                 SupervisorId = x.AppgoverUserId,
                 ResponsibleId = x.ResponsibleId,
                 CreatorId = x.CreatorId,
                 RouteId = x.Route,
                 SquareWorkOnField = _rounderSquare.Round(x.SquareWorkOnField ?? 0),
                 EngineWorkHour = x.EngineWorkTime,
                 Series = x.Series,
                 QualityControl = x.QualityControl,
                 SpeedometerReadingsStart = x.SpeedometerReadingsStart,
                 SpeedometerReadingsEnd = x.SpeedometerReadingsEnd,
                 RidersWithLoad = x.RidersWithLoad,
                 RidersWithoutLoad = x.RidersWithoutLoad,
                 TransportedTons = x.TransportedTons,
                 TotalMileage = x.TotalMileage,
                 WasExported1c = x.IsExportedTo1C,
                 IsChronometrage = x.IsChronometrage,
                 BrigadeWaySupportingWork = x.IsAssist,
                 Approved = x.IsApproved,
                 PercentForBrigadeWay = x.AssistPercent,
                 LastDateRecalculateArea = x.LastRecalculate,
                 ExpenseAccountId = x.AccountId,
                 WaybillNumber = x.WaybillNumber,
                 WaybillNumberAddedManually = x.WaybillNumberAddedManually,
                 DataFillingMethod = (DataFillingMethod)x.DataFillingMethod,
                 IsDeleted = x.IsDeleted,
                 ExpenseAccountValue = x.Account?.Value,
                 Seeds = x.Seeds.Select(s => new AgroUnitSeed
                 {
                     Id = s.Id,
                     IdSeed = s.SeedId,
                     Amount = s.Amount,
                     AmountTotalHand = s.AmountTotalHand,
                     SaveTotalHand = s.AmountTotalHand != null,
                     StockName = s.Stock?.Name,
                     StockId = s.Stock?.Id,
                     IdUnit = x.Id,
                     Seed = new Seed
                     {
                         Id = s.SeedId,
                         Reproduction = s.Seed.Reproduction,
                         IdVariety = s.Seed.VarietyId,
                         Variety = new Variety
                         {
                             Id = s.Seed.Variety.Id,
                             Name = s.Seed.Variety.Name,
                             IdCrop = s.Seed.Variety.CropId,
                             Reproduction = s.Seed.Reproduction,
                         }
                     }
                 }).ToList(),
                 Fertilizers = x.Fertilizers.Select(s => new AgroUnitFertilizer
                 {
                     Id = s.Id,
                     IdFertilizer = s.FertilizerId,
                     Amount = s.Amount,
                     AmountTotalHand = s.AmountTotalHand,
                     SaveTotalHand = s.AmountTotalHand != null,
                     StockName = s.Stock?.Name,
                     StockId = s.StockId,
                     IdUnit = x.Id,
                     Fertilizer = new Fertilizer
                     {
                         Id = s.FertilizerId,
                         Name = s.Fertilizer.Name,
                         Type = s.Fertilizer.Type,
                         UnitType = (UnitSoilType)s.Fertilizer.UnitType,
                     }
                 }).ToList(),
                 SoilProtections = x.SoilProtectors.Select(s => new AgroUnitSoilProtection
                 {
                     Id = s.Id,
                     IdSoilProtection = s.SoilProtectorId,
                     Amount = s.Amount,
                     AmountTotalHand = s.AmountTotalHand,
                     SaveTotalHand = s.AmountTotalHand != null,
                     StockName = s.Stock?.Name,
                     StockId = s.StockId,
                     IdUnit = x.Id,
                     SoilProtection = new Model.SoilProtection
                     {
                         Id = s.SoilProtectorId,
                         Name = s.SoilProtector.Name,
                         Type = s.SoilProtector.Type,
                         UnitType = (UnitSoilType)s.SoilProtector.UnitType,
                     }
                 }).ToList(),
             };

         if (result.IdMachine.HasValue && x.Machine != null)
         {
             result.Machine = new Machine
             {
                 Id = x.Machine.Id,
                 Type = (MachineType?)x.Machine.Model.MachineSubType?.Type ?? MachineType.Noname,
                 IdManufacturer = x.Machine.Model.Manufacturer.Id,
                 IdClient = x.Machine.ClientId,
                 Nomer = x.Machine.Number,
                 Manufacturer = new Model.Manufacturer
                 {
                     Id = x.Machine.Model.Manufacturer.Id,
                     ExternalId = x.Machine.Manufacturer.ExternalId,
                     IdClient = x.Machine.Manufacturer.ClientId,
                     Name = x.Machine.Manufacturer.Name,
                 },
                 IdModel = x.MachineModelId,
                 Model = new ModelTS
                 {
                     Id = x.Machine.Model.Id,
                     ExternalId = x.Machine.Model.ExternalId,
                     Name = x.Machine.Model.Name,
                     Type = (ModelType)(x.Machine.Model.TypeTechnics ?? 0),
                     MachineSubTypeId = x.Machine.Model.MachineSubTypeId,
                     Photo = x.Machine.Model.PhotoId,
                     FuelTypeId = x.Machine.Model.FuelTypeId,
                 },
                 TerminalType = (TerminalType)x.Machine.TerminalTypeId,
                 TerminalNumber = x.Machine.TerminalNumber,
                 MonitoringId = x.Machine.MonitoringId,
                 MonitoringHistoryStatus = (MonitoringHistoryStatuses)x.Machine.MonitoringHistoryStatus,
             };
         }

         if (result.IdUser.HasValue && x.User != null)
         {
             result.Executor = new User
             {
                 Id = x.User.Id,
                 Name = x.User.Name,
                 SurName = x.User.Surname,
                 MiddleName = x.User.MiddleName,
                 Birthday = x.User.Birthday,
                 DrivingLicenseNumber = x.User.DrivingLicenseNumber,
                 PersonnelNumber = x.User.PersonnelNumber,
             };
         }

             if (result.IdInstrument.HasValue && x.AgroInstrument != null)
             {
                 result.Instrument = new AgroInstrument
                 {
                     Id = x.AgroInstrument.Id,
                     Type = (MachineType?)x.AgroInstrument.Model.MachineSubType?.Type ?? MachineType.Noname,
                     IdManufacturer = x.AgroInstrument.Model.Manufacturer.Id,
                     IdClient = x.AgroInstrument.ClientId,
                     AggregateWidth = (double)x.AgroInstrument.Width,
                     LeverX = (double)x.AgroInstrument.LeverPointX,
                     LeverY = (double)x.AgroInstrument.LeverPointY,
                     LinkX = (double)x.AgroInstrument.LinkPointX,
                     LinkY = (double)x.AgroInstrument.LinkPointY,
                     Manufacturer = new Model.Manufacturer
                     {
                         Id = x.AgroInstrument.Model.Manufacturer.Id,
                         ExternalId = x.AgroInstrument.Manufacturer.ExternalId,
                         IdClient = x.AgroInstrument.Manufacturer.ClientId,
                         Name = x.AgroInstrument.Manufacturer.Name,
                     },
                     IdModel = x.AgroInstrument.ModelId,
                     Model = new ModelTS
                     {
                         Id = x.AgroInstrument.Model.Id,
                         ExternalId = x.AgroInstrument.Model.ExternalId,
                         Name = x.AgroInstrument.Model.Name,
                         Type = (ModelType)(x.AgroInstrument.Model.TypeTechnics ?? 0),
                         MachineSubTypeId = x.AgroInstrument.Model.MachineSubTypeId,
                         Photo = x.AgroInstrument.Model.PhotoId,
                     },
                     TerminalType = (TerminalType)x.AgroInstrument.TypeTerminal,
                     TerminalNumber = x.AgroInstrument.TerminalNumber,
                     MonitoringId = x.AgroInstrument.MonitoringId,
                 };
             }

             return result;
         })
         .ToArray();
     }
 }
Отредактировано 12.02.2024 9:48 undo75 . Предыдущая версия . Еще …
Отредактировано 12.02.2024 7:55 undo75 . Предыдущая версия .
Re: зацените код. прилетел инцедент
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 12.02.24 08:10
Оценка: 1 (1) +3 -1
Здравствуйте, undo75, Вы писали:

U>по таймауту у них падает.

Надо смотреть что за запрос генерируется, какие индексы используются и сколько данных тянет. Ну как обычно

U>кто это пропустил я хз...

Кроме пары сомнительных моментов ничего криминального нет. Лучше уж такой код, чем эквивалентные простыни SQL.
Re: зацените код. прилетел инцедент
От: Hоmunculus  
Дата: 12.02.24 08:14
Оценка: +1
Здравствуйте, undo75, Вы писали:

Блин, трындец. БАЗЫ ДАННЫХ!!! Люди, КАК это может быть интересно??! Единсивенный предмет в вузе который еле смог
Re[2]: зацените код. прилетел инцедент
От: undo75  
Дата: 12.02.24 08:14
Оценка:
G>Надо смотреть что за запрос генерируется, какие индексы используются и сколько данных тянет. Ну как обычно
тут думаю проблема будет решена сразу повышением селективности.

G>Кроме пары сомнительных моментов ничего криминального нет. Лучше уж такой код, чем эквивалентные простыни SQL.

не простыня это.
там делаешь обдумано. здесь влоб
Re[2]: зацените код. прилетел инцедент
От: undo75  
Дата: 12.02.24 08:16
Оценка:
H>Блин, трындец. БАЗЫ ДАННЫХ!!! Люди, КАК это может быть интересно??! Единсивенный предмет в вузе который еле смог

в день зарплаты. дальше неинтересно. разве как запущенность геморроя облегчить
Re[2]: зацените код. прилетел инцедент
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 12.02.24 08:52
Оценка:
Здравствуйте, Hоmunculus, Вы писали:

H>Здравствуйте, undo75, Вы писали:


H>Блин, трындец. БАЗЫ ДАННЫХ!!! Люди, КАК это может быть интересно??! Единсивенный предмет в вузе который еле смог


Платят денег не за то, чтобы тебе было интересно. И есть люди, которые смогли.
Re[3]: зацените код. прилетел инцедент
От: Hоmunculus  
Дата: 12.02.24 08:55
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Платят денег не за то, чтобы тебе было интересно. И есть люди, которые смогли.


Ну, у меня то что неинтересно- в голову не влазит и быстро оттуда выветривается. Осилить-то я осилил, ничего там сложного нет. Но плакал. Поэтому всегда удивляли однокурсники, которые связались с Задницей Одина
Re[2]: зацените код. прилетел инцедент
От: rudzuk  
Дата: 12.02.24 09:19
Оценка: 1 (1) +1
Здравствуйте, Hоmunculus, Вы писали:

H> Блин, трындец. БАЗЫ ДАННЫХ!!! Люди, КАК это может быть интересно??! Единсивенный предмет в вузе который еле смог


Хоть у меня с БД никогда проблем небыло, но соглашусь: это самая унылая работа, просто концентрат уныния.
avalon/3.0.2
Re[3]: зацените код. прилетел инцедент
От: undo75  
Дата: 12.02.24 09:32
Оценка:
R>Хоть у меня с БД никогда проблем небыло, но соглашусь: это самая унылая работа, просто концентрат уныния.

программирование другим бывает?
Re[2]: зацените код. прилетел инцедент
От: fmiracle  
Дата: 12.02.24 09:33
Оценка: 1 (1) +1 :)))
Здравствуйте, Hоmunculus, Вы писали:

H>Блин, трындец. БАЗЫ ДАННЫХ!!! Люди, КАК это может быть интересно??! Единсивенный предмет в вузе который еле смог


ОООО, супер, БАЗЫ ДАННЫХ! Люди, ЧТО может быть БОЛЕЕ интересно?!? Единственный предмет в ВУЗе, который был реально клевый!


Re[3]: зацените код. прилетел инцедент
От: undo75  
Дата: 12.02.24 09:37
Оценка:
F>ОООО, супер, БАЗЫ ДАННЫХ! Люди, ЧТО может быть БОЛЕЕ интересно?!? Единственный предмет в ВУЗе, который был реально клевый!


а где их нет и что в этой теме интереснее? аи?
Re[3]: зацените код. прилетел инцедент
От: Hоmunculus  
Дата: 12.02.24 09:37
Оценка:
Здравствуйте, fmiracle, Вы писали:


Так в том и вопрос. Что именно?
Мне интересен визуал, графика и симуляции физики. Потому что это красиво, вау-эффектно и прочее. Сразу виден результат.
Мне НЕ интересно, но я могу понять в чем интерес, например, у безопасников и сетевиков.

Но я в упор не могу понять что может быть интересно в этих идиотских огромных таблицах
Re[4]: зацените код. прилетел инцедент
От: rudzuk  
Дата: 12.02.24 09:45
Оценка: 1 (1)
Здравствуйте, undo75, Вы писали:

u> R>Хоть у меня с БД никогда проблем небыло, но соглашусь: это самая унылая работа, просто концентрат уныния.


u> программирование другим бывает?


Конечно!
avalon/3.0.2
Re[4]: зацените код. прилетел инцедент
От: undo75  
Дата: 12.02.24 09:46
Оценка: -1
H>Но я в упор не могу понять что может быть интересно в этих идиотских огромных таблицах

в упор не могу понять вообще что в теме компов может быть интересно.
но ты сольешься и не ответишь как обычно. вопрос в воздух
Re[5]: зацените код. прилетел инцедент
От: undo75  
Дата: 12.02.24 09:53
Оценка:
R>Конечно!

и игрушки писал и станки программировал. та же хрень
и да. беспилотники тоже. на заре...
одинаково тошнило от всего. день зарплаты ключевое...
Отредактировано 12.02.2024 9:55 undo75 . Предыдущая версия . Еще …
Отредактировано 12.02.2024 9:54 undo75 . Предыдущая версия .
Re[4]: зацените код. прилетел инцедент
От: Sharov Россия  
Дата: 12.02.24 10:00
Оценка: +1
Здравствуйте, Hоmunculus, Вы писали:

H>Здравствуйте, fmiracle, Вы писали:



H>Так в том и вопрос. Что именно?

H>Мне интересен визуал, графика и симуляции физики. Потому что это красиво, вау-эффектно и прочее. Сразу виден результат.
H>Мне НЕ интересно, но я могу понять в чем интерес, например, у безопасников и сетевиков.

Согласен, графика очень интересна, там есть свой рокет саенс.

H>Но я в упор не могу понять что может быть интересно в этих идиотских огромных таблицах


Ну как бэ основа -- без бд ни банки, ни интернет сайты не работали бы. В сущности все нагруженные приложения, а это тоже очень интересно,
каким-то образом используют бд. Это может быть стандартные реляционные бд (acid) и их тюнинг, это могут быть eventual consistency nosql
бд и умение их использовать и настраивать. Т.е. миллионы людей ежедневно пользуются результатом твоего труда. И там куча нюансов
и при взаимодействии с железом, чтобы все это делалось эффективно. Т.е. по сути, бд -- это основа практически всех компьютерных программ,
за исключением, разве что, игр. Да и тот же steam без бд никуда. Опять же облака -- это масштабируемые бд, спец. хранилища типа s3 со
своими свойствами и т.п. Короче, все с чем люди каждодневно взаимодействует в интернете и на мобиле имеют свою бд, т.е. по сути
взаимодействие с бд + какая-то бизнес логика.

Так что бд не просто интересны, но еще и крайне важны. Без крутейшей графики прожить можно, а вот без онлайн банкинга или соц. сети уже не очень.
БД -- сердце 90%(если не больше) современных приложений.
Кодом людям нужно помогать!
Отредактировано 12.02.2024 10:01 Sharov . Предыдущая версия .
Re[2]: зацените код. прилетел инцедент
От: m2user  
Дата: 12.02.24 10:03
Оценка:
U>>кто это пропустил я хз...
G>Кроме пары сомнительных моментов ничего криминального нет. Лучше уж такой код, чем эквивалентные простыни SQL.

Но на SQL такой простыни не было бы. Тут большая часть кода это конвертации из Model
IdInstrument = x.AgroInstrumentId,

Если их вынести в отдельные методы, то сам код SQL запроса будет вполне читабельным.
Re[5]: зацените код. прилетел инцедент
От: Hоmunculus  
Дата: 12.02.24 10:07
Оценка:
Здравствуйте, undo75, Вы писали:

Нет. Не сольюсь. Потому что программист — творец. Он подобен Богу в этом цифровом мирке.
Ты садишься, перед тобой пустой лист, открытая IDE или какая-то среда. И нет НИЧЕГО. И только что-то в идеях и твоей голове. И ты из пустоты, САМ начинаешь создавать. То, у чего у людей может отвиснуть челюсть. То, что может внушить идею и вызвать эмоции. «В начале было слово» — это можно сказать и про нас. Мы — творцы галактик!!
Re[5]: зацените код. прилетел инцедент
От: rudzuk  
Дата: 12.02.24 10:17
Оценка:
Здравствуйте, Sharov, Вы писали:

S> Ну как бэ основа -- без бд ни банки, ни интернет сайты не работали бы. В сущности все нагруженные приложения, а это тоже очень интересно, каким-то образом используют бд.


Никто, вроде, не оспаривал полезность БД. Однако, они от этого не перестают быть унылыми (если только сам не разрабатываешь БД).
avalon/3.0.2
Re[6]: зацените код. прилетел инцедент
От: rudzuk  
Дата: 12.02.24 10:17
Оценка: +1 :)
Здравствуйте, undo75, Вы писали:

u> и игрушки писал и станки программировал. та же хрень

u> и да. беспилотники тоже. на заре...
u> одинаково тошнило от всего. день зарплаты ключевое...

Вебкам попробуй.
avalon/3.0.2
Re[4]: зацените код. прилетел инцедент
От: Gt_  
Дата: 12.02.24 10:21
Оценка:
H>Так в том и вопрос. Что именно?
H>Мне интересен визуал, графика и симуляции физики. Потому что это красиво, вау-эффектно и прочее. Сразу виден результат.
H>Мне НЕ интересно, но я могу понять в чем интерес, например, у безопасников и сетевиков.

и чего там интересного ? тупо настукивать формулы в виде кода — так там и денег не платят, т.к. переложить формула на код и миды за скромную зп справляются.

H>Но я в упор не могу понять что может быть интересно в этих идиотских огромных таблицах


там хотя бы бигдата кластера, распределенные вычисления, те же ML модели гонять — там и архитектуру не каждый сдюжит и зарплаты ответствуют сложности задачи. а простите физ процесс нажмякать в постсовковом институте небойсь и на пиво не заработать.
Re: зацените код. прилетел инцедент
От: LaptevVV Россия  
Дата: 12.02.24 10:26
Оценка:
Блин.
Мартин Фаулер писал про рефакторинг, писал и переписывал...
И все псу под хвост.
Простой сермяжный программер поклал на все...
А тебе теперь разгребать!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: зацените код. прилетел инцедент
От: Alekzander  
Дата: 12.02.24 10:38
Оценка:
Здравствуйте, gandjustas, Вы писали:

H>>Блин, трындец. БАЗЫ ДАННЫХ!!! Люди, КАК это может быть интересно??! Единсивенный предмет в вузе который еле смог


G>Платят денег не за то, чтобы тебе было интересно. И есть люди, которые смогли.


Я их люблю бескорыстно и непрофессионально. Может, потому что бойсами и коддами в детстве не насиловали, а нормализация представлялась мне просто интересной головоломкой.
Re[2]: зацените код. прилетел инцедент
От: undo75  
Дата: 12.02.24 10:40
Оценка:
LVV>Простой сермяжный программер поклал на все...
LVV>А тебе теперь разгребать!

прикол в том, что на линкью2секвил посложили задачу разрулить селект. на сиквеле я бы сделал одним. он же по сути в цикле хреначит. да. селекты дешевые. но их до жопы )
Re[5]: зацените код. прилетел инцедент
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 12.02.24 11:10
Оценка: +3
Здравствуйте, Sharov, Вы писали:

S>Ну как бэ основа -- без бд ни банки, ни интернет сайты не работали бы. В сущности все нагруженные приложения, а это тоже очень интересно,

S>каким-то образом используют бд. Это может быть стандартные реляционные бд (acid) и их тюнинг, это могут быть eventual consistency nosql
S>бд и умение их использовать и настраивать. Т.е. миллионы людей ежедневно пользуются результатом твоего труда. И там куча нюансов
S>и при взаимодействии с железом, чтобы все это делалось эффективно. Т.е. по сути, бд -- это основа практически всех компьютерных программ,
S>за исключением, разве что, игр. Да и тот же steam без бд никуда. Опять же облака -- это масштабируемые бд, спец. хранилища типа s3 со
S>своими свойствами и т.п. Короче, все с чем люди каждодневно взаимодействует в интернете и на мобиле имеют свою бд, т.е. по сути
S>взаимодействие с бд + какая-то бизнес логика.

А еще в БД применяются те самые алгоритмы, на которых дрочат FAANG и их адепты. там тебе и деревья всех видов, и сортировки, и хэши, синтаксические деревья и их переписывание, алгоритмы выбора, асинхронщина, параллельность и конкурентность. По сути современные РСУБД это венец развития всего computer science.

А кто-то просто ниасилил.
Re: всем минусовавсим вопрос
От: undo75  
Дата: 12.02.24 12:29
Оценка: -1
ёбнулись? может не в теме стандарта сиквела? или как литнкью должен разраливать эту лажу?
Re[2]: зацените код. прилетел инцедент
От: Igorxz  
Дата: 12.02.24 12:54
Оценка: 6 (1) -3
Здравствуйте, gandjustas, Вы писали:

G>Лучше уж такой код, чем эквивалентные простыни SQL.

Разумеется, это не так. (Обычно такие утвеждения делают люди, которые не работали с "серьезными" (по объему, по структуре и т.д.) БД. без обид.)
При работе сконкретной БД, любой, главная — это эта самая любая БД.
Все эти ОРМ — весчь опосредованная. По другому и быть не может.
В каких то ситуациях они да — берут на себя часть рутинной работы (например сгерерировать селект в целевом языке из 100 полей),
но главным остается все равно — движек конкретной БД.
(Это все следствие того, что все мало-мальски используемые движки БД на всем, что чуть сложнее прямого селекта из таблицы,
начинают иметь свои собственные особенности, и естеснно ни какой "волшебный" ОРМ не сможет это учесть, а главное — и не должен.
у него функция другая — просто сгенерировать че-то рутинное, где это можно. Что б руками это не писать.)
Re[3]: зацените код. прилетел инцедент
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 12.02.24 12:59
Оценка:
Здравствуйте, Igorxz, Вы писали:

I>Здравствуйте, gandjustas, Вы писали:


G>>Лучше уж такой код, чем эквивалентные простыни SQL.

I>Разумеется, это не так. (Обычно такие утвеждения делают люди, которые не работали с "серьезными" (по объему, по структуре и т.д.) БД. без обид.)
I>При работе сконкретной БД, любой, главная — это эта самая любая БД.
I>Все эти ОРМ — весчь опосредованная. По другому и быть не может.
I>В каких то ситуациях они да — берут на себя часть рутинной работы (например сгерерировать селект в целевом языке из 100 полей),
I>но главным остается все равно — движек конкретной БД.
I>(Это все следствие того, что все мало-мальски используемые движки БД на всем, что чуть сложнее прямого селекта из таблицы,
I>начинают иметь свои собственные особенности, и естеснно ни какой "волшебный" ОРМ не сможет это учесть, а главное — и не должен.
I>у него функция другая — просто сгенерировать че-то рутинное, где это можно. Что б руками это не писать.)

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

Разница в затратах примерно на два порядка в пользу второго варианта. Возможно по итогу будет не так оптимально для конкретного варианта запроса, но в целом можно быстродействие довести до приемлемого без переписывания всего.
Re[6]: зацените код. прилетел инцедент
От: Hоmunculus  
Дата: 12.02.24 12:59
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>А кто-то просто ниасилил.


Бугага. Ага. Кто-то просто больше по матану и дифурам, а эти говно-алгоритмики ага, ниасилил
Re[4]: зацените код. прилетел инцедент
От: Igorxz  
Дата: 12.02.24 13:03
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>И что ты предлагаешь? переписать простыни linq на рукопашный SQL?

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

G>Разница в затратах примерно на два порядка в пользу второго варианта. Возможно по итогу будет не так оптимально для конкретного варианта запроса, но в целом можно быстродействие довести до приемлемого без переписывания всего.


Что я предлагаю где/для чего? Для конкретной ситуации? — я её не знаю. Может там база из трех таблиц и этот приведенный кусок — полприложения))
Моя реплика была на твое утверждение "Лучше уж такой код, чем эквивалентные простыни SQL.".
С моей точки зрения, в общем случае — это зло.
Re[4]: зацените код. прилетел инцедент
От: undo75  
Дата: 12.02.24 14:11
Оценка:
G>И что ты предлагаешь? переписать простыни linq на рукопашный SQL?
G>Я предлагаю посмотреть запрос, который генеируется, поправить linq, чтобы он не генерировал то, что мешает оптимизации и создать подходящие индексы.

G>Разница в затратах примерно на два порядка в пользу второго варианта. Возможно по итогу будет не так оптимально для конкретного варианта запроса, но в целом можно быстродействие довести до приемлемого без переписывания всего.


как ты предлагаешь поправиль линкью? чтоб он здесь тебе грамотный запрос построил с минимумом джойнов и вхере?
ты погляди — тут в цикле к базе обращения идут!
Re[7]: зацените код. прилетел инцедент
От: undo75  
Дата: 12.02.24 14:12
Оценка:
H>Бугага. Ага. Кто-то просто больше по матану и дифурам, а эти говно-алгоритмики ага, ниасилил
сказал матанщик наасилифший элементарную реалиционню алгебру... это те не поклоны бить, понятно
Re[8]: зацените код. прилетел инцедент
От: Hоmunculus  
Дата: 12.02.24 14:13
Оценка:
Здравствуйте, undo75, Вы писали:


H>>Бугага. Ага. Кто-то просто больше по матану и дифурам, а эти говно-алгоритмики ага, ниасилил

U>сказал матанщик наасилифший элементарную реалиционню алгебру... это те не поклоны бить, понятно

Ну ты большого о себе мнения
Я сказал — что это максимально уныло — и все.

Куда ж без упоминания поклонов-то, ага.
Re[9]: зацените код. прилетел инцедент
От: undo75  
Дата: 12.02.24 14:25
Оценка:
H>Ну ты большого о себе мнения
H>Я сказал — что это максимально уныло — и все.

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

H>Куда ж без упоминания поклонов-то, ага.


ну да.
Re[5]: зацените код. прилетел инцедент
От: undo75  
Дата: 12.02.24 14:48
Оценка:
Gt_>и чего там интересного ? тупо настукивать формулы в виде кода — так там и денег не платят, т.к. переложить формула на код и миды за скромную зп справляются.

на пхп их кстати настукивать — занятие сильно на любителя...

Gt_>там хотя бы бигдата кластера, распределенные вычисления, те же ML модели гонять — там и архитектуру не каждый сдюжит и зарплаты ответствуют сложности задачи. а простите физ процесс нажмякать в постсовковом институте небойсь и на пиво не заработать.


уверен, что тут тоже больше страшных слов, чем содержания...
Re[5]: зацените код. прилетел инцедент
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 12.02.24 14:48
Оценка: +1
Здравствуйте, undo75, Вы писали:


G>>И что ты предлагаешь? переписать простыни linq на рукопашный SQL?

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

G>>Разница в затратах примерно на два порядка в пользу второго варианта. Возможно по итогу будет не так оптимально для конкретного варианта запроса, но в целом можно быстродействие довести до приемлемого без переписывания всего.


U>как ты предлагаешь поправиль линкью? чтоб он здесь тебе грамотный запрос построил с минимумом джойнов и вхере?

Минимум джоинов он и так сделает.
Меня смущают:
— лишние инклуды, скорее всего их выкинет и так
— вложенные коллекции в select, возможно их стоит отдельными запросами собрать
— посмотреть во что превращаются in с учетом конкретной субд
— очевидно проверить планы на популярных вариантах запросов, индексы и настройки движка (если это не mssql)
— заменить ToArrayAsync на ToAsyncEnumerable, чтобы не ждать втягивания всех данных до начала отображения
— посмотреть зачем нужен странный where после ToArrayAsync, почему его нельзя в запрос включить, если можно, то goto пункт про планы
— если уж совсем linq не справляется с запросами, то переписать на функции\представления в SQL и опиратьсяв первую очередь на них

U>ты погляди — тут в цикле к базе обращения идут!

Я не увидел, может не очень внимательно смотрел
Re[6]: зацените код. прилетел инцедент
От: undo75  
Дата: 12.02.24 19:23
Оценка:
U>>ты погляди — тут в цикле к базе обращения идут!
G>Я не увидел, может не очень внимательно смотрел

а я как бы трасил. идет обращение к базе в цикле.
да и без траса сразу видно
Re[7]: зацените код. прилетел инцедент
От: Слава  
Дата: 12.02.24 21:05
Оценка:
Здравствуйте, undo75, Вы писали:

U>а я как бы трасил. идет обращение к базе в цикле.

U>да и без траса сразу видно

У меня ощущение, что вы либо пьяны, либо не высыпались месяц.
Re[8]: зацените код. прилетел инцедент
От: undo75  
Дата: 12.02.24 22:49
Оценка:
С>У меня ощущение, что вы либо пьяны, либо не высыпались месяц.

еще по ходу один... складывается ощущение, вникать в бд ща не камильфо.
если честно несколько шокирует... хотя че удивляюсь. вон лид у меня сиквел даже в стандарте дальше лефт джойна не знает. и не хочет знать ну у меня с джава скрипт та же хрень. угнетает
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.