pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Не могу понять работу метода .map?

Лучший ответ: function camelize(str) { // на вход приходит строка
   return str      // вот тут пока ещё строка
     .split('-')   // здесь из этой строки сделали массив, разбив её по символу дефиса
                   // ниже пошёл массив ["lol", "kek", "cheburek"]
     .map((word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1)) // что-то сделали с каждым элементом массива
     .join(''); // соединяет ['my', 'Long', 'Word'] в 'myLongWord'
 }
Теперь упростим непонятную строку. 
К ней пришёл массив, у которого вызывается метод map() – он просто применит функцию в нём к каждому элементу массива. На выходе получится новый массив..map((word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1)) //**

// то же самое, что:
.map(
  function(word, index) {
     return index == 0 ? word : word[0].toUpperCase() + word.slice(1);
  }
)

// то же самое, что:
.map(
  function(word, index) {
    if (index == 0) {
      return word;
    } else {
      return word[0].toUpperCase() + word.slice(1);
    }
  }
)
Метод массива .map() вызывает функцию, которая в нём аргументом, для каждого элемента массива и передёт в неё следующие три параметра:Текущий обрабатываемый элемент массива. Индекс текущего обрабатываемого элемента в массиве.Массив, по которому осуществляется проход.

Худший ответ: **
Пройдемся по массиву и вернем новый массив с такими элементами:
Если шагнули на нулевой элемент (index == 0),  то вернем слово как элемент в новый массив как есть (.... ? word : ....)
Если шагнули на ненулевой элемент, то Меняем регистр у первой буквы (... : word[0].toUpperCase() + word.slice(1)...) и вернем результат как элемент в новый массив.
Вопрос: Может кто помочь в огранизации кабинета информатики под Линукс?

Лучший ответ: Организуйте тогда с помощью F.O.G Project https://fogproject.org/
Вот по видео, можно сказать ваш коллега делал,
https://youtu.be/1PvMOgLA_Mc

Худший ответ: Недавно выпустили новую версию ЛТСП, несложную в настройке, все уже идет в коробке. У меня коллега на прошлой работе сам собирал старую версию, сидя на форуме любителей ЛТСП) Я думаю, там точно могут помочь. Если хотите исключительно под Линукс, то это отличный вариант
Вопрос: Можно ли написать функцию isset в javascript?

Лучший ответ: "myVar is not defined" - ошибка говорит о том, что такая переменная в принципе не была объявлена. А делать переменную свойством глобального объекта - это плохая практика. Всё можно написать без использования глобальных переменных.

Худший ответ: typeof ( variable )
Скобки уберите.
Вопрос: Какие наименее затратные способы интеграции почты с внутрикорпоративным ActiveDirectory?

Лучший ответ: Azure AD + Office365. - более интегрированнее просто не бывает

Худший ответ: У MS существуют различные облачные решения и они прост завизжат от восторга, предлагая их Вам. Так конечно ни Яндекса ни даже Гугла не будет - только outlook.com (или что у них там), но там полноценная интеграция через AD FS - полноценнее некуда.
Вопрос: Какой функционал еще можно добавить(Кроме интерфейса)?

Лучший ответ: Перестать хранить пароль в БД в открытом виде. Сохранять только хеш

Худший ответ: Ты бы не об каких-то там функциях думал, а хотя бы о базовой оптимизации кода. Например: ты 7 раз делаешь execute и commit, это при том что функций у тебя толком то и нет. А дальше что? Сотню раз по всему коду будешь повторять одни и те же строки? Почитай про DRY. Простейший пример:class sql_wrapper:
    def __init__(self):
        self.connection = sqlite3.connect('foo.db')
        self.cursor = self.connection.cursor()

    def select(self, sql):
        return self.cursor.execute(sql)

    def execute(self, sql):
        self.cursor.execute(sql)
        self.connection.commit()
    
    def close(self):
        self.connection.close()
    

sw = sql_wrapper()

rows = sw.select('SELECT * FROM some_table')
for row in rows:
    print(row)

sw.close()
Лапша из if-else очень плохо читается и слишком разрастается, лучше каждое действие записывать отдельной функцией, а вызов совершать хотя бы так:def foo():
    print('print foo')

def bar():
    print('print bar')

commands = {
    'foo': foo, 'bar': bar
}

user_input = input().lower()
if commands.get(user_input, None) is not None:
    commands[user_input]()
Уже код будет выглядеть приятнее и более читаемый. Все команды лучше хранить в нижнем регистре и любые принимаемые данные, в том числе ввод с клавиатуры, который касается вызова команд так же переводить в нижний регистр - в будущем избавишься от проблем.
Ну и разберись с SQL, а то похоже, что куски выдраны из разных гайдов, через раз то есть то нет завершающего символа ;
Да и не только с SQL, у тебя через раз то одинарные кавычки для строк, то двойные. Приди уже к единому варианту.
Вопрос: Как решить проблему с if..else в bash?

Лучший ответ: По умолчанию баш создает все переменные текстовыми, следовательно
res=$a+$b у вас получается контакенация строк, а не сложение чисел.
Используйте явное арифметическое сложение через res=$(( $a + $b ))
либо заранее все переменные задекларируйте как integer через
declare -i a
declare -i b
declare -i res
declare -i path
А в идеале и сравнение вместо [[ "$path" = "$res" ]] делайте числовым [[ $path -eq $res ]]

Худший ответ: А вы посмотрите что у вас в $res
Надоres=$(( $a + $b ))
Вопрос: Как читать консоль в Unity2D с помощью C# скрипта?

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

Худший ответ: Если нужен простой обмен данными создайте (напр. GameData) объект в иерархии сцены и к нему свой компонент (напр. DataRouter), который будет хранить в публичном поле/свойстве данные для записи или чтения (например List)
В своих скриптах делаете ссылку (drag&drop) или поиском:DataRouter router = (DataRouter)FindObjectOfType(typeof(DataRouter));
Еще можно использовать Singleton паттерн.
Вопрос: Почему не пускает в админку роутера с одного компа, а с другого без проблем?

Лучший ответ: У вас видимо включён только гостевой wifi. Внимательно пройдитесь по настройкам.

Худший ответ: Судя по всему WiFi настроен как гостевая сеть.
Посмотрите адреса которые выдаются клиентам WiFI - думаю станет понятно сразу.
Вопрос: Как вы именуеть пользователей в AD?

Лучший ответ: Как делается в большом энтырпрайзи:
Пользователь: hohlov.mikola
Админ: admin.hohlov.
Всё.

Худший ответ: Обычные учетки - транслитерация фамилии + буквы (либо первые буквы ФИО если полное совпадение у тёзок, тут уже обговаривается с пользователем): hohlov, hohlov-a, hohlov-ab, hab
Учетки с повышенными привилегиями для ИТ adm + первые буквы ФИО: adm-hab, adm-psb
Вопрос: Как верстать 18 колоночный макет?

Лучший ответ: В чём проблема? Верстай не колонками, меньше проблем, больше управляемости. Заказчика убеди, что на 1024 будет УГ, а не сайт, пусть дизы делают макет на 1024 нормальный и 640(320) для мобилок, для таких сайтов обычно просят ещё макет на 1366 (ведь тексты никуда не денешь), припомни им, что на планшетах есть ещё и книжный режим на 768 и меньше, как тогда сайт должен выглядеть?, если агрятся и цена меньше 100k шли их куда подальше, сэкономишь нервы.

Худший ответ: Используй em, rem и будет у тебя 1024 как на 1920
Вопрос: Как найти участок проблемного кода если исходники не поддаются анализу?

Лучший ответ: Как выявить то самое проблемное место в коде, где добавляется лишний класс к кнопке?
1. Брейкпоинтом браузера

Также можно отследить любые события и манипуляции с DOM
2. Поиск по коду проекта (искать по названию класса). В любой современной IDE это делается за пару секунд
3. Браузерным расширением фреймворка (если таковой используется). Которое покажет название компонента и его искать уже в исходниках проекта

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

А вообще-то, я считаю, правильный ответ — никак.
Если исходники есть, и билд является актуальным (не правленным отдельно от исходников), то следует включить sourcemaps и пересобрать проект. Далее анализ будет намного проще.
Если исходников нет, или использовать их нет возможности по другим причинам, то и соотносить проблемное место с исходником не имеет смысла.
Вопрос: Как бы выглядело такое автозаполнение инпута на чистом JS?

Лучший ответ: Можно вообще без js<input list="aaaa">
<datalist id="aaaa">
  <option value="Текст1"></option>
  <option value="Текст2"></option>
</datalist>

Худший ответ: Добавляем addeventlistener к инпуту при вводе символа, callback функция делает следующее:
1) Сверяет текущее значение с массивом autocomplete
2) Если найдены совпадения - создаёт в dom-дереве список ul с необходимой вёрсткой через document.createElement
3) Для каждого элемента списка добавляем addeventlistener: при клике на элемент значение из элемента копируется в инпут, список ul уничтожается
4) Делаем appendChild списка ul после инпута (или внутрь или перед и т.п., как удобнее для сделанной вёрстки)
Вопрос: Как получать данные от конвертера RS232-to-Ethernet?

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

Худший ответ: существуют конвертеры, которые преобразуют данные последовательного порта (RS232 / RS485) в EthernetНе существует. Это невозможно в принципе.
Указанное вами устройство просто передает данные полученные с порта RS232 через сеть Ethernet на другое устройство.
Вопрос: Нужно ли покупать более мощный сервер?

Лучший ответ: Улучшать что-то нужно, когда этого перестает хватать, или что-то является узким местом.
Посмотрите - хватает ли вам CPU, RAM, IO, Network и если не хватает (загрузка приближается к 100% или например очередь ввода-вывода появляется и т.п.)-улучшайте.

Худший ответ: не хватает по факту.
Проверить легко
iotop -oka
смотришь если I-O в пике не поднимается выше 50% то все норм.
Вопрос: Где купить macbook pro без русской раскладки?

Лучший ответ: Я заказывала мак с ebay и о налоге x2 не шло и речи!
Если у тебя есть друг, то просто посмотри налоги на его штат, у меня это был Нью-Йорк и налог составил 5%, что всё ещё дешевле наших цен
Причина, по которой мы брали из США мак - была цена, если есть возможность просто пойти и купить, то лучше просто пойти в магазин и купить мак!
Нет никаких подпольных баз, где портят маки для русских
Мой друг пользуется маками овер 10 лет и это были и русские, и американские модели
У него так всегда тасовалась вся техника эпл, так как друзья семьи что-то привозить помогали
Так вот он говорит, что разницы никакой нет и это глупости всё, что в Америке "оригинальная" техника, а весь мир использует fake shit
Так что просто идёшь в restore или iport и покупаешь ноут без лишних проблем
Ещё и гарантия под боком будет, в Америку же не будешь высылать клаву поменять
Так что 10 раз стоит подумать, нужно ли оно)

Худший ответ: чем вас не устраивает фирменный онлайн-магазин Apple в России?Заходите, выбираете там нужный вам макбук, далее в конфигураторе опция "Язык клавиатуры", там выбираете что вам требуется. Всё.
Вопрос: Какие книги стоит прочитать, чтобы не застрять на решении типовых задач перед устройством на работу?

Лучший ответ: Пузырек, это бутылка водки небольшого обьема

Худший ответ: Желаю тебе удачи!!!
Вопрос: Резиновая верстка это flex или grid?

Лучший ответ: Резиновая верстка - это когда не задается фиксированная ширина в пикселях, а задается в процентах.
Резиновую верстку можно как на flex'ах сделать, так и на grid'ах

Худший ответ: нет
не блочная а кирпичная
Вопрос: Show Overlays – какая горячая клавиша у данной функции?

Лучший ответ: Её нет в списке горячих клавиш по умолчанию.
Выбери функцию - нажми правую кнопку - нажми Shortcut - наведи на окошко - нажми клавиши, которые ты хочешь.

Худший ответ: Кстати, у меня по умолчанию на Show Overlays уже стоит Shift+Alt+Z, видимо ввели в обновлении.
Мне нужна была горячая клавиша для Show Face Orientation находящемся в Overlays:
1. Я нажал на клавишу смотря в окно Info, где получил "путь к ней"*:
space_data.overlay.show_face_orientation
2. Пошёл в настройки горячих клавиш, и в 3D View (Global) создал новую горячую клавишу.
2.1. Указал оператор* как у горячей клавиши для булевой опции "wm.context_toggle".
2.2. И в качестве аргумента* ему передал полученный путь.
Теперь Вы можете делать хоткеи в блендер на булевые опции ;)
На что нибудь посложнее придётся порыть официальную документацию скриптинга в блендер.
На скриншоте: 1* путь к ней. 2* Оператор. 3* Аргумент.
Вопрос: Существует ли такая опция или приложение?

Лучший ответ: В iPhone, например, есть встроенное (от Apple) приложение "Напоминания", там такое есть. Функционал странный и бедный, но он есть.

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

Худший ответ: Я разобрался. пишу для тебя, подписчик. google keep - создаешь заметку - в общем списке заметок зажимаешь по своей. появится вверху менюшеп в которой будет колокольчик - есть два варианта время и местоположение и в местоположении вбивай адрес свой. у меня карту не прогрузило, а жаль)
Вопрос: Где создается A-запись?

Лучший ответ: Где угодно
Физически это не имеет никакого значения
Если у вас на сервере есть ДНС сервер и А запись осноного домена идет туда, то он может создать поддомены сам 
в вашем же случае проще будет  создать поддомены там же  где и А запись основного домена
нааример

site.ru  A  1.1.1.1
www    A  1.1.1.1
sub1      A  2.2.2.2
Но тут уже зависит от веб морды которая у вас имееттся для редактирования ДНС
Например у некоторых это будет по другому
site.ru  A  1.1.1.1
www.site.ru    A  1.1.1.1
sub1.sute.ru      A  2.2.2.2
или с @ что кстати вне стандарта RFC но используется
@  A  1.1.1.1
www.@    A  1.1.1.1
sub1.@      A  2.2.2.2
Не забывайте что DNS сервер всего -лишь сравнивает  домен с А записью и в принципе ваш суб домен мог бы получить А запись еще на зоне RU если бы у вас там были такие подвязки и  кто-то в их днс сервере смог ыб добавить эту А запись,  по факту днс работает так
www.site.ru.
читаем с конца
.  нулевой уровень домена стоит в конце любого домена ( это вадельцы  доменной зоны, да у нее есть физический владелец)  и там днс сервер который знает всегоо лишь корневые домены, он знает зоны RU COM  и тд и отдает их А запись, но он такой же днс сервер как  и все остальные и мог бы уже отдать вашу а запись, но вместо этого ссылает  этот вопрос другому днс серверу по NS записям пусть типа сам разбирается.
соответственно RU  уже ссылается на ваш домен и его НС сервер,  он тоже может или сразу отдать записи или сослаться на другой днс сервер.  и так далее, распределенная нагрузка.
Соответственно все домены ниже купленного вами домена вы можете назначить в любой  момент, или делегировать их на отдельный днс сервер.

Худший ответ: Добрый день!
У домена только одна рабочая DNS зона, та, на которую указывают ns-записи. В Вашем случае это хостинг. Если нужную запись добавить у регистратора, она не будет действовать
Вопрос: Анимация логотипа при наведении в веб?

Лучший ответ: для начала определить, как должны шевелиться волны. Отрисовать хотя бы еще одно их положение. 
SVG вставлять кодом, не img. По hover запускать css анимацию. 
очень упрощенно - но смысл такой. 
snippet

Худший ответ: для начала определить, как должны шевелиться волны. Отрисовать хотя бы еще одно их положение. 
SVG вставлять кодом, не img. По hover запускать css анимацию. 
очень упрощенно - но смысл такой. 
snippet
Вопрос: Допустимо ли использовать наследование в этой ситуации?

Лучший ответ: То есть теперь у корзины будут методы определения email, идентификатора пользователя, проверки пароля, и всякого такого?

Корзина может иметь свой метод getUserId, а наследовать корзину от юзера как-то странновато.

Худший ответ: В данном случае правильно сделать не наследование, а композицию. Ну, или агрегацию.
Вопрос: Примеры проектов PHP(прокомментированных). Где найти?

Лучший ответ: Для популярных фреймворков обычно есть демо приложение, нп. Symfony demo app. У Laravel был курс "как был создан Laracasts", т.е. есть живой проект Laracasts и скринкаст по его созданию в целях обучения. В целом на гитхабе есть море готовых приложений разного качества и сложности, главное погуглить основательно) 

Прикол ООП в том, что выучить конструкции вроде классов и интерфейсов несложно, сложно понять - где, зачем и как их применять. На помощь приходят шаблоны проектирования, принципы SOLID, книги по архитектуре приложений и немного современных веяний. Нужно уделять время изучению этих основ, просто комментировать их в коде вне учебных материалов никто не будет, потому что это общепринятые практики. Комментируют в коде только спорные решения или специфическую информацию, которая касается бизнес-логики, а не архитектуры

Худший ответ: пройдите курсы Елесеева по ООП. Уж.е многое поймете про то как его использовать в php.
Вопрос: Как правильно передать в метод массив и получить обратно массив другого размера?

Лучший ответ: Тебе не нужны new и сырые указатели. Тебе нужен линейный контейнер с хранением элементов в непрерывном блоке памяти. Это будет или std::vector, или std::array.

Для начала можно остановиться на векторе. Еще одним важным типом будет std::span[?] или gsl::span[?][S] если ты не можешь пользоваться C++20.

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

Вот объвление твоей функции: gsl::span<float> Метод( gsl::span<float> values ).
span - это не владеющий памятью тип, обозначающий участок непрерывной памяти с данными определенного типа. span очень легок и является value type - т.е. создан чтобы его передача по значению не приводила к ощутимым нагрузкам. span конструируется из std::vector, std::array, плоских массивов, std::unique_ptr<[]> и сырых блоков памяти.

В своей функции тебе стоит работать с памятью values, считая попутно, сколько элементов ты обработал. А для возврата обработанного участка данных тебе будет достаточно вызвать subspan.

Псевдокодstd::span<float> Метод( std::span<float> values )
{
	size_t processed_count = 0;
	for( float& element : values )
	{
		// ... обработка значений
		// ... изменение processed_count
		// ... условия обрыва цикла
	}
	
	return values.subspan( 0, processed_count );
}

int main()
{
	std::vector<float> values{ 7.83f, 14.1f, 20.3f };
	std::span<float> processed_values = Метод( values );
	
	for( const float& value : processed_values )
	{
		std::cout << value << ' ';
	}
	
	return 0;
}

Худший ответ: Первый вариант
1) Вам нужно передать указатель по ссылке, чтобы изменить его значение при выделении памяти с помощью new[]
Метод(float& *arr) {}

2) Вы должны изменить указатель a (из main) по ссылке arr
arr = newArr;

Код:
void foo(float& *arr) {
 // ... использование данных
  delete [] arr;
  float *newArr = new float[newSize];
  //... заполнение новыми данными
  arr = newArr;
}

float *a = new float[size];
foo(a);

Второй вариант
Вернуть из функции новый указатель
float* foo(float *arr) {
 // ... использование данных
  delete [] arr;
  float *newArr = new float[newSize];
//... заполнение новыми данными
  return newArr;
}

float *a = new float[size];
a = foo(a);
Вопрос: Как symfony загружает классы через входные данные?

Лучший ответ: Этому посвящена добрая часть документации компонента Dependency Injection и Service Container'а, который является центральной частью этого компонента.

Если совсем вкратце - то вы либо описываете сервисы вручную через конфигурацию (есть несколько поддерживаемых форматов, включая аннотации, хотя они вроде реализуются внешним пакетом) либо используете преимущества autowiring'а, предоставляя Symfony всё описать за вас (с помощью compiler pass'ов, если потребуется). Собственно основная "магия" преобразования всех источников данных в кучу компилированного PHP находится как раз в compiler pass'ах, их много и можно писать свои.

Поскольку у вас в примере - controller's action - то здесь вся магия реализуется через обработку тега controller.service_arguments, который по-умолчанию добавляется ко всем контроллерам в конфиге сервисов.

Худший ответ: ValidatorInterface $validator
Это имеется ввиду? Если да, то через dependency injection. Его можно включить/выключить в services
Вопрос: Почему единая точка входа обновляет страницу дважды?

Лучший ответ: потому что кривой реврайт/приложение, обрабатывающее все, что не существует. 
включая favicon, который автоматически запрашивается браузером.

Худший ответ: Я уже сто раз говорил DevMan и прочим kafkiansky, чтобы они не упоминали favicon
увидев знакомое слово favicon, нубы перестают воспринимать что-либо ещё, радостно создают этот файл и считают что проблема решена 

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

единая точка входа - это не 5 строчек тупой копипасты в хтаксесс, а в первую очередь роутер, который читает запрос и решает, как он будет исполняться.
и только после этого выполнняет, или не выполняет какой-то код
Вопрос: .htaccess ErrorDocument 404 с помощью js?

Лучший ответ: Никак. 404 выдаёт сервер, а js выполняется на клиенте.

Худший ответ: Только в том случае, если сам сервер у вас написан на яваскрипт, например, на nodejs. В таком случае - смотрите документацию по фреймворку, который используете (response.statusCode, если используете модуль http напрямую)
Вопрос: Как получить ссылку с VPS/VDS?

Лучший ответ: у VPS есть IP адрес
вот с него и получай

Худший ответ: У любой VPS есть прямой IP-адрес типа https://10.10.10.10/. Если используете ISPmanager для управления VPS, то можете настроить URL панели управления, вот инструкция https://docs.ispsystem.ru/ispmanager-lite/nastrojk...
Если вы не знаете точно свой адрес, то обратитесь к вашему провайдеру или найдите первое письмо об открытии услуги, обычно там есть вся информация по заказанной VPS.
Вопрос: В какой стране регистрировать компанию для работы на upwork?

Лучший ответ: А смысл? В России налоговая ставка всего 6%. Во многих регионах доступен дешёвый патент, который заменяет все налоги. У меня например патент стоит 3200. Плюс 40 тысяч обязательные взносы. Итого я за год плачу всего 43 тысячи вне зависимости от объёма доходов. Условия лучше придумать сложно.
В России отличные онлайн-банки для предпринимателей. Сейчас в период самоизоляции счёт можно открыть вообще без единого визита в банк. ИП тоже можно открыть удалённо (не знаю, правда, требуется ли посетить налоговую, чтобы забрать доки).
Так что не вижу смысла усложнять себе жизнь настолько.

Худший ответ: Я гражданин России.В России разумеется, без вариантов.
Вопрос: Как распаковать такой архив в Windows?

Лучший ответ: WinRAR, WinZip, 7zip, а еще Far прямо из коробки (содержит 7zip)

Худший ответ: Перебрал несколько рецептов, получалось так в моем случае:
(2020-07-26.auto_9721012.tgz - это просто информация о копировании, он не нужен)
1. Изменяем формат файлов в формат вида: 001...083, т.е. в правильной последовательности. Сейчас они не могут быть отсортированы верно: part1, part10, part11...). Это удобно сделать через Total cmd в функции группового переименования.
2. Открываем Total cmd, выделаем первый файл с расширением 001, далее меню Файл > Собрать файлы...
4. Открываем 7zip и извлекаем архив.