Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как подтянуть знания по сетям?

Лучший ответ:
по сетям: сети для самых маленьких на linkmeup , то же самое на хабре.
По DNS, DHCP
Не используйте тостер как гугл :)

Худший ответ:
DNS и DHCP не связанны, точнее в локальных средах запись о машине и полученного ip может попасть во временную запись в DNS сервер. Так устроенно например в Windows Server.
По DNS начните с книги DNS и BIND - https://www.books.ru/books/dns-i-bind-5-e-izdanie-... .
Там рассказано как работает DNS и как его настроить на примере сервера Bind. Если вы работаете ВДРУГ с wndows, то книга все равно будет полезна хотя бы из-за разбора как оно работает. 
Далее переходить на книги по настройки работы DNS в Windows Server и онной установки.
По DHCP  я так и не понял, что вас интересует ?  Если общий принцип работы, то надо все же начинать с работы сетей. Почитайте книги по подготовке к курсам Cisco CCNA.
Можно поискать другой материал - вот неплохо написано на хабре
https://habrahabr.ru/post/87920/
Вопрос: Что можно сделать на opengl новичку?

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

Худший ответ:
Сделайте заставку (screensaver), это очень просто, от нее ничего не требуется, а если будет красивой и еще и осмысленной, например диффузия жидкости (молекулы), или трубопровод, то будет вообще отлично.
Еще игру 3D-змейку можете сделать, это посложнее, на чистом OpenGL неудобно.
Вопрос: Bitrix своя цена для товара в корзине CUSTOM_PRICE?

Лучший ответ:
1) Проверьте настройки складского учета и что-то я не вижу класса провайдера при создании товара. Вы его передаете? Проверьте актуальные данные тут - https://dev.1c-bitrix.ru/community/blogs/vws/about...
2) А в paymentCollection после изменения цены все норм?

Худший ответ:
Какая у вас версия модуля sale?
Вопрос: Какие проекты могут доверить Junior PHP Developer?

Лучший ответ:
 Какие проекты могут доверить Junior PHP Developer?
любые, как по специфике так и по уровню сложности (c)

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

Лучший ответ:
i2c разрабатывался как шина для использования внутри устройства.
Ограничения по длине в спецификации не прописаны, но есть ограничение по паразитной емкости. При 170pF падает скорость, при 400pF - все.
На практике, некоторые модули могут работать и с большей емкостью, но это лотерея и эксперименты.
Учитывайте также, что неэкранированная лапша, а тем более не витая, может очень круто ловить помехи, рождая "необъяснимые" глюки.
1-Wire поддерживает гораздо больше длину, 500 метров - не предел.
https://www.maximintegrated.com/en/app-notes/index...
Или старый добрый RS485

Худший ответ:
Если делать все "по-взрослому", то надо к каждому устройству (или группе, если они рядом) приставлять свой мелкий контроллер и собирать все это на шину типа RS-485 или CAN. 
А так витая пара в помощь, по ней можно и питание и сигналы передавать. Про I2C есть большие сомнения, а вот управление реле и прочие медленные сигналы вполне пройдут.
Вопрос: Как происходит разбиение данных на TCP сегменты?

Лучший ответ:
...и не произойдет ничего страшного. Читаем про семиуровневую модель. Каждый уровень посылает тот обьем, который может послать. TCP фрагментирует на свои единицы, IP - на свои, Ethernet - на свои. При приеме они так же соответственно собираются и на последний уровень - HTTP отдается полностью переданный массив.

Худший ответ:
система управления TCP сама все сделает: и распилит входной поток байтов на пакеты и полноценно в правильной последовательности соберет все обратно, для этого ее и создавали. Как произведется распиловка пользователю не сообщают, сколько есть места в MTU столько посылают :)
сшивок между пакетами ты не увидишь, ибо это проблемы не пользователя, а системы управления передачей данных и они давно все продуманы.
Вопрос: Почему Mikrotik RouterBOARD 951G-2HnD по DHCP выдает адреса в обратном порядке?

Лучший ответ:
Ничего не надо делать. Всё и так хорошо.

Худший ответ:
Если очень-очень хочется, чтобы DHCP на микротике выдавал адреса с начала пула, можно сделать следующим образом: делаете пул из одного адреса 192.168.0.10 указываете следующий пул, в котором тоже один адрес - 192.168.0.11 и у него следующий пул тоже из одного адреса - 192.168.0.12.
Ну и так далее, до конца нужных вам адресов.
Вопрос: Как проверить пренадлежит ли ip-адрес определённой подсети?

Лучший ответ:
10.120.100.255/18
Сначала представить адрес и маску в двоичном виде
00001010.01111000.01100100.11111111/11111111.11111111.11000000.00000000
Затем применить побитове "И" к маске и адресу.
00001010.01111000.01000000.00000000
Затем перевести обратно в десятичную систему.
10.120.64.0

Худший ответ:
18 - это длина маски сети в битах, т.е. количество единиц в битовом представлении маски.
Если представить IP 10.120.100.255 адрес в двоичной системе, получим:
0000 1010.0111 1000.0110 0100.1111 1111
Отсчитываем слева 18 бит - их оставляем как есть, остальное добиваем нулями:
0000 1010.0111 1000.0100 0000.0000 0000
Переводим в десятичную систему побайтово:
10.120.64.0 - это адрес сети. 
Все IP адреса, у которых после этой процедуры получится такой адрес сети, принадлежат этой сети.
На самом деле, анализируя цифру 18 ясно, что последний значащий бит в маске находится в третьем байте адреса, поэтому достаточно было провести подобную операцию только над третьим байтом, оставляя в нем (18 минус 16) значащих левых бит маски, а остальные 6 бит забив нулями. При этом 1 и 2 байт будут как есть, а 4 байт - ноль.
Другой способ - через логическое И (этой операцией легко обнулить незначащие для адреса сети биты):
255.255.192.0 & 10.120.100.255 = 10.120.64.0
Число 255.255.192.0 - это левые 18 бит заполненные единицами остальные 14 бит добиты нулями.
В общем все довольно легко, если иметь под рукой двоичный калькулятор. Небольшая практика и дело в шляпе.
Вопрос: Как подсветить строку таблицы?

Лучший ответ:
.page_table tr:hover {background: #F6C06F;}
Без пробела
https://jsfiddle.net/1cst9ypp/5/

Худший ответ:
.page_table tr:hover td {background: #F6C06F;}
Или просто.page_table tr:hover {background: #F6C06F;}
Вопрос: Не записывает в файл?

Лучший ответ:
Во-первых, f.close() Во-вторых, f = open('result.txt', 'a') В-третьих, f.write('\t'.join(map(str, [name, lname, online, iduser])))

Худший ответ:
Артем Марш, в коде полно ошибок:После первой строки не нужен отступ(4 пробела перед for ...)Не понятно, какая необходимость извлекать сведения из словаря в переменные? (name = item['first_name'], ...)Дуплицирование кода print('|', name, lname, '|', 'id' + str(iduser), '|', 'Пол:', sex, '|', '==>', online). Во всех случаях одно и то же, и поэтому печать на экран можно вывести из блока if sex == 1Запись в файл лучше оформить через контекст, т.е. через withИ самое главное! Сам файл создался, но записей в нем нету.. Файл Вы открываете на запись, а не на добавление. Получается при каждом проходе цикла файл перезаписывается без сохранения предыдущих результатов. Режим для добавления строк в файл:f = open('result.txt', mode='a')Проверка связанная с полом, несколько переусложнена. Лучше подобные проверки выводить в функции для чистоты кода. Не буду писать подробнее, т.к. потребует еще большего времени для объяснения
По поводу вопроса в комментарии к ответу Сергей Горностаев:Какой смысл в преобразовании str в bytes при записи?(.encode('utf-8')) Чтобы при чтении преобразовать обратно в строку Unicode?! По мне, так логичнее так и хранить в Unicode. При открытии файла на запись указать кодировку:with open('result.txt', encoding='utf-8') as f:
    ...Ошибка TypeError: sequence item 3: expected str instance, int found выводится, т.к. аргументами метода join должны быть коллекция из строк(str). А переменная iduser типа int(целое число). Нужно преобразовать перед передачей в join: '\t'.join([ name, lname, online, str(iduser)])
Вот код для записи:with open('result.txt', encoding='utf-8', mode='a') as f:
    f.write('\t'.join([ name, lname, online, str(iduser)]))
илиf = open('result.txt', encoding='utf-8', mode='w')
for item in group['items']:
    ...
        f.write('\t'.join([ name, lname, online, str(iduser)]))
    ...
f.close()
P.S. И маленький совет не связанный с ошибками. Формат в котором Вы записываете в файл  напоминает CSV. Поменяйте:расширение файла на csvразделитель вместо таба(/t) используйте точку с запятой (;)и первыми строчками можете добавить заголовки для полей (расшифровка полей)
И можете смотреть в файл в табличных редакторах(Excel, ...), подвергать в них анализу, сортировке, ...
Вопрос: Какой патерн применить для взаимодействия из одного места взависимости от конфига (YII2)?

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

Худший ответ:
делать надо так: 
3 модели 3 таблицы
модель заказа с параметром type и общими данными
модель для типа 1
модель для типа 2
в моделе заказа связь зависимая от параметра type, например:publiс function getData(){
switch($this->type){
case 1:
$data = $this->hasMany(Model1::classname(),['order_id'=>'id']);
break;
case 2:
$data = $this->hasMany(Model2::classname(),['order_id'=>'id']);
break;
default:
$data = null;
}
return $data;
}
Вопрос: Наследование и(или) уменьшение объема кода — C#?

Лучший ответ:
В учебнике Троелсона на примере фигур рассматривается принцип наследования
Сделайте класс figura (раз уж по английски никак) и там создайте членыprotected double x1;
protected double y1;
protected double x2;
protected double y2;
protected double x3;
protected double y3;
protected double x4;
protected double y4;
От него унаследуйте все свои круги и квадраты
Еще можно в figura определить абстрактные методы Ploshad() и Perim()
А у наследников определить реализацию - каждому свою.
Так правильнее. И вы сможете, например, работать с коллекцией фигур. НапримерList<figura> figuri = new List<figura>();
figuri.Add(new krug());
figuri.Add(new romb());
figuri.Add(new kvadrat());

foreach(var fig in figuri)
{
Console.WriteLine(fig.ploshad());
}
Не сказать, что кода станет сильно меньше. Хотя вам не придется в каждом классе объявлять вот эту портянку из x1, x2... y4
Удобнее будет работать с семейством классов - это очень полезное изменение

Худший ответ:
Важнее научится правильно именовать переменные и объекты: Krug - Disk, Ploshad - Area. Это важно.
На примере класса Krug (остальные фигуры по аналогии).
-Создается полиморфный тип. B данном примере преимущество не заметно, но в реальных проектах может быть много общих методов, которые могут в точности повторяться в классах наследниках.
-public const double Pi = Math.PI; - выкидывается, т.к. создает избыточность
-вместо S = Pi * (r * r); нужно использовать готовый метод Math.Pow
-лучше использовать инициализацию присваиванием double area = Math.PI * Math.Pow(Radius, 2); где это возможно
-методы должны возвращать значение без Console.WriteLine("Shape");, таким образом данный пример можно использовать в приложении WindowsForms, например 
-можно добавить конструктор с параметром для инициализации св-ва Radius class Shape
{
    //общие для фигур методы
    public virtual string GetShapeName()
    {
        return "Shape";
    }
}

class Disk : Shape
{
    public double Radius { get; set; }
    
    public double Area()
    {
        double area = Math.PI * Math.Pow(Radius, 2);
        return area;
    }
 
    public double Length()
    {
        double length = 2 * Math.PI * Radius;
        return length;
    }

    public override string GetShapeName()
    {
        return "Disk";
    }
}
Вопрос: Где ошибка в коде HTML, CSS?

Лучший ответ:
потому что width: auto стоит

Худший ответ:
Сделай для одного блока:
float:left;
width: 70%;
А для второго:
float: right;
width: 30%
Вопрос: Как убрать админ-бар для определенных ролей пользователей?

Лучший ответ:
Нужно изменить права в вашей функции, т.е. просто administrator заменить на publish_posts.
Участник и Подписчик не будут видеть. Автор, Редактор, Админ — будут видеть.
Подробнее current_user_can.

Худший ответ:
Дополню: Не нужно вешать функцию на after_setup_theme, для этого есть специальный хук show_admin_bar.function maybe_hide_admin_bar( $content ) {
    if ( current_user_can( 'publish_posts' ) ) {
        return $content;
    }
    return false;
}
add_filter( 'show_admin_bar' , 'maybe_hide_admin_bar' );
Вопрос: Есть ли программа которая не даст выключить ПК в определенное время?

Лучший ответ:
Да, легко:
www.nncron.ru/help/RU/commands/power_savings.htm#I...Прерывает начинающийся процесс выключения компьютера, который был "перехвачен" с помощью слова WatchQueryShutdown.#( test_no_shutdown
WatchQueryShutdown
Time: * 12-14
Action:
    INTERCEPT-SHUTDOWN
    PAUSE: 2000
    MSG: "Turning off the PC is not allowed from 12:00 to 14:00"
)#
Скачать: www.nncron.ru/download/nncron193b15.exe
Устанавливать как приложение, а не сервис.

Худший ответ:
Через GPO запретить выключать компьютер (естественно физический выключатель не заблокировать) и выключать  shutdown.exe удалённо.
Вопрос: Как подобрать слово по маске?

Лучший ответ:
regexr.com/3gqqmПробовал на локалке написать, но мой ноутбук не тянет словарь из нескольких сотен тысяч слов.
калькулятор какой-то, а не ноутбук

Худший ответ:
/[УТС][бев][она][ирй]/g.test('Убор');
Вопрос: Почему иногда выходит ошибка « Uncaught TypeError: Cannot read property '3' of undefined »?

Лучший ответ:
Кажется, кто-то не в курсе, что индексация массивов начинается с нуля.
Ну нет у вас ни в одном из массивов элемента с индексом 10, нет. Соответственно, когда lon принимает значение 10, map[lon] оказывается undefined, отсюда и ошибка.

Худший ответ:
У вас рандом начинается с 1 до 10 включительно, а элементов у вас 10 (с нуля по 9). 
Вот так https://jsfiddle.net/j1qxmbf7/// Расстановка кораблей 1*1
		for (var i = 0; i < 4; i++) {
			var lat = getRandom(0, 9)
			var lon = getRandom(0, 9)
			
			while ( map[lon][lat] == 's' ){
				lat = getRandom(0, 9)
				lon = getRandom(0, 9)
				console.log('Есть совпадение!')
			}
			map[lon][lat] = 's'
		}
Вопрос: Можно ли создать ios приложение только для себя?

Лучший ответ:
Ставишь Xcode, грузишь приложение на телефон, пользуешься.

Худший ответ:
На ум идет только джейлбрейк и жестко закинуть в устройство
Вопрос: Зачем нужен redux?

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

Худший ответ:
https://github.com/rajdee/redux-in-russian/blob/ma...
https://github.com/rajdee/redux-in-russian/blob/ma...
Можно и вообще без редукса, можно с RxJS
Даже без редукса обычнх синглотонов в ангуляре фабрика, сервис, провайдер, value, константа
Вопрос: Можно ли использовать оператор if в таком варианте программы?

Лучший ответ:
klas=="231"
сравнение не будет работать так как вы ожидаете. Вы сравниваете указатели на строки (т.е. указатели на начало областей памяти, в которых хранятся строки). Т.к. вы хотите сравнить сами строки, т.е. содержимое вышеупомянутых областей памяти, вам нужно либо:
а) воспользоваться функцией strncmp или аналогичными (это путь языка Си).
б) воспользоваться классом std::string из стандартной библиотеки, и сравнивать объекты этого класса. Они уже сраниваются по содержимому (это путь языка C++)

Худший ответ:
klas(4) считывается в начале программы. С чем же его сравнивать?
Вопрос: Как настроить 2х Mikrotik ipsec в разных филиалах?

Лучший ответ:
На самом деле дока по IPSec у микротика довольно бестолковая - например того, что хэш SHA256 не работает ни с чем кроме другого микротика, там не отражено.
Подьем туннелей на IPSec - имеется в виду "чистный" IPSec, а не L2TP/IPSec - их обычно путают состоит из нескольких этапов.
1. Создание "предложения" на каждом микротике - это такой корявый перевод термина proposal. В proposal указываются методы шифрования, хэши и группы Диффи-Хеллмана, которые могу применяться при согласовании параметров. Крайне важно, чтобы оба микротика нашли хотя бы один общий алгоритм шифрования и хэш, и чтобы группы Диффи-Хеллмана совпадали! Здесь же указывается время жизни второй фазы, после чего будет повторный "быстрый" обмен ключами.
2. Создание политики на каждом микротике, которая определяет, что собственно говоря будет шифроваться и что с этим шифрованным контентом делать. Здесь указываются виртуальные маршрутизируемые подсетки, адреса реальных концов туннеля, метод шифрования, используемый proposal
3. Создание удаленного подключения (peer), которое задает многое множество параметров. Здесь указывается IP и порт удаленной стороны, метод аутентификации, метод первичного обмена ключами - базовый или агрессивный, необходимость NAT Travesal (если один из микротиков за натом), проверку proposal, алгоритмы хэша и шифрования, группы Диффи-Хеллмана, время жизни первой фазы, необходимость DPD. Если аутентификация по сертификатам - указывают имена сертификатов, которые должны быть к этому времени уже импортированы. Если аутентификация по ключам - указывают значение ключа.
Если устройство само не инициирует установление туннеля, ставится флаг пассивности, иначе сразу после создания Peer-а, микротик начинает к нему долбиться. Если что-то не так - включите логирование. В микротике используется racoon, поэтому лог там ракуновский, strongswan-а нет, поддержки IKEv2 нет.

Худший ответ:
Вы хотите слишком много телепатии. 
Покажите ваши конфиги, поправить их будет куда проще. Если у вас есть в схеме NAT включите соотв опцию nat-traversal=yes, а из вашей статьи ориентируйтесь на часть под названием "Ipsec/L2TP behind NAT" там всё очень просто.
*Если роутер провайдерский, он может блокировать туннели или ipsec. Такое редко, но случается.
Вопрос: Что делать перфекционисту в такой ситуации?

Лучший ответ:
Чисто как вариант - создать массив из записей типа { action: A.Validator.Len, field: e.login, param: 0, error: "Заполните поле Login" } и в цикле выполнять код типа if (!$action(field, param) { SetId("error", error); }

Худший ответ:
я бы ограничился просто короткой записю if (без фигурных скобок).Моем глазу так приятнее...
Вопрос: REST API. Какой Python-фреймворк выбрать для бэкэнда? Каким пользуетесь вы?

Лучший ответ:
Для REST понравился Flask

Худший ответ:
берите то что лучше знаете 
если python то я за flask если нет таких ограничений то я за asp
Вопрос: Как увеличить размер двумерного массива string?

Лучший ответ:
Правильный вариант - использовать List
Неправильный вариант - выделить память под новый массив на 1 элемент больше и поэлементно все скопировать.

Худший ответ:
Если хотите такой вариант:Array.Resize<int>(ref t, t.Length + 1);
В своём проекте делал. Позже отказался в пользу коллекций с модификацией.
Вопрос: Несколько вопросов у меня?

Лучший ответ:
Ответ на первый вопрос:
CyD NET Utils
Acunetix Web Vulnerability Scanner
SQL Injection Tools
Paros
n4n0bit
пакеты наборов утилит для тестирования уязвимостей и не только

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

Лучший ответ:
С одной стороны да, понимание дизайнером принципов верстки это хорошо. 
А с другой стороны, Вы ставите дизайнера в какие-то рамки. Соответственно, вместо полета его творческой фантазии, на выходе получаете "клеточки по сетке". 
Вы же профессионал и сверстаете все, что нарисует дизайнер, с сеткой, с кривой сеткой или вообще без нее. 
Если это не так, то дело не в дизайнере.

Худший ответ:
вот и я задался таким вопросом. никак не могу понять как уговорить дизайнера рисовать под geo-bootstrap code.divshot.com/geo-bootstrap
Вопрос: Как выполнять функцию в одно и то же время в Django?

Лучший ответ:
Код web-приложений на Django и многих других фреймворках выполняется только в ответ на http-запрос от пользователя и завершается сразу после того, как вернёт ответ. Если код не вернёт ответ в течении нескольких секунд, он будет принудительно завершён сервером. Поэтому даже запустить ваш код с таймером нормально не получится.
Самый простой способ выполнять фоновые задачи в Django - написать собственную management command и вызывать её cron'ом. Более продвинутый и функциональный способ - это использовать какой-нибудь механизм асинхронного выполнения задач, типа Celery.

Худший ответ:
А на cron повешать не пробовали? Он же как раз и нужен для запуска скриптов по таймеру.
Я думаю вы не с той стороны подошли к задаче. Кроном же стартовать джанговские вещи можно или через Celery или через менеджеры. Либо вообще просто питон файл вызывать, а внём функцию через __main__
Вопрос: Как сделать такой счётчик на js?

Лучший ответ:
Достал из своего старого плагина функцию фейковой рандомизации с сидированием. Если интересно погуглите random seeding./**
 * Рандомизация с сидированием
 * @param {number} seed - сид значение
 * @return {number/boolean} - случайное значение из переданного сид значения
**/
function Random(seed) {
	this.number = function(min, max, fixed) {
		if (!fixed) fixed = 'floor';
		max = max || 1;
		min = min || 0;
		seed = (seed * 9301 + 49297) % 233280;
		var rnd = seed / 233280;
		switch(fixed.toLowerCase()) {
			case 'floor': {
				return Math.floor(min + rnd * (max - min));
			}
			case 'float': {
				return min + rnd * (max - min);
			}
		}
	},
	this.boolean = function(rate) {
		if (!rate) rate = 50;
		seed++;
		return Math.sin(seed) <= rate / 100;
	}
}
Как использоватьvar rand = new Random(62086296325); //> seed
rand.number(1, 5, 'floor'); //> 2 (у всех пользователей)

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

Лучший ответ:
Добрый день.
В первом случае используется ActiveRecord, работа с моделью.ActiveRecord is the base class for classes representing relational data in terms of objects.
Во втором построитель запросов Query, не зависит от СУБД.Query represents a SELECT SQL statement in a way that is independent of DBMS.

Худший ответ:
1) результатом будет массив с объектами класса модели(наследника ActiveRecord), каждый из которых содержит данные выборки конкретной записи в БД
Дальше этими результатами можно манипулировать(изменять и сохранять) используя механизмы ActiveRecord.
2) результатом будет массив содержащий выборку записей из БД
Вопрос: "Орех" и «орешек» — одно ключевое слово или два?

Лучший ответ:
Это разные слова. Пишите оба

Худший ответ:
С точки зрения лингвистики одно, с точки зрения вордстате два. Так что ответ зависит от ваших целей
Вопрос: Где шаблон wordpress меню?

Лучший ответ:
Функция вывода меню в шаблоне - https://wp-kama.ru/function/wp_nav_menu
Регистрация функции меню в файле functions.php - https://wp-kama.ru/function/register_nav_menu

Худший ответ:
Функция вывода меню в шаблоне - https://wp-kama.ru/function/wp_nav_menu
Регистрация функции меню в файле functions.php - https://wp-kama.ru/function/register_nav_menu
Вопрос: Как конвертировать/сохранить Unicode в UTF8?

Лучший ответ:
Раз уж собираете URL вручную, то хоть следуйте стандарту. Параметры должны быть urlencoded. В js для этого есть encodeURIComponent

Худший ответ:
Всем спасибо. Извините, что немного ввел в заблуждение т.к. сам думал, что php криво принимает данные.
А оказалось json не любит киррилицу.
Помогло$settings_string=json_encode($setting_array, JSON_UNESCAPED_UNICODE);