Задать вопрос
  • Миграция группы серверов windows 2003 на 2019?

    @NortheR73
    системный инженер
    Поддержу Alexey Dmitriev
    В целом, порядок действий вроде простой:
    1. В каждом офисе поднимаете новый КД на 2019. Схема и уровень леса = 2003, их пока не трогаете и ничего с ними не делаете. Ждете репликацию, проверяете ошибки.
    2. По очереди понижаете КД на 2003 до рядовых серверов и выводите их из домена. Ждете репликацию, проверяете ошибки.
    3. После вывода последнего КД на 2003 или в процессе вывода выполняете передачу (захват) FSMO-ролей. Ждете репликацию, проверяете ошибки.
    4. Меняете версию схемы AD. Ждете репликацию, проверяете ошибки.
    5. Поднимаете уровень леса/домена до максимально возможного (Windows Server 2016). Ждете репликацию, проверяете ошибки.
    Ответ написан
    3 комментария
  • Генератор случайных чисел ИНОГДА (очень редко!) возвращает NaN?

    adeshere
    @adeshere Автор вопроса
    РАН, Фортран, временные ряды
    Спустя полтора года, завеса тайны все-таки начала спадать!
    Во-первых, благодаря вот этому совету Дмитрия Чернова, баг удалось локализовать. А именно, Дмитрий предположил, что проблему надо искать в контексте x87 FPU, и что добавление
    пары asm- команд
    Прямую вставку asm- команд в код мой фортран-компилятор не умеет, но все необходимое делает ключ Qfp-stack-check
    в подозрительных местах приведет к вылету программы по Access Violation именно в том месте, где что-то пошло не так. А не спустя какое-то время, когда я снова полезу в FPU и получу Nan, например, в ГСЧ. Эта идея сработала, и я получил Access Violation в совершенно безопасной (как мне казалось)
    функции
    SUBROUTINE SCREEN_PUTL0_TIME(TEXT)
    USE ABD_INC;  USE HEADERS
    character, intent(in) :: text*(*)
    integer*4, save :: isw=0
    c
    c     При самом первом вызове таймера isw=0, функция вернет 0
    c     При последующих (isw=1) - вернет интервал от момента инициализации
    t=timer_mm(5,isw) 
    isw=1
    if (t < $Screen_counter_time) return
    c    В крайнем  случае (если в момент начала внешнего цикла таймер уже
    c    инициализирован) функция первый раз напечатает % сразу при старте,
    c    а не через $Screen_counter_time после запуска цикла
    c   
       call screen_putl0(text)
       t=timer_mm(5,0)         ! Реинициализация таймера после печати строки
    end

    Эта функция печатает на экран % выполнения (он передается в строке TEXT), но с интервалом не менее $Screen_counter_time. Для проверки времени, прошедшего с прошлой печати, вызывается самодельный таймер t=timer_mm(5,isw) Первый параметр функции - это номер таймера (их там у меня целый массив для разных нужд). А второй параметр работает так: если isw=0, то таймер засекает время, а в остальных случаях возвращает число секунд, прошедших с момента инициализации счетчика. Ну вот так было когда-то сделано, чтобы обойтись одной функцией вместо двух....
    Таким образом, когда я дергаю инициализацию таймера, то его возвращаемое значение меня не интересует. Именно это и происходит в предпоследней строке кода выше:
    t=timer_mm(5,0)
    Результат выполнения функции как бы присваивается переменной t, но больше она нигде не используется . Как оказалось, именно здесь и была зарыта собака.

    А дальше уже было проще. В коде под спойлером у меня есть вызов функции типа real*4, от которого мне был нужен только побочный эффект (инициализация таймера), а вот возвращаемое значение функции нигде не используется. В принципе,
    это легально
    По идее, компилятор в такой ситуации должен после вызова функции восстановить стек x87 FPU, а возвращаемое значение никуда не копировать. В других местах кода у меня есть аналогичные вызовы (когда возвращаемое значение не используется), и это не приводит к каким-то багам. Ну и язык официально нигде не требует, чтобы возвращаемое значение функции обязательно было куда-то использовано ;-)

    Но как оказалось, именно это и провоцировало проблему. Этот фрагмент библиотеки у меня состоит из кучи очень небольших (5-10 строк) взаимосвязанных функций с частично повторяющимся кодом. Оптимизатор делал из них жуткое спагетти, дробя эти функции на еще более мелкие фрагменты и инлайня их направо и налево. И, видимо, где-то в ходе этих оптимизаций он "забывал" восстановить (очистить?) стек FPU.

    В общем, для исправления бага оказалось достаточно заменить локальную переменную t на глобальную. Про нее оптимизатор не знает - будет ли она нужна, или нет. Поэтому он просто вынужден извлекать из сопроцессора результат FP-вычисления, чтобы запихнуть его в это место ;-)

    Огромное спасибо Дмитрию, который сначала выдвинул правильную версию происхождения бага, а потом помог его точно локализовать и убрать! Тестовая программа работает уже час и пока ни одного Nan-а не появилось. ;-)
    Ответ написан
    Комментировать
  • Поддерживается ли email адрес только из нижнего подчуркивания?

    В теории - это валидная почта.
    НО
    То что cloudflare такое позволяет - не значит что все отправители смогут отправить письмо на такой адрес. И даже не значит, что cloudflare сможет принять письмо на него.
    Практически никто не соблюдает спецификацию на 100%.
    А может нужно просто подождать пару часов - и только после этого письмо можно будет отправить.

    В любом случае следует пойти по совету hint000 и почитать, что за ошибка произошла
    Ответ написан
    Комментировать
  • Есть ли нагрузка на генератор при выдаче электричества в общественную сеть (микрогенерация)?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Если вы отдаёте мощность - не важно куда (в сеть или на обогреватель), то эту мощность нужно вырабатывать, а значит нагрузка будет, и будет она пропорциональна отдаваемой мощности.
    Сколько мощности будет отдаваться в сеть будет решать ваш контроллер согласно своих характеристик и настроек. Соответствующую нагрузку он и будет перекладывать на плечи вашего генератора.
    Чтобы отдать энергию в сеть, вам нужен инвертор, который синхронизируется своим синусом с сетью и будет передавать в сеть некоторую мощность. В зависимости от алгоритма работы этого инвертора мощность, отнимаемая от генератора, может подниматься скачком, или нарастать плавно - это зависит только от дороговизны вашего инвертора и контроллера.
    Ответ написан
    3 комментария
  • Поддерживает AOSP прошивка Dual GPS?

    @pfg21
    ex-турист
    функциональность использования L5 находится внутри модуля жпс.
    Андроиду модуль выдает готовые геоданные, несколько дополнительных показателей (та же точность геоданных, видимость спутников) и дает доступ к некоторым управляющим функциям (a-gps загрузить).
    какие жпс-системы и какие ихние каналы использует модуль андроиду до лампочки.

    т.е. в андроиде должен быть драйвер для конкретного модуля жпс.
    если его нет - то и суда нет.
    Ответ написан
    2 комментария
  • Почему не запускается autorun.inf?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Параметры
    64daa20a6e02b116273248.png alt="image"/>

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

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Ввести дополнительную колонку с формулой и по ней делать аналитику
    64d87b1f67125820653885.png
    Ответ написан
    1 комментарий
  • Проброс порта без белого ip?

    ValdikSS
    @ValdikSS
    Общий принцип установки соединения при наличии NAT с обеих сторон: https://github.com/ValdikSS/nat-traversal-github-a...

    Реализации:
    • tinc
    • zerotier
    • tailscale
    • unetd
    Ответ написан
    2 комментария
  • Почему моргает экран?

    @tarasovc47
    Эникей со стажем))
    Вот у распространителя драйверпака и спрашивай.
    Хоспади, десятка уже давно умеет автоматом дрова натягивать и корректно работать в 99% случаев (кроме древнего/редкого/самодельного оборудования), но нет, надо привычки из XPюши/7ки тянуть?
    Простите, но ближайшая аналогия
    воспользоваться унитазом, но смывать не кнопкой из бачка, в котором вода есть, а таскать воду ведром из речки. Оно конечно можно, но ЗАЧЕМ?
    Ответ написан
    2 комментария
  • Как запустить Windows XP x86 (32-bit) с GPT-диска?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Ответ: никак (разве что вы перепишете часть ядра XP, которая работает с томами на диске, а также - загрузчик). Как нам сообщает "Windows and GPT FAQ", диски GPT поддердиваются только в WinXP 64-bit (которая основана на коде Win2K3 Server 64-bit, а не на коде обычной WinXP) и только как диски с данными: ни загрузка с них, ни размещение на них папки WINDOWS не поддерживаются.
    Ответ написан
    Комментировать
  • Как на самом деле работает параллелизм?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Ну, книги Вам уже посоветовал @firedragon
    Я же хочу вкратце ответить на этот замечательный вопрос.
    Давайте разберемся с одним CPU без потоков...
    Когда процессоры были большими, а люди... В общем, на заре компухтеров был только один поток, и чтобы получить многозадачность, придумали ОС с вытеснением задач.
    Смысл в том, что когда завершается "программа", то запускается следующая в очереди (очередь с приоритетом). Задача работает до тех пор, пока не завершится.

    Так как задача иногда могла работать очень долго, и ничего не делать во время операций ввода-вывода то придумали прерывания, чтобы ввод-вывод сигнализировал о проделанной операции (окончании печати например, или нажатии клавиш). Тогда появились операционные системы с вытеснением задач по прерыванию. Здравствуйте мейнфреймы!

    Но прерывания на ввод-вывод иногда можно ждать долго, и не дождаться. Но умные дяди придумали геренировать прерывания сами себе, от таймера. Да, в молодости это просто кварц и конденсатор, на ножку процессора. И вот, появились ОС с реальной многозадачностью, где система получает управление через сторого определенные промежутки времени - тики или клоки.

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

    Ах, да, молодость процессоров - одно прерывание на все сразу :) И крутись, как хочешь :)
    Ответ написан
    1 комментарий
  • Почему не работает автоматическая настройка времени SNTP Yealink SIP-T30?

    @Disel0k
    - сервер времени не доступен с телефона (не прописан шлюз, запрещен выход в интернет)
    - на телефоне не правильно указан часовой пояс
    - указан SNTP сервер но выбран другой способ синхронизации времени
    Ответ написан
    Комментировать
  • В чем может быть проблема маршрутизации?

    @Disel0k
    например в порядке правил фаерволла - 12 правило делает бесполезным 13... а уж что там внутри этих правил так и вообще хз.
    А в целом вопрос из серии у меня машина не едет и фото багажника, движка и запаски...
    Ответ написан
    2 комментария
  • Организация сети на 2-х роутерах с OpenWRT, как объединить подсети?

    ArteMoon
    @ArteMoon
    Развиваюсь
    Прописать на обоих роутерах маршруты в сегменты друг друга, но т.к. у вас соединение этих устройств происходит только по wi-fi и это соединение для роутера 2 является wan подключением, вероятно для него активны правила файрвола, в которые необходимо добавить исключения для сегмента роутера 1, а может быть вообще отключить.
    Ответ написан
    1 комментарий
  • Что можно делать с помощью Docker?

    karabanov
    @karabanov Куратор тега Docker
    Системный администратор
    Docker это набор сервисов и утилит созданных для удобного управления встроенными в ядро Linux технологиями Namespace (для изоляции процессов) и CGroups (для управления ресурсами).

    По мимо Docker существует ряд инструментов призванных делать тоже самое Systemd-Nspawn, LXC, Podman, etc - все они работают похожим образом и точно так же изолируют Linux-овые процессы. Docker самый распространённый и популярный из-за стандартизации процесса сборки образа и удобных утилит для управления жизненным циклом контейнера, Docker это как libc - только в разрезе контейнеров.

    Контейнер можно запустить не имея ни одного из этих инструментов с помощью утилиты unshare - она позволяет точно также управлять Namespac-ами (управлять ресурсами придётся вручную добавив процесс в CGroups).

    Контейнер это изолированный Linux процесс - соответственно запустить получиться только Linux-овый софт и больше ничего. Контейнер это не маленькая виртуальная машина, контейнер это не Java для всего. Конетейнер это только средство запустить Linux-овый процесс в изолированной среде (и, возможно, ограничить его по ресурсам), например запустить приложение требующее наличия в системе конкретных зависимостей, но отсутствующих по факту. Или запустить в целях разработки конкретную версию PHP, Python, Ruby, etc при этом избежав конфликта зависимостей и Dependency hell из-за несовместимых библиотек на хостовой машине.

    Представь себе ситуацию, когда ядро Linux загрузилось и запустило только один (какой угодно) процесс, присвоив ему PID 1 - вот так контейнер выглядит изнутри.

    PS
    Есть конетйнеры на Windows Core они запустятся только на Windows и служат для изоляции только Windows софта и для них есть набор утилит, которые распространяются в виде набора бинарных файлов тоже, почему-то, под именемем Docker (не путать с Docker-Desktop, так как Docker-Desktop - это набор сервисов позволяющих виртуализировать ядро Linux и тем самым получить возможность запустить Linux процессы на Windows или MacOS).
    Ответ написан
    Комментировать
  • Как расширить файловую систему в raid массиве?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Вы добавили в зеркальный RAID1 еще дисков - в результате получили кучу копий данных, вместо увеличения объема.
    Вам нужно делать массив RAID10. Другими словами: конвертировать в RAID0 и уже существующий превратить в RAID10- https://www.berthon.eu/2017/converting-raid1-to-ra...
    Бекапы настоятельно приветствуются!
    Ответ написан
    Комментировать
  • Как сделать чтобы на сенсорный экран не реагировала мышка?

    Никак. Либо написать свой драйвер сенсорного экрана.
    Ответ написан
    Комментировать
  • Как посчитать стрит флеш без одной карты на флопе?

    1. В колоде 52 карты.
    2. При этом две карты у тебя на руках.
    3. Стрит флеш - это когда карты идут по порядку и все одной масти.
    4. Тк у нас девятки, то мы ждём, что будут такие наборы:
    - 6, 7, 8
    - 7, 8, 10
    - 8, 10, J
    - 10, J, Q
    Всего 8 благоприятных исходов

    Сколько всего возможно исходов?
    Нам нужно посчитать, сколько всего уникальных наборов по 3 карты можно получить из колоды в 50 карт.
    Операция, которая даст нам это количество название "сочетание из 50 по 3"
    И равняется оно C(50,3) = 50! / (3! * (50 -3)!)

    Делим 8 на С(50,3) и получаем примерно 0.0408%
    Ну и шанс, что последняя карта соберёт нам стрит флеш равен 4.25% (2/47)
    Ну и если самая самая последняя карта, если предыдущая не дала нам благоприятный исход - 2/46 ~ 4.3%

    Надеюсь, что нигде не ошибся.
    Ответ написан
  • Почему pn переход транзистора не уходит в короткое замыкание, ведь пластины прижаты друг к другу?

    Ocelot
    @Ocelot
    Оксид кремния тут ни при чём.
    Для начала давайте разберёмся, почему диод не проводит ток в обратном направлении, хотя p- и n- области соприкасаются. Потому что носители заряда (электроны и дырки) двигаются в разные стороны от pn-перехода, и там образуется область без носителей заряда, по сути изолятор.
    С транзистором та же картина: один из pn-переходов смещён в обратном направлении, вокруг него создаётся обеднённая область, ток не идёт. Если через базу пропускать управляющий ток, в эту область поступают электроны, проводимость восстанавливается, транзистор открывается. Это если очень упрощённо.
    Ответ написан
    4 комментария