Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Тема диплома по информационной безопасности для ИСиТ?

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

Худший ответ:
Как сказал dmshar - спросите на кафедре. Ну, посмотрите темы прежних работ  в этой области.

Попробую подкинуть интересные идеи:

1) Современные системы строятся по принципу "набить в процессор побольше ядер, чтобы они работали с общей памятью" (много ядер в одном чипе - нереально развести на раздельную память). Это ведёт к уязвимостям типа MeltDown.
Но что если строить систему как "много отдельных процессоров, в каждом процессоре мало ядер, каждый процессор имеет свою физическую память отдельным модулем"? Как это скомпоновать, чтобы не просадить производительность? Как организовать обмен данными? В каких режимах эксплуатации это целесообразно использовать (подсказка: например, микросервисы; ну или запускать вирт.машины, они вообще изолированы)?

2) Проанализируйте такой способ обеспечения безопасности:
При создании процесса - система генерит ключ шифрования. Этим ключом процессор аппаратно шифрует содержимое памяти процесса. Поскольку у каждого процесса - свой ключ, получить доступ к чужим данным невозможно (можно только забить мусором).
От каких опасностей может защитить такая технология? В каких случаях её невозможно использовать?

3) Есть несколько компонентов, которые исследованы и признаны безопасными. Можно ли утверждать, что при объединении этих компонентов получится безопасная система?
Иными словами: можно ли доказывать безопасность системы по частям, анализируя отдельные компоненты?
(Задача похожа на математическое доказательство теоремы.)
Вопрос: Как вывести и навсегда оставить на странице сайта введёный текст (типа комента, отзыва и т.п.)?

Лучший ответ:
В дополнение к базам данных. Советую для начала использовать sqlite. Не нужно запускать сервер, хранится в одном файле. Для обучения самое то. 
Как альтернативу django можно посмотреть на flask, тоже на python.

Худший ответ:
Чтобы данные от пользователя отображались на странице, нужна база данных, например на MySql и код на PHP,который
а) получает информацию со страницы о введенном пользователем тексте и сохраняет ее в базу
б) Формирует страницу HTML с учетом хранящихся в базе данных.
Вопрос: Как получить public key SSL сертификата, имея сам сертификат и private key?

Лучший ответ:
А разве фишка LE не в том как раз, что он сам все делает, не требуя от юзера знаний по сертификатам?
JFYI: То, что ниже текста BEGIN CERTIFICATE - и есть публичный ключ, он же сертификат.

Худший ответ:
Public Key является составной частью сертификата.
Для этого сертификат и нужен - рассказать окружающим: верьте этому public key, и будет вам счастье.
Вопрос: Почему нельзя инициализировать в case?

Лучший ответ:
switch(1){
case 1:
    double d = 1; //ошибка
}
Почему нельзя инициализировать в case?
С этим кодом всё в порядке с точки зрения стандарта. Проблемы начнутся, если добавить меток case в switch после определения переменной d. Переход на эти метки входит в область видимости переменной d, но минует её инициализацию. Это запрещено стандартом (с++98, 6.7:3):It is possible to transfer into a block, but not in a way that bypasses declarations
with initialization. A program that jumps from a point where a local variable with
automatic storage duration is not in scope to a point where it is in scope is ill-formed
unless the variable has POD type (3.9) and is declared without an initializer.

Худший ответ:
Это из кривого наследия C скорее всего. 
switch/case сродни goto но не совсем оно
поэтому можно делать всякие дикие вещи с циклами и if перекрывающими части switch.
И в итоге, что получается.
Такой код вполне себе валидный:int x = 1;
switch (x) {
	case 1:;
	case 2:
		int b = 2;
}

/// Даже с добавлением таких извращений

switch (x) {
	case 1:
		if (a == 1) {
	case 2:
		int b = 2;
	}
}
А такой уже нетint x = 1;
switch (x) {
	case 2:
		int b = 2;
	case 1:;
}
И вроде как всё объяснимо. с одной стороны b видима везде после её объявления, но в case 1 мы можем придти минуя это объявление, как бы противоречие.
В C таких проблем нет, т.к. переменные должны объявляться в начале блока.
Решить можно 2.5 способами. 
1. Обернуть действия в case фигурными скобками
1.5 Вынести их в отдельную функцию
2. Описать переменную до switch
Вопрос: Как грамотно реализовать мультиязычность React и Laravel?

Лучший ответ:
Главный спорный вопрос который вам стоит решить: где хранить статичный первод (надписи, что не меняются или меняются редко, например название кнопки - Отправить/Submit, те все то, что мы обычно не храним в БД и редко меняем).
Варианта два:
1. Использовать только реакт для этого, тогда берете пакет react-localization, там достаточно простые и понятные принципы, сложностей нет.
Преимущества: фронт полностью отдельно живёт и не зависит от бэкенда,  нет дополнительных прослоек, нет привязки к определенному бэекенду и тп

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

Лично я всё же склоняюсь к первому варианту, так как люблю писать максимально (желательно полностью) назависимые фронтенд приложения.

Теперь вторая часть вопроса. Уже касаемо динамических переводов (это контент, комментарии,  и тп, условно говоря всё что мы храним в бд, или храними информацию о них в бд).
Здесь я советую положится на Laravel, берёте пакет от spatie laravel-translatable, он позволяет быстро строить удобные интерфейсы редактирования/чтения переводов в БД, пишете простое API и ри инициализации react приложения получаете данные нужные вам локализации, либо даже отправляете все сразу (они хранятся в json поле mysql/ваше БД, даже доп преобразований особо не потребуется).
Но вариант с отправкой только нужной мне нравится больше, смена локали событие редкое, а вот экономия на размере переданных данных будет существенная.

Ну, а далее уже вешаешь всякие кеширования  тп, чтобы всё летало и готово.

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

Лучший ответ:
notepad++Как удалить строки через закладки
1. Меню -> Поиск -> Пометки -> [вводим что ищем] -> Помечать закладкой (ставим флажок) -> Пометить всё
2. Меню -> Поиск -> Закладки -> Удалить все строки Без закладки
PS: [вводим что ищем] - можно включить regex-выражения и ввести: yandex|google

Худший ответ:
notepad++Как удалить строки через закладки
1. Меню -> Поиск -> Пометки -> [вводим что ищем] -> Помечать закладкой (ставим флажок) -> Пометить всё
2. Меню -> Поиск -> Закладки -> Удалить все строки Без закладки
PS: [вводим что ищем] - можно включить regex-выражения и ввести: yandex|google
Вопрос: Изменить вероятность выпадения чисел?

Лучший ответ:
Нужно смотреть на результат rand как на некое число, вероятность выпадания которого равно 1 / N. И чтобы ваше реальное число выпадало в два раза чаще, ее вероятность должна быть равна двум этим числам 2 * (1 / N). 
В вашем примере, вероятность выпадания любого числа равна 1 / 100, чтобы для чисел от 0 до 50 вероятность была например 2 / N, нужно чтобы они занимали по два числа из результата randint. 

rand = np.random.randint(150, size=1)[0]
if rand < 100:
    res = rand // 2
else:
    res = rand - 50

т.е. если rand < 100, то это числа первой половины, вероятность каждого из которой равны 2 / N, а для rand > 100 and rand < 150 все также 1 / N

Худший ответ:
Нужно смотреть на результат rand как на некое число, вероятность выпадания которого равно 1 / N. И чтобы ваше реальное число выпадало в два раза чаще, ее вероятность должна быть равна двум этим числам 2 * (1 / N). 
В вашем примере, вероятность выпадания любого числа равна 1 / 100, чтобы для чисел от 0 до 50 вероятность была например 2 / N, нужно чтобы они занимали по два числа из результата randint. 

rand = np.random.randint(150, size=1)[0]
if rand < 100:
    res = rand // 2
else:
    res = rand - 50

т.е. если rand < 100, то это числа первой половины, вероятность каждого из которой равны 2 / N, а для rand > 100 and rand < 150 все также 1 / N
Вопрос: Почему не отображается значок "content: «\E645»?

Лучший ответ:
Может там шрифтовые иконки подключены?

Худший ответ:
а сам шрифт то загрузили на сайт? Если да, то еще надо и fon-family прописать у элемента
Вопрос: Как мне вернуть правильный result?

Лучший ответ:
import {ADD_USER} from './actionTypes';
import {HELLO} from './actionTypes';
import firebase from 'react-native-firebase';

export const addUser = (surname, name, patronymic, phone) => {
    return async dispatch => {
        let db = firebase.firestore();
        let user = {
            surname: surname,
            name: name,
            patronymic: patronymic,
            phone: phone,
        };
        let result = 'начальный';
        let docRef = db.collection('users').doc(user.phone);
        try {
            let doc = await docRef.get()
            if (doc.exists) {
                result = 'Такой номер уже есть';
                console.log('Такой номер уже есть');
            } else {
                db.collection('users').doc(user.phone).set(user);
                result = true;
                console.log(true);
            }
        } catch (e) {
            result = 'Произошла ошибка';
            console.log('Произошла ошибка');
        }
        return result;
    };
};let result = this.props.onAddUser(
    this.state.controls.surname.value,
    this.state.controls.name.value,
    this.state.controls.patronymic.value,
    this.state.controls.phone.value,
).then(result => console.log(result))

Худший ответ:
Попробуйте такdocRef.get().then((doc) => {
      if (doc.exists) {
          result = 'Такой номер уже есть';
          console.log('Такой номер уже есть');
      }else{
          db.collection('users').doc(user.phone).set(user);
          result = true;
          console.log(true);
      }
      }).catch((error) => {
          result = 'Произошла ошибка';
          console.log('Произошла ошибка');
      });
Вопрос: Как выполнить функцию после return в python?

Лучший ответ:
Использовать что-нибудь вроде Celery.

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

Лучший ответ:
Блок питания гомно

Худший ответ:
Попробуй мониторить через hwinfo64, включи лог в файл и нагрузи тестом видеокарту
п.с. у меня Gigabyte g1 gtx1070 со старта продаж,  под ручным разгоном работает ~2 года
Вопрос: Поисковой фильтр на основе GET-параметров в laravel?

Лучший ответ:
Один из вариантов:route(
  'route.name',
  array_merge(
      request()->query(),
      [
          'sortBy' => 'relevance_score',
          'sortOrder' => ($currentSortBy === 'relevance_score' && $currentSortOrder === 'asc') ? 'desc' : 'asc',
      ]
   )
)
Вроде, есть что-то более красивое у объекта запроса, не помню почему мы написали именно так у себя.

Худший ответ:
Для реализации такого вариант Алексей Уколов мне кажется очень подходит. Это для случая если вам нужно создать ссылку с одной страницы на другую.
Если же например нужно расширить текущий адрес и дополнить/заменить параметры, можно использовать
{{ request()->fullUrlWithQuery(['foo' => 'bar']) }}
Вопрос: Чипсет материнской платы не поддерживает RAID. Будет ли работать через RAID-контроллер PC-Ix16?

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

Худший ответ:
через Контроллер PCIe-16x будет работать RAID
Вопрос: Стоит ли работать на удалёнке по ИП C# программистом?

Лучший ответ:
Предлагают "в белую", это плюс.
ИП чем отличается от постоянного трудоустройства как сотрудника:
1) Отпускные, больничные - за ваш счет. Отпускные в ИП можно заложить, увеличив сумму.
2) Это не зарплата, которую нельзя отсудить назад, если вы не выполнили условия договора.
В остальном разницы нет.
Разумеется, нужно не забыть заложить сумму налогов сверх основой зарплаты.
При обычной работе в качестве сотрудника вы получаете на руки без налогов и даже не знаете о них.
Тут вы из суммы заплатите сами налоги, значит, сумма должна быть больше.

Худший ответ:
ИП - это не работник.
Дело не в том, что с вами легко разойдутся. Это само собой. Вам могут не заплатить. А может быть так, что и должны окажетесь.
Работник должен приходить на работу, выполнять "трудовую функцию". За это ему платят заработную плату два раза в месяц. Уволить очень сложно, если работник не прогуливает и приходит трезвый. Если накосячит, то материальной ответственности практически нет.
Понятно, что если у работника оклад 15 000, а всё остальное "в конверте", то ему могут в какой-то момент этот конверт не выдать. 
Но отпуск предоставить и оплатить обязаны, заболеет - оплатят больничный. НДФЛ сами перечислят. Страховые взносы, на основании которых будет рассчитана пенсия, перечислят
Что касается ИП. 
Он отвечает за результат. Оплата - в сроки по договору. Не заплатят - иди в суд. Пошлина, арбитраж. Никакой ГИТ не поможет, заказчика, у которого вы "работаете", никто штрафовать не будет. Это обычный гражданско-правовой спор.
Если будет просрочка или качество не устроит, то заказчик может не оплатить, да ещё и взыскать штраф по договору.
Отчетность подаёте сами, налоги платите сами. Перед налоговой отвечаете сами.
Разница колоссальная между ИП и работником.
Поэтому если нет разницы в оплате, для вас лучше быть работником. Если предлагают больше, решайте сами. Если речь только о том, что договор заключат с ИП, читайте внимательно договор и учитывайте все риски
Вопрос: Есть ли книги или курсы о безопасности веб сайтов на php?

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

Худший ответ:
Как защитить сайты от взлома?
Вопрос: Можно ли на js сделать динамическое добавление html?

Лучший ответ:
pug конкретно фича которая вам нужна https://pugjs.org/language/includes.html

Худший ответ:
возьмите gulp + любой шаблонизатор типа https://www.npmjs.com/package/gulp-handlebars-html
https://github.com/carlosl/gulp-nunjucks-render
https://zellwk.com/blog/nunjucks-with-gulp/
вообще вам сюда Как выглядит современный процесс верстки?
Вопрос: Почему при создании объекта из префаба пропадает угол?

Лучший ответ:
Ты же сам в 3 аргумент Instantiate передаешь пустой кватернион. Это и есть поворот.

Худший ответ:
bullet.transform.localEulerAngles =  new Vector3(currentWeapon.bullet.transform.localRotation.x,
                    currentWeapon.bullet.transform.localRotation.y, currentWeapon.bullet.transform.localRotation.z);
могу предложить только попробовать вот так вот присвоить. не через кватернион. а локальные эилеровы углы приравнять локальным эилеровым углам.
Кватернион вам просто поворот заданный возвращает в глобальном так сказать пространстве) а вы его в локальный поворот пихаете.
Вопрос: Какую IDE выбрать для React?

Лучший ответ:
Мне нравится WebStorm. Отличная подстветка кода.

Худший ответ:
Да будет срач=)
webshtorm
Вопрос: Почему у C# программистов по статистике зарплата сильно меньше чем у JS, Java, Python?

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

Худший ответ:
Тут есть очень простое объяснение:
1) Это Unity, которая сильно снижает планку зп по рынку.
2) Студенты. Майкрософт хорошо лоббирует .net в универах, поэтому большая часть студентов (которые готовы работать за еду), идут со знанием .net
3) В США большая часть .net работы — это компании в области гос/финтех-сектора. У нас же по историческим причинам, в этом секторе основной игрок Java. Следовательно и деньги в .net не идут.
4) .Net — дорогой стек, поэтому все стартапы, которые вынуждены большой зп конкурировать с более «стабильными» компаниями за разработчиков, выбирают python/java/php, а не .net. Хостинг на .net — крайне разорителен (сейчас, конечно, появился .net core — но он еще слишком молод, чтобы поменять ситуацию).
5) .net часто используется во всяких тендерных проектах, где руководство использует принцип «совка». Разработчик должен быть голодным и «уставшим».
___
Другими словами — специфика рынка использования .net (весьма ограниченный сектор использования в реальных проектах), плюс большой поток желающих, кто готов работать за еду.
Реально открываешь вакансии, там middle .net разраб — 90-120к тысяч. Хотя проекты такой же сложности на Java — идут уже 120-150к. В общем, так сложилось, что .net платят меньше, и работодатели не шибко хотят поднимать эту планку.
Вопрос: Почему не работает перенаправление вывода bash?

Лучший ответ:
Проверил. Работает.

Худший ответ:
Такое точно работает:bash | tee /path/to/file
Вопрос: Из за чего возникает ошибка Internal server error при попытке отправить POST через CURL для оплаты частями от Privat Bank?

Лучший ответ:
Окей.'partsCount' => 5,partsCount 	Integer 	notNull, min=2, max=25 	Количество частей на которые делится сумма транзакции (Для заключения кредитного договора) Должно быть > 1.'amount' => 2,amount 	Да 	Double 	notNull, Min=300, Max=50 000 	Окончательная сумма покупки
Минимальная сумма 300, у вас 2.
Далее, вы хотите чтобы 2 разделилось каким-то образом на 5?
Правильно ли я понимаю, что вы хотите чтобы пользователь провел 5 транзакций по 40 копеек?
Кроме того - у тебя еще и ошибка в сигнатуре:'signature' => base64_encode ( SHA1 ( '75bef16bfdce4d0e9c0ad5a19b9940df'.'4AAD1369CF734B64B70F'.'12211212121'.' 200'.' 5'.' PP'.'https://adsasd'.'https://saddsa'.' test1200'.' 75bef16bfdce4d0e9c0ad5a19b9940df' ))
Если внимательно посмотришь - у тебя пробелы перед 200, 5 и PP стоят.
Далее: у тебя есть параметр 'recipientId', который ты передаешь, но в хеш-сумме он остутствует, а по правилам должен быть. Либо убирай, либо добавляй в формирование.
Поделаешь то что нужно и получишь другую ошибку:Array
(
    [orderId] => 12211212121
    [signature] => +JYghcAp9oIQq3xR/Zn1PftEvQ8=
    [state] => FAIL
    [message] => bad value: Scheme not found for given store
    [storeId] => 4AAD1369CF734B64B70F
)
Но это все потому, что scheme - это Идентификатор схемы. Выделяется Банком. По умолчанию не передается.
Удаляешь его и получаешь заветное: Array
(
    [orderId] => 12211212121
    [signature] => S4cN/oBUIIJeHlcJgTTM+gcZddQ=
    [state] => FAIL
    [message] => bad value: Payment with sent orderId already exists
    [storeId] => 4AAD1369CF734B64B70F
)
А это потому, что кто-то уже прогнал твой запрос через api или через веб-морду. Меняешь orderid и получаешь заветное:Array
(
    [orderId] => fdsa1
    [signature] => x2m4GaLFv3ptcxZLynRzwuy/t5g=
    [token] => ADFEDB2FB0C7485CB968148D4BFD6B5A
    [state] => SUCCESS
    [storeId] => 4AAD1369CF734B64B70F
)

Худший ответ:
Ты крашишь их сервер.
500 Internal Server Error - это чисто серверная ошибка, он не может обработать твой запрос.
Вопрос: Можно ли претендовать на должность junior-frotnend (trainee) с таким кодом?

Лучший ответ:
Сразу по первой функции
1. workers объявлена, но нигде не используется, const workers = [
    {
      name: 'Mike',
      work: 'Google',
      id: 0
    }
  ];
Тогда уж поместить внутрь возвращаемого объектаreturn {
    workers: [{
      name: 'Mike',
      work: 'Google',
      id: 0
    }],
2. ВместоaddWorker(worker) {
      worker.id = workers.length;
      workers.push(worker);
    },
кошернееaddWorker(worker) {worker.id = workers.push(worker);}
чтобы нумерация начиналась с единицы а не с нуля. ЛибоaddWorker(worker) {workers.push([...worker, id: workers.length + 1]);}
3. функцию removeWorker проще и рациональней переписать в видеremoveWorker(worker) {
        const id = Number(worker.dataset.id);
        const index = workers.findIndex(item => item.id === id);
        workers.splice(index, 1);
    },
4. Код функции isWorkerEmpty можно сократитьisWorkerEmpty(worker) {return Object.values(worker).every(v=>v);}
5. Почему функция возвращения workers называется getUsers не очень понятно.

Худший ответ:
Как уже выше писали - слишком запутано для такой простой задачи. Код должен быть простым и лаконичным. Помимо выше перечисленного заметил вот этот странный код:(function () {
		UiCtrl.createForm();
	}());
Не понятно зачем надо оборачивать вызов метода?
Рекомендации:Юзайте редактор с подсказками eslint. Например Intellij Idea + eslint + airbnb style. Это вас научит писать код в одном стиле.Юзайте современный front-end stack -> nodejs + es6-7 + webpack + ...Изучите -> Vue + React + Angular. Напишите несколько демо-проектов.Напишите резюме. Найдите как написать в современном стиле.Найдите понравившуюся вакансии в крупной-средней фирме. И изучите все что требуется для данных вакансий. После - отправьте резюме во все.Проходите тех-собеседования регулярно.
Вопрос: Как ускорить программу?

Лучший ответ:
Можно решать асимптотически быстрее если не заниматься симуляцией процесса.
Идея в том, что тот кто выходил подышать позже точно окажется после того кто выходил раньше или совсем не выходил.spoilerfin = open('input.txt', 'r')

n, _, *actions = (int(v) for v in fin.read().split())

nToLastPos = {n : i for (i, n) in enumerate(actions)}

res = sorted(range(1, n + 1),
			 key=lambda v: nToLastPos.get(v, -1))

fout = open('output.txt', 'w')
fout.write(' '.join((str(a) for a in res)))
Из советов по python коду:
1. Не храните размер отдельно от списка. Его всегда можно получить с помощью len(arr)
2. По возможности не используйте for i in range(len(arr)). Вместо этого for value in arr или for i, value in enumerate(arr)
3. Генераторы списков или словарей очень полезны.
4. Распакова списков в переменные тоже очень удобная тема.

Худший ответ:
Какой-то слегка перегруженный у вас кодparams1 = 4,5
params2 = 2,3,1,2,1

queue = [i for i in range(1,params1[0]+1)]

for num in params2:
  queue.remove(num)
  queue.append(num)

print(queue)