Задать вопрос
  • Как лучше хранить данные фиксированных таблиц в JSON или в отдельных полях?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Касательно БД ответ зависит о того, что вы с этими данными, в основном, делать будете. Если просто выводить весь набор, без (или почти без) фильтрации, поиска и т.д. на бэке, то лучше хранить объекты в том виде, в котором они через API отдаваться будут, т.е. в JSON. Если активно будете пользоваться поиском и фильтрацией по свойствам объектов, то лучше хранить свойства объектов - по крайней мере, используемые для поиска фильтрации, а, возможно, и все - как отдельные поля БД. Остальные свойства при этом можно хранить и в JSON: современные БД, и, в частности, PostgreSQL, умеют с ним работать. Если ожидается что у разных объектов будет разный набор свойств, и по этому набору поиск/фильтрация не будет производиться (по крайней мере - часто), то таким свойствам совершенно точно место в JSON (или использовать альтернативный подходы, про которые пока писать не буду).
    Короче, выбор тут конкретный, и, нередко - творческий.
    Ответ написан
    Комментировать
  • Почему не удаляются папки?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Скорее всего, в этих папках есть открытые файлы. А Windows откладывает удаление папок и файлов до тех пор, пока все файлы закрыты не будут.
    Список открытых файлов и процессов, которые их открыли можно посмотреть с помощью утилит от Sysinternals (это уже давно часть MS) Process Explorer или handle.exe(с командной строки), см. например https://serverfault.com/questions/1966/how-do-you-...
    Ну, а дальше разбирайтесь, что с этими процессами делать.
    Ответ написан
  • Как Найти этот предел не используя правило лопиталя?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Расписывать все преобразования не буду, изложу идею.
    1. Раскрыть тангенс tg(x) по определению, как sin(x)/cos(x)
    2. Расписать sin(2x) и cos(2x) по формуле синуса и косинуса двойного угла
    3. Сократить числитель и знаменатель на 2*sin(x)
    4. Привести выражение в числителе к общему знаменателю, перенести этот знаменатель вниз в основному знаменателю и сократить члены в числителе; в числителе останется sin(x)^2, в знаменателе - произведение трех сомножителей: -(1-cos(x)) и ещё двух, имеющих пределом 1
    5. Выделить из числителя сомножитель (1-cos(x)) (см. в комментариях к предыдущему ответу) и сократить на него числитель и знаментаель

    После этого в знаменателе не останется выржений, стремящих к 0, и можно будет посчитать предел нормальнм образом. Получится -2
    Ответ написан
  • Почему не доступна видимость занятости пользователей в Outlook?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Разрешение для этого пользователя на папки Календарь п/я тех пользователей, чье расписние желаете видеть, посмотрите.
    Ответ написан
  • Может ли вредоносное ПО запуститься без автозапуска и планировщика?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    В дополнение: есть такая утилита от Sysinternals (это уже давно часть Microsoft), она показывает все места, откуда возможен автоматический запуск, и что в этих местах содержится.
    Ответ написан
    2 комментария
  • Почему я не могу выбрать проект для дебага?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Если надо один раз: правой кнопкой мыши на нужный проект -> Debug -> Start New Instance
    Если надо изменить на постоянку: правой кнопкой мыши на нужный проект -> Configure Startup Project...
    или Меню->Project->Startup Project...
    Предполагается, что все эти проекты входят в одно Решение (Solution)
    Ответ написан
    Комментировать
  • Пользователь с ipv6 localhost с именем совпадающим c именем компа пытается авторизоваться в системе. Что это может быть?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Коды ошибки показывают, что какая-то программа пытается подключиться к вашему компьютеру с него самого или, возможно, - с другого компьютера через какую-то выполняющуюся на вашем компьютерее программу, типа веб-сервера, через сеть с указанной (и не существующей) учетной записью.
    Чтобы понять, какая программа на вашем компьютере это пытается, попробуйте включить ненадолго аудит процессов, чтобы получить сведения о програмах и поискать корреляцию.
    Ответ написан
    Комментировать
  • Ошибка выпуска сертификата Enterprise CS. Не могу выпустить серт под админом, поможете?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    У вас проблема с профилем пользователя на машине, с которой вы пытаетесь выпустить сертификат.
    Закрытый ключ сертификата дожен храниться в профиле пользователя, а у вас там пользователь работает с временным профилем.
    Разбирайтесь с загрузкой профиля при входе в систему: ищите события в журнале событий в момент входа, описывающие ошибку.
    Ответ написан
  • Почтовый сервер не отправляет письма из-за ошибки SMTP, что не так?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Раз пишет про ошибку установки соединения, то для начала проверьте, идет ли ping и подключение по telnet на 25 порт.
    Ответ написан
  • Автоматическая очистка DNS записей в AD и Репликация Sysvol?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    По п.2: эта проверка всего лишь проверяет наличие событий ошибок и предупреждений в журнале событий репликации DFS за последние 24 часа (или от момента запуска службы, если он был в течение этих 24 часов). Открывайте журнал и смотрите, что у вас там за события. Чтобы ничего не упустить, рекомендуется перед этим перезапустить службу репликации DFS и подождать минут пять (а лучше - 15): некоторые ошибки фиксируются только при запуске.
    Для работы ровно одного контроллера репликация SYSVOL не нужна (очевидно), но желательно ее все-таки починить, если что.
    Ответ написан
  • Что требуется для почты на физически разделенных серверах и доменах (теория)?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    1. Чтобы Exchange Server принимал почту для другого домена, этот домен в нем должен быть прописан в Обслуживаемых доменах с типом "Внутренняя ретрансляция". А для фактической отправки почты на другой домен нужно создать соединитель отправки для этого домена с назначением (smarthost) на сервер, фактически обслуживающий этот домен. Сервер на том конце может быть совершенно любым сервером SMTP.
    2. Адреса для п/я в Exchange настраиваются политиками адресов: в политике должен быть прописан первичный домен для адреса SMTP (используется и для отправки и для приема) и может быть несколько вторичных доменов. На той стороне, где нужно поменять адреса, просто добавьте в политику нужный домен с нужным типом. Кстати, если политика поменяет первичнй адрес п/я, то его бывший первичный адрес останется в качестве вторичного, так что, если новым пользователям не нужно добавлять адреса из старого домена, то в политике можно просто заменить первичный домен на новый, не оставляя старый вторичным.
    3. Чтобы письма с Exchange с адресом его обслуживаемого домена могли отправляться на другой сервер SMTP (в том числе - в Exchange в другом лесу), нужно сменить тип этого домена с полномочного на внутреннюю ретрансляциию и создать соединитель отправки аналогично п.1
    4. Вам наверняка потребуется синхронизировать адресные книги обоих Exchange. Раньше для этого можно было использовать бесплатный упрощенный вариант Microsoft Identity Integration Server (названия у него были разные, но суть одна: синхронизация AD между разными лесами, так чтобы пользователи с п/я из одного леса отображались как контакты в другом). Остался ли он сейчас - не интересовался. Но, в принципе, это может делаться и скриптом.
    5. Вариантов совместного использования Exchange много разных (например, можно сделать общие календари). Но тут я их рассматривать не буду - вы все равно, скорее всего, захотите все это поскорее мигрировать в один лес. Но если интересно - ищите книги/документацию по Exchange 2007: эта функция (называется "федерация") в современном виде появилась там, и лучшие описания относятся именно к этой версии. С тех пор мало что поменялось, потому что MS пошла в облака.
    6. При миграции есть возможность заводить п/я в одном лесу для пользователей из другого, доверенного леса (называется это Linked Mailbox, как по-русски - точно не помню). Для этого, кстати,в Exchange есть скрипт (его использовали для подготовки миграции с ADMT или ему подобными).
    Ответ написан
    Комментировать
  • Как в Powershell вывести сообщение из логов полностью?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Get-WinEvent -LogName Application -MaxEvents 10 | Format-List Machinename, TimeCreated, Message
    Ответ написан
    Комментировать
  • Почему не работает замена буфера?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Так, как вы сделали, приложения для Windows GUI не пишутся. У вас цикл с ожиданием сделан совершенно неправильно.
    Обработка всего графического интерфейса в программе (в том числе и буфера обмена) в Windows выполняется одним потоком, через цикл сообщений. А вы этот поток захватили и не отдаете. Возможно, именно поэтому не работает и установка содержимого буфера обмена: ЕМНИП она тоже реализована через сообщения (но точно не помню), а шанс обработать очередь сообщний у вашей программы нет.
    Короче, переписывайте цикл чтобы никаких Thread.Sleep в нем не было. Например - добавляйте в форму таймер (System.Windows.Forms.Timer) и переносите вашу обработку буфера обмена в обработчик его события Tick.
    А там уже смотрите - работает она, или нет.
    Ответ написан
    Комментировать
  • Как хранить товары с различными опциями в БД?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Ответ на вопрос "как хранить" зависит от того, какие данные вы будете запрашивать. То есть - от представлений данных, с которыми работает ваша программа (программы). Именно на основе этих представлений синтезируется полная модель даннных, хранящаяся в БД.
    В свое время, лет 25 назад, был (может, и сейчас есть) стандартизированный подход, называвшийся IDEF1 (это имя из стандарта) или Entity-RelationShip (это название процедуры), позволявший формальным образом синтезировать из этих, частных, представлений полную модель данных. И были программы, которые позволяли это делать. Я одной такой пользовался, ERwin называлась (AFAIK она жива и сейчас), но, в принципе, нужные процедуры можно выполнять и вручную. Описание процедуры на русском есть, как минимум одно, которое я знаю - в старой книге "Мартин Дж. Организация баз данных в вычислительных..."
    Короче, синтез модели ваших данных - это ваша задача, связанная со специфическими вашими задачами.
    Судя по информации из вашего вопроса, я могу только сказать, что:
    1. этот вариант вам явно не походит: данные из представления "Товары в корзине" включают товары из всех категорий, так что отделные таблицы для каждой категории - это костыль: ходить можно, а бежать - уже нет.
    2. В ItemOptions можно хранить данные для всех категорий - достаточно указать в каждой записи дополнительно к идентификатору товара идентификатор категории и идентификатор свойства. Потребуются ещё таблица категорий (идентификатор категории как первичный ключ плюс дополнительная информаци) и таблица свойств для каждой из категорий (идентифкатор свойства как первичный ключ, идентификатор категории - внешний, плюс дополнительная информация). Схема получается не очень уклюжая, но для работы в рамках реляционной модели более-менее годная (я когда-то такую и делал и с ней работал, но это было жутко давно). Насколько для вас такая схема пригодна - зависит от ваших моделей предствалений: например, будете ли вы в Корзине указывать дополнительную информацию из ItemOptions.
    3. NoSQL - это название больше коммерческое, а не техничекое: оно включает много разных технологий хранения в БД, единственным общим признаком которых является, что они - не реляционные. Под эту задачу мне видится годным вариант навигационной БД (это где каждая запись содержит физические ссылки на связанные с ней записи): сетевая, например. В настоящее время такие БД иногда ещё проходят под псевдонимом "графовая". Но, опять же, смотрите на нужные вам представления, в данном случае - обращайте внимание на пути доступа к данным (эти самые ссылки): навигационные БД в этом плане не так гибки, как реляционные, и отсутствие нужных ссылок может заставить ходить по кривым путям и убить тем самым производительность.
    Но это все теория, а что там сейчас на практике творится - я с уверенностью сказать не могу. Насколько я понимаю, там надо смотреь возможности конкретной СУБД - тем более, что производители часто называют их словом "гибридная", и надо понимать, что в этот гибрид попадает.
    Ответ написан
    2 комментария
  • Как в Windows Server DHCP добавить ip адрес в другой пул?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Во-первых, вы сделали суперобласть, включающую обе эти области ("пулы", если по-вашему)?
    Во вторых, если сделали, то проверьте MAC в записи аренды того адреса, который выдан: там иногда бывают чудеса - в виде дополнительных нулей, например.
    Ответ написан
    Комментировать
  • C# SqlTransaction блочит таблицу, как обойти блокировку или что делаю не так?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Игрался с уровнями блокировок connection.BeginTransaction(IsolationLevel.....) ни к чему это не привело.

    Попробуйте обе транзации - и основную, и в мелком методе - делать с уровнем изоляции Snapshot.
    По умолчанию изоляция транзакций в MS SQL реализуется через блокировки (изначально - обрабатываемых записей, но может переползти и на всю таблицу).
    А вообще, при работе с незакрытй транзакциейоя бы передавал в мелкий метод то подключение, на котором открыта транзакция, чтобы он работал с ней. Можно сделать этот параметр необязательным (null по умолчанию) и в случае, если он не передан - открывать дополнительное подключение.
    Ответ написан
    2 комментария
  • Код ошибки 10016 на Windows Server 2016 MSSQL, как исправить?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Чтобы устранить: запустите консоль конфигурирования DCOM (например dcomcfng.exe), перейдите в раздел Component Services/My Computer/DCOM Config, найдите там это приложение по имени (это некий "Flight API Settings Broker") или по AppId из события и дайте нужное разрешение указанной в событии учетной записи.
    Ответ написан
  • Как найти причину блокировки аккаунтов в Active Directory?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Включите аудит неудачных попыток входа в систему (через групповую политику) и смотрите в журналах Security событий Windows на КД и на всех серверах, куда пользователи не могут получить доступ.
    Предполагаемая причина, особенно, если у вас принята политика регулярной смены паролей для пользователей - устаревший запомненный пароль на устройствах пользователей. Обучите пользователей самостоятельно смотреть и удалять эти пароли.
    Ответ написан
  • Microsoft Exchange 2016 перестал работать после миграции на другой хост. Как исправить?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Чтобы вам помочь по существу, информации откровенно не хватает.
    Для ее получения, во-первых, надо анализировать журналы событий: какие там ошибки и предупреждения, во-вторых - логи IIS. У вас явно что-то с IIS. Запуск служб может не говорить ни о чем: например, вполне может не монтироваться БД (кажется, не ваш случай, но...).
    EMS не работает по понятной причине - он тоже в норме через IIS работает. Но если надо - то можно из Powershell добраться напрямую к Exchange: импортировать в сессию нужный для этого модуль командой
    Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn

    Запускать Powershell для этого надо пользователем, входящим (прямо или косвенно) в группы администраторрв леса и домена, где стоит Exchange, и администратора на самом Exchange, в режиме адинистратора.

    PS Как мигрировали-то? Вопрос, потому что сценарии миграции для виртуализованного Exchange поддерживаются весьма относительно. В частности, миграции через сохранение состояния VM не поддерживаются. Live Migration на Hyper-V поддерживается, на других гипервизорах - надо смотреть.
    Ответ написан
  • Как правильно называть такую композицию классов?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    IMHO это - вариант шаблона "Абстрактная фабрика"
    Первая приходящая на ум альтернтатива - та, в которой этот шаблон используется традиционно: реализации наследуются от абстрактного класса фабрики (см. пример для C# в статье по ссылке), а не получаются аггрегированием фактичекой реализации со статическим классом, предостатвляющим интерфейс, как у вас.
    Ответ написан
    Комментировать