Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Зачем оставлять сайт доступным по http?

Лучший ответ:
Вариантов много. Например, если нужно сохранить совместимость с совсем старыми устройствами, которые не умеют в актуальные шифры, а делать шифрование криво-косо не хочется. Или, например, если сервис завязан на какие-то кастомные заголовки, приезжающие от мобильных операторов (номер телефона, например).
Но основная причина, имхо - вкусовщина или лень админов. При прочих равных лично я выбрал бы безусловный редирект.

Худший ответ:
Доброго времени суток!
Одинаковые HTTP- и HTTPS-сайты в выдаче, однозначно, плохо. В первую очередь, потому что поисковые системы воспринимают их как дубли. Во вторую очередь – безопасность. Гугл и некоторые браузеры подсвечивают такие сайты, как ненадежные. Поэтому, чтобы все было «по фен-шую» мы рекомендовали перейти полностью на защищенный протокол.
Вопрос: Как узнать приблизительную сложность алгоритма, зная время его выполнения?

Лучший ответ:
Модульная разность отношений Y к известному перечню сложностей {n,n^2,nlogn,n!,...}.
Ближайшая дробь, стремящаяся к единице, И одна из их взаимных разностей (расстояний) - стремящихся к нулю, и будет искомое значение.

Худший ответ:
Абстрагируясь от алгоритмов и их сложности в Big-O-нотации, задача сводится к подсчёту различий значений данной функции и функций-кандидатов на каком-то множестве контрольных точек.

Взять какой-то набор значений [x0, x1, ... xN].
Получить «правильные» y_true = [f(x0), f(x1), ... f(xN)]
Для каждой функции-кандидата из этих же x получить их «предсказания» y_pred = [Fn(x0), Fn(x1), ... Fn(xN)]

Определить, какая из функций меньше всего «ошиблась». Для этого сложить квадраты разниц y_true - y_pred выданных каждой из функций на наборе входных значений x

Наименьшая сумма укажет наиболее вероятного кандидата.

Например, 
x = [1, 2, 4, 8, 16, 32, 64]
f(x) = [y0, y1, y2, y3, y4, y5, y6]

// n
[1, 2, 4, 8, 16, 32, 64]
sum = (y0 - 1)^2 + (y1 - 2)^2 + (y2 - 4)^2 + ... + (y6 - 64)^2 = sum0

// n^2
[1, 4, 16, 64, 256, 1024, 4096]
sum =  (y0 - 1)^2 + (y1 - 4)^2 + (y2 - 16)^2 + ... + (y6 - 4096)^2 = sum1

// так же посчитать суммы ошибок для остальных функций:
// n * log(n),  n!

минимальное значение среди sumN укажет функцию, наиболее близкую к искомой.
Вопрос: Не могу понять логику работы json.Marshal. Почему на выходе пустой объект?

Лучший ответ:
Тут дело в том, что поле `text` у вас написано с маленькой буквы, а значит оно не экпортируемое.
Именно по этому такой результат. А когда вы напишите его с большой буквы - всё заработает как вы ожидаете.

Худший ответ:
type Test struct {
	Text string `json:"test"`
}
Вот так работает. Ответ нашел тут: Ссылка
Вопрос: Заочное или очное высшее для получения хорошей матбазы?

Лучший ответ:
Как эффективнее?
Не получать высшее образование. Если ваша цель - геймдев, то эффективно будет изучать геймдев. Если ваша цель - высшее образование, то эффективно будет идти на очную форму обучения.

Худший ответ:
Буду получать высшее.
Образование или диплом? Образование можно получить и без вуза.
на очном времени почти вообще
Никакой разницы. Ты либо хреначишь по 12 часов без выходных n лет на заочке, либо хреначишь по 12 часов без выходных n лет на очном( либо пускаешь сопли 4 года и выходишь с бумажкой)
пойти на очное или же изучать математику самостоятельно и быть на заочке? 
В вузе не учат. Ты и так и эдак будешь учить сам.
Вопрос: Как получить доступ к /dev/mem?

Лучший ответ:
Добавьте релевантного пользователя в группу kmem

Худший ответ:
Способ записи на I2C порт Tinker Board для imu датчиков без использования /dev/mem:

#include <sys/ioctl.h>
#include <unistd.h>

#define I2C_SLAVE	0x0703

fd_1 = open("/dev/i2c-1", O_RDWR /*чтение и запись*/);

ioctl( fd_1, I2C_SLAVE, _address /* Адресс устройства*/ );

bool BNO055::write8(bno055_reg_t reg, uint8_t value /*регистр устройства, данные*/)
{
  uint8_t buf[2] = { reg, value };

  if(write( fd_1, &buf, 2) != 2) {
      qDebug()<<"Ошибка записи I2C в регистр: "<<reg;
      return -1;
  }
  return true;
}
Вопрос: Возможно ли подключить юзера к конкретной точке доступа cAP?

Лучший ответ:
В разделе /caps-man access-list добавить mac-адрес ноута на нужный cap интерфейс, а на интерфейс any сделать reject для этого mac-адреса.

Худший ответ:
Еще как вариант заставлять "выкидывать" абонентов при слабом сигнале соединения.
Вопрос: Можно ли устроиться на работу в веб, откосив по дурке?

Лучший ответ:
Устроиться можно, никто не проверяет, у нас такой работал, лишь бы реально недурил на работе, а у нас как раз дурил такой сотрудник.

Худший ответ:
Что вы все по дурке косить хотите? Есть же куча других способов, обращаетесь в призыва нет вам их там расскажут.
Вопрос: Как стать антивирусом?

Лучший ответ:
Надо думать, как антивирус и в конце концов обрушить Систему.

Худший ответ:
Антивирусом стать невозможно... Антивирусом нужно родится...
Вопрос: Как защитить php файл от пользователей?

Лучший ответ:
Смотря что содержится в config.php. Если он выполняет функцию возвращения массива, например:<?php
return[
    'host' => 'localhost',
    'dbname' => 'MAYABASA',
    'user' => 'root',
    'password' => ''
];
То ничего скрывать не нужно, пользователь и так не сможет получить содержимое.
Если вы делаете вывод контента по средствам php и получаете содержимое через, например, file_get_contents($url), то в начале файла можно проверять ip адрес с которого поступает запрос. Если запрос делает только ваш сервер, то это может смотреться так:if ($_SERVER['REMOTE_ADDR'] !== '127.0.0.1') exit();
echo 'Этот контент будет выводиться только для запросов с Ip 127.0.0.1';
Ip вашего сервера не меняется, поэтому способ может быть использован.
Ну и напоследок, есть способ для защиты в .htaccessRewriteRule ^/?some_path/config\.php$ - [F,L]

Худший ответ:
Никак не надо защищать. 
Найди себе другое, более полезное занятие.
Вопрос: Прежде чем начать изучать языки программирования?

Лучший ответ:
стоит понять Архитектуру ЭВМ, Основы ОС и базовый АСМ. Что бы писать программы для компьютеров надо(внезапно) понимать хотя бы основные принципы работы компьютеров. Ассемблер учить не обязательно, а понимать почему в байте 8 бит на уровне архитектуры - достаточно важно, что бы потом не возникало вопросов "почему нельзя создать переменную которая бы занимала места столько, сколько нужно для хранения именно текущего значения, а не больше, чтобы память экономить", а то тут часто подобную дичь спрашивают. Так же - ОС на уровне как работает ФС, что такое страничная память, как работает адресация, кодировки символов и прочие составляющие. Если быдлокодить - это вообще не нужно знать, если писать что-то более-менее серьезное - без этого уйдет много времени на понимание что и как сделать "чтоб работало". Другой момент что это не обязательно делать ДО обучения, вполне можно совместить.

Худший ответ:
ИМХО, перед началом изучения любого языка программирования достаточно разобраться в след. темах:
– системы счисления,
– представление чисел на компьютере,
– текстовые кодировки,
– основы теории множеств и алгебры логики,
– понятие о сложности алгоритмов.
Всё из этого достаточно освоить на уровне средней школы, но твёрдо.
Всё остальное учится параллельно с языком программирования.
Вопрос: Как на Mikrotik ограничить доступ в интернет?

Лучший ответ:
https://wiki.mikrotik.com/wiki/Manual:IP/Proxy#Acc...
Но да, лучше использовать прокси-сервер. Микротик на такое не заточен.

Худший ответ:
Не очень хорошо такие задачи решить на сетевом оборудовании. Вам бы прокси поставить.
Вопрос: Почему в программе утечка памяти?

Лучший ответ:
Ну так
 int* array = new int[n_new];

А где вы его удаляете?

Худший ответ:
Ну так
 int* array = new int[n_new];

А где вы его удаляете?
Вопрос: Почему в Kibana сообщения режутся построчно?

Лучший ответ:
Кибана вообще ничего не режет и не разбивает.
Как вы кладете строки в эластик, так они там и хранятся.
Надо по пути их чем-то парсить, объединять многострочные сообщения и отправлять их в эластик единым message. Это делает, например, логстеш. Или надо посмотреть что умеет ваш встроенный механизм логирования, возможно там есть настройки для multistring

Худший ответ:
Сделайте дополнительный appender который пишет в json формате и настройте на эти файлы кибану. И тогда будет решена проблема многострочности.
Вопрос: Насколько надо знать математику для разработчика игр?

Лучший ответ:
Как минимум школьный курс геометрии необходим. +векторная алгебра. +тригонометрия не помешает.
Для баланса - комбинаторика.
Для графония - как минимум еще матрицы и преобразования над ними.
Это так, поверхностно.

Для прям свободной еще пригодится все околоматематическое, что с алгоритмами, булевой алгеброй и логикой связано. Типа там факториалы в сложности алгоритмов, например.

Худший ответ:
1 курс университета, первое полугодие.
Вопрос: Почему не удается передать строковой литерал в функцию, принимающую char*?

Лучший ответ:
Все дело в том, что строковой литерал в C++ имеет константный тип.
Когда ты делаешь вызов get_substr("один", "два три четыре"), ты в функцию передаешь два строковых литерала, тип которых - const char[ N ], где N - это длина строки литерала включая терминальный символ '\0'.
Неявное преобразование типа из const char* в char* недопустимо, поэтому компилятор и пишет тебе ошибку.
На самом деле, тебе в твоем тексте char* вообще не нужен, т.к. полностью все операции у тебя не приводят к изменению состояния строки. Заменить char* на const char* будет и логичнее, и понимаемость кода тоже улучшит.

Худший ответ:
А еще сто раз говорили, что копипаста это зло.
Надо разорвать этот порочный круг.Копирайт The C programming language 1978 Kerninghan, Brian W.#include <stdio.h>

int index(char[], char[]);

int main()
{
  char* str = "foo bar baz";
  char* str2 = "barz";
  
  if(index(str, str2) != -1)
    printf("found");
  else
    printf("not found");
  return 0;
}

int index(char s[], char t[])
{
  int i, j, k;
  for (i = 0; s[i] != '\0'; i++)
  {
    for (j = i, k = 0; t[k] != '\0' && s[k] == t[k]; j++, k++)
      ;
    if(t[k] == '\0')
      return i;
  }
  return -1;
}
Вопрос: Какие факторы определяют выбор времени, которое отводится для одного такта микропроцессора?

Лучший ответ:
Если бы речь шла о простых цифровых (логических) микросхемах, то в них время такта задаётся их быстродействием, в чистом незамутнённом виде. Ну т.е. буквально - если такт уменьшить (увеличить тактовую частоту), то количество сбоев из-за налезания фронтов импульсов друг на друга с некоторого значения увеличится сверх допустимого. Ведь длительность фронтов/спадов изменить нельзя (она задана технологией), и при сокращении длительности тактовых импульсов они перестают быть похожими на импульсы и приближаются формой к синусоиде - прямоугольная форма размазывается.
В процессорах всё это усугубляется кучей перекрёстных связей и шинной структурой. Допустим, вам надо передать по 8-разрядной шине перепад с 00000000 до 111111111, скажем, из АЛУ в какой-нибудь регистр. Запоздает сигнал на одной из линий - вы получите ошибку передачи. Чтобы не запаздывал, время такта придётся увеличить, т.е. создать достаточный запас на компенсацию таких задержек распространения. Вот так оно и выбирается. Чтобы его сократить (т.е. увеличить быстродействие процессора), шину приходится строго симметрировать по времени распространения сигнала.
Но зато есть и бонус: на кристалле процессора длина проводников и их паразитные ёмкости минимальны. Именно это и позволило выйти на нынешние гигагерцы, которые ещё каких-нибудь 20 лет назад были невообразимы.

Худший ответ:
Добавлю свою лепту (пять копеек).
Тактовую частоту выбирают - максимальную, при которой транзисторные цепи успевают сработать. Это значит, что проектировщик планирует работу примерно так:
"Вот на вход этой цепи поданы напряжения, соответствующие входным данным; эти напряжения - в пределах стандарта (например, TTL или что у него там). Я планирую, что результат вычислений мне понадобится через три такта. Эта цепь при такой конструкции закончит все переходные процессы и выставит напряжения в пределах стандарта за такое-то время. Значит, три такта - должны покрыть это время с избытком."
Переходные процессы в основном заключаются в том, что надо зарядить паразитную ёмкость (существующую между любыми проводами); и пока туда не зальёшь нужное количество электричества - напряжение там будет неправильное (не соответствующее стандарту).
А скорость заливки  электричества - определяется сопротивлением проводов (напряжение считается фиксированным - по стандарту).
Вопрос: Angular 8 — какие ресурсы для обучения посоветуете?

Лучший ответ:
В порядке ценности
https://angular.io/
https://netbasal.com/
https://indepth.dev/angular/
https://tyapk.ru/blog/category/angular
https://webformyself.com/category/javascriptajax-2...

Худший ответ:
https://learn.javascript.ru/screencast/angular  неплохой скринкаст 6 версии по гайду angular.io.
Отличия есть, но не кардинальные. (не считая ivy рендер).
Вопрос: Карты мир не поддерживаются Google Pay?

Лучший ответ:
Я могу на своем сайте написать что GP стал игральные карты поддерживать и вы этому поверите? Станете вписывать данные бубнового вольта? Верить надо официальным источникам, а не непонятно чему.

Худший ответ:
Нет. И думаю не будет. Нах им делать поддержку для одной страны, так же как и за рубежом не принимаются. 
Выпустите себе норм карту, про Мир лучше вообще забудьте
Вопрос: Windows 8.1: как вернуть функцию «Восстановление системы» при использовании полуавтоматической установки системы?

Лучший ответ:
че????????????????????????????

1 - не используйте сборки с файло помоек
2 - все остальное и так будет как надо

ps а еще есть Shift-F10, там можно вообще все.. если знаете как пользоваться

пришлось несколько раз перечитать вопрос...
существует ли возможность вернуть функцию восстановление системы в загрузочный диск при создании дистрибутива...
существуетуберите файл ответов Autounattend.xml на.. .. совсем уберите

Худший ответ:
Восстановление системы это WindowsPE.
Установка системы осуществляется именно из WindowsPE и никак иначе.
Каким образом вы осуществляете установку - неважно.
Поэтому ничего никуда возвращать не надо.

При создании дистрибутива с полуавтоматической установкой Windows 8.1 посредством Диспетчера установки Windows и формировании файла ответов Autounattend.xml в результате из мастера установки пропадает пункт "Восстановление системыЛогично. Для этого файл ответов и нужен.
Вопрос: Как разрабатывать на PHP на Windows 10 с WSL?

Лучший ответ:
В PhpStorm 2019.3 EAP#7 завезли поддержку WSL. Проект крутиться в wsl либо в docker wsl. Файлы правятся в шторме

Худший ответ:
Docker поставь, подключи нормальный ламп и не мучай зверька.
Вопрос: Что можно назвать js фреймворком?

Лучший ответ:
Тут всё есть: https://ru.wikipedia.org/wiki/Фреймворк . Чётко и ясно. Плохо искал(искал ли?).
Для js и не для js, разницы никакой.

Худший ответ:
Библиотеку используете Вы, фреймворк использует Вас©Илья Климов

А вообще, понятия расплывчивые, но
библиотека - небольшой набор функционала, решающий одну задачу
фреймворк - каркас приложений, решающий большинство типовых задач
Вопрос: Почему массив с переменной выдает не тот результат?

Лучший ответ:
Вы получаете ровно то что просите. 
// 1. Круглые скобки зачем? 
$d = "1, 2, 3"; // Строка

// 2. $array = array($d);
$array = array("1, 2, 3"); // Массив с одним элементом - строкой

// Если хотели в первой строке массив, то это делается квадратными
// скобками и разделяем запятыми
$d = [1, 2, 3]; // Массив

// Если хотели во второй строке массив, то это делается методом explode
$d = "1, 2, 3";
$array = explode(', ', $d); // Массив [1, 2, 3]

Худший ответ:
Если предполагается, что в $d будет попадать список именно в виде строки, то можете воспользоваться explode();

$d = "1, 2, 3";
$array = explode(", " $d);
print_r($array);
Вопрос: MacBook Air/Pro на М1 или MacBook Pro 15 2015?

Лучший ответ:
m1.

но если хочется сэкономить и готовы обновиться через год–два, пойдет и б/у прошка.

Худший ответ:
Если ты учишь Swift + SwiftUI, то определенно надо брать M1, ибо apple требует, чтобы новые приложения поддерживали, как M1, так и Intel. На компе с м1 ты сможешь протестировать эти два режима (нативно и разетта2), а вот на интелле не сможешь.

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

Но, а вообще. Если у тебя уже есть моник и блютус гарнитура, то можно взять самый дешевый mac mini, вручную там обновить память до 16 гигабайт и получится мощная машинка на годы вперед. Но продать будет сложнее.
Вопрос: Как вы поступаете с темами которые плохо понимаете?

Лучший ответ:
Есть эффект Зейгарник.

Суть: мясные процессор и память лучше обрабатывают и запоминают незакрытые гештальты. То есть то, что не доведено до конца. 

Пример: дочитать главу и уснуть - наутро будешь помнить меньше, чем если не дочитать главу до конца.

Мозг "засыпает", если входящий поток равномерен. Нужно создать "дискомфорт", помехи в потоке, чтобы он запустился на моменте. Или прекратить это самое восприятие. Любой переход здесь полезен.

Именно поэтому в учебных заведениях пары чередуются по часу, а не так, что неделю учим чисто философию, потом неделю чисто вышмат и еще неделю рисуем.

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

А главное:

Худший ответ:
неправильно, по 2-3 часа в сутки на тему
суток да - пока не додолбаешь
Вопрос: Парсинг сайтов на Python, как загрузить данные которые спарсил на свой сайт?

Лучший ответ:
Парсите напрямую в базу данных, зачем вставлять спарсенное в поля админки джанго, че за гемор. Сайт на джанге просто будет отображать инфу из этой базы.
upd: если ваш парсер выгружает данные только в csv и вам лень разбираться как там в питоне подключиться к какой-то базе данных сделайте так
-парсите, пишите все в свой csv
-запускаете для своей базы данных менеджера этой базы, phpmyadmin или еще какой
-делаете sql запрос "COPY table_name FROM 'c:/parser/my_data.csv' (format csv);"
(само собой поля в таблице должны соответствовать csv файлу)

Худший ответ:
Самый простой вариант это написать какую-нибудь сторку которая будет записывать ваши спарсеные данные в базу:def save_data():
    file = open("scratch.json", 'r')  # Предположим это json
    data = json.loads(file.read()) # Загружаем json
    file.close()
    for row in data:
        Scratch.objects.update_or_create(title=row['title'], image=row['image'], price=row['price']) # Название модели и полей надеюсь вы сами подставите
Вопрос: Это нормально, когда задают такие вопросы на собеседовании?

Лучший ответ:
Беги оттуда, знаю я такие компании. Приходишь к ним backend dev, а они тебя не навязчиво просят сверстать разок кое-что, потом на js что-то накидать, потом полы помыть. Вообщем у таких компаний нет разделения труда в принципе. Им нужен Full-stack, но ему нужно больше платить, а лучший для них выход - нанять backend, да начать просить его о всяком, а просят так что не откажешь.

Худший ответ:
Тебя кто-то заставляет?
Не хочешь - не надо.
Очевидно, что среди PHP-ников много fullstack и для них подобное задание не проблема.
Если тебя это смущает, если ты принципиально хотел идти в чистые бэкендеры - в явном виде и скажи это потенциальному работодателю.
А то может и неприятный сюрприз (для обоих - и для тебя и для работодателя) выйти, когда ты выйдешь туда на работу.
Вопрос: Линукс не коректно работает с DVD дисками?

Лучший ответ:
Вроде оно, нужно даунгрейднуть glib2
https://bbs.archlinux.org/viewtopic.php?id=259070

Худший ответ:
Здраствуйте,обнаружил что проблема ушла в новой версии glib2(2.66.2-1)!Так что баг пофиксили. :)
Вопрос: Есть ли смысл ставить SSD на такой ноутбук?

Лучший ответ:
От ssd есть смысл всегда. Всегда будет прирост производительности, причём существенный. Особенно учитывая тот факт, что оперативки мало.

Худший ответ:
Для старых ноутов есть смысл только менять SSD и ставить минимум 4Гб памяти.
В противном случае - овчинка выделки не стоит.
В вашем случае - только SSD, у вас уже 4Гб.

Помните, что SSD не обязательно брать самый шустрый - ведь старые ноуты ограничены по технологии SATA
Если у вас SATA2, то никакого преимущества от скорости 550 чтение/550 запись не будет.
Если же SATA3, то обязательно смотрите эти параметры: примерно за одну и ту же цену продаются как 400/200, так и 550/550 (чтение/запись) SSD

Так же и с памятью - нужно ОЧЕНЬ ВНИМАТЕЛЬНО изучить, сколько именно ваша материнская плата содержит слотов для памяти (учитывая полностью модификацию, одна цифирка или одна буковка может в корне изменить суть). Это важно для принятия решения, докупить 2Гб или просто купить 4Гб вам нужно.
2+2 обычно работают быстрее, чем одна планка, так как включается DualMode, но максимально желательно, чтобы все параметры памяти были идентичными, в противном случае более быстрая память будет подстраиваться под более медленную. Идеально - если память идентичная, включая производителя. Этим вы исключите возможные проблемы совместимости памяти между собой.
И важно понимать, сколько материнская плата поддерживает максимально памяти. Это лучше почитать на сайте производителя или узнать у компетентных людей. К тому же есть особенности, которые лучше выяснять предварительно у продавца, в том числе гарантию замены в случае несовместимости (т.е. память - рабочая, но именно у вас она работать не будет).

Обычно замена 2Гб оперативки и HDD на 4Гб и SSD превращают мерзкий, тормознутый ноутбук в весьма неплохого уровня рабочую лошадку. Разница в любом случае колоссальная.
Вопрос: Как получить вывод из консоли js в код на питоне?

Лучший ответ:
Для этого нужно понимать, что js исполняется в совершенно другой среде — в браузере, который ничего не знает о питоне (а питон ничего не знает о браузере). Единственный способ коммуникации между этими средами — сетевой протокол, для вашей задачи отлично подойдёт ajax-запрос по http.

Худший ответ:
после/вместо вывода в консоль, отправляйте ваши данные на сервер в виде POST запроса с содержимом в формате JSON
var xhr = new XMLHttpRequest();
var json = JSON.stringify(document.querySelector("#output"));   //здесь вставляем и отправляем Ваши данные
xhr.open("POST", '/', true)
xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8');
// Отсылаем объект в формате JSON и с Content-Type application/json
xhr.send(json);
на стороне сервера делайте получение данных из запроса и обрабатывайте как вам угодно
@app.route('/')
def index():
    if request.method == 'POST':
        data = request.json  #получаете свои данные в формате строки и обрабатываете
Вопрос: Нужен ли какой то передатчик для клавиатуры и мышки блютуз?

Лучший ответ:
1. Есть клавиатуры и мыши без передатчика, которые цепляются по Bluetooth;
2. Можно и аккумуляторы, устройству плевать, откуда вольты сосать.

Худший ответ:
Если блютус встроен - никаких USB устройств подключать не надо, если нет - значит надо.Без разницы, если найдете аккумуляторы подходящие по габаритам и напряжению.
Вопрос: Как перенести компьютеры в домен AD с сохранением данных?

Лучший ответ:
Попробуйте на тестовых тачках www.forensit.com/ru

Худший ответ:
Добрый вечер. Как вариант, можно посмотреть в сторону ADMT. Насколько мне известно в нем есть возможность переноса как компьютеров, так и пользователей и их паролей из одного домена в другой.