Shub
с рекордами тема в том, что тип выводится по типам членов, а не по названиям
Shub
простите, гоню
Shub
щас попробую пример накидать
Shub
не успею.
Shub
короче, имя типа рекорда в сам тип не входит. поэтому если есть два разных типа, но с одинаковыми полями одинаковых типов - окамл всегда выбирает наиболее близкий по объявлению
Shub
я кстати не проверял, как в f#
Vasily
В f# по первому совпадению имени поля
Vasily
Я ток сегодня себе ногу чуть не отстрелил
Андрей
а тут есть любители синтаксиса from shit in shitList join anotherShit in anotherShitList on shi equals anothierShit.Shit select new crap(shit) ? Может кто объяснить его прелесть? А то мне стабильно хочется грязно надругаться над трупом мамы автора
Автор эрик Маер, изобретатель reactive extensions, у мелкомягких хаскелист, поэтому ориентировался на хль с оглядкой на сисярп и sql. Он сам чуть не стал трупом по какой-то болезни и после этого одичал немного, например стал на всех конфах гнобить скрамы и аджайлы. Так что я б с ним связываться не стал
Shub
Маер вообще откровенно вредный экземпляр
Shub
В чужом глазу...
такое впечатление, что вы пытаетесь что-то сказать. и еще впечатление, что у вас никак не получается.
Shub
Мейер заспамил своим Rx все, что только возможно.
Shub
он отметился в жаваскрипте, в жаве и даже в скале
Shub
при этом люди, которые с ним общались лично, говорят, что он производит весьма странное впечатление. может он внутри крайне умен, но снаружи он это никак не проявляет. в смысле. что он снаружи вообще ничего не проявляет
x
http://newsroom.fb.com/news/2019/03/keeping-passwords-secure/
x
we found that some user passwords were being stored in a readable format within our internal data storage systems.
x
Это дно?
x
Хранить пароли текстом.. я не знаю что дальше.
Vasiliy
https://www.youtube.com/watch?v=SYvWfDxhm_s
Nikolay
А для VS нет такой настройки/extension, чтобы как в райдере автоматически добавлять using?
Dr. Friedrich
А для VS нет такой настройки/extension, чтобы как в райдере автоматически добавлять using?
Но ведь оно из коробки так работает? Даже в VS, даже для F#?
Nikolay
Тмаhttps://marketplace.visualstudio.com/items?itemName=Fudge.auto-using
Nikolay
Типа такого
Dr. Friedrich
Ну или там по Ctrl-. чото делалось
Nikolay
Я чутка про другое
Nikolay
Вот например, в райдере пишешь DirectoryInf, и он сразу предлагает его импортировать из другой сборки
Nikolay
А в VS нужно Alrt+Enter Нажать, и только потом он предложит
Dr. Friedrich
А так тебе ещё и референс подставлять? Кокой ты!
Nikolay
Т.е., нужно всё же полностью название класса написать, тогда студия предложет импортировать
Nikolay
А в райдере не обязательно, и это очень удобно)
Nikolay
Даже в VSCode есть плагин такой
Aleksandr
только как я понял, МС забили на развитие такого подхода?
Похоже на то. Но это в сишарпе. А f# QueryBuilder - пушка
Aleksandr
Только им и пользуюсь
Aleksandr
Но там селекты чейнить нельзя
Aleksandr
Это жаль
Vasiliy
народ, есть csv файл. и там числа float разделены запятой, а не точкой, можно об этом как то сказать TP ? а то вместо 100 рублей за кофе я вижу все 10000 рублей за кофе.
Ayrat
https://www.youtube.com/watch?v=SYvWfDxhm_s
Обожечки обожечки обожечки
Nikolay
Resharper называется))
Не очень люблю решарпер
Nikolay
Сейчас наверняка всё гораздо лучше, но несколько лет назад он у меня студию намертво вешал постоянно
Nikolay
Осадочек так сказать остался
Viacheslav
Там можно его настроить, чтобы было только то, что тебе от него нужно
Nikolay
Ну вот, поэтому я и пользуюсь райдером, если возможно
Viacheslav
он и сейчас такой же. Особенно если проект большой
Ну хз, у меня с 6гб раньше жёстко было, да. А ща 9 - вообще збс
Nikolay
У райдера такой проблемы нет, хотя иногда он конечно проекты не загружает
Viacheslav
он и сейчас такой же. Особенно если проект большой
Не знаю, правда, что в твоём понимании большой проект? 200+ проектов это как?
Vasiliy
10, ок. это большой для меня проект уже
Nikolay
Так там скорее от количества файлов зависит
Nikolay
У меня вот проект 1876 .cs файлов и 290 .cshtml
Dr. Friedrich
Ну хз, у меня с 6гб раньше жёстко было, да. А ща 9 - вообще збс
Для студии без разницы, у неё адресное пространство 32-битное :(
Nikolay
Для студии без разницы, у неё адресное пространство 32-битное :(
Ну это сам комп может тормозить с таким количеством памяти
Dr. Friedrich
Да.
Nikolay
В своп выгружать, например
Nikolay
А поясните за организацию кода. Вот щас начал пилить мини проект, хочется понять всё же как грамотно сделать. Вот есть такой код, это по сути метод контроллера: public async Task<GraphDealer> UpdateDealer( IResolverContext resolverContext, [Service] AlerterContext alerterContext, DealerInput dealer) { if (!dealer.Id.HasValue) { throw ErrorUtils.ArgumentError( resolverContext, "Dealer identifier should be set.", nameof(dealer)); } var dbDealer = alerterContext .Dealers .Include(x => x.DealerTags) .Include(x => x.DealerEmails) .FirstOrDefault(x => x.DealerId == dealer.Id.Value); if (dbDealer == null) { throw ErrorUtils.ArgumentError( resolverContext, "Dealer with specified identifier was not found.", nameof(dealer)); } dbDealer.Name = dealer.Name; if (dealer.Emails == null) { dealer.Emails = new List<string>(); } if (dealer.Tags == null) { dealer.Tags = new List<int>(); } var removedEmails = dbDealer.DealerEmails .Where(x => !dealer.Emails.Contains(x.Email)); foreach (var email in removedEmails) { email.IsDeleted = true; } var removedTags = dbDealer.DealerTags .Where(x => !dealer.Tags.Contains(x.TagId)) .ToList(); foreach (var tag in removedTags) { dbDealer.DealerTags.Remove(tag); } foreach (var email in dealer.Emails.Where(x => dbDealer.DealerEmails.All(e => e.Email != x))) { dbDealer.DealerEmails.Add(new DealerEmail { DealerId = dbDealer.DealerId, Email = email }); } foreach (var tagId in dealer.Tags.Where(x => dbDealer.DealerTags.All(e => e.TagId != x))) { dbDealer.DealerTags.Add(new DealerTag { DealerId = dbDealer.DealerId, TagId = tagId }); } await alerterContext.SaveChangesAsync(); return new GraphDealer { Id = dealer.Id.Value, Name = dealer.Name }; } И в методе контроллера у меня по сути бизнес-логика, а это не очень хорошо. Куда это лучше вынести?
x
в статический метод класса BlaBlaCoreDomainLogic
Nikolay
в статический метод класса BlaBlaCoreDomainLogic
А как потом это тестировать?
x
он будет принимать на вход обьекты домены и выплёвывать их же
Nikolay
Вообще, я на работе использую паттерн Service, но хз правильно ли это, или нет
x
Фаулеровский сервис?
Nikolay
Фаулеровский сервис?
Я хз как это по научному называется)
x
https://martinfowler.com/eaaCatalog/serviceLayer.html
x
но мне больше такое нравится https://blog.ploeh.dk/2016/03/18/functional-architecture-is-ports-and-adapters/
Vladislav
https://www.reddit.com/r/programming/comments/b3sab6/facebook_stored_hundreds_of_millions_of_user/
Vladislav
уЧиТе АлГоРиТмЫ
Vasiliy
но мне больше такое нравится https://blog.ploeh.dk/2016/03/18/functional-architecture-is-ports-and-adapters/
У Марка классный видос про это есть. вообще мне чот перестает нравится подход через service.
Vasiliy
надо попробовать запилить что нибудь через CQRS, ибо если правильно понял, что там можно строить цепочки вызовов и что надо сделать.
x
Mock
неееет
Aleksandr
А что не так?
Nikolay
Nikolay
Вот ещё интересный паттерн
Aleksandr
Костыль
Зато так ты полностью контроллируешь свои тесты
Aleksandr
И если вылетает ошибка, то ты точно знаешь, что ошибка в тестируемом методе (или в самом тесте), но не в зависимостях
Vasiliy
Вот ещё интересный паттерн
а есть спич к докладу?
Nikolay
а есть спич к докладу?
https://www.youtube.com/watch?v=rNExCHTTaiE
x
А что не так?
What does composition have to do with mocking? Everything. The essence of all software development is the process of breaking a large problem down into smaller, independent pieces (decomposition) and composing the solutions together to form an application that solves the large problem (composition). Mocking is required when our decomposition strategy has failed. Mocking is required when the units used to break the large problem down into smaller parts depend on each other. Put another way, mocking is required when our supposed atomic units of composition are not really atomic, and our decomposition strategy has failed to decompose the larger problem into smaller, independent problems.