pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Английский язык сильно помогает для роста в сфере IT и Программирования?

Лучший ответ: Примерно 90%.
Именно столько зашедших на Тостер сначала пользуется поиском - и находит тонну точно таких же вопросов. Но мы их не видим, нам мозолят глаза 10% раздолбаев, которым это сделать лень.

Худший ответ: Примерных цифр нет.

Есть краткий срез по специалистам - 
а) если вы сеньор с опытом 15 лет и без английского, вас очень будет хотеть рынок СНГ(продукт и аутсорс), с английским и без английского - не важно.
б) если вы начинающий специалист - английский является шикарнейшим аргументов среди других специалистов в вопросе найма.

Если перед HR будет стоять 2 равных по скилам программирования джуна, и уровень английского у первого будет A1, а у второго B1+. При одном свободном месте у первого вообще нет шансов.

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

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

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

Худший ответ: Приведите цифры если хотите какой то ясности
Скажем вы хороший программист, за у вас 10к так как работаете на запад, заключаете контракт с Лондоном, где 20к баксов будет меньше чем минималка у таких программистов, понятное дело надо просить больше высокого повышения
Вопрос: В чем проблема работы данного кода?

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

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

Худший ответ: В вашей программе не учитывался случай, когда самое большое число в массиве находится после значения уже присвоенного переменной maxx. Например [1900,1232,2000,32,12,3,23], Также не отрабатывались случаи, когда два максимальных числа равны. 
Исправленная программа
n = list(np.random.randint(0, 100, size=random.randint(2, 20)))
maxx = 0
maxx2 = 0
for n2 in n:
    if n2 >= maxx:
        maxx2 = maxx
        maxx = n2
    elif n2 < maxx and n2 > maxx2:
        maxx2 = n2
print(maxx,maxx2)
Вопрос: Почему PHPStorm советует static для fn функций?

Лучший ответ: Не кодил на PHP 100 лет, точного ответа не подскажу. Однако идея, что статическая лямбда будет видеть меньше переменных -> проще для GC = уже кажется, как небольшая победа.

https://www.designcise.com/web/tutorial/what-are-s...
https://www.php.net/manual/en/functions.anonymous....

Худший ответ: Такая функция будет меньше памяти потреблять т.к. как-бы без замыкания будет. Но в некоторых сценариях будет работать медленнее чем нестатик вариант.
Вопрос: C# и OutOfmemoryExtension — как перейти на полноценные 64х?

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

1. Убедись что Target platform у тебя x64 (Но вообще, если у тебя dotnet core, то он и так и так не будет упираться в 4гб)
2. Убедись, что где-то в недрах у тебя не выделяется массив более чем на int.MaxValue элементов (внутри словарей массив, если мне память не изменяет)
3. Убедись, что это ошибка именно из рантайма приходит, а не выкинуто где-то явно
4. Попробуй как-нибудь разделить свои данные, чтобы для их хранения не требовался непрерывный кусок памяти.
5. Если ты используешь net framework, а не net core, то тебе нужно в конфиге явно указать, что ты хочешь создавать объекты более 2гб размером.
https://docs.microsoft.com/en-us/dotnet/framework/...

VS2022 и так x64, да и даже если бы была х32, как в 2019 - это бы не повлияло на само приложение.
Ну и возьми dotMemory, чтобы продиагностировать проблемы в работе с памятью.

Худший ответ: Фрагментация существует в самой памяти ОС, там вполне может не оказаться таких больших непрерывных блоков.
Чтобы убедиться в том что приложение 64-битное, надо смотреть флаги в его PE-заголовке. Или на худой конец в диспетчере задач, он подписывает 32-битные.
Тулза от людей из микрософт, которая показывала дефрагментацию оперативной памяти, там полный швах.
Вопрос: Python — бот для телеграмм с погодой?

Лучший ответ: Бот не запущен, нет метода отправки сообщени пользователю

Худший ответ: исправлю ваш код.
import telebot
from pyowm import OWM
from pyowm.utils import config
from pyowm.utils import timestamps
from pyowm.utils.config import get_default_config

config_dict = get_default_config()
config_dict['language'] = 'ru' 

owm = OWM('your free OWM API key', config_dict)
mgr = owm.weather_manager() 
bot = telebot.TeleBot("TOKEN" )

@bot.message_handler(commands=['start'])
def city(message):
    msg = bot.send_message(message.chat.id, "Пожалуйста, укажите ваш город."
    bot.register_next_step_handler(send_echo, msg)

def send_echo(message):
  observation = mgr.weather_at_place(message.text)
  w = observation.weather
  temp = w.temperature('celsius')["temp"]
  tempMin = w.temperature('celsius')["temp_min"]
  tempMax = w.temperature('celsius')["temp_max"]
  WindSpeed = w.wind()["speed"]

  answer = "В городе " + message.text + " сейчас " + w.detailed_status 
  answer += "\nТемпература на улице, примерно " + str(temp) + " градусов."
  answer += "\nМаксимальная температура " + str(tempMax) + " градусов." 
  answer += "\nМинимальная температура " + str(tempMin) + " градусов."
  answer += "\nСкорость ветра " + str(WindSpeed) + " метров в секунду.\n\n"


  if temp < 5:
    answer += "Сейчас довольно холодно, не забудь одеть шапку!"
  elif temp < 20:
    answer += "На улице прохладно, одевайся теплее."
  else:
    answer += "Температура комфортная для прогулки!"

bot.polling()
Вопрос: Как совместить работу aiogram и pillow?

Лучший ответ: Программирование - это не про поиск готовых решений. Если в теории понимаете, то воплощайте на практике. Если не можете, то не понимаете, перечитывайте документацию.

Худший ответ: 1 нужно взять фото
2 скачать его через bot
3 изменять через pillow
4 отправить
Пример с машиной состояний

@dp.message_handler(state=filterimg.photo, content_types="document")
async def edit(msg: types.Message, state: FSMContext):
                    async with state.proxy() as edits_photo:
                        edits_photo["photo"]=msg.document.file_id
                        os.chdir("bot/edit_photo")
                        file_id=edits_photo["photo"]
                        k=(await bot.download_file_by_id(file_id))
                        img = Image.open(k)
                        img = img.filter(ImageFilter.CONTOUR)
                        img.save(str(num) + ".jpg")
                        img.show()
                        
                    await state.finish()
Вопрос: Сертификат ssl на двух серверах на одном домене подключить letsencrypt ssl?

Лучший ответ: Используйте DNS для валидации

Худший ответ: Сделайте проксирование /.well-known на сервер, с которого запускаете certbot.
Вопрос: Как оптимально оформить сетевой стенд для самообучения?

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

Пара змечаний:
- что гипервизором?
- если Вы в РФ, то помните, что Canonical вовсе даже не Россию поддерживает, поэтому имеет смысл осваивать не бубунту, а "типо отечественные" (они конечно такие же отечественные, как ВАЗ-2101 когда-то, но это не важно) дистрибы: Astra, RED OS, Alt Linux, Calculate

Худший ответ: Esxi или proxmox + eve ng
Вопрос: Какую книгу выбрать для изучения компьютерной графики?

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

Подумай что ты на текущий момент уже изучил.
Посчитай сколько тебе лет и сколько книжек ты прочитал на текущий момент. Даже банально за счет школы ты должен был прочитать несколько десятков учебников.
Подумай, стал ли ты сильным специалистом после нескольких десятков книг? Нет?
Ну так и не думай что одной или десяти книг по программированию будет достаточно чтобы стать сильным программистом. Учить и читать нужно будет ГОРАЗДО больше.

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

Худший ответ: Язык совершенно не важен.
Я изучал компьютерную графику по книге Майкла Ласло "Вычислительная геометрия". Там код на C++, но я переводил всё на Pascal и Delphi (в 1996-1997 годах я знал только эти языки и с С++ не дружил). Одна эта книга сильно меня прокачала.
Потом учил 3D по книге Иванова и Батракова "Трёхмерная графика", на основе которой у меня получилось с нуля написать трассировщик лучей с тенями и CSG.
OpenGL пришлось изучать по докам, потому что книг тогда по этой библиотеке не было
Вопрос: Восстановление RAID 10 полетел диск, как правильно его заменить?

Лучший ответ: А гед бэкапы?

Вынуть умерший диск, вставить новый, подождать пока закончится синхронизация

Худший ответ: Если это RAID-10 - просто вытаскиваешь диск, вставляешь новый. Утилита сама его подтянет в рейд. Прогресс будет отображаться в главном окне Rapid'а. 
В комментах ты дал ссылку на мануал, где говорится, что надо пересобирать рейд вручную - это справедливо только для RAID-0, т.к. там все данные теряются.

Ну и самое главное - без бэкапов ничего не делать.
Вопрос: Почему sudo запрашивает пароль root?

Лучший ответ: sudo перед командой напиши

Худший ответ: Пароль root запрашивает не sudo а systemctl (потому, что пользователь не в группе wheel - был бы он в ней, запрашивало бы его личный пароль).
Вопрос: На какой операционной системе развернуть машину под бекап?

Лучший ответ: Ну так себе вопрос. Смотря что и как бекапить… для одних приложений надо SMB шару под виндоуз, для других - NFS под Линукс, для третьих - объектное хранилище S3, для четвёртых git-репозиторий, для пятых - отдельная СХД, а для каких-то целей аппаратный ленточный массив.

Худший ответ: с точки зрения эффективности - поставить windows server (стоимостью больше 20т.р.) под такую простую задачу - это оверкил.

linux же бесплатен (либо очень дешев, если брать тот же редхат), да работать с ним кому то может сложнее чем с windows но это та цена которую мы платим за free/opensource/свободу...

Ставь linux, без вариантов, так как он гибче и предоставляет больше возможностей и сложнее конфигурации по решению твоих задач. Если что, штатный windows 10 инструмент резервного копирования (он называется резервное копирование и восстановление windows 7) прекрасно складывает бакапы на samba шару, размещенную на linux и это только один из вариантов настройки... если нет нужды копировать права доступа на файлы, то linux без проблем может сам подключаться к шаре windows и по расписанию делать резервные копии, в т.ч. с использованием shadow copy если надо, так что мне не ясно почему некоторые думают что windows безальтернативен тут
Вопрос: Как написать сайт не веб-программисту без особых усилий?

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

Худший ответ: Нет! С таким подходом лучше сразу отказаться от этой затеи.
Вопрос: Как вернуть диалоговое окно если он оказался за пределами экрана?

Лучший ответ: Чтобы вернуть окно из-за границ экрана, которые вы не видите, пожалуйста воспользуйтесь комбинацией клавиш на клавиатуре.
1. Нужно диалоговое окно сделать активным.
2. Нажать горячие клавиши.
win+shift+стрелка влево или в право.
Таким образом вы сможете двигать окно с одного монитора на другой.
Возможно, что ваше окно находится на втором мониторе, который в данный момент не подключен.

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

Я не понял что именно за приложение, но в windows настройки приложений хранятся (варианты):
1. реестр
запускаешь regedit, удаляешь HKEY_CURRENT_USER или HKEY_LOCAL_MACHINE /Software/имя_разработчика_или_приложения/имя_приложения (в меню можно сделать предварительно резервную копию этих разделов, выбрав их, позже этот .reg файл можно просто открыв в проводнике, восстановит значения назад)
2. файлы в каталоге %APPDATA% и/или %LOCALAPPDATA% \имя_разработчика_или_приложения\имя_приложения
так же можно предварительно сделать резервную копию

удалять обычно эти ветки реестра и файлы - безопасно, приложение после этого будет считать что оно только что установлено и инициализировать данные там на значения по умолчанию
Вопрос: Можно ли на Cisco 2911 настроить Openvpn?

Лучший ответ: теоретически да можно
вот с такой штукой Cisco Services-Ready Engine

это по сути компьютеры выполненные в виде модуля
туда ставишь линух и опенвпн/вайргард сервисы и вуаля

а что касается IOS то из VPN-ов там только pptp/l2tp/ipsec

з.ы. когда то на таких модулях s-terra делала шифрование по ГОСТу

Худший ответ: В качестве OpenVPN (и сервера, и клиента) - нельзя.
Вопрос: Как называется такой стиль кода (где весь код в одну строку)?

Лучший ответ: говнокод

Худший ответ: Если речь идет о выходном файле после компиляции sass, то вот: https://sass-scss.ru/documentation/stili_vihodnogo...

Если речь идет о подобном форматировании в исходниках, то тут я согласен с 0xD34F .
Вопрос: Почему в Kotlin (а может и в Java) так много методов?

Лучший ответ: Зачем так много? то есть по вашему лучше когда в проекте велосипеды, так еще они и постоянно повторяются, потому что названия разные и один разраб просто не знал что уже другой сделал простой метод в проекте. Плюс частенько реализация лучше и продуманее своей, нормальный человек не будет тратить много времени на велосипед. Требуется решать задачи бизнеса, а не думать как обрезать строку после определенного символа.
ИМХО в котлине эти методы скорее наделаны скорее показать преимущество котлина с их эксеншенами, в джаве с этим сложнее было.

Худший ответ: Язык расширяется, и эти методы это дополнительные плагины могут быть которые среда устанавливает
допустим анимации, раньше их через код писали а щас есть полноценный аниматор для таких вещей
Вопрос: Как полностью удалить программу?

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

Худший ответ: uninstall tool, простая и удобная
единственный минус - платная, но для кого-то это не проблема.
Вопрос: В моём городе у всех одинаковые IP?

Лучший ответ: у Вас меняется внутренний ИП в сети ТТК или внешний? С чего Вы взяли что ИП у Вас и Олега - одинаковые?
Обычно провайдер выдает пул ИП адресов на какой то участок сети и да - он может меняться, если Вы не купили услугу внешнего ИП. например на 1 дом может вполне быть 1 внешний ИП для абонентов.
Да, если Олега заблочат по ИП на каком то ресурсе, то и Дима потом с этого ИП не сможет зайти на этот ресурс (т.к. блокировка по ИП)

Худший ответ: Это что получается, у всех кто на ТТК одинаковые IP?С чего вы взяли? Как они могут быть одинаковыми, если они меняются постоянно?

какова вероятность того, что при блокировки Олега на ресурсе, Диме попадется этот же IP завтра и он не сможет зайти на ресурс?Вероятность такая есть, и достаточно приличная.
Вопрос: Что находится в .text секции?

Лучший ответ: В .text Находится исполняемый код.

6kb там не зря. Там куча вспомогательного кода, чтобы взаимодействовать с операционной системой. Начиная от загрузки всяких внутренностей libc, до настройки консоли.

Худший ответ: gcc main.c -Wl,-Map=main.map
В main.map будет видно что линковщик положил в .text
Вопрос: Есть какая прога для удаления кэша приложений андроид?

Лучший ответ: Да, есть!

Худший ответ: Я использую SDMaid Pro. Вроде справляется не плохо.
Вопрос: Какой механизм использовать для поднятия и опускания штырей?

Лучший ответ: Соленоид

Худший ответ: Кулачковый механизм, типа такого: https://www.youtube.com/watch?v=qmABJ5lbnhc
Необязательно на целый оборот, можно сделать многозаходный, на 1/2-1/4 оборота. Весь механизм будет максимально плоским, а привод, вращающий нижний кулачок, можно разместить либо сбоку (мотор +червячный редуктор), либо, если есть место, внутри.
Вопрос: Как понять, каких скиллов не хватает комманде?

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

Худший ответ: Разработчиков у вас у всех есть бэкап. А QA если уйдет в отпуск или на больничный?

Кто выполняет функции аналитика? Или разработчики точно знают что хочет клиент?
Вопрос: Какое выбрать кресло до 35к рублей?

Лучший ответ: Рекомендую по возможности попробовать посидеть в том, что хотите купить. Важна поддержка спины и удобный подголовник. Если даже хотите заказать онлайн , доедьте до какого-нибудь местного "Мира кресел" и обсидите там всё, что есть в наличии. Когда кресло будет по вам вы это сразу почувствуете. 
Удачи с покупкой.

Худший ответ: Лично мне очень зашло кресло metta samurai - примерно как маркус, но шире.
По цене около 25к
Вопрос: Удаление данных из БД через определенное время?

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

Худший ответ: У Вас неправильный запрос  SQL! 
Вы сравниваете  user_id  датой!
Нужно как-то такcur.execute("DELETE FROM datas WHERE user_id = ? AND registered < datetime('now','-1 day')", (user_id))
Но нужно добавить колонку  registered с датой регистрации.
А вообще-то удалять ничего не надо, просто не пускайте пользователей с датой старше месяца.
Вопрос: Как сделать вызов кода из другого файла при нажатии на кнопку?

Лучший ответ: В другом файле код находится в классе. Создаете объект этого класса и вызываете нужный метод (который должен быть публичным)

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

Лучший ответ: Если речь идет о computer vision - то да. Скорее всего можно. Но мне жаль ваш талант. Если вы действительно создатите такого бота который обучается по картинке то вас можно нанимать на работу и платить столько денег что дешевая прокачка Эльфа в какой нибудь MMORGPG вам станет просто не нужна. Сможете купить все.

Худший ответ: 1 да
2 да

по первому пункту, это называется автокликер 
по второму пункту, очень неэффективно будет, это получается нужно анализировать каждый кадр, миллион точек, комп свихнется (те кликеры что я видел могут проанализоровать цвет конкретного пикселя, если он один то еще ок)
Вопрос: Как открывать заблокированный в рф сайт по своему домену?

Лучший ответ: Когдато делал для себя, репу столет вроде должен работать, в конфиге домен поменять надо. Ставь на хостинг в европе и готово.

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

Лучший ответ: Статическая переменная в функции. И проверять - если не null - то возвращать её значение. Это один из самых простых вариантов кэширования. При наличии у функции аргументов - статический массив.

Проблемы возникают, как всегда с кэшированием, когда кэш устаревает. То есть, у вас добавится запись в БД (или откуда get_users берет пользователей) - а кэш останется старым. В случае PHP это частично снимается тем, что он перезапускает скрипт на каждый запрос, то есть такой кэш будет жить в пределах одного запуска скрипта. Но тем не менее, это может привести к глюкам.

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

По второму случаю у вас в коде нарушение принципа единственности ответственности: функции method2 и method3 жестко связаны (coupled) с функцией method1 (а функция finish - с ними всеми). Собственно это и порождает проблему. Код можно переписать, например так:
сlass Neptun(){
  private function method1(){
    $users_count = get_users();
    return $users_count;
  }

  private function method2($users){
    if($users > 10){
        return 'it more than 10';
     }
   }

  private function method3($users){
    if(in_array(10, $users)){
         return 'there are user with ID 10';
    }
  }

  public function finish(){
    $users = $this->method1();
     echo $this->method2($users) . ' ' . $this->method3($users);
  }
}

Все, функции method2 и method3 "расцеплены" (decoupled) с функцией method1. А "сборку" в общую конструкцию осуществляет публичный метод finish

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

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

Худший ответ: Можно включить VPA (Vertical Pod Autoscaling) в режиме наблюдения, и понагружать сервис. 
VPA порекомендует нужные реквесты/лимиты. Так вы примерно увидите что на 1т RPS такое-то потребление cpu/mem
Вопрос: Как найти сумму элементов вложенных массивов?

Лучший ответ: const sum = data =>
  Array.isArray(data)
    ? data.reduce((acc, n) => acc + sum(n), 0)
    : (+data || 0);
Здесь, конечно, будет складываться всё, что можно сложить. Т.е., не только собственно числа, но и всё, что может быть сведено к числу, например true, '0xBB', { valueOf: () => 666 } и т.д.

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

Худший ответ: Если нужно сложить только числа, то можно вот так:
let print = s => console.log(s);
let arr = [1,'3', 2, 3, {}, NaN, [2, 4, 5, []]];
arr = arr.flat(Infinity);
let sum = 0;
for(let el of arr) {
  if(Number.isFinite(el)) sum += el;
}
print(sum);
Или так:
let print = s => console.log(s);
let arr = [1, '3', 2, 3, {}, NaN, [2, 4, 5, [] ]];
let sum = arr.flat(Infinity).filter(el => Number.isFinite(el)).reduce((acc,el) => acc + el, 0);
print(sum);
Вопрос: Как написать парсер всех файлов на сайте?

Лучший ответ: Загрузить у сайта Sitemap и пройтись по нему скачивая всё.

Худший ответ: Хотите действительно разобраться? Никак, это невозможно. Современные сервера имеют защиту, а также роутер. Иными словами, вы можете скачать только то, что вам разрешит скачать сервер.

А как же кеш? А вот кеш скачать вполне реально, но нужно обойти защиту.