Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Новый HDD, но произведен несколько лет назад — стоит ли покупать?

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

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

Лучший ответ:
Программирование в первую очередь - прикладная сфера знаний. Писать код всегда должно значить "решать задачу". Это не математи ка и не физика. Это просто язык, на котором вы объясняете машине как что-то сделать за вас. Начните с матлаба или питона, решая задачи, котопые очень долго считать вручную. Если понравится рабство компьютеров, продолжайте в любом направлении, решая и автоматизируя задачи других людей.

Худший ответ:
C++ неоправдано сложный для большенства задач, слабо защищает от ошибок, трубует строгой дисциплины и внимания к деталям.
Для серьезного изучения программирования подходит Haskell, для легкого вхождения (в первую очередь в фронтенд, но и в программирование вообще) - Elm. Они же полезны для лучшего восприятия математики.
Если нужно быть ближе к железу, лучший вариант - Rust.
Из математики стоит познакомиться с теорией множеств и логикой.
Вопрос: Как добавить addclass?

Лучший ответ:
Только я один не понял вопрос? Что значит добавить addClass?

Худший ответ:
Наверное, имелось ввиду класс для каждого статуса. Тогда нужно statusClass = x.
Вопрос: О чем говорит ошибка в консоле?

Лучший ответ:
В методе render у вас обращение к свойству id несуществующего объекта. Устраняется ошибка следующими способами:
1. Задавать начальные state/props.
2. Делать проверку на существование объекта перед обращением к его свойству.

Худший ответ:
ncaught TypeError: Cannot read property 'id' of undefined
не могу прочитать id у "ничего"
Вопрос: Будет ли работать ноутбук если туда скопировать все содержимое жесткого диска другого ноутбука?

Лучший ответ:
Если машины идентичны, то можно клонировать жёсткий диск подготовленной системы и раскатывать его на остальных. Clonezilla, Acronis True Image, Paragon и т.д. Не все программы бесплатны, не все работают без косяков.
Только активировать софт лучше ПОСЛЕ клонирования и на каждой машине отдельно, а не копировать 10 копий с одной и той же лицензией.

Худший ответ:
Только в теории работать будет, но не без косяков, поэтому никто так не советует делать. 
Гемора выйдет больше, вероятней всего  твои настройки слетят, легкие,  Так же не стоит забывать что ты тут планируешь для автозагрузчика сделать.   и драйвера, ты их просто перекидыванием не подтянешь. 
а так да, проблем не будет. но такое решение уж совсем из ряда вон. Если совсем припрет и для себя делаете , лучше руками. либо смотрите виндовс pe, этот метод вам подойдет. 
так же стоит учитывать что виндовс 10 сильно цепляется, не известно что у вас там по лицензиям. и т д . 
только руками мой совет либо https://interface31.ru/tech_it/2014/10/sozdaem-svo...
Если готов столкнуться со всеми этими трудностями, то вперед. Но по времени легче их будет руками установить.
опять же, при установке, сейчас 10 большинство драйверов тянет автоматом.
Вопрос: Примеры сложной верстки?

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

Худший ответ:

Вот это сложная верстка, когда выполнял заказ, столкнулся с этим.
Причем, при наведении на определенную часть, блок должен показаться полностью, а не на половину!
Вопрос: Зачем изучать несколько языков программирования(c++, java)?

Лучший ответ:
Во-первых, гипотеза лингвистической относительности утверждает, что чем больше языков знаешь, тем гибче и богаче твой логический аппарат. По своему опыту могу сказать, что это правда. Например изучение Lisp'ов существенно расширило мои возможности в других языках. Но мой опыт и мнение не так авторитетны, как авторов всемирно известного бестселлера "Программист-прагматик" - Эндрю Ханта и Дэвида Томаса, которые пишут: «Изучайте по крайней мере один новый язык ежегодно. Разные языки решают одни и те же проблемы разными способами. Изучив несколько разных подходов, вы сможете расширить свой кругозор и не погрязнуть в рутине.» 
Во-вторых, рано или поздно профессиональный рост java-программиста, например, неизбежно приводит его к необходимости глубоко понимать работу компилятора и виртуальной машины, а это невозможно без знания C++, на котором они написаны. 
В-третьих, java-программист свободно лазающий за ответами в исходники JVM, способный дебажить сборщик мусора, писать JNI-библиотеки и использовать Compiler API для метапрограммирования имеет больше предложений работы и более выгодные условия.

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

Лучший ответ:
SELECT * FROM users WHERE name='Имя' AND lastname='Фамилия' AND patronymic='Отчество'

Худший ответ:
Не совсем ясна задача.
3 формы с 3 полями и найти если введено в одну форму? Или если Имя в одной а фамилия в другой?
Если просто 3 формы, то в чем проблема перечислить все через and и or?
(where name=$name1 and surname=$surname1 and patronymic=$patronymic1) or 
(where name=$name2 and surname=$surname2 and patronymic=$patronymic2) or 
(where name=$name3 and surname=$surname3 and patronymic=$patronymic3)
Вопрос: В каком классе писать логику столкновений двух объектов?

Лучший ответ:
Нигде. В парадигме ООП и снежинка и варежка и сцена - описывают только свое поведение методами и свойствами.  Введите ещё одну абстракцию - мир(или физика), которая содержит все эти объекты и описывает поведение их взаимодействия. 
Сцена детектит столкновение снежинкой и варяжкой - передает миру, а тот в свою очередь удаляет снежинку, запускает анимацию варяжке, запускает в сцене радостный звуковой щелчок.
Таким образом, если в дальнейшем реализовывать дополнение "Грачи прилетели", то легко реализуется логика столкновения варяжки и помета => помёт остается, варяжка замирает, в сцене грустный звук "ооу"

Худший ответ:
Я бы писал в снежинке.
UPD: но точно не в сцене.
Вопрос: В чём ошибка в mysql_query(" SELECT ")?

Лучший ответ:
"$place - массив, преобразованный в строку функцией implode (элементы перечислены через запятую)"
Подозреваю что ошибка тут. Если все так как вы написали, то у вас получится position IN ('p1,p2,p3') вместо position IN ('p1', 'p2', 'p3').
Объединять надо не "через запятую", а через ', '

Худший ответ:
Кто ж так пишет ? заведите переменную , выводите её содержимое и смотрите как выглядит ваш запрос
Вопрос: Как мне устранить все проблемы при установки пакетов npm, без покупки iOS (на Windows)?

Лучший ответ:
наверное, самая частая проблема) для node-gyp нужен python версии 2.7,  и на винде: Visual Studio 2015 и  Visual C++ Build Tools

Худший ответ:
Поставил студию,node tools , создал проект, все работает.........
Пакеты добавил
 windows 10 x64 VS community 2015 Update 2
Как что ставили, какой полный текст ошибки?
Вопрос: Как правильно продать брендовое доменное имя?

Лучший ответ:
Уже много раз писалось: эти домены стоят максимум цену их продления.
1) Зона .pro никому не нужна
2) Если компании будет надо, она заберет этот домен вообще без каких либо проблем.
Просто гуглим "компания отсудила домен" и вникаем в результаты.

Худший ответ:
Самим брендам - никак. Им проще забрать через юристов
Ищи аукционы доменных имен - там приценивайся
Вопрос: Как перевести ширину в проценты css?

Лучший ответ:
Естественно, что не будет выглядеть.
Проценты они ведь такие - считаются от разных значений у разных свойств (у margin-top - от ширины родителя, у translateX - от ширины блока, к которому применяете translate).
Так что тут арифметикой здравый смысл не победишь. 
Если хотите пропорционально смасштабировать, проще использовать препроцессор и замену)

Худший ответ:
Естественно, что не будет выглядеть.
Проценты они ведь такие - считаются от разных значений у разных свойств (у margin-top - от ширины родителя, у translateX - от ширины блока, к которому применяете translate).
Так что тут арифметикой здравый смысл не победишь. 
Если хотите пропорционально смасштабировать, проще использовать препроцессор и замену)
Вопрос: Как реализовать такое портфолио?

Лучший ответ:
- Дико лагает на трех ПК, разной конфигурации, от "калькулятора" до игрового.
- Не интуитивный интерфейс для обычного пользователя. 
- Долгая загрузка. 
- Проблемы с мобильной версией сайта. 
Продолжать? 
Ужасная реализация портфолио.

Худший ответ:
Использовали Pixi.js для рисования,
Browserify для сборки модулей
а так там где-то 12 К строк их кода) думаю разбирательство как это сделано займет много времени)
Вопрос: Какой движок использовать?

Лучший ответ:
у них оно работает на Joomla
разницы, на каком движке делать нет. делайте на том, который лучше знаете

Худший ответ:
я за dle так как с этим движком много работаю и там всё можно реализовать
Вопрос: Как сдвинуть картинку и добавить фон под ней?

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

Худший ответ:
что-то мне подсказывает что это box-shadow
как вариант можно абсолютно позиционированный псевдоэлемент сделать
И еще как вариант, обернуть картинку, родителю - фон, картинку - абсолютно сдвинуть
Вопрос: Как обнаружить keylogger?

Лучший ответ:
Можно попробовать обычным autoruns из sysinternals.
Но искать нужно не в процессах, а в драйверах.
Что-то типа
mciole.dll
atinnt.sys
raspex.sys
atinx2k.sys
последние версии autoruns обычно подсвечивают некорректно подписанные драйвера.
Чтобы не удалить лишнего, сделайте точку отката, либо просто про каждый подозрительный драйвер погуглите в инете. На нормальной машине подозрительных драйверов может быть всего несколько

Худший ответ:
Elite Keylogger обнаруживается AVZ.
Вопрос: Как сделать элементу DIV, чтобы его фон растягивался вместе с ним?

Лучший ответ:
background-size: cover;
Ну и ширину блоку нужно указать 100% с высотой в 100vh

Худший ответ:
https://webref.ru/css/background-size 
background-size размер
Задаёт размер в любых доступных для CSS единицах — пикселях (px), сантиметрах (cm), em и др.проценты
Задаёт размер фоновой картинки в процентах от ширины или высоты элемента.auto
Если задано одновременно для ширины и высоты (auto auto), размеры фона остаются исходными; если только для одной стороны картинки (100px auto), то размер вычисляется автоматически исходя из пропорций картинки.cover
Масштабирует изображение с сохранением пропорций так, чтобы его ширина или высота равнялась ширине или высоте блока.contain
Масштабирует изображение с сохранением пропорций таким образом, чтобы картинка целиком поместилась внутрь блока.
Вам может подойти cover или 100%. Первое вероятнее.
Вопрос: Как сформировать массив?

Лучший ответ:
Без претензий на красоту кода.
Предполагается что исходный массив отсортирован по ключу, пропусков нет.$arr = [
    11 => true, 
    12 => true, 
    15 => false, 
    16 => true, 
    17 => false,
    18 => false
];

reset($arr);
$key_from = key($arr);
$key_to = key($arr);
$last_value = array_values($arr)[0]; 

$result = [];
foreach ($arr as $key => $value) {
    if ($last_value == $value) {
        $key_to = $key;
    } else {
        $result[] = $key_from . ' - ' . $key_to . ' ' . (($last_value) ? 'true' : 'false');
        $key_from = $key;
        $key_to = $key;
        $last_value = $value;
    }
}
$result[] = $key_from . ' - ' . $key_to . ' ' . (($last_value) ? 'true' : 'false');


print_r($result);

Худший ответ:
Без повтора формирования строки:<?php
$arr = [
//...
    11 => true, 
    12 => true, 
    15 => false, 
    16 => true, 
    17 => false,
    18 => false
//...
];

function group($arr) {
	$out = [];

	$v_in = reset($arr);
	$k_in = $k_out = key($arr);

	while( $k_out !== null) {

		$v = next($arr);
		$k = key($arr);

		if( null !== $k  &&  $v === $v_in) {
			$k_out = $k;
			continue;
		}
		
		$out[] = sprintf('%d - %d %s', $k_in, $k_out, $v_in ? 'true' : 'false');

		$k_in = $k_out = $k;
		$v_in = $v;
	}
	
	return $out;
}

print_r( group($arr)); 
/* Array
(
    [0] => 11 - 12 true
    [1] => 15 - 15 false
    [2] => 16 - 16 true
    [3] => 17 - 18 false
) */
Вопрос: Подходящий фреймвок для нейросети?

Лучший ответ:
Зачем вам аж целая нейронная сеть, когда задача предсказания одномерного временного ряда прекрасно решалась и решается методами классического анализа этих самых временных рядов и описана в любой книге по Machine Learning (и разумеется - в любом университетском курсе анализа временных рядов - уже лет эдак 50).
Типичный набор инструментов - базовый python + пакет scikit-learn.  При острой необходимости  - расширяем пакетами statsmodel и pandas. При необходимости вывода графики - matplotlib и/или seaborn. Покроет практически все мыслимые и немыслимые потребности в решении вашей задачи.

Худший ответ:
Как вариант: TensorFlow, Keras
Вопрос: Как сгенерировать 14-ти значное положительное число?

Лучший ответ:
Если нужны длинные (допустим 100-значные), то можно затратно так (пример для 14 значного):BigInteger b;
do{
       b = new BigInteger(48, new SecureRandom());
} while (b.toString().length()!=14);
System.out.println(b.toString());

Худший ответ:
спасибо. оба варианта хорошие.
Вопрос: Продвижение сайта вКонтакте?

Лучший ответ:
"что может дать такое продвижение в цифрах" -
 без вложений круглый 0

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

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

Худший ответ:
Если это обьект тогда без проблем, а вот если примитив то придется постараться
Вопрос: Как решить эту задачу?

Лучший ответ:
У меня дискретной математики не было, но решал бы так. Есть утверждения:Л: Пс Бд
П: Лс Бд
Б: Лс Пе
Найдём пару утверждений из которых один оба раза сорвал, другой оба раза сказал правду. Поскольку утверждения Л-П связаны через Бд,  а П-Б через Лс, остаётся пара Л-Б – кто-то из них оба раза правда, другой оба раза ложь.
Ложное утверждение обозначу с воскл. знаком (логическое НЕ) – например, !Лс.
Итак, один раз соврал и один сказал правду, выходит, Пончик:  П:  !Лс Бд
Чтобы Лс было ложным, надо так же сделать ложными утверждения Б. Значит, Б оба раза соврал, а Л оба раза сказал правду:Л: Пс Бд
П: !Лс Бд
Б: !Лс !Пе
Итого, точно знаем: Пс и Бд. Остаётся Ле.
Ленчик – ель; Пончик – сосна; Батончик – дуб.
upd. Таблица истинности так составляется?Л П Б  Пс Бд  Лс Бд  Лс Пе
0 1 2  0  0   1  1   0  1  конфликт Бд и Лс
0 2 1  0  0   0  1   1  1  конфликт Бд и Лс  
1 0 2  1  1   0  0   0  1  конфликт Бд
2 0 1  0  1   0  0   1  1  конфликт Бд и Лс
1 2 0  1  1   0  1   0  0  ОК
2 1 0  0  1   1  1   0  0  конфликт Лс
Переменные три:  истинность утверждений каждого персонажа. Три возможных состояния: 0 – оба раза соврал, 1 – оба раза правда, 2 – соврал-правда. Дальше раскрываем их значение по каждому из утверждений (0 ложь, 1 истина). Во всех вариантах, кроме одного возникают логические конфликты.

Худший ответ:
что-то вроде таблицы истинности, видимо, надо составить
Вопрос: Может ли сайт принадлежать Васе, один раздел ООО Ромашка, а другой ООО Букашка?

Лучший ответ:
Можно
Владелец интернет магазинов никакими бумажками что они торгуют на сайте не имеют

Худший ответ:
В чем вопрос то? Ты сейчас описал yandex market/amazon/aliexpress/прочая шушера. 
>> то владельцы интернет-магазинов имеют какую-то бумажку, где написано что они торгуют на таком-то сайте, да?
В законодательстве нет "интернет-магазинов" и домен к юридическому адресу не привязан.
Вопрос: Как обрезать длинное слово?

Лучший ответ:
$text = preg_replace_callback('/[\w-]{21,}/ui',
    function ($matches) { 
        return mb_substr($matches[0], 0, 20); 
    },
$text);
Символ "-" добавил для слов через дефис, если не нужно, можете убрать.

Худший ответ:
<?php
$string = 'слово1, слово2 длинноолов1 слово3: слово4. длинноесловоболее20символов';

function getWordsFromString($string)
{
    if (preg_match_all("/\b(\w+)\b/ui", $string, $matches)) {
        return $matches[1];
    }
    return $matches;
}

$matches = getWordsFromString($string);

	foreach($matches as $key => $m) {
		if (mb_strlen($m, 'UTF-8') > 20) {
			unset($matches[$key]);
		}
	}
print_r($matches);
ВозвращаетArray ( [0] => слово1 [1] => слово2 [2] => длинноолов1 [3] => слово3 [4] => слово4 )
Вопрос: Как запустить функцию, имя метода которой передается в строке?

Лучший ответ:
Test - класс, так и вызывайте как метод класса$test = new Test();
$func = 'testFunc';
$test->{$func}();

Худший ответ:
Попробуйте так внутри `run`: $this->{$func}();
Вопрос: Как выносить методы класса в отдельные файлы в ES-2015?

Лучший ответ:
Зачем разбивать класс на файлы?
Может и переменные класса по файлам разделить?
Изврат же полный и как раз таки оверхед.
Если клас очень большой или методы большие - нужно думать над кодом, а не делить на файлы.
И разбивать тогда уже на классы разные, а не методы одного класса.

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

Лучший ответ:
Есть 4-й файл, который все эти классы объединяет посредством include.
Почитайте, пожалуйста, PSR-4. У нас, вроде, 2016 год на дворе. Неймспейсы со времён PHP 5.3 доступны.Чтобы это реализовать, требуется обязательно наследовать классы?
Это зависит от того, чего вы хотите добиться. В одном случае лучше будет сделать наследование, в другом - положить другой объект в свойство. Полагаю, если у вас должен быть объект, который использует 4 других независимых друг от друга и не имеющих общего кода объекта как зависимости, второй вариант действительно лучше в этом случае.Но php ругается, вываливая следующую ошибку: Parse error: syntax error, unexpected T_NEW in ...
Просто нельзя создать новый объект в этой секции (объявление свойств). Положите новый объект в свойство в конструкторе.class Two {
    /**
    * @var One
    */
    public $one;

    public function __construct()
    {
        $this->one = new One();
    }

   #code.....
}
P.S. Вы бы хоть ошибки читали, которые вам PHP выкидывает.

Худший ответ:
Как на счет trait?
Вопрос: Где можно скачать архив с «общением» людей?

Лучший ответ:
freenode logs
еще можно погуглить логи jabber и какие-нибудь dumpы icq
filetype: архивы(rar, gz и тд) и sql, db, txt расширение
сайты с логами по словам scammer, ripper, кидала, black list
типа: 
kidala.info/kidala_ripper_62.shtml

Худший ответ:
Можно поискать дампы сообщений из Twitter, некоторым университетам по-моему полную историю твитов давали на изучение (хотя это и не совсем переписка). А так спарсить несколько веток форума мне видится самым реалистичным вариантом.
Вопрос: Как лучше сверстать такие блоки (blur)?

Лучший ответ:
https://jsfiddle.net/65g09p7t/1/ не?

Худший ответ:
Я бы в блок с кругом засунул див с тремя этими прозрачными прямоугольниками. Этому диву абсолют, родителю релайтив. Абсолютный блок центруешь и задаёшь ему флекс и жастифай контент спейс бетвин
upd:
типа того:
< div class="wrapper" >Круги
	< div class="blocks" >
		< div class="block">Прямоугльник< /div >
		< div class="block">Прямоугльник< /div >
		< div class="block">Прямоугльник< /div >
	< /div >
< /div >
	.wrapper{
		position: relative;
	}
	.blocks{
		position: absolute;
		top: 0; left: auto; bottom: 0; right: 0;
		display: flex;
		justify-content: space-between;
	}
Вопрос: Можно ли залить SVG цветом с помощью CSS?

Лучший ответ:
Можно, но тогда нужно вставить изображение тэгом svg и использовать свойство fill или stroke.
https://jsfiddle.net/zrpu2kf4/

Худший ответ:
fill, но будут проблемы на safari. Лучше изначально покрасить.
Вопрос: Как разместить телеграм-бота на Hiroku?

Лучший ответ:
Не совсем по теме
Вместо
3. В Procfile - web: Bot.py
Надо
worker: Bot.py
Т.к.  бот на web отваливается по таймауту через некоторое время

Худший ответ:
По умолчанию Linux / bash не выполняет команды из текущей директории. Можно попробовать указать команду как ./Bot.py либо python Bot.py либо вообще указать полный путь.
Подробнее можно прочитать например тут: https://linuxconfig.org/linux-path-environment-variable
Вопрос: Как перекодировать utf-8 в windows-1251 на javascript?

Лучший ответ:
Кодировка файла: UTF-8
Кодировка страницы: windows-1251var DMap = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20, 21: 21, 22: 22, 23: 23, 24: 24, 25: 25, 26: 26, 27: 27, 28: 28, 29: 29, 30: 30, 31: 31, 32: 32, 33: 33, 34: 34, 35: 35, 36: 36, 37: 37, 38: 38, 39: 39, 40: 40, 41: 41, 42: 42, 43: 43, 44: 44, 45: 45, 46: 46, 47: 47, 48: 48, 49: 49, 50: 50, 51: 51, 52: 52, 53: 53, 54: 54, 55: 55, 56: 56, 57: 57, 58: 58, 59: 59, 60: 60, 61: 61, 62: 62, 63: 63, 64: 64, 65: 65, 66: 66, 67: 67, 68: 68, 69: 69, 70: 70, 71: 71, 72: 72, 73: 73, 74: 74, 75: 75, 76: 76, 77: 77, 78: 78, 79: 79, 80: 80, 81: 81, 82: 82, 83: 83, 84: 84, 85: 85, 86: 86, 87: 87, 88: 88, 89: 89, 90: 90, 91: 91, 92: 92, 93: 93, 94: 94, 95: 95, 96: 96, 97: 97, 98: 98, 99: 99, 100: 100, 101: 101, 102: 102, 103: 103, 104: 104, 105: 105, 106: 106, 107: 107, 108: 108, 109: 109, 110: 110, 111: 111, 112: 112, 113: 113, 114: 114, 115: 115, 116: 116, 117: 117, 118: 118, 119: 119, 120: 120, 121: 121, 122: 122, 123: 123, 124: 124, 125: 125, 126: 126, 127: 127, 1027: 129, 8225: 135, 1046: 198, 8222: 132, 1047: 199, 1168: 165, 1048: 200, 1113: 154, 1049: 201, 1045: 197, 1050: 202, 1028: 170, 160: 160, 1040: 192, 1051: 203, 164: 164, 166: 166, 167: 167, 169: 169, 171: 171, 172: 172, 173: 173, 174: 174, 1053: 205, 176: 176, 177: 177, 1114: 156, 181: 181, 182: 182, 183: 183, 8221: 148, 187: 187, 1029: 189, 1056: 208, 1057: 209, 1058: 210, 8364: 136, 1112: 188, 1115: 158, 1059: 211, 1060: 212, 1030: 178, 1061: 213, 1062: 214, 1063: 215, 1116: 157, 1064: 216, 1065: 217, 1031: 175, 1066: 218, 1067: 219, 1068: 220, 1069: 221, 1070: 222, 1032: 163, 8226: 149, 1071: 223, 1072: 224, 8482: 153, 1073: 225, 8240: 137, 1118: 162, 1074: 226, 1110: 179, 8230: 133, 1075: 227, 1033: 138, 1076: 228, 1077: 229, 8211: 150, 1078: 230, 1119: 159, 1079: 231, 1042: 194, 1080: 232, 1034: 140, 1025: 168, 1081: 233, 1082: 234, 8212: 151, 1083: 235, 1169: 180, 1084: 236, 1052: 204, 1085: 237, 1035: 142, 1086: 238, 1087: 239, 1088: 240, 1089: 241, 1090: 242, 1036: 141, 1041: 193, 1091: 243, 1092: 244, 8224: 134, 1093: 245, 8470: 185, 1094: 246, 1054: 206, 1095: 247, 1096: 248, 8249: 139, 1097: 249, 1098: 250, 1044: 196, 1099: 251, 1111: 191, 1055: 207, 1100: 252, 1038: 161, 8220: 147, 1101: 253, 8250: 155, 1102: 254, 8216: 145, 1103: 255, 1043: 195, 1105: 184, 1039: 143, 1026: 128, 1106: 144, 8218: 130, 1107: 131, 8217: 146, 1108: 186, 1109: 190}

function unicodeToWin1251_UrlEncoded(s) {
    var L = []
    for (var i=0; i<s.length; i++) {
        var ord = s.charCodeAt(i)
        if (!(ord in DMap))
            throw "Character "+s.charAt(i)+" isn't supported by win1251!";
        L.push('%'+DMap[ord].toString(16));
    }
    return L.join('').toUpperCase();
}
alert(decodeURIComponent(unicodeToWin1251_UrlEncoded('тест'))); //тест

Худший ответ:
Найти в гугле готовое решение.............