Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: В чем смысл одинарного и двойного подчеркивания перед переменной или методом при определении класса?

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

Худший ответ:
Ключевое отличие между этими вариантами в том, что в случае участия (явного, либо предположительного) вашего класса в механизме наследования, лучше использовать вариант с двумя подчеркиваниями, что позволит избежать возможной нежелательной перезаписи значения атрибута в противном случае (использование публичного, либо псевдо-приватного с одинарным подчеркиванием):>>> class A:
	      def __init__(self, value):
		         self._value = value
	      def meth_a(self):
		         print('Class A Method with value {}...'.format(self._value))
		
>>> class B(A):	
	      def meth_b(self, value):
		         self._value = value
		         print('Class B Method with value {}...'.format(self._value))
		
>>> x = B(100)
>>> x.meth_a()
Class A Method with value 100...
>>> x.meth_b(40)
Class B Method with value 40...
>>> x.meth_a()
Class A Method with value 40...  # Значение атрибута объекта класса А изменилось !

>>> class A:
	      def __init__(self, value):
		         self.__value = value
	      def meth_a(self):
		         print('Class A Method with value {}...'.format(self.__value))
		
>>> class B(A):	
	      def meth_b(self, value):
		         self.__value = value
		         print('Class B Method with value {}...'.format(self.__value))
		
>>> x = B(100)
>>> x.meth_a()
Class A Method with value 100...
>>> x.meth_b(40)
Class B Method with value 40...
>>> x.meth_a()
Class A Method with value 100...   # Значение атрибута объекта класса А осталось неизменным !
Происходит это по причине, о которой вам уже написали - обращение Python к подобным атрибутам/методам (с двумя начальными подчеркиваниями) через имя соответствующего Класса (при одинаковых явных атрибутах self.__value в обоих классах, мы имеем на самом деле два разных: self._A__value и self._B__value).
Вопрос: Безопасная аутентификая пользователей без сессий?

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

Худший ответ:
https://gist.github.com/zmts/802dc9c3510d79fd40f9d...
умейте пользоваться поиском тут
Вопрос: Как сделать смену изображения при ховере на ссылку?

Лучший ответ:
На чистом CSS, без JS https://jsfiddle.net/b31Lr7fk/
Вместо цветов поставьте свои картинки.

Худший ответ:
Почитайте больше про иерархию селекторов. 
Вот это li a:hover .menu-img
Интерпритируется как <li>
  …
    <a :hover>
      …
        <element class="menu-img">
Потому ваши стили не применяются так как вы хотите.
Что касается самой задачи. При такой верстке я не знаю способа сделать то, что вы хотите без использования JavaScript
Вопрос: Запуск 64-битных ОС на виртуальной машине без поддержки аппаратной виртуализации в linux?

Лучший ответ:
Замените процессор. Серьёзно.

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

Лучший ответ:
После прочтения применять практику по прочитанному или конспектировать например ручкой на бумагу

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

Лучший ответ:
"Фрагментация" отмазка, которую придумали в вк
К реальному состоянию дел сейчас никакая фрагментация не имеет отношения
Удаляются ли реально данные действительно, в реальности могут знать несколько человек
И они вам явно не будут рассказывать правдуfacebook не удаляет фотографииа после GDPR - обязаны

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

Лучший ответ:
Линия - это просто блок с размерами и черным фоном.
Чтобы добиться такого эффекта, достаточно воспользоваться свойствамиposition: absolute; left: N; top: N; - чтобы убрать ее за пределы экранаtransform: rotate(45deg); - чтобы повернуть ее на нужный угол (в данном случае 45 градусов)transition: 2s width; - чтобы анимировать изменение ширины
А после загрузки страницы запустить js скрипт, который задаст новую ширину линии, такую, чтобы она вылезла из-за границы экранаwindow.onload = function () {
  var line = document.querySelector('#line');
  if (line) {
    line.style.width = '100px';
  }
}
Используя это, достаточно просто будет усложнить анимацию так, как вам хочется.

Худший ответ:
Линия - это просто блок с размерами и черным фоном.
Чтобы добиться такого эффекта, достаточно воспользоваться свойствамиposition: absolute; left: N; top: N; - чтобы убрать ее за пределы экранаtransform: rotate(45deg); - чтобы повернуть ее на нужный угол (в данном случае 45 градусов)transition: 2s width; - чтобы анимировать изменение ширины
А после загрузки страницы запустить js скрипт, который задаст новую ширину линии, такую, чтобы она вылезла из-за границы экранаwindow.onload = function () {
  var line = document.querySelector('#line');
  if (line) {
    line.style.width = '100px';
  }
}
Используя это, достаточно просто будет усложнить анимацию так, как вам хочется.
Вопрос: Что такое пакеты в Linux и самое главное откуда ос их берет (Из интернета, уже есть в установленной системе и т.п.)?

Лучший ответ:
https://ru.wikipedia.org/wiki/Репозиторийhttps://ru.wikipedia.org/wiki/Система_управления_п...

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

Лучший ответ:
for (var i = 0; i < thumbnails.length; i++) {
  thumbnails[i].addEventListener('click', function () { // Корень проблемы здесь.
    // Ты обьявляешь (не вызываешь!) в цикле анонимную функцию. При создании эта функция получает
    // ссылку на внешнее лексическое окружение, которым, в данном случае, является тело цикла for.
    // Когда функция вызывается, в своем лексическом окружении i она не находит, и продолжает поиск
    // во внешнем. К моменту вызова, цикл завершен, и i в его лексическом окружении равна thumbnails.length
    fullPhoto.src = photos[i];
  });
}

Худший ответ:
поменяйте var на let - это быстрое решение.
https://learn.javascript.ru/closures-usage
а вот тут, в задачках - решение вашей проблемы
Вопрос: Как правильнее восстановить Windows 10?

Лучший ответ:
Как правильнее переустанавливать Windows 10?Смотря что вы хотите получить в итоге.
Правильный путь это тот который позволяет достичь цели с минимумом затрат.
А ваши цели неизвестны.

Худший ответ:
Да от целей много зависит...
когда некуда слить инфу пользователя. или просто нет времени на это, то:
-грузишься с winPE (стрелец например)
-все что на системном диске кидаешь в папку новую (1 к примеру)
-ставишь винду через winnt setup
-проверяешь загрузчик и активность нужного раздела.
Итого и Винда новая и файлы не потерялись.
минус способа - если сильно фрагментирован и загажен диск (не SSD офк) файлы системы могут быть раскиданы по винту) т.е чревато тормозами
Вопрос: Какому языку, в какой среде начинать учить ребенка программированию 10 лет?

Лучший ответ:
10 лет это 3 класс
Отстаньте лучше от ребёнка. Ему всего лишь 10 лет - какое программирование? Пусть он сначала насладится детством. А уже после - сам начнёт ковыряться в том, что ему понравится

Худший ответ:
Моя (9 лет) с удовольствием прошла игрушку Algotica, там почти нет программирования, но с понятием алгоритма и его оптимизации познакомиться придется ;)
Пихать программирование в начальной школе, честно говоря, особенного смысла не вижу.
Лучше развивать логику и фантазию. Вот вчера решали задачу про рыцарей и оруженосцев, например. Задачи типа "кто выращивает рыбок?" классно тренируют мозги. По их мотивам есть такая игра, у Убунты в репах - Einstein Puzzle.
Вопрос: Поехала верстка с использованием Bootstrap, в чём причина?

Лучший ответ:
чтоб такого не было лучше не верстать бутстрапом :))))))))))

Худший ответ:
перед /body div не закрыт
Вопрос: Какую книгу выбрать для изучения программной архитектуры компьютера?

Лучший ответ:
Таненбаум Э. "Архитектура компьютера"

Худший ответ:
Шикарная книга - Чарльз Петцольд "Код. Тайный язык информатики".
Она не сильно научная, без терминов всяких, которые еще больше путают, все на пальцах.
В оригинале - Charles Petzold "Code: The Hidden Language of Computer Hardware and Software".
Вопрос: Как изменить переменные SCSS c помощью JS?

Лучший ответ:
Вроде как знаю что можно,но не нашел способа нет нельзя. SCSS компилируется в CSS. Используй нативные переменные Updating a CSS Variable with JavaScript

Худший ответ:
Можно загонять данные при сборке Gulp-ом. Библиотеку не помню только.
Но при беглом гуглении нашел вот это.

В режиме же реального времени прорисовки браузером никак.
Вопрос: Swift/Java vs React Native. В чем разница и куда лучше смотреть?

Лучший ответ:
Добрый день. У меня есть опыт разработки на реакт натив 2 года. Его самый большой плюс это скорость разработки(вам не нужно искать 2 разрабов для android и ios). Вы пишите код сразу на две платформы таких образом выкатываете приложение на рынок в очень короткие сроки. Но у него есть и минусы - его производительность будет уступать нативному приложению написанному на Swift/Java. В практике было пару раз что заказчик быстро выкатывает приложение на рынок. Потом его не устраивает производительность и приложение переписывается под Swift/Java.

Худший ответ:
Все эти Swift/Java , React Native/Angular/.., C# /Xamarin устарели и идут в лес в тот день, когда Google выпустил Flutter 1.5. один код под мобайл/web/desktop.
Вопрос: Недоверие сертификату let`s encrypt?

Лучший ответ:
Сайт (TLS-сервер в общем случае) должен сам предоставлять полную цепь сертификатов, подтверждающих его собственный, исключая сертификат корневого ЦС, который в нормальном состоянии находится в хранилище доверенных на клиенте. Так что да, нужно отдавать помимо cert.pem ещё и fullchain.pem. Причина в том, что клиент в норме не должен знать обо всей инфраструктуре PKI каждого ЦС, чей корневой сертификат он хранит, так как она в общем случае динамическая, и подчиненные сертификаты все равно перевыпускаются раз в 1-5 лет (LE с его трехмесячными сертификатами может и менять subCA раз в год), поэтому клиенту негде взять всю цепь сертификатов. Поэтому самое логичное решение - хранить её на сервере, так как он тоже должен знать, кто ему серт подписал, и с сервера же раздавать по мере необходимости.

Худший ответ:
Часто нужно прописать промежуточные сертификаты ЦС, тогда мобильные устройства не будут выкидывать варнинг
Вопрос: Как удалить определенные строки по временным рамкам в БД MYSQL?

Лучший ответ:
Прямыми кавычками ( ' или " ) обозначаются строки. Названия таблиц, полей, и т.п. берутся в обратные кавычки ( ` ).
Ну и нет смысла проверять начало интервала.

Худший ответ:
Решил данной строкой 

$query = "DELETE FROM `number` WHERE dt_end < NOW() - INTERVAL 30 second";

Удаляет по  времени "Сейчас" + 30 секунд
Вопрос: Как в react-select передать массив для свойства isOptionDisabled?

Лучший ответ:
Не надо никаких массивов никуда передавать. Можно указать свойство isDisabled:class App extends Component {
  state = {
    options: [
      { value: "chocolate", label: "Chocolate" },
      { value: "strawberry", label: "Strawberry", isDisabled: true },
      { value: "vanilla", label: "Vanilla" },
    ],
  }

  render() {
    return (
      <Select
        options={this.state.options}
      />
    );
  }
}
Но если кровь из носу нужен отдельный массив и метод для проверки, то можно как-нибудь так, например:class App extends Component {
  state = {
    options: [
      { value: "chocolate", label: "Chocolate" },
      { value: "strawberry", label: "Strawberry" },
      { value: "vanilla", label: "Vanilla" }
    ],
    disabled: [ 'chocolate', 'vanilla' ],
  }

  isOptionDisabled = option => this.state.disabled.includes(option.value)

  render() {
    return (
      <Select
        options={this.state.options}
        isOptionDisabled={this.isOptionDisabled}
      />
    );
  }
}

Худший ответ:
Вы должны передавать в isOptionDisabled функцию, которая принимает первым аргументом опцию и возвращает Boolean. createIsOptionDisabled = disOptions => option =>
  disOptions.some(({ value }) => value === option.value);return (
  <Select
    options={options}
    isOptionDisabled={this.createIsOptionDisabled(disOptions)}
  />
);
Вопрос: Как расширить /home в Ubuntu?

Лучший ответ:
сжимай/откусывай sda3, получившееся неразмеченое объединяй с sda4
потом нужно сдвинуть разделы так, чтобы не размеченное оказалось рядом с sda8
после расширяем sda8 за счёт получившегося свободного места рядом
всё
зы
зачем тебе такой своп на 19гб ? можно откусить от него и добавить  к sda8.
чтобы не перемещать разделы, можно создать ещё один sda9(в любом месте) а уже его монтировать  в какую нибудь директорию пользователя /home/USER/NEW_DIR
ps. ps.
так будет даже лучше (с монтированием раздела в пользовательскую директорию)
т.е. у тебя в ~/ будут храниться только конфиги и самое нужное,
а в ~/NEW_DIR можно складывать любую файлопомойку.
я бы уменьшил /home  до 20-30гб , а остальное отдал под другой раздел, который монтировал бы в  /home/USER/NEW_DIR

Худший ответ:
перемещение разделов с GParted на обычном харде - мягко говоря дело не быстрое
варианты ускорения:
- NTFS разделы быстрее и корректнее менять инструментом Acronis Disk Director
- если старт рута линукса сдвинется, по любому потребуется переустановка груб. готовиться заранее (это не страшно, но надо быть готовым)
- EXT2/3/4 прекрасно бекапятся и восстанавиливаются Acronis True Image, что собственно и дает возможность как предварительного бекапа (очень желательно на сторонний носитель), так и значительного ускорения переразметки

ps в любом случае бекапы это наше все. и треннироваться лучше сначала на кошках виртуалках
Вопрос: Почему интервал в setTimeout не изменяется?

Лучший ответ:
В нулевой момент времени вы запускаете десять интервалов. Каждый из них срабатывает именно "через увеличивающиеся интервалы" - первый сразу, второй через секунду с момента установки, третий через две секунды и так далее.
Вот так должно быть понятнее:setDelay = param => {
  setTimeout(() => console.log("выполнен", param), param*1000)
}

for(var i = 0; i < 10; i++) {
  setDelay(i);
  console.log("установлен", i);
}
Если же вы хотите устроить именно "лесенку", код будет сложнее:setDelay = async (param) => {
  return new Promise((resolve) => {
    setTimeout(() => {
      console.log("выполнен", param);
      resolve();
    }, param * 1000);
  })
}

for(var i = 0; i < 10; i++) {
  console.log("установлен", i);
  await setDelay(i);
}

Худший ответ:
setTimeout не останавливает выполнение потока, соответственно в один момент времени вы устаналиваете сразу 10 таймаутов от 1 до 10 секунд.
Чтобы сделать так, как вы хотите, но без Promise'ов, рекомендую рекурсивные вызовы setTimeoutlet tick = (delay, end) => {
  if (delay >= end) {
    return
  }
  setTimeout(() => {
    alert('hola')
    tick(delay + 1, end)
  }, delay * 1000)
}
tick(1, 10) // Выведет 'hola' 10 раз с разными увеличивающимися интервалами
Вопрос: Как отключить кэш в хроме?

Лучший ответ:
F12 и там

Худший ответ:
ctrl+f5
обновит страницу с принудительной загрузкой страницы и элементов
если у вас статика, смотрите настройки вебсервера, чтобы уменьшить интервал инвалидации данных в кеше
еще есть старый лайфхак, имя всех элементов на странице снабжать хешем, любым, криптостойкость не критична, типа styles.4f2dac.css тогда каждый раз новый файл будет иметь новое имя (но тогда нужна какая то автоматическая система контроля, которая будет подменять именя в коде, обычно это сама система сборки сайта)
Вопрос: Будет ли прирост скорости при усилении роутера Yota с помощью стационарного модема?

Лучший ответ:
скорость вафли может и улучшите, но на скорость йоты это никак не повлияет.

Худший ответ:
Я понял, что мне нужно искать специальный модем принимающий 4g, в который можно напрямую вставить симку.
https://mikrotik.ru/katalog/katalog/hardware/wifi_...
Вопрос: Как переквалифицироваться на специалиста в сфере ИБ?

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

Худший ответ:
Вариант 3. В вузе необходимых знаний не дадут, все равно нужно будет самообразовываться.
Вопрос: Каким наиболее простым способом можно заменить запуск внешней команды в cmd на GUI программу с Drag & Drop?

Лучший ответ:
в cmd можно перетягивать файлы.
Берете и пишете следующее
myscript.batecho "I want to execute %1 file"
pause
И перетягиваете на него нужный файл.
Адаптируйте под себя

Худший ответ:
Если вам нужно сделать ввод имен файлов, то это можно сделать непосредственно в командном файле.
Команда set /p filename="Enter file name: "
Выведет запрос на ввод имени файла. Можно вводить руками, а можно перетащить из проводника или с раб.стола любой файл. Полное имя файла будет в переменной filename:echo.%filename%
Вопрос: Как перенести текст на новою строку?

Лучший ответ:
но она переносится с нереальной шириной, и я не понимаю почему ?li
    line-height: 3.5em

Худший ответ:
.widget_my_nohome li{
    line-height: тут значение;
}
и span сделайте span{
    display:block;
}
Вопрос: Банить по IP на время?

Лучший ответ:
Подключаете примерно такую мидлварь
def _get_ending(n, endings):
    n = n % 100
    if n >= 11 and n <= 19:
        return endings[2]
    else:
        n = n % 10
        if n == 1:
            return endings[0]
        elif n > 1 and n < 5:
            return endings[1]
        else:
            return endings[2]


def _get_message(limit):
    if limit > 3660:
        limit //= 3600
        endings = [_('часа'), _('часов'), _('часов')]
    elif limit > 60:
        limit //= 60
        endings = [_('минуты'), _('минут'), _('минут')]
    else:
        endings = [_('секунды'), _('секунд'), _('секунд')]
    return _('Форма отправлялась менее {} {} назад').format(limit, _get_ending(limit, endings))


def post_limit_middleware(get_response):
    limits = getattr(settings, 'REQUEST_LIMITS', {})

    def middleware(request):
        if request.method == 'POST':
            match = resolve(request.path_info)
            name = '{}:{}'.format(match.namespace, match.url_name) if match.namespace else match.url_name
            limit = limits.get(name)
            if limit is not None:
                now = datetime.now()
                user_id = request.user.username if request.user.is_authenticated else get_ip(request)
                key = hashlib.md5(user_id.encode()).hexdigest()
                cache_name = 'last-request.{0}.{1}'.format(name, key)
                last_request = cache.get(cache_name, now - timedelta(days=1))
                if (now - last_request) < timedelta(seconds=limit):
                    cache.set(cache_name, now)

                    if request.is_ajax():
                        response = JsonResponse([_get_message(limit)], safe=False)
                        response.status_code = 429
                    else:
                        response = render(request, '429.html', {'message': _get_message(limit)})
                        response.status_code = 429
                    return response
                else:
                    cache.set(cache_name, now)
        response = get_response(request)
        return response

    return middleware
Прописывается в settings.py настройку вида
REQUEST_LIMITS = {
    'contact_form': 3600,
}
И живёте спокойно.

Худший ответ:
Если используете кеш - я бы поступил проще. При условии что в ip - ip-адрес:
from django.core.cache import cache

IP_KEY = 'request_ban:{ip}'
DELAY = 3600

result = cache.get(IP_KEY.format(ip=ip))
if result:
     difference = (result - datetime.datetime.now()).seconds
     print(f'Вам осталось {difference} секунд')
else:
     cache.set(
          IP_KEY.format(ip=ip),
          datetime.datetime.now() + datetime.timedelta(seconds=DELAY),
          DELAY,
     )
     print('Добро пожаловать!')
Вопрос: Адаптация дизайна под ширину устройства — работа дизайнера или верстальщика?

Лучший ответ:
Это работа бюджета. По дешевле делает верстальщик, но уже на свое усмотрение. А так дизайнера.

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

Лучший ответ:
Соль в том, что если вы на 100% в точности не уверены, что паттерн репозиторий вам нужен, значит он вам не нужен. В противном случае вы получите лишний слой абстракции, гору копипасты и дублирование того же самого Eloquent.
Советую мастеркласс по DDD (во второй части про репозиторий), объясняет для чего нужны многие вещи.

Худший ответ:
Чет вы сумбурно написали и смешали разные вещи.
В ларавел есть отдельно удобные инструменты/обертки для работы с базой данных, и отдельная вещь это Eloquent ORM по строенная по принципам (анти или нет) патерна ActiveRecord.
Так вот, значит обертки над базой данных ты используешь и реализуешь/используешь удобный тебе подход/патерн к организации моделей. В целом, я советую уходить от Eloquent если проект будет развиваться в перспективе и/или если его будут вести несколько человек, так как начинается брожения моделей-свойств и и методов Eloquent по проекту, что в конце концов приводит к усложнению отладки, развития изменения/добавления редактирования свойств и тд и тп. Конечно если проект простенький, без супер логики и ты знаешь что дальше будет все просто, то можно не парится.
Ну и советую изучить и прочитать этот коммент на тостере напрямую на эту тему: 
https://toster.ru/answer?answer_id=1127442#answers...