• Как из одного сегмента вызвать функцию другого сегмента?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Мой сегмент:
    ┃ .text ┃ 0x7FFF0000 ┃ 0x80040000 ┃ 0001 ┃

    Так делать не надо: 0x80000000 - это граница адресного пространства пользователя для обычных 32-битных процессов, не помеченных как использующие расширенное адресное пространство. А перед ней располагаются используемые ядром данные (информация о процессе и потоках в нем), размещаемые в памяти пользовательского режима. То есть, вы напрасно думаете, что вы разместили сегмент в свободной, никем не используемой памяти.
    Ответ написан
  • Как закрыть доступ к домену компам не находящиеся в домене?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Есть старое уже руководство от Microsoft по настройке Windows Firewall для этой цели (называлось сие Domain Isolation)
    Ответ написан
    Комментировать
  • Как выполнить функцию после завершения всех задач?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Используйте метод Task.WaitAll
    Ссылки на все эти задачи, при этом надо, кончено не бросать без присмотра при перезаписи переменной outer, а сохранить (например, в массив Task[])
    Ответ написан
    Комментировать
  • MsSQL ошибка при создание лога транзакций?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Возможно проблема в чистке журнала транзакций (база переводится в simple, shkrink ну и обратно в full), но на другом сервере проблем не наблюдаю с этим.

    Да, это как раз может вызывать вашу ошибку: если после полного резервного копирования происходит изменение модели восстановления базы (full->simple->full), и в момент, когда БД находится в simple, происходит усечение журнала транзакций, то цепочка записей транзакций после полного копирования оказывается нарушенной. А если усечения не происходит, как на другом сервере, - то вам везет. Поэтому так, как вы делаете, делать не надо.
    Вы сжимаете именно журнал транзакций, а не саму БД, я правильно понял? В таком случае посмотрите, а надо ли это вам. Потому что резервное компирование журнала транзакций очищает занятое место в его файле. И это место в дальнейшем (через некоторый промедуток времени - после переключения на другой логический журнал) может использоваться повторно. В результате в стационарном случае - при примерно одинакой частоте трназакций - файл журнала расти перестает.
    Если же вам действительно потребуется сжать журнал - например, после массовй операции типа загрузки большого объема данных - то это можно сделать, не меняя модель восстановления БД. Делается это последовательностью операций "резервное копирование журнала"->"повторное резервное копирование журнала"(лучше после паузы, чтобы преключение на следующий пустой логический журнал, который будет в начале файла, точно произошло)->"усечение журнала с конца"(truncate). Иногда, правда, эту последовательность может потребоваться повторить (если переключения на пустой логиченский журнал в начале файла не произошло).
    А усечение журнала трназакций с конца - это очень быстрая операция (потому что никакие записи журнала никуда не перемещаются), так что ее можно делать обычно даже в период номинальной нагрузки, днем.
    Ответ написан
    1 комментарий
  • Как правильно разделить логику между контроллерами с usecases?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Абстрактно "правильного" варианта реализации нет, всё зависит от конкретных деталей.
    В частности, посмотрите, используют ли ваши методы действий одни и те же внешние зависимости, или каждый - свои. Во втором случае некотоый смысл разнести их по разным контролерам есть: снизить сложность, которую дают лишние, не обусловленые задачей связи (coupling). А первом случае - нет (но может и появиться по другим основаниям).

    А вся эта теория "чистой архитектуры" - она абстрактная. Ее полезно знать, чтобы иметь возможность рассмотреть больше вариантов решения, и видеть больше про возможных подводных камней, а вот фанатично ей следовать не стоит (если, конечно, ваша задача - сделать что-то полезное, а не спихнуть курсовик и т.п.).
    Ответ написан
    Комментировать
  • Как прописать настройки DNS для добавления компьютера в домен Windows?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Нет, нельзя.
    В hosts можно прописать только записи типа A, а обнаружение домена работает через записи типа SRV.

    PS А с чем связано такое странное желание? Если с тем, что вам нужно разрешать ещё и имена в интернете, то можно настроить на сервере DNS на контроллере домена пересылку на тот сервер, который разрешает имена в интернете. Либо - позволить контроллеру домена свободно рассылать запросы DNS по всему интернету - тогда он сам обратится к нужным серверам-владельцам зон, начиная с корневых (их список у него есть).
    Ответ написан
    4 комментария
  • Будет ли корректной установка Docker на Windows Server и последующее развёртывание, например, Squid и DNS?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Если вам нужно ПО под Linux, чтобы оно физически было размещено на сервере под Windows - cоздайте на сервере виртуальную машину в Hyper-V и поставьте Linux на нее. А лучше - посмотрите, нет ли аналогов этого ПО под Windows. Например, сервер DNS уже есть в Windows Server из коробки.
    Ответ написан
    Комментировать
  • Как сменить FQDN Exchange сервера?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    В Exchange Management Shell (который Powershell) командой:
    Set-SendConnector -Identity <SendConnectorIdParameter> -FQDN <fqdn>


    SendConnectorIdParameter - имя соединителя, через который идет отправка почты в Интернет
    fqdn - имя, которое разрешается во внешний белый IP сервера, желательно чтобы IP-адрес разрешался в это имя (этот вопрос решается с провадером: нужно изменить или добавить в зоне обратного разрешения запись PTR).
    Ответ написан
    Комментировать
  • Почему не удается подключиться к веб серверу?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Вы делаете приложение на ASP.NET Core? В таком случае это означает, что не запустилось приложение. У вас там должна текстовая консоль при запусе выражения вылезать. Посмотрите, что там написано.
    Или в окне Output/Debug - туда это тоже дублируется.
    Ответ написан
    Комментировать
  • В связи с чем может разваливаться база данных?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Чтобы убрать ошибки, используйте gfix

    А вообще, там что-то с сервером явно не то: битая память, сбойной диск или подключение к диску... Или просто часто обрубается по питанию.
    Ответ написан
    Комментировать
  • WMI почему отказывает в доступе?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Руководство от MS - здесь там есть ссылки и на руководство по настройке удаленного доступа к WMI, и на руководство по устранению неисправностей.
    Ответ написан
  • Как использовать логин пароль в NSSM при создании службы?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Дошёл до более менее адекватной ошибки, это указав ObjectName \\Domain\User 555555, получаю


    Попробуйте Domain\User, имя пользователя часто указывается так. Domain тут - имя домена AD, в котором существует пользователь - при условии что компьютер включен в этот домен или в домен, который доверяет этому. Если компьютер не в домене или пользователь - локальный, то вместо имени домена указывается имя компьютера.
    Ответ написан
    1 комментарий
  • Какие нужны условия, чтобы выставить тип загрузки службы - BOOT?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Вы, случайно, не пытаетесь установить этот тип запуска для обычной службы - программы пользовательского режима которую запускает Service Control Manager? Если так, то так делать нельзя: типы загрузки boot и system предназначены исключительно для драйверов режима ядра.
    Ответ написан
  • Что съело место на DPM сервере?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Пространство может быть занято теневыми копями содержимого диска.
    Посмотреть - vssadmin list shadowstorage из командной строки в режиме администратора. Удалить теневые копии можо тем же vssadmin, начинать надо с самой старой.
    Но не торопитесь ничего удалять: фактически это место может быть занято старыми версиями резервных копий. Не знаю, как там в DPM (не работал), но вот Windows Server backup совершенно точно использует старые версии файла с бэкапом (у него это - VHD) как способ хранения предыдущих бэкапов.
    Ответ написан
  • Как дождаться выполнения асинхронного метода?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    SomethingFuncCatch().Wait();
    В Wait дополнительно можно передать таймаут и/или CancellationToken (см. описание метода Task.Wait ).

    Только вот, боюсь, что вы не дождетесь когда закончится цикл
    while (i > 0)
    {
        Console.WriteLine("NewProcess started");
        i = i--;
    }

    Ибо вы в нем пытаетесь присвоить i то значение, которое было до уменьшения на 1.
    Ответ написан
  • Нормально ли использовать var вместо явной типизации в C#?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Вынесено из комментариев.
    Василий Банников , ну, что вам на это сказать?
    Сильно легче код писать таким образом.
    Писать - да, читать - it depends, как говорят англичане.

    Если тебе сложно понять смысл кода без типов - значит кто-то плохие имена дал переменным.
    А разве в legacy 4-5-летней выдержки, над которым поработало много программистов, хороших и разных, по-другому бывает? А ещё имена могут дать хорошие, понятные - но основанные на системе понятий, которая нетривиальна и не попала при этом в документацию. Чтобы понять, о чем я - попробуйте почитать исходники подсистемы маршрутизации в ASP.NET Core. лучше всего - после работы с чем-нибудь типа MVC или Razor Pages: сомневаюсь, что вы сразу въедете, что Model там и Model тут - это разные Model.

    А ещё бывает, что методы называются почти одинаково, но типы значений у них разные. Пример: builder.Services.AddOptions() и builder.Services.AddOptions<TOptions>() из кода конфигурирования контейнера сервисов, методы расширения IServiceCollection для Option Patterns - типы возвращаемых значений у них разные. А их ещё любят цеплять друг к другу к таким же методам через точку - вот и смотри потом, чой-то в ConfigureOptions какие-то лишние параметры вылезли.

    с анонимными типами без var работать было бы очень сложно.
    Правильный вопрос - зачем вообще заставлять работать с анонимными типами? Подозреваю, что их из-за маршрутизации в MVC завезли - как типы параметров, вместо того, чтобы передавать в методы генерации ссылок вместо IDictionary<String,Object>, как это оно там реально требуется. Но, в Microsoft решили, видимо, тогда не делать инициализаторы для словарей (при том, что потом всё равно сделали, не отвертелись), а притащить вместо них анонимные типы (интересно откуда - неужели прямо из JS?). Но это не точно. (Ага, в комментарии мне напомнили про LINQ)

    Тренд говорит об обратном - автоматический вывод типов сейчас есть практически во всех статически-типизированных языках в том или ином виде.
    Это потому что сейчас главное - быстрее писать MVP, для веба - особенно. Ну, а потом можно сказать волшебное слово: "Legacy".

    Ну и помни ещё, что ты же не в блокноте код пишешь
    Но читаешь-то ты его не только в IDE. В частности, MS в своей документации на сайте в примерах очень любит писать var - вот и выбирай потом, что делать: лезть прямо сразу в документацию по API (а ссылки отнюдь не прилагаются) или рисковать упустить что-то важное? А если ещё учесть, что сейчас принято документацию ограничивать примерами (MS любит, да) - оно вообще весело.

    Но, с другой стороны, автор вопроса, похоже, с трех- и более этажными дженериками ещё не сталкивался (ну, или забыл, как они выглядят) - там без var тоже грустно.
    Как-то так
    Ответ написан
    2 комментария
  • Для чего нужна отмена задач, кроме таймаутов и каналов?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Отмены задач используются, как ни странно, для отмены задач. А чтобы отменить задачу, это должно быть кому-нидуь нужно. Например, этим "кем-нибудь" часто бывает пользователь, которому результат задачи перестал быть нужным.

    В качестве примера: пользователь послал на сервер через веб-страницу запрос и ждет результата. Представим, что запрос - сложный, результат так сразу не получить, запрос выполняется, а пользователь ждет, потому что всё это понимает. Потом пользователю внезапно надоедает ждать и он посылает команду Отменить. Или - закрывает страницу. Так вот, по-хорошему, в этом случае надо отменить задачу, которая выполняет запрос, чтобы она не тратила впустую ресурсы сервера.

    А ещё отмена полезна для прерывания процессов потенциально бесконечных, типа смотреть, как горит огонь, как течет вода, как люди работают... :-)

    Таймауты тут не помогут в обоих случаях. В первом случае пользователь сам часто не знает, сколько он согласен ждать, а во втором - вообще нет никакого таймаута, ибо процесс бесконечен.
    Ответ написан
    Комментировать
  • Миграция вылетает по Stack Overflow. Есть ли ограничение на объем данных в миграции?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Причина ошибки, как пишется в сообщении о ней - переполнение стека. Размер стека для потогков определяется процессом, в котором работает приложение. Обычно он фиксирован и записан в заголовке .exe. Если при размещении веб-приложения в своем процессе (так делается запуск из Visual Studio) стека хватает, то настройте размещение приложения вне процесса и в IIS: документация - здесь, по умолчанию AFAIK для IIS используется размещение приложения ASP.NET Core внутри его рабочего процесса, и используется размер стека этого рабочего процесса.

    PS А вообще, я бы на вашем месте пересмотрел код миграций и использовал стек (локальные переменные методов имеющие тип значений, память, отводимая через stackalloc и т.п.) в нем по минимуму. Потому как требования к памяти приложения имеют свойство расти со временем, а стек задается фиксированной величиной.
    Ответ написан
    Комментировать
  • Имя "c" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Как исправить?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Запускать "операторы" из командной строки (cmd.exe в Windows или sh и пр. в *nix). Потому что синтаксис этих команд - не Powershell'овский. Ну, или переделать эти команды под Powershell.
    Ответ написан
    Комментировать
  • Почему на многих крупных сайтах не используются смысловые теги main,section, article, aside, header, footer?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Потому что современные веб-сайты основаны не на той концепции, которую продвигают теоретики-разработчики HTML.
    Вся эта смысловая разметка - она относится к коцепции документа как основного содержимого страниц. То есть - структурированного как текст содержимого, основное взаимодействие с которым - чтение и прочий просмотр. А в реальности большинсво крупных сайтов - это интерактивные приложения, у которых совершенно другая структура, в рамки "смысловой разметки" плохо впихуемая.

    Короче, смысловая разметка подобна Скрипачу: "А Скрипач не нужен, дорогой.".
    Ответ написан
    Комментировать