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

Лучший ответ:
Качество связи измеряется двумя параметрами
скорость передачи информации (ширина канала в bit/sec)
скорость отклика (пинг в ms)

Есть вероятность, что сервер CS:GO на который ты подключаешься находится далеко, и маршрутизация у твоего провайдера к этому серверу настроена кривовато, проходит через какие-то узлы, на которых либо теряются пакеты либо замедляется.

Проверить можно если вычислить айпи сервера CS:GO и запустить пинг на полчасика к этому серверу, одновременно еще два пинга - к любому серверу твоего провайдера и к какому-нить ближайшему серверу за пределами твоего провайдера (mail.ru, google.com и так далее)

Посмотреть будут ли где пропадания пакетов или задержки.

Худший ответ:
как ноутбук подключен к интернету ? wi-fi ? провод ?
Вопрос: Как лучше осуществлять хранение даты последней активности пользователя?

Лучший ответ:
На наш взгляд, оптимальнее всего не забивать себе голову детскими фантазиями и высосанными из пальца проблемами. 
У тебя нет сайта, нет пользователей, нет одновременной активности, нет проблем с производительностью.
Но зато уже есть ПРОБЛЕМА. Которую надо срочно решать.

С архитектурной точки зрения надо делать как обычно, и не пытаться решать несуществующие проблемы, изобретая какие-то хитрые решения с подвыподвертом. Потому что когда (если) проблемы с производительностью начнутся, то окажется, что это совсем не те, которые ты с таким трудом доблестно решал всё это время.

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

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

Но если охота заморочится, можно в лог нгинкса писать session id из куки и постобработкой мутить анализ логов
Вопрос: Как перевести этот код C++ на python?

Лучший ответ:
1. Изучить C++
2. Изучить Python
3. Перевести код
4. PROFIT

Худший ответ:
Как вариант, можно не переводить этот код на Python, а дернуть его из python-кода с помощью cffi.
Вопрос: Существует ли «чистая» установка Yii2?

Лучший ответ:
composer require "yiisoft/yii2:*" - таким образом вы получите действительно чистую установку. По сути у вас будет только файлы composer.json, composer.lock и папка vendor в которой будет лежать сам фреймворк с зависимостями. Вы сможете строить структуру своего приложения самостоятельно, т.е. сами решать, где у вас будут лежать контроллеры, модели, view и прочее. Это можно изменить и в готовых шаблонах basic/advanced.
Теперь по шаблонам:
Basic - пример организации описанного выше. Используется обычно для небольших приложений с одной точкой входа (/web/index.php). Есть как свои преимущества, так и недостатки (если не менять структуру). Из преимуществ - реально проще, нет дублирования классов и т.д. Из недостатков - расширяемость только модулями, не очень удобный способ хранения конфигов (нельзя переопределять локальными значениями). Всё это конечно можно легко устранить.
Advanced - типа расширенный вариант. Нужен далеко не всем. Позволяет организовать несколько точек входа (frontend и backend по умолчанию) и легко добавлять свои. К примеру копируем папку backend, правим в ней namespace`ы и вуаля, у нас есть API, который настраиваем на уровне конфигов и он нам отдает только JSON. Мне так удобней по крайней мере. При этом все приложения могут использовать общие компоненты\модели\сервисы и т.д. из папки common.
Для лучшего понимания я рекомендую посмотреть\прочитать все, что есть в блоге у Elisdn (ссылку давали выше), мне в свое время это очень сильно помогло. Ну и рекомендую сначала ознакомиться с его же курсом по сервисному слою. Привыкнув к AR и т.д. тяжело потом будет перейти на что то другое. К примеру у меня сейчас как источники данных используется несколько сторонних сервисов, SOAP сервис и своя БД (и не одна!). Без сервисного слоя это было бы ооочень тяжело поддерживать и обслуживать в дальнейшем. А так -  у меня есть сервисный слой, который представляет собой "черный ящик", и что и как у него там происходит внутри меня в принципе не интересует.
В интернете сейчас несколько книг и обучающих курсов обучающих работе с Yii2, но из всего этого я рекомендую Elisdn! 99% курсов дают общее понимание о фреймворке, но загоняют в жесткие рамки, что помоему очень плохо. Отсюда и мнение, что Yii2 умирает и всё прочее.

Худший ответ:
Вот про разницу.
https://github.com/yiisoft/yii2-app-advanced/blob/...
Вообще смысл в том, что advanced - это демонстрация того, как можно использовать по сути несколько разных приложений, но с общими классами. Не сильно представляю для чего это нужно. Но оттуда можно взять работа с аккаунтом пользователя.
P.S. Присоединяюсь к совету учить его уже не актуально на данный момент, кроме случаев, когда знаешь другой, но предлагают хорошую работу на нём. Выбирайте между Laravel и Symfony, хоть они и оба ужасны.
Вопрос: Как установить обновление, если «обновление не применимо к вашему компьютеру»?

Лучший ответ:
https://support.microsoft.com/ru-ru/help/4056888/w...Это обновление применяется только к выпускам Windows 10 Корпоративная и Windows 10 для образовательных учреждений. 

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

Лучший ответ:
Так?

Худший ответ:
Используйте text-decoration-skip-ink: none;
text-decoration: underline;
Вопрос: Как поступить с недобросовестными заказчиками?

Лучший ответ:
Два года назад в городе Н надо было посмотреть в поиске выдачу по 1 запросу (а этот запрос совпадал с названием местной компании - имя бренда) так вот на первом месте - не по региону а по России по этому ключу был отзыв о данной компании размером с лист формата А4, содержание отзыва - тонн пять помоев, в общем не отмыть.
Такая практика очень эффективна даже при вышибании денег. Отмыть репутацию в наше время - дорогое удовольствие.
Интернет это место где пишут не карандашом а чернилами - и есть люди которые чернила закупают ведрами. 
Я вам искренне сочувствую - если вариантов нет вообще, а желание возмездия непереносимо, то вперед, только через VPN и из кафе с бесплатным интернетом.

Худший ответ:
понять и простить. и впредь без аванса не работать
Вопрос: Как вставить переменную в выражение do shortcode wordpress?

Лучший ответ:
<?php echo do_shortcode( '[shortcode var="' . $var . '"]' ); ?>

При регистрации шорткода функцией add_shortcode() вам нужно добавить var в список атрибутов шорткода, чтобы использовать ее. Пример #1.2 тут

Худший ответ:
рука лицо

https://www.php.net/manual/ru/language.types.string.php

Простейший способ определить строку - это заключить ее в одинарные кавычки (символ ').

А точка с запятой - это вообще окончание инструкции.

Соответственно вооружившись минимальными знаниями о языке, вы бы поняли, что:
<?php echo do_shortcode( $var ); ?>
Вопрос: Возможна ли полноценная работа одновременно с windows и подсистемой linux?

Лучший ответ:
WSL и windows cmd одновременно
Да ничего, это разные продукты.а в python/django я учился, используя командную строку винды.
Переучитесь на Linux.

Худший ответ:
Прямо из командной строки терминала Linux(в WSL) можно запускать виндовые команды, например cmd, ну и любые другие, а так-же прозрачно обмениваться файлами, в обе стороны.
Вопрос: Как заставить старое железо ноутбука проигрывать видео без тормозов?

Лучший ответ:
Все что может декодировать аппаратно эта коробка с кремнием, это MPEG2. Так что сорян, буквально, кина не будет.

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

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

У меня взломали аккаунт - да никто на "взламывал" ваш аккаунт, просто боты подобрали пароль к вашей учетной записи и ещё к сотням, наверное. Вот если бы запустили червя на сервера gmail, либо перехватили управления теми же серверами, или на худой конец использовали паяльник(обязательно с утюгом) - это был бы взлом, хардкор.

Угон паролей перебором, или когда у юзеров один простой пароль на все сервисы - я не считаю это взломом, это тупость самих пользователей. В 99% случаев юзеры сами виноваты.

Худший ответ:
1. Почему не восстановил
2. С норм паролем (~20 символов всех видов в перемешку) врядли кто-то взломает
Вопрос: Product manager или Data scientist — у кого выше зп?

Лучший ответ:
Кто из них лучше работает у того и выше. Иногда и на заводе токарь больше зарабатывает чем начальник цеха. Мотай на ус.
Управленческая должность - это всегда работа с людьми в первую очередь, а Data scientist это больше с данными и кодом, сам думай с кем или чем тебе приятно иметь дела. Если ты замкнутый интроверт который не решается лишний раз по телефону поговорить то тебе Product manager противопоказан.

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

Лучший ответ:
В Windows есть RDP для удаленного подключения.

Худший ответ:
Ну как указали выше kvm свитч выручает, один монитор и например 4 сервера можно подключить. Стоит недорого. Если денег совсем нет, то сначала с монитором, потом по ssh или rdp подключаться...
Вопрос: Хранить или нет папку /bitrix и /upload в git?

Лучший ответ:
В гите достаточно хранить только папку local и всю работу вести в ней

Худший ответ:
/upload точно нет, он у всех разный будет на тестовых копиях, и может разрастись до нескольких гб.
/bitrix можно, но не весь, а сделать кучу исключений для вложенных папок: кеш, обновления, бекапы (может ещё какие забыл).
Вопрос: Возможно ли изменить стартовое окно в Unity?

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

Худший ответ:
Нет.
Вопрос: В React больше не нужно подключать его?

Лучший ответ:
если не используются какие-нибудь хуки например useStateили useEffect то можно и не подключать

Худший ответ:
Скорее всего у вас React подгружен на HTML странице (как на картинке ниже), в этом случае не нужно импортировать как модуль.

Другой способ подключения это установить библиотеку react через npm и импортировать его в коде.
import React from 'react';
Про это все написано в доках React, советую их смотреть, а не ролики, тем более там есть русский язык.
Вопрос: Как сделать скошенные углы у блока?

Лучший ответ:
псевдо, или просто в еще один див положить с таким же клип-патхом

snippet

Худший ответ:
Как вариант linear-gradient + псевдо
snippet
Вопрос: Стек и куча (память)?

Лучший ответ:
почему бы не выделить для него больше памяти?
Действительно, почему бы и нет, учитывая, что эта настройка в руках программиста собирающего (на венде, см. cl /F) или запускающего (в *nix, см. ulimit -s) программу?Стек работает быстрее
А что, уже научились освобождать выделенную на стеке память в произвольном порядке?

Худший ответ:
Нужно понимать почему стек эффективен. Это не от того, что там как-то по особенному выделили память, а потому, как его по особому используют. 
Там лежать только относительно маленькие локальные переменные. Работаешь ты только с верхушкой стека. Поэтому вся она хранится в кеш памяти. Если кеш специально раздувать (например делать вместо динамических массивов в куче массив на стеке с запасом), он утратит свою эффективность. 
Так как переменные в стеке лёжат подряд, мы не может там реализовать new. А без динамических массивов особо много памяти и не нужно. Выделенного по умолчанию значения обысно хватает на все случаи жизни. Увеличивать стоит только если действительно не хватает. Но это может случиться только, например, при работе с глубокими графами.
Вопрос: Как написать сценарий входа в систему?

Лучший ответ:
echo %computername% %date% %time% >>\\server\share\%username%.txt

Думаю, проще уже некуда.

Худший ответ:
Написать можно хоть на vbs, хоть на ps - что знаете,  на том и пишите. Задача несложная, решается что там что там. Читать документацию соответствующего языка и MSDN - вот что-то, а MSDN у M$ сделан офигительно.
Вопрос: Два физических сервера с разными доменами за mikrotik?

Лучший ответ:
Это задача web-сервера. В роутерах такого нет.

Худший ответ:
Теоретически можно попробовать через Layer7+DSTNAT, но я б не стал :)
проще уж слой nginx на собственном проекте для себя и друга
Вопрос: Сломался жёсткий диск, как чинить?

Лучший ответ:
Предположительно, это неисправность железа, и это никак не связано с переписыванием образа и установкой Винды, а просто совпало.
Подобные диски обычно имеют SATA-контроллер, не имеющий выхода наружу, и конвертер данных из формата SATA в формат USB (всё это - на одной общей плате).
Возможны два варианта: неисправен либо контроллер SATA, либо конвертер SATA<->USB. В первом случае сделать ничего нельзя, ПМСМ, и диск придётся отправить в мусор. Во втором кое-что сделать можно, но это будет связано с кропотливым рукоделием: надо найти на плате диска пять точек - общий провод (минус питания), +Rx, -Rx, +Tx, -Tx. К диску пристроить SATA-разъём и подпаять к нему выводы от этих 5 точек в соответствии с распиновкой. Тогда диск станет можно эксплуатировать как обычный SATA. Выглядит это примерно так:

Мне однажды доводилось делать такое - всё получилось, работает нормально.

Худший ответ:
Если важны данные на нём - в сервис по восстановлению данных. Там подберут донорский диск, перекинут головки, но обойдется это дорого.
Если данные не важны, и диск не удается заставить работать (например, подключив напрямик в сата), проще купить новый.
Вопрос: Что учить «новичку» в 2020: C# или C++?

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

90% ответов нормальных, просто они вам не нравятся, поскольку везде говорят что за что бы ты не взялся, вкалывать прийдется много, а получится или нет - зависит от тебя.
При этом не нужно такие ответы игнорировать, потому что так и есть. Жизнь это не сказка.

Учи любой язык. Вообще любой. Тебе до входа в профессию еще далеко, потому что новички, которые могут написать простенький тетрис - полно, и они никому особо не нужны. А для того, чтобы написать тетрис УЖЕ нужно знать немало.

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

Худший ответ:
1. Вопрос не имеет правильного ответа, как и вопрос - какой язык лучше учить, французский или испанский? Потому что выбор невозможен, если непонятно, зачем.
2. Я писал на C++ больше 7 лет и с радостью убежал от него сначала на Delphi, потом на C#. C#, по моему мнению, гораздо более современный, продуманный, логичный и просто красивый язык, чем C++. Но у них разные области применения, цели. Если же речь просто о саморазвитии, то я за C#.
Вопрос: Как загрузить на выделенный сервер Windows?

Лучший ответ:
А вы уверены что ваш тариф такое позволяет? Что сам хостер такое в принципе предоставляет? Начните с этого

Худший ответ:
Почему бы и нет? 
Берете и ставите.
В чем проблема то?
Вопрос: Существует ли по для тестирования ЦП и GPU одновременно?

Лучший ответ:
А кто вам мешает запустить две утилиты одновременно? Одну для тестирования GPU, а вторую для тестирования CPU. У вас-же не однозадачный DOS. ;-)

Худший ответ:
AIDA64, у 3dmark есть графический тест с физикой
Вопрос: Как реализовать поиск по бд MySQL?

Лучший ответ:
Для полнотекстового поиска в MySQL есть специальные функции, но, в данном случае, лучше интегрировать готовую систему (поисковую машину):SphinxSolrElastic

Худший ответ:
С помощью оператора LIKE
Вопрос: GPU не нагружена на 100 % в одной игре?

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

Объясню подробнее. Движок имеет грубо говоря список всех объектов. Для построения кадра, нужно пройтись по такому списку. Ходит по циклу именно центральный процессор. Он вычисляет, что показывать и когда и отдает команду GPU для того, чтобы вон там вывести объект, вот с такой текстурой. Далее, если объект обладает логикой, в отдельном потоке (тоже ЦПУ) обрабатывает логику, т.е. жизненный цикл объектов. GPU в этот момент может пинать те самые резиновые...

Запусти игру и посмотри все показатели нагрузки, а не только GPU.

Худший ответ:
лаги в игре, видяшке не успевают передаваться данные для отрисовки, вот она и не нагружена.
Вопрос: Хранилище данных для сайта?

Лучший ответ:
навсегда, пока платишь каждый месяц

Худший ответ:
Аренда 0.005 а покупка того же 1гб стоит 0.01 я прав?

Там же написано:
Storage 0.005
Download 0.01

Значит что ежемесячная плата за 1Гб места - 0.005$, а вот за скачку 1 Гигабайта с этого объема вы платите 0.01$. Это не навсегда - это за скачивание с вашего же объема. Выгодно использовать, как хранилище бекапов (закачивать данные), но невыгодно их скачивать, и использовать как ДЦ для сайта, откуда пользователями постоянно грузятся картинки, и файлы.
Вопрос: Стоит ли переходить с win 10 на linux debian?

Лучший ответ:
Вы работаете не в ОС, а в прикладном ПО. Соответственно, вам нужна ОС, где оно работает. Windows, MacOS например. Архитектура виндовса вас не подводит, вы непосредственно её даже не касаетесь. Проблема не в ней.

Худший ответ:
А можно подробнее для чего допустим используется фотошоп, может отлично фигма справится. И я бы перешёл сделал две оси виндовс и плюс на основе дебиан deepin os сам сижу в ней полностью устравивает
Вопрос: Компьютер для игр и программирования?

Лучший ответ:
Для дева/кода - intel only!

Худший ответ:
Связка CPU + RAM  норм.  
Главное, чтобы компиляторы поддерживали многопоточность.  Иначе толку от рязани никакого. Рязань сильна именно многопоточной обработкой данных. 

Карта 1650 уже старовата для игр. Разрешение 1080р она будет держать, а дальше начнутся проблемы.

БП замените AeroCool полное г.
Вопрос: Как отследить изменение инпута?

Лучший ответ:
Change так и работает. Попробуйте подцепиться на событие keyup

Худший ответ:
Переходите на js, htmlobject.onchange=() =>{бла бла бла}
Вопрос: VPS: Как связать веб интерфейс с командной строкой?

Лучший ответ:
Зависит от языка программирования. В PHP это функия passthru. В других языкак есть аналоги.

Худший ответ:
Кстати присоединюсь к вопросу ТСа, но интересно, есть ли искоробочный вариант, чтобы получить прям действительно консоль, а не результат обработки команды и возврат к домашней папке?

Имеется ввиду, что если я выполнил как-то через PHP команду 
cd /usr/local/bin && ./script.sh

то после этого я оставался в последней директории . Или костылять для этого надо?
Вопрос: Как в Mikrotik направить весь трафик на VPN кроме определенных адресов?

Лучший ответ:
Маркировать трафик.
Для примера возьми статейки, на хабре как раз есть, по настройке 2-3 провайдеров на микротик.
По аналогии сделай так же. Представь что VPN - это второй провайдер и в путь.
Все делается за 30 минут.
Только когда будешь делать через винбокс, нажми вот эту кнопку: 

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

Лучший ответ:
Мессенджер был доступен для телефонов с операционной системой Android и для аппаратов Blackberry. Услуга стоила около 1,5 тыс. евро за полгода.
Читать полностью:  https://news.tut.by/world/691458.html

сколько, ты говоришь, платишь за телегу за полгода?

Худший ответ:
1-й вариант.
Вопрос: Как получить данные из ConfigurationManager другого приложения?

Лучший ответ:
Открываем и парсим config, это же обычный xml

Худший ответ:
Открываем и парсим config, это же обычный xml
Вопрос: Существует ли аналог «пиэчпишного» PDO для Node.js?

Лучший ответ:
Обычно берут knex вместо PDO. Для Монги берут mongoose.
Для фильтрации можно поискать какой-нибудь причиндал вроде Swagger. Можно добавить Joi или Hapi для пущей остроты ощущений.

Худший ответ:
Есть ли аналог библиотеки PDO для Node.js?
knex+bookshelf
Но обычно берут типа Doctrine: Sequelize или TypeORMЧем вообще обычно делают фильтрацию данных
Может валидацию? ajv, joi, class-validator
Вопрос: Можно ли перезагрузить discord бота через терминал в vusial studio code? если можно как?

Лучший ответ:
CTRL + C в терминале.

Худший ответ:
Как запускал так и перезапускай.
Вопрос: SOLID.LSP + ООП.Полиморфизм = противоречиe?

Лучший ответ:
LSP предписывает наследникам сохранять поведение (контракт) базового класса.
Не поведение, а ограничения. LSP разрешает только усиливать требования к себе, и только ослаблять — требования к другим. Поведение же может меняться как хочешь в рамках этих ограничений.
Например, интерфейс Stream позволяет мультиплексированные потоки (то есть потоки, где мы не можем считать записанное, чтение и запись идёт по разным каналам и никак не связаны друг с другом — например, COM-порты), а какой-нибудь BufferedStream ограничивается только потоками, где мы пишем в какую-нибудь цепочку байтов (например, файл), и читаем из неё же, без мультиплексирования.

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

Лучший ответ:
Добавьте HaProxy, Redis, Swoole и обязательно TensorFlow Serving с какой-нибудь нейросетью, иначе единственный клиент с иллюстрации не оценит масштаба.

Худший ответ:
ты пишешь что будешь без фреймворка, но назвал уже Laravel и Quasar, это не фреймворк?
Вопрос: Стоит ли открывать подобный файл?

Лучший ответ:
Пара-тройка ложных срабатываний от маргинальных антивирусов - нормальное явление.

Худший ответ:
ClamAV это не разу ни нонейм...
А так ложные срабатывания бывают везде.
Опять же не понятно что за файл, как выше указали
Вопрос: С чего нужно начать изучать программирование нейронных сетей в 2020 году?

Лучший ответ:
Сначала в вуз получать сильную математическую базу. Потом все остальное. Редкий случай когда в IT требуется вышка просто для того чтобы можно было начать что-то делать

Худший ответ:
Думаю уже что-то поменялось, что-то систематизировалось.
Нет.
Вопрос: Как заменить цепочки ../../ на @ при импорте модулей JavaScript?

Лучший ответ:
Если дело в WebPack, то см. resolve:

webpack.config.jsconst path = require('path');

module.exports = {
  //...
  resolve: {
    alias: {
      Utilities: path.resolve(__dirname, 'src/utilities/'),
      Templates: path.resolve(__dirname, 'src/templates/')
    }
  }
};...// было:
import Utility from '../../utilities/utility';

// стало:
import Utility from 'Utilities/utility';

Худший ответ:
Нативно -- никак. Это "фичи" сборщиков. В основном называются alias. Ищите в документации вашего сборщика, если используется таковой.
Вопрос: Как присвоить пару?

Лучший ответ:
Ваше присваивание выполняет p1.first = p2.first и p1.second = p2.second. Но вы запретили присваивать в p1.first, объявив его как const.

Худший ответ:
почему вот это не компилируется?
Потому что первый элемент пары -- константа, присваивать ему нельзя.

если строки не константны - то все работает
Ну да, что тут удивительного?