Задать вопрос
  • Как проверить в списке элементов типа string наличие двух одинаковых строк?

    @mvv-rus
    Василий Банников,
    Distinct также использует HashSet под капотом

    Верю: я не проверял, просто привык с давних времен работы с SQL что SELECT DISTINCT - это про сортировку, вот и написал ее сложность.
    Ну, тогда, все, что написано ниже про HashSet - и про плюсы, и про минусы - применимо и к .Distinct().Count().
  • Как проверить в списке элементов типа string наличие двух одинаковых строк?

    @mvv-rus
    Вот скажи что за душный у тебя тех-лид? Это надож такое требование придумать!!

    На самом деле, это ограничение тут по делу. Потому что если иначе, то так вот и появляются в программе "квадраты": куски кода имеющие квадратичную сложность по длине данных. При наивной реализации проверки - через два вложенных цикла - именно "квадрат" и получится. Тогда как при варианте с .Distinct().Count() от Василий Банников сложность будет N*log(N). А при работе чез HashSet - вообще N. Но там могут быть нюансы: нужно правильно угадать размер хэш-таблицы, чтобы не нарваться на рехэширование при изменении ее размера, т.е. увеличении емкости, и памяти под эту хэш-таблицу должно хватать.
    Нет, конечно, если вы уверены, что этот код не станет узким местом в программе - можно и вложенные циклы лепить, только вот откуда взять ее, уверенность эту?
  • Код ошибки 10016 на Windows Server 2016 MSSQL, как исправить?

    @mvv-rus
    Drawn, интересно-то как! Тo есть, не меняя AppID/CLSID его переименовали. И, возможно, сменили реализацию. Раньше реализация шла через DLL (параметр InprocServer32 в разделе с указанным CLSID), а сейчас, возможно - через указанную службу (ЕМНИП параметр LocalService). Если так, то, возможно, у вас сообщения из-за того, что эта служба остановлена (часто для COM-объектов, реализованных службами, разрешения на запуск весьма ограничены).
  • Как в контроллеры привязывается CancellationToken?

    @mvv-rus
    Василий Банников, благодарю, понял: привязка идет к HttpContext.RequestAborted.
    Я, правда, по вопросу не понял, это ли нужно автору вопроса.
  • Как в контроллеры привязывается CancellationToken?

    @mvv-rus
    Насчет возможности получения CancellationToken через параметр метода действия за счет привязки к модели меня терзают смутные сомнения. Его ведь нет м ьыит не может ни в запросе - ни в каком виде, хоть в виде параметра в строке URL, хоть в части пути (RouteValues), хоть в теле запроса по POST), - ни в контейнере сервисов (DI-контейнере). Разве что в default values маршрута его запихнуть - дык, а использовать его там как?
    А вот вариант использовать HttpContext.RequestAborted - одобряю и поддерживаю.
  • Не пройдена проверка DFSREvent, как убрать ошибку?

    @mvv-rus
    К сожалению, пропадет сообщение о непройденной проверке, а вот ошибка может остаться: некоторые ошбки репликации SYSVOL фиксируются однократно при старте службы DFS Replication.
    Более надежный способ проверки репликации - вот такая команда (в окне командной строки в режиме администратора):
    For /f %i IN ('dsquery server -o rdn') do @echo %i && @wmic /node:"%i" /namespace:\\root\microsoftdfs path dfsrreplicatedfolderinfo WHERE replicatedfoldername='SYSVOL share' get replicationgroupname,replicatedfoldername,state

    Значения state:
    0 = Uninitialized
    1 = Initialized
    2 = Initial Sync
    3 = Auto Recovery
    4 = Normal
    5 = In Error
  • Как при сборки мусора и перемещении объекта, сохраняется корректность ссылок?

    @mvv-rus
    mayton2019, ну, за 10 лет появился stackalloc. И даже, ЕМНИП был момент, когда Span ещё не завезли, что приходилось с размещенной через stackalloc памятью работать через указатели. Но для работы с объектами в куче через указатели, действительно, эти объекты надо фиксировать, а не надеяться на какое-то недокументированное поведение сборщика мусора (в конце концов, оно может поменяться без уведомления). Впрочем, и из этого правила есть исключение: можно указать и подготовить участок кода, на котором распредилитель памяти (и, следовательно, сборщик мусора) вызывать запрещено.
    Но главная причина предыдущего ответа вам - в том, что автор хотел узнать, как оно работает внутри, за пределами абстракции управляемой памяти, а вы ему сразу начали писать, что он об этом спрашивать не должен: типа, это не его дело.
  • Как при сборки мусора и перемещении объекта, сохраняется корректность ссылок?

    @mvv-rus
    Упрощаете, и IMHO чрезмерно.
    Однако по жизни указатели, как сохраненные в памяти адреса объектов, таки есть. И даже в языке C# - есть, в unsafe context.
    Другое дело, что на уровне абстракции управляемого кода и управляемой памяти, на котором работает громадное большинство программистов на C#, всё это скрыто от глаз.
    Но как только возникает необходимость выйти за пределы этой абстракции (для использования системных вызовов или внешних библиотек с неуправляемым кодом), там требуются и указатели, и фиксированные или "пришпиленные" (pinned) объекты, на которые эти указатели указывают.
    PS Ну, а про управление памятью в .NET есть целая книга за авторством Конрада Кокосы (на русский язык переведена). В ней много букв, но все они - полезные.
  • Microsoft Exchange 2016 перестал работать после миграции на другой хост. Как исправить?

    @mvv-rus
    James8888, код 2280 - событие ошибки общего характера: неудачная загрузка DLL. А конкретная ошибка - на вкладке Подробности, которую вы не привели (вообще, лучше копировать событие в текстовом виде - для этого есть кнопка, и вставлять в пост - там будет вся информация).
    Короче, корень проблемы, судя по всему - в этой DLL. Имя DLL выглядит для меня странно, в поиске в интернете она не ищется. Поскольку антивирус молчит, а вы - банк, то имеет смысл уточнить у безопасников, не из их ли хозяйства эта DLL. Загляните ещё в глобальную конфигурацию IIS - C:\WINDOWS\system32\inetsrv\config\applicationHost.xml - не прописан ли там этот файл.

    PS У вас поддержка от MS куплена? Если да, то это - кейс для них.
  • Microsoft Exchange 2016 перестал работать после миграции на другой хост. Как исправить?

    @mvv-rus
    James8888, журналы (AKA логи) IIS - это обычные текстовые файлы, они пишутся в реальном времени, а каждое утров в 5 часов просто запись переключается на другой файл.
    По поводу ошибки из журнала событий - похоже, это то, что мешает IIS. В чем именно проблема - сказать трудно - нужно видеть код ошибки. Но местоположение dll - странное, в папке для временных файлов. И название странное - поиск по интернету его не находит. Проверьте сервер антивирусом. А если там есть антивирус и включена защита для диска - посмотрите, не нашел ли у вас там антивирус что-нибудь.
    PS Миграция, судя по всему, вполне поддерживаемая.
  • Не пройдена проверка DFSREvent, как убрать ошибку?

    @mvv-rus
    Данное событие связано с наличием события ошибки (или предупреждения) в жрнале событий DFSR.
    В случае перезагрузки другого КД ожидаемое событие - сообщение о потери связи с ним в момент перезагрузки. Если событие у вас - такое (смотрите текст и код события), то все нормально. А для прохождения успешной проверки после него подождите сутки.
    PS Обращайтесь, пожалуйста, ко мне на "вы".
  • Можно ли заменить private метод на делегат + лямбду?

    @mvv-rus
    Dyikot, я опять не вижу всей картины: где вы избегаете дублирования? Куда вы ещё эту лямбду передаете или намереваетесь передавать? И почему бы вам не передать вместо лямбды делегат для вашего private метода. Сделайте так
    Func<ContextMenu> NewColumnContextMenuDelegate = NewColumnContextMenu;

    и передавайте NewColumnContextMenuDelegate вместо лямбды, куда ее вам там нужно передавать. В этом случае производительность на однократном создании делегата вы вряд ли потряете. И имейте в виду, что лямбда, если она не статическая - это тоже не бесплатно: нужно к ней создавать объект замыкания.
    Даже можно, если вызов редкий, передавать просто NewColumnContextMenu - будут накладные затраты на создание объекта делегата каждый раз (в реальности, скорее - на сборку ненужных объектов делегатов как мусора, само создание обычно выполняется быстро), но, для редкого вызова они малы.
    А если лямбду предавать как аргумент больше никуда не нужно - не занимайтесь ерундой: создание делегата, не говоря уж о создании объекта замыкания для нестатической лямбды - это не бесплатно, просто вызов метода без всех этих допрасходов происходит быстрее (не говоря уж о том, что компилятор может вообще код этого метода вставить в код вызывающего метода ("заинлайнить").
    PS А вообще, производительность лучше все-таки мерять, если она важна.
  • Можно ли заменить private метод на делегат + лямбду?

    @mvv-rus
    (если я вас правильно понял)Можно, наоборот, если вам нужно передать ссылку на код, эквивалентный этому private методу, то передаваемому делегату можно присвоить этот private метод. Наоборот = как вы предлагаете - тоже можно, конечно, но надо смотреть на накладные расходы: делегат - это объект, и если его создавать при каждом вызове, то они могут быть существенными.
    Конечно, это годится, только если передаваемая лямбда - это действительно делегат. Может быть иначе: в форме лямбды может передаваться ещё и Expression: это надо смотреть на парметры конкретной функции, в которую вы лямбду передаете. В таком случае делегат, содержащий обычный метод передавать, очевидно, нельзя. И переменную типа delegate AFAIK - тоже. Правда, в этом случае переменная, содержащая лямбду и передаваемая в параметр, должна иметь тип Expression, a делегату нужно присваивать скомпилированное из этой переменной выражение, но так дублирования избежать таки можно (правда, несколько громоздко, и добавляется немного накладных расходов на вызов делегата).
    PS Теперь вы понимаете, почему я писал про разные варианты? Если бы вы привели свой код - можно было бы понять, какой из них у вас.
  • Почему условие в setInterval не всегда срабатывает?

    @mvv-rus
    MVV, Да, через console.log() наблюдал за $('#date').html() отрабатывает как положено

    Артем Гартунг, так это не отловишь: console.log() может внести задержку, досточную для того, чтобы document.body прогрузилось с гарантией.
    Для уверенности, что document.body прогрузилось в реальном коде, лучше запускать setInterval уже из его события окончания загрузки: в голом HTML оно называется load, наследуется от HTMLElement, и примеры работы с ним можно посмотреть на соответствующей страничке MDN. Как это делать через jquery, которым вы пользуетесь - не знаю.
  • Можно ли заменить private метод на делегат + лямбду?

    @mvv-rus
    Ответ на вопрос зависит от того, как именно у вас используется этот private метод (я вижу не менее двух вариантов).
  • Почему условие в setInterval не всегда срабатывает?

    @mvv-rus
    Вопрос первый: есть ли гарантия, что в момент срабатывания события истечения интервала элемент с id=date уже загружен?
  • Сервер аутентификации ldap+openid+ad?

    @mvv-rus
    Раз уж используете AD, то Active Directory Federation Services не рассматривали? Он, начиная с WinSrv 2016 в OpenID умеет.
  • Реализовать ajax в asp dot net core 6?

    @mvv-rus
    Сергей, это только будет (или не будет), а .NET 6 есть уже сейчас.
  • Реализовать ajax в asp dot net core 6?

    @mvv-rus
    Сергей, вопрос был конкретно про NET 6 и конкретно сейчас. А что там (и как) будет в будущем, для ответа на него никакого значения не имеет.
    PS Кстати FYI, поддержка .NET 6 заканчивается позже, чем .NET 7 (потому что это LTS), так что есть основание предпочесть именно его даже сейчас для нового продукта.
  • Реализовать ajax в asp dot net core 6?

    @mvv-rus
    делаешь запрос к api-ручке на бэке

    Offtopic. Интересно, откуда пошла мода обзывать "handler" по-русски "ручкой"? По словарю ведь "ручка" - это "handle", а "handler" - это обработчик.