Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как отзеркалить текст 1234 на 4321, 1000 строк?

Лучший ответ:
в линуксе команда rev



Худший ответ:
Готовое решение уже предложил Александр.
А автор, если хочет решать его именно в среде Libre office (кстати уточнить что имелось в виду, writer или calc) должен изучить basic, который встроен в эту среду и использовать его.

По моему скромному мнению решение таких задач в офисах - это никому не нужная блажь.

Профессионалам это никогда не интересно. А на уровне кухонного рецепта - решение в 1 посту уже готово.
Вопрос: Почему оба пароля открывают архив?

Лучший ответ:
Коллизия хэш-функции
cryptowiki.net/index.php?title=%D0%9A%D0%BE%D0%BB%...

Худший ответ:
Архив в ZIP шифруется по алгоритму AES с использованием 128битного или 256битного ключа.
Это значит, что ваш пароль сперва конвертируется в ключ соответствующей длины, то есть вычисляется некий хеш от пароля. Ну и соответственно возможна коллизия, то есть один и тот же хеш может получиться из разных паролей.
Вопрос: Нужно ли обновлять Windows 8.1 после установки?

Лучший ответ:
Это у вас надо спросить - нужны вам они или нет.
Если нужны - ставите, если нет не ставите.
На чистоту и легкость это никак не повлияет.

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

Лучший ответ:
Нужен скрипт для отслеживания мышки. И две картинки. Если правильно понял мысль, то подойдет что-то вроде этого.

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

Лучший ответ:
Всем спасибо за ответы, я нашел устраивающий меня вариант, который дает 100% гарантию. Буду просто тупо вещать на body обработчик onmouseover и если обнаружена мышка над документом, считаем, что сайт с открыт с ПК и перестраиваем меню для комфортной работы именно с мышкой. Изначально же буду всегда принимать, что сайт открыт на смартфоне и меню держать в режиме работы с тачем, пока не обнаружена мышка.

P. S. Это не сработало, увы. На смартфонах клики распознаются в том числе и как события мыши, хотя мыши нет.

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

Лучший ответ:
Такой вариант с flex и смещением на пару пикселей:

snippet

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

Лучший ответ:
Делайте на конструкторе. Никто не запрещает.

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

Лучший ответ:
КАЖДЫЕ 20 минут работы перед компом НА 20 минут ОТДЫХА.
На руках часы - каждые 30 минут вибрация, встаю, наливаю воду из кулера, делаю мини зарядку на глаз.

Итог: через каждые 30 минут 4к изображение снова появляется. Для спины - офисное кресло с жесткой спинкой(без качающегося механизма).

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

Вечером после работы - спорт. Бег, плаванье, тренажерный зал = самое полезное что есть для программиста. Можно еще после плаванья пивка бахнуть, тоже тонус прибавляет.

PS: в 20 лет сделал операцию на глаза - было -6, стало 100%.
За 10 лет списком выше - со зрением и спиной пока что всё норм.

Худший ответ:
Кодирование самый быстрый этап. Остальное это придумывание алгоритма. Вот и черте его на бумаге. Ещё попробуйте стоячий стол. Вроде люди говорят хорошо для спины.
Вопрос: Какой вариант конфигурации IPsec между двумя MikroTik посоветуете?

Лучший ответ:
Для связи сеть-сеть есть один вариант - тут выбирать не из чего. Зачем Вам roadwarrior? Roadwarrior - это тогда, когда одна из сторон выходит через неизвестный заранее адрес, например телефон, планшет или допустим приехал я в другой город в командировку, привез с собой микротик, ткнул в гостиничный инет - опа, у меня VPN в контору!

Для постоянной связи обычно делают сеть-сеть. Ну, по крайней мере у меня так работает - с одной стороны rb450G, с другой - strongswan на линухе

Худший ответ:
Был l2tp сеть-сеть, сейчас IKE2 - быстро, стабильно, хорошо

https://mum.mikrotik.com/presentations/ID19/presen...
https://youtu.be/VG3ULbvz1i4
Вопрос: Не парсится дата с сайта. Что делать?

Лучший ответ:
Эти данные заполняет javascript на сайте (с включённым uMatrix у меня тоже ничего не показало). Надо разобраться, что и как скрипт делает, и воспроизвести его логику. Подозреваю, что нужные данные находятся в параметре vfa формы finanaliz-form, но дальше разбираться мне лень.

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

Вам там уже трудолюбиво JSONчики с данными сложили, и в таблицах все есть.при парсинге данных под датой получаю число в ##
Ну так оно так в HTML с сервера и приехало. Или вы даже не смотрели что вам приезжает. А-а-а, ну тогда даже не знаю как помочь, наверное вам необходимо подтянуть скилл. Дерзайте.
Вопрос: Как сделать фон кликабельным js?

Лучший ответ:
d=document.querySelector("#bg");
d.onclick = function(e) {
  if (e.target !== this)
    return;
 alert("click")
}
 Попробуйте так

Худший ответ:
d.addEventListener('click', evt => {
  if (evt.target === d) {
    alert('bingo')
  }
});
Почитайте о всплытии событий. У вас сейчас срабатывает на все события, в том числе те, что всплыли из  дочерних элементов.

Всплывают все, но по event.target можно определить где именно был клик
snippet
Вопрос: Скрытое приложение C#?

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

Худший ответ:
1. Можно просто убрать форму приложения. Тем самым при запуске приложения "не будет" (Делал такое на WinForms)
2. Если скрыть форму, в панеле задач всё равно будет отображаться, но я где то видел прозрачные иконки, можно как то замудрить иконку, и не вооружённым глазом человек даже не увидит приложение
3. Как скрыть в диспетчере задач можно уже найти в гугле, как замаскировать, вот примеры: 
www.cyberforum.ru/windows-forms/thread910552.html
https://habr.com/en/post/180933/
Как скрыть программу из диспетчера задач?
Проделав всё это, возможно, ваше приложение станет "скрытным". Только насчёт "2." я бы поспорил, но всё же.
Добавлено: Но опять же, лучше всего действовать психологически, просто замаскируйте Ваше приложение, например, под какой то Антивирус, или безобидную программку которая <...> делает
Вопрос: Почему создается только одна строка?

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

Худший ответ:
Я так и не понял вопроса.
Если верить тем формулировкам, которые осилил родить автор - "в бд ничего не меняется." и "строки не создаются" - то проблема совсем другая и поля автоинкремент тут не при чем. Но ответ принят. Получается проблема была в том что автор был не в состоянии посмотреть что у него лежит в БД?
Вопрос: Какие два числа до 60 наименее кратны друг другу в прогрессии?

Лучший ответ:
Не очень понятно, но вам, похоже, нужны такие числа, чтобы у них был максимальное наименьшее общее кратное (это то самое 42 для 6 и 7).

Из чисел до 60, очевидно, вам подходят числа 60 и 59 - у них нет общего делителя и НОК равен просто их произведению (3540).  Если нужно строго меньше 60, то берите 58 и 59. Вообще, 2 максимальных числа в промежутке будут вашим ответом. У соседних чисел НОК всегда равен их произведению и произведение двух максимальных в отрезке будет самым большим возможным значением.

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

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

Худший ответ:
Востребовано
Вопрос: С чего начать создание простой игры?

Лучший ответ:
1. Придумываешь основную идею, какие-то игровые механики, концепцию игры
2. Берёшь Unity или monogame
3. Реализовываешь. 

А по источникам - читаешь документацию и что-то ещё про игровую разработку. Универсального рецепта нет.

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

Лучший ответ:
Можно использовать срезы:
a = 'bigben'
print(a[:3],'.',a[3:],sep='')

>>> big.ben
или так:print(f'{a[:3]}.{a[3:]}')

Худший ответ:
*новое слово*=слово[:позиция-1]+'.'+слово[позиция:]
word = 'bigben'
position = 3
new_word = word[:position - 1] + '.' + word[position:]
Вопрос: Как по нажатию кнопки остановить все демон потоки?

Лучший ответ:
Можно использовать библиотеку threading, там есть такая сущность как event. С помощью event можно послать сигнал всем потокам, а потоки получив этот сигнал могут или приостановиться или самоуничтожиться.

Пример использования есть тут:
https://www.bogotobogo.com/python/Multithread/pyth...

Худший ответ:
1) Проще всего такое провернуть используя библиотеку multiprocessing.
2) Как-то так:
code
import multiprocessing 
import time 

def func(number): 
	for i in range(1, 10): 
		time.sleep(0.01) 
		print('Processing ' + str(number) + ': prints ' + str(number*i)) 

# list of all processes, so that they can be killed afterwards 
all_processes = [] 

for i in range(0, 3): 
	process = multiprocessing.Process(target=func, args=(i,)) 
	process.start() 
	all_processes.append(process) 

# kill all processes after 0.03s 
time.sleep(0.03) 
for process in all_processes: 
	process.terminate()

Если ответ устраивает, отметьте ответ решением :)
Удачи :)
Вопрос: Как запустить приложение в Linux со второго IP адреса?

Лучший ответ:
мне нужно запустить программу snmpwalk чтобы она коннектилась к роутеру с адреса 192.168.2.20
Думаю, что вот это должно помочь: echo clientaddr 192.168.2.20 >> ~/.snmp/snmp.conf
См.
В общем случае нет одного рецепта: приложение должно само сделать bind для сокета с которого оно отправляет запросы, каждое приложение делает это по-своему (или не делает совсем).

Худший ответ:
Несколько IP-адресов на одном сетевом адаптере
Вопрос: Какие перспективы у профессий разработчик бд (oracle) и веб-разработчик? Что выбрать?

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

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

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

НИ В КАКОЙ. В прошлом веке кончились те времена, когда ты выбирал себе профессию на всю жизнь. Сейчас мир меняется если не за 2 года, то за 10 лет неузнаваемо.  Важны способности, а не навыки. Важно понимать общие принципы построения программных систем, а не конкретный синтаксис одного языка. Да, возможно через 5 лет разработчики БД будут совсем не нужны (на самом деле нет). Но я тебе точно говорю что и через 5, и через 50 лет будут нарасхват люди с мозгами и руками. И надо не затачивать свои руки под один конкретный инструмент, а разивать мозги, учить теорию, учиться самостоятельности, пытаться стать исследователем, а не мелким лавочником.

Худший ответ:
Я периодически мониторю вакансии, хожу по собеседованиям, даже если их проваливаю, это огромный опыт. Раньше был системным администратором, где-то прочитал про DevOps, тут же начал изучать этот вопрос, заучил Python, SQL и т.п. 
Немного поломанных палок, дров, бессонных ночей и я DevOps. Должно хватить до пенсии, которой не будет, но надо быть на чеку всегда и дома, по возможности что-то читать и велосипедить, какую-то смежную область.
Вопрос: Как запретить доступ для юзеров с VPN?

Лучший ответ:
От накручивания не баны впнов помогают, а верификация. Например, по номеру телефона.

Худший ответ:
Не думаю что есть какой то признак того, что человек сидит за VPN , по сути это просто маршрут трафика. 
К вам придет только его IP адрес и служебная инфа.
Вопрос: Как опубликовать обновление плагина для WP, если он не имеет обратной совместимости?

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

Худший ответ:
Я бы реализовал следующим способом. 
1) Спокойно заливаете обновление в репозиторий
2) Либо как вам уже подсказали добавляете notice, с просьбой нажать на кнопку для запуска обновления или же после обновления плагина автоматически запускаете этот процесс.
3) адаптируете БД под новое обновление, удаляете старую таблицу
Вопрос: Как решить проблему загрузки сайта на php на хостинг?

Лучший ответ:
К "загрузке на сайт" вопрос не имеет никакого отношения.

Такая ошибка может появляться в любой момент - до, во время или после загрузки, а также через год.
Она означает, что произошла ошибка.
Какая именно ошибка - надо смотреть в логах веб-сервера.

Худший ответ:
Нужен хороший хостинг
Попробуй xelent или спринтхост
Вопрос: Почему программа сразу закрывается?

Лучший ответ:
Скорее всего не может найти файл 'listfile.data'.
А вообще Python в exe - это костыль.

Худший ответ:
Добавьте в конце input(), чтобы программа ожидала ввод.
Вопрос: Как сформировать if условие в bash?

Лучший ответ:
celovec, текст в переменной всегда из двух слов?
Используйте псевдомассивы:

example@example:~$ MSG=( speed 22 )
example@example:~$ if [[ "${MSG[0]}" == "speed" ]]; then echo "Скорость = ${MSG[1]}"; fi 
Скорость = 22
example@example:~$ MSG=( car AUDI )
example@example:~$ if [[ "${MSG[0]}" == "car" ]]; then echo "Авто = ${MSG[1]}"; fi 
Авто = AUDI
example@example:~$ MSG=(car AUDI)
example@example:~$ echo ${MSG[1]}
AUDI
example@example:~$ MSG+=("test text")
example@example:~$ echo ${MSG[2]}
test text
example@example:~$ echo ${MSG[@]}
car AUDI test text
example@example:~$ 
example@example:~$ MSG[1]="BMW"
example@example:~$ echo ${MSG[@]}
car BMW test text
example@example:~$

Худший ответ:
echo "Модель = ${MSG//car /}"
Вопрос: Как происходит автоматический вывод средств с Upwork?

Лучший ответ:
Автоматический вывод сделан крайне грубо и топорно.
В указанную дату средства просто переведутся на указанный по умолчанию счёт. Никаких предупреждений. Ты вроде только забыл о нём и тут бац и снова попал на комиссию. А в письме-уведомлении еще так с издевкой написано «если вы не одобряли эту операцию, обратитесь в техподдержку». Только там вам ничем не помогут. Скажут, сам дурак.
Я всегда коплю крупную сумму, чтобы реже платить комиссию. Но Upwork не волнует, как часто ты делаешь перевод. Если у тебя есть $1000, то в указанную дату деньги улетят.
Сейчас научился обходить эту хрень. Ставлю в календарь два напоминания: за день до перевода (чтобы переключить настройку на перевод в ближайшую среду) и на следующий день после перевода (чтобы переключить обратно на раз в квартал). Таким образом, избегаю автоматический перевод.

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

Лучший ответ:
git'y пофиг

Худший ответ:
Для гита все равно, табы или пробелы
Вопрос: Если изображения не показываются, влияют ли они на скорость загрузки?

Лучший ответ:
Слышал о такой вещи как поиск? Загружаются ли элементы, которые display:none?

Худший ответ:
Можешь управлять этим через бэкенд - если устройство определяется как моб то меняй ссылку в: <img src= "<?php $imagePath ?>">
И уже на базе данных о устройстве определяй переменную imagePath - или там путь до маленькой картинки или до большой, или вообще пусто.
Вопрос: Можно ли на hh.ru указать опыт разработки OpenSource и pet проектов?

Лучший ответ:
Указать можно.
Для начинающего и нет другой возможности что то указать.
Можно даже дипломную работу указать, если тема её соответствует вакансии (я серьезно).
Но на миддла? Нет, однозначно.
Вы что-то не так понимаете.
Вы даже не джун еще.
Вы только трейни.
Джуном вы станите через полгода.
И будете им 2-3 года, прежде чем станете начинающим миддлом.
Но:
Если речь про зарплату - джун или миддл - это к ней не имеет отношение. Как договоритесь.
Если вы про название должности - не значит ничего.
Чем менее серьезная контора тем меньшим опытом вы можете быть с более серьезным название должности. Бывают что и сеньором назовут с двумя годами опыта (в реальности до сеньора нужно 7-10 лет, иногда и 15).
Но при этом, к примеру, в Google, те, кого называют junior - на пару голов по квалфицированее иных senior в обычных компаниях работающих.а стать сразу кем то вроде мидла
Только если вы разработчик серьезного OpenSource-проекта (а не мелочи допиливали)
Или если у вас очень серьезный пет-проект.
Никак иначе.
Миддл - это тот кто может самостоятельно делать далеко не тривиальные вещи, без того, чтобы над ним стоял опытный специалист и направлял его.

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

Лучший ответ:
Почему число получается целым, уже объяснил Stranger  in the Q 
Я же постараюсь объяснить, как это работает, и почему оно не лучше Math.floor:
В js тип number представлен числами двойной точности по стандарту кодирования IEEE 754, а это значит, что 53 бита выделяются под значимую часть (старший бит - бит знака, если 1 - то число отрицательное) и 11 бит под экспоненту (старший бит опять же бит знака), всего выходит 64 бита. Притом данный стандарт позволяет абсолютно точно работать с целыми числами до ±252 и поэтому до не давнего времени в js честного int не было.
Теперь к бинарным (не нравится мне перевод "побитовый") операциям, как известно "исключающее или" (xor, ^) с нулем, а так же "или" (or, |) с нулем не меняют число, возвращая другой операнд в неизменном виде. Но тут вклинивается стандарт js и говорит, что бинарные операции выполняются над signed int32 представлением числа и при представлении можно просто отбросить все лишнее, что движки и делают.
Как отбросить все лишние? Да просто, движок js прекрасно знает, в какой части числа расположена значимая часть, он просто берет младшие 32 бита значимой части и кладет их в int32 контейнер ну и еще переносит бит знака на свое место. Обратное преобразование похоже - в нулевой float64 контейнер раскладываем: старший бит (знак) на свое место, остальные 31 бит - на свое.

А теперь давайте поэкспериментируем в обычной браузерной консоли:Math.floor(1.1) // 1
parseInt(1.1) // 1
1.1 | 0 // 1
1.1 ^ 0 // 1 - как уже писал выше, эффект будет 1 в 1, как и с |

// пока все было ок, но как насчет отрицательных чисел?
Math.floor(-1.1) // -2 - округляем в сторону -Infinity
parseInt(-1.1) // -1 - отбрасываем экспоненту
-1.1 | 0 // -1 - отбрасываем экспоненту и не только (но тут не имеет значения пока)

// попробуем с чем-нибудь побольше
2 ** 31 // 2147483648
2147483648 | 0 // -2147483648
/*
не зная как преобразовывается число выше, это было бы не очевидно
но смотрим выше "он просто берет младшие 32 бита значимой части и кладет их в int32 контейнер"
2 ** 31 в двоичном виде - это единичка и 31 нолик
и эта единичка попала в бит знака при переноси в int32
тем самым мы получили самое маленькое число в int32
*/

// давайте еще пример, набью как я большое число от балды:
34646456436346346212424 // 3.464645643634635e+22
34646456436346346212424 | 0 // 1178599424
/*
ну в первом примере мы видим интересную особенность чисел с плавающей запятой
мы можем хранить не только дробные числа, но и очень большие целые, правда с потерей точности
e+22 - это и есть экспонента, это значит число до e нужно умножить на основание системы счисления (10) в степени +22
а при бинарной операции эта экспонента отбрасывается, как и старшие биты значимой части
в 32 младших битах осталось 1178599424
забавно, что я случайно вбил такое число, у которого 32 бит содержал 0 (шансы были 50/50)
если бы там оказалась 1, то я бы вновь получил отрицательное число
*/

Худший ответ:
Лучший способ 
let v = 999.99|0; // out: 999
Вопрос: Как происходит управление децентрализованными ботнетами?

Лучший ответ:
Злоумышленник имеет у себя свою версию бота, только слегка продвинутую, с возможностью менять конфигурацию. По сути смена конфигов и будет считаться командой. Главный параметр - версия бота. Если она больше, чем у бота на соседней машине, то соседний бот захочет скачать новые файлы и конфиги и обновиться до более актуального состояния, а там и новый функционал подъедет.
Другие боты расценивают бота на компе злоумышленника, как самого обычного бота. Они не знают, что злоумышленник настраивает его вручную. Таким образом, поймать его гораздо сложнее. Плюс такой ботнет устойчивее к разным проблемам в сети.
Принцип действия напоминает торренты. Достаточно, чтобы фильм скачал полностью хотя бы один лич, и он уже становится пиром, а источник может спокойно уйти в оффлайн, и уже невозможно вычислить источник (кроме как по теме, созданной на форуме, но у ботнетов такого нету).
Каждый бот хаотично опрашивает разные ip и ищет собратьев, сверяется с ними, у кого конфиг новее и правильнее. В случае чего - сразу обмен. Только в отличие от торрентов размеры файлов микроскопические, в современных сетях качаются почти моментально. Хотя, для незаметности можно не делать резких нагрузок на канал и растянуть удовольствие скачивания, но это уже отдельные тонкости.

Худший ответ:
Копай в сторону Backscatter analysis и Fast-Flux DNS botnet