Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как можно быстро освоить ООП на C#?

Лучший ответ:
Метанит

Худший ответ:
Никак, потому что нет явного определения «правильного» ООП. Есть много точек зрения, например шаблоны GoF. В этом смысле подразумевается, что освоил шаблоны и молодец. 
С другой стороны мужик, который ввел понятие ООП (Алан Кей) говорит что все неправильно поняли и основная идея была в посылке сообщений. 
С третьей стороны есть ООП идеалисты, которые призывают «доверять своим объектам» и полностью мышление поменять на объектное, в том числе отказаться от switch полностью заменив на полиморфизм, отказаться от методов расширения итп.
С четвертой стороны новые фичи языка говорят что ООП уже не модно, а модно ФП и давайте все запаттернматчим и «добавьте уже алгебраические типы!».

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

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

Худший ответ:
Возьмите например SAMBA вроде и работает, но на самом примитивном уровне. Так что при должном вложении ресурсов возможно
Вопрос: Покритикуйте дизайн сайта. Что насчёт структуры?

Лучший ответ:
Не поленился найти работу дизайнера 2013-14 года:



Вот тут в принципе для людей, а не для ваших немощных ядер. А самое главное: ничего особо лишнего нет, ПОТОМУ ЧТО НЕ НАДО. Это вам нужно то, что вы понавтыкали хаотично в макет, а людям это не надо. 

Но это придёт, макетов через 6-10 и с пониманием, что дизайн макетов — логичное завершение всего остального. А после сдачи и запуска таких макетов владельцу придётся все это переделывать, так как там не будет нужных конверсий заявок + не будет хорошей органики (опять, как верно подметили, в том числе из-за того, что ваш "дезигн" обвесят кучей тормознутых плагинов)

Твёрдый нуль. Зиро.

Что делать: почитайте мои ответы на тостере, там концентрат полезной информации, даже с примерами, ссылками и перевёрстками с пояснениями

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

Лучший ответ:
Как виртуальная машина .NET понимает, что объект пора уничтожать? И когда это происходит?
Подробно про сборщик мусора можно почитать тут:
https://habr.com/ru/post/125968/  (не самая актуальная статья, но в целом ок)
https://habr.com/ru/company/clrium/blog/463293/
https://github.com/dotnet/coreclr/blob/master/Docu...

Вкратце, он отслеживает все ссылки на объекты, и если к объекту уже точно никто не сможет обратиться - уничтожает его.
Точный момент времени уничтожения объекта в общем случае сложно назвать
Что будет если нужно выполнить код выше в цикле? То есть будет создано множество объектов.
По идее они мне в дальнейшем не нужны. Как только я получил return (имя папки), этот объект мне не нужен.
И если всё это в цикле, логично будет сразу уничтожить объект.
В этом случае GC очень быстро их соберёт, тк единственная ссылка на этот объект была в переменной в этом методе.
Самостоятельно ничего делать не надо.
Никакой утечки памяти не будет.

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

Худший ответ:
CLRium #5: Garbage Collector. 2019 год 
Расширяет понимание работы GC, выделения и использования памяти и т.п. Но без предварительно чтения соответствующего материала, например, у Рихтера, понять будет сложно.
Вопрос: Какова уязвимость данного подхода?

Лучший ответ:
Поздравляю, вы изобрели "your own PFS" :)

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

Худший ответ:
Имеется в виду не делать своё шифрование поверх UDP Здесь скорее всего главное не делать своё шифрование. UDP всего лишь транспорт, ему совершенно всё равно какую нагрузку он несёт. RH собирается реализовать поддержку икапсуляции протокола SCTP в UDP.  Ты можешь спокойно инкапсулировать TLS в UDP, если хочешь.
Вопрос: Почему происходит данная ошибка?

Лучший ответ:
Вообще, к произовдителю ПО.
Ну можно еще попробовать другую версию JRE (с 1.8, возможно, заработает).

Худший ответ:
Отвечаю сам на свой вопрос - кривые тайминги ОЗУ хоть и проходили Мемтест, но в реальности приводили вот к такой вот ерунде
Вопрос: Как правильно собрать и поставить свой сервер?

Лучший ответ:
Наймите интергратора. Который и спеку на сервер посчитает, и договорится и стойку поставит и питание продумает, и про бэкапы не забудет (вот Вы про них явно забыли).

Когда в вопросе имеют место быть деньги - не стоит доверять Васянам с улицы - они, если что, ответственности не понесут. 

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

Худший ответ:
Как верно подметил GavriKos, сначала нужно определиться с целями.

Необходимо определить допустимую вероятность и максимальную длительность остановки работы... наверное это самые важные параметры. Обычно бизнес их может определить через стоимость потерь.

Имея на руках эти суммы можно смотреть у интеграторов готовые конфигурации и сравнивать, стоит ли надежность ниже расходов на потенциальные потери.

Сервер - понятие в первую очередь философское, и только во вторую очередь материальное (существуют буквально железо и софт, которое производитель позиционирует для серверных задач и поэтому называет "сервер")

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

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

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

p.s. виртуализация - это не цели, это способ их достижения
думай бизнес целями
Вопрос: Какую оперативную память выбрать для ноутбука?

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

Худший ответ:
кингстон берите, не ошибетесь
Вопрос: Бэкап ноутбука и быстрое восстановление к работе, как?

Лучший ответ:
Сделайте бэкап настроенной системы.
Veaam
Acronis
Clonezilla
RcloneDrive

В случае необходимости - восстановите на новый диск\виртуалку

Вариант еще - арендуйте VPS с виндой, поставьте всё там... работайте через RDP... тогда это вообще можно в любого калькулятора делать

Худший ответ:
git на собственную VPS и github + второй диск с настроенной рабочей ОС.

В случае аварии, заменить диск и сделать git pull
Вопрос: Как максимально просто реализовать запуск программы на компьютере по нажатию механической кнопки?

Лучший ответ:
https://www.google.com/search?q=big+button+usb&tbm=isch

А ещё можно взять клавиатуру с доп.кнопками, подпаять проводки к контактам, например, кнопки e-mail, присоединить большую кнопку и в настройках Windows назначить желаемую программу вместо почтового клиента. И никакого программирования. :)


Худший ответ:
Организационно это решается так - на ПК должен быть драйвер, который управляет каким-либо устройством, или в данном случае смотрит состояние устройства и выполняет то, что ему задано алгоритмом. Но вполне можно для низких скоростей обойтись любой прикладной программой, и слушать любой низкоскоростной порт - COM, LPT. Например, как подсказали, слушать состояние какого-то сигнала на COM порту, и делать действия нужные. Кроме кнопки, нужно по-хорошему сделать устройство сопряжения между кнопкой собственно и ПК. Например, к ПК будет COM порт смотреть или LPT, а устройство будет внутри по нажатию кнопки переключать триггер, а возвращать его состояние либо по таймауту (допустим, 0,3...0,5с, да хоть 10 секунд), либо по сигналу с ПК (драйвер или программа на ПК посмотрела что состояние сигнала изменилось, сделала что нужно, и послала на другой вывод свой сигнал). 
spoilerВ древние времена (в начале 2000х) делал на коленках через LPT порт и программку на QBASIC небольшую управление через датчик освещённости (да обычный фоторезистор), свет в комнате включился - выполняет одни действия, выключился  - другие. Ничего сложного особо. На выход тоже делал через LPT управление громкостью звука на через самодельный цифровой регулятор громкости, подключенный к LPT опять же.
Вопрос: Как безопасно хранить enviroment переменные в docker?

Лучший ответ:
Проще всего (нет необходимости ничего устанавливать) - использовать GitHub Secrets.

Худший ответ:
Vault можно использовать и не в ансибле. В вашем случае тоже подойдёт.
Вопрос: Какие подводные в переходе с C# на Java?

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

Что насчет вакансий?
Это вы и сами можете посмотреть на любом работном сайте.

Знаю что языки очень похожи и все такое, вопрос больше про стандартные библиотеки и фреймворки. 
Да, языки похожи, а потому на джунском уровне перейти с одного на другой достаточно просто. На мидловом уровне напарываешься на то, что экосистемы огромны, учить надо очень много всего даже в одной, на двух стульях становится сложно усидеть. На сеньорском уровне надо разбираться уже и в нюансах языка и виртуальной машины, тут-то становится заметно, что JVM и CLR очень разные.

Так что на базовом уровне стоит изучить и то, и другое, но для оттачивания мастерства придётся выбрать что-то одно.

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

Дальше так как ява более стар, то имеет кучу легаси и неохотно добавляют новые плюшки. 

Dot net же наоборот очень агрессивно развивается. 

Насчет совместимости. У явы жуткий бардак как с версиями, так и типами jre. И оракл этому способствует.  У ms все  проще
net 2 *1
net 4 *1
net core 2.1 *2
net core 3 *2
net 5 *3
net 6 
 *1 - старый  легаси
*2 - легаси уже из новой платформы
*3 - еще с год будет актуален

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

Лучший ответ:
Возможно ли с Api telegram создавать новый чат для двух пользователей?
Да, Но тебе нужно client api. Боты не умеют создавать чаты. Смотри в сторону Telethon.
Но вариант со ссылкой лучше. Так не заблочат аккаунт

Худший ответ:
Оставлю это тут.
Самое простое это брать у твоих администраторов при регистрации или как то еще, не только имя (message.from_user.first_name) но и логин (message.from_user.username).

Ну а в дальнейшем если тебе нужно кому-то отправить эту логин для связи то просто отправляешь его через @ и все)
bot.send_message(message.chat.id, f'Тема:"{sheet["F" + str(i)].value}"\nВопрос:"{sheet["E" + str(i)].value}"\nСпособ ответа:{sheet["G" + str(i)].value}\nTelegram: @{sheet["I" + str(i)].value} \nТел:{sheet["C" + str(i)].value}\n', reply_markup=markup)
Результат на фото!

У меня это реализована для системы вопрос ответ , если человек задал вопрос и хотел бы что бы ему ответили письменно то ,я сразу записываю его логин при написание вопроса в excel. Ну и после отправляю сотрудникам что есть вопрос и нужно ответить письменно. НО есть одна проблема если пользователь изначально не сделал себе логин (политикой конфиденциальности Telegram и предотвращением злоупотреблений), то ты просто просто просишь его указать его в настройках ,  других вариантов я не нашел ! 
Если есть решение этой проблемы скажите))
Вопрос: Почему участники часто дают ответы на вопрос в комментариях под оригинальным постом вместо предназначенной для этого секции?

Лучший ответ:
Правильная формулировка такая:
1. Отвечающий сам не уверен, что ответ правильный, и не хочет опростоволоситься, что называется, у всех на виду;
1. Отвечающий сам не уверен

2. Отвечающий боится, как бы кто не подумал, что, мол, ему важна такая мелочь, как очки за правильные ответы.
Отвечающий не считает свой ответ чем-то слишком важным, в том числе и потому, что не считает этот вопрос важным (видимо потому, что ответ очевиден либо находится по первым 1-3 ссылкам в гугле).

Чего тут бояться или опростоволоситься - непонятно. Ответишь неправильно, тебя поправят, станешь умнее. Ответишь правильно - поможешь. Ответишь неправильно, никто не заметит - ну и фиг с ним.

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

Лучший ответ:
Писать код так, чтобы он сам себя документировал.
Давать осмысленные имена переменным и функциям, пусть длиннее, зато читабельнее.
Почитать про архитектуру, паттерны. 
Рекомендую "Чистый код" Р. Мартин. Там эта тема поднимается.

Худший ответ:
Некоторые вещи интуитивно поняты и не нуждаются в комментариях. Например true - понятно, что это истина/можно/да и т.д. Поэтому такие ненужные комментарии нужно опускать, т. к. это просто загромождение кода. Или, как сказали ранее, понятные названия переменных, функций и классов в сочетании с "нормальными" значениями образуют интуитивно понятную связь.
Button_status = "Highlighted"
window_current_x = 500
is_visible = False
Если нет возможности составить нормальные имена или присутствует нестандартный, массивный и сложный код, лучше написать пояснение.
Чтобы тратить меньше времени, можно сокращать переменные, убирая лишние красивые слова. Главное, чтобы коммент был понятен.
def gcd(x, x2):
    # Нахождение наибольшего общего делителя
P.s., все примеры на Python, если что.
Вопрос: Nginx: как лучше сделать переброс портов игровых серверов?

Лучший ответ:
Мануал. https://docs.nginx.com/nginx/admin-guide/web-serve...

Худший ответ:
Если нужно, что-бы весь трафик на GAME_PORT попадал БЕЗ ИЗМЕНЕНИЙ на игровой сервер - тогда stream{}. Меняться будет только IP-адрес "игрока" на адрес этого NGINX-сервера.

Если нужно что-нибудь изменять в трафике, проксировать его - тогда proxy_pass. Но это хоть и маленький, но всё-таки лаг. И IP-адрес "игрока" тоже будет меняться на адрес NGINX-сервера, но можно добавить HTTP заголовок "X-Real-Ip" или "X-Forwarded-For", с исходным адресом "игрока"...

P.S. Порт, которого нет в списке, просто вообще не будет открываться, никак.
Вопрос: Как объединить два выделенных сервера на Ubuntu 20.04 в одну локальную сеть?

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

Худший ответ:
Где сервера? в дата цетнтре? тогда у каждого свой внешний IP... по идее у норм хостеров, передача по этим IP считается локальной... 
А вообще - VPN сервер на одном, клиент на другом
Вопрос: Открыть ссылку в новой вкладке?

Лучший ответ:
Вот массив параметров, которые принимает этот метод. Вам нужен $args['meta']['target'] = '_blank'

$args = array(
	'id'     => '',      // ID элемента меню. Обязательный. Строка. 
	'title'  => '',      // Заголовок элемента меню. Обязательный. Строка. 
	'parent' => '',      // ID родительского элемента меню. Строка. 
	'href'   => '',      // Ссылка для этого элемента меню. Строка. 
	'group'  => false,   // Является ли этот элемент группой. Логический. По умолчанию false
	'meta'   => array(   // Массив дополнительных данных элемента. По умолчанию: пустой массив.
		'html'     => '', // Произвольный HTMl код, который будет добавлен в конце оборачивающего LI тега элемента меню.
		'class'    => '', // Атрибут тега 'class' 
		'rel'      => '', // Атрибут тега 'rel' 
		'lang'     => '', // Атрибут тега 'lang' 
		'dir'      => '', // Атрибут тега 'dir' 
		'onclick'  => '', // Атрибут тега 'onclick' 
		'target'   => '', // Атрибут тега 'target' 
		'title'    => '', // Атрибут тега 'title' 
		'tabindex' => '', // Атрибут тега 'tabindex' 
	),
)

Худший ответ:
'target' => '_blank'
Пробовали?
Вопрос: Почему в unity c# отличается?

Лучший ответ:
Потому что нет ни какой консоли в Unity (в том виде, в котором ты пытаешься это сделать). Твои скрипты C# в Unity становятся частью программы шаблона, в которой нет консоли.

Худший ответ:
Смотри, у C# есть всякие десктопные приложения, их можно в Visual Studio делать, там консоль, ASP.NET(сайты), WinForms, WPF. А в unity такой консоли попросту нету, даже если в WinForms прописать такое, ничего не произойдёт, т.к просто нет куда вывести. А unity это не отдельный язык, у него есть свой API(это для действий одной программы с другой), то-есть по мимо обычных функций и команд C#, есть свои, по типу Vector3 и т.д 
(Попытался объяснить очень простыми словами, спасибо если помог)
Вопрос: Как подать звук из определённый вкладки браузера Google Chrome на наушники вместо вывода на колонки?

Лучший ответ:
На данный момент наверно только с помощью расширений https://tech-geek.ru/choose-sound-output-chrome-tab/

Худший ответ:
Что мешает открыть эти вкладки в разных браузерах и используя возможности Windows 10 через Settings - Sound - Advanced sound options определить конкретный Output для каждого браузера?
Вопрос: О чем может говорить то что в компании не могут прижиться нанятые сеньеры/лиды?

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

Худший ответ:
Так это у вас надо спрашивать почему они уходят, у вас там может разруха полная
Вопрос: Почему Массив символов не ровняется обычной строке?

Лучший ответ:
Потому что ваш код сравнивает указатели (адреса в памяти для строк в var и var2).

Для сравнения строк есть функции strcmp (и ее вариации).

Худший ответ:
Потому что так делать нельзя :)

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

Вы сравниваете два указателя, то есть две переменные, содержащие адреса в куче. Разумеется, они будут разные.

Для сравнения строк есть strcmp(), strncmp(), strcasecmp(), memcmp() и прочие подобные
Вопрос: Можно ли как-то удалить телефон из аккаунта Google без телефона?

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

Номера на несколько месяцев помещаются в "отстойник", и в ряде случаев номер можно вернуть, написав после звонка заявление в салоне оператора.

Но, разумеется, номер должен быть не передан новому владельцу (позвоните на него) и оформлен легально на настоящего человека с паспортом.

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

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

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

Лучший ответ:
Если программирование только хобби - можно учить что угодно и как угодно
Но на работе от вас не потребуют веб-разработку и C#, Unity одновременно)

Худший ответ:
Баланс нужен. С одной стороны на старте не стоит учить одновременно несколько тем, в голове будет хаос. С другой стороны на чём-то одном зацикливаться тоже не стоит, на старте полезен широкий кругозор. Поэтому прочитал один учебник, попрактиковался с изученным, переключился на другой учебник и практику с чем-то ещё. Это позволит взглянуть на отрасль с высоты птичьего полёта и понять, что тебе интереснее. А выбор специализации и оттачивание мастерства - это удел зрелых мидлов.
Вопрос: Как обновить OpenSSH до последней версии в ubuntu 20.04?

Лучший ответ:
В нём нет уязвимостей: дистрибутивы исправляют (бэкпортируют) их в текущей версии, не обновляя ПО до более новой. Так поступают все дистрибутивы с долгосрочной поддержкой.

Если вы хотите обновить версию, вам придётся скомпилировать её самостоятельно.

Худший ответ:
Кто же SSH раскрывает на весь интернет в наше время? Рано или поздно найдут уязвимость в версии, которую ваша ОС не поддерживает - что будете делать? :)
Вопрос: Как получить верный результат в расшифровке?

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

Я уже не говорю о том, шифруя сообщения и создавая одновременно ключ для расшифровки -  вы должны их оба передавать читателю.  Причем, ключ той-же длины, что и само сообщение. Круто! Ладно, сообщение отправили по e-mail. А ключ как будете передавать - голубиной почтой или курьером? Это фундаментальная ошибка.

А техническая -  вы так и не разобрались, где и что у вас индексируется.
Вот вам пища для размышления -  решение вашей задачи (в той постановке, какую вы задали). Попробуйте разобраться сами что и как тут работает.
def encrypt(msg):
    key = []
    new_msg = []
    alphabet = ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ !?.,")
    ind = 0
    while True:
        rannd = random.randint(0, 52)
        key.append(rannd)
        ab_temp = alphabet[rannd:] + alphabet[:rannd]
        new_msg.append(ab_temp[alphabet.index(msg[ind])])
        ind += 1
        if ind >= len(list(msg)):
            break
    print("Зашифрованное сообщение:")
    print(new_msg)
    print('Ключ:')
    print(key)

def decipher(msg, key):
    alphabet = ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ !?.,")
    ind = 0
    new_msg = []
    while True:
        ab_temp = alphabet[key[ind]:] + alphabet[:key[ind]]
        new_msg.append(alphabet[ab_temp.index(msg[ind])])
        ind += 1
        if ind >= len(list(msg)):
          break
    print("Исходное сообщение:")
    print(new_msg)

Шифруем:
encrypt('Hello world')
Зашифрованное сообщение:
['X', 'K', 'w', 'M', 'M', 'f', 'n', 'w', 'j', 'O', 'T']
Ключ:
[16, 32, 11, 27, 24, 10, 48, 8, 49, 29, 42]

Расшифровываем:
decipher(['X', 'K', 'w', 'M', 'M', 'f', 'n', 'w', 'j', 'O', 'T'], [16, 32, 11, 27, 24, 10, 48, 8, 49, 29, 42])
Исходное сообщение:
['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']

Худший ответ:
['Z', 'Z', 'Z', 'Z', 'Z']
Так получилось потому что в цикле шифровали alphabet.index('Z') + rannd, а не буквы исходного сообщения alphabet.index(letter) + rannd

letter = alphabet[(alphabet.index(letter) + rannd) % len(alphabet)]