Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Grep — как сделать точное совпадение?

Лучший ответ:
Зачем тут grep? awk отлично умеет сравнивать, причём, в отличии от grep, может работать с отдельными полями, а не только с целой строкой.

sudo qm list | awk '{ if ($1 == 100) print $3}'

Худший ответ:
просто grep находит в строках 100 в другом месте.
Напишите регулярку, которая будет искать первое 100, например начало строки, возможно пробелы и 100:
sudo qm list | grep  -P '^[ ]*100' | awk '{print $3}'

или 100, после которого не идет точка
sudo qm list | grep  -P '100[^.]' | awk '{print $3}'
Вопрос: Объясните как работает в данном случае программа?

Лучший ответ:
Реализовать удаление элементов с длиной равной единице лучше так
[i for i in list if len(i) !=1]

Худший ответ:
Потому что ваш цикл выглядит как
for i in range(5):
Попробуем посчитать
0
1
2
3
4
Вопрос: Говнокодинг – унифицирован?

Лучший ответ:
да, если только в твоем коде никто кроме тебя не может разобраться
Элементарно, начиная от отказа использования  coding standards и принятых норм программирования(best practice), solid-принципов, изобретением собственных "велосипедов"

Худший ответ:
Если немножко почитать учебники ("Рефакторинг" Фаулера, например), то вполне можно составить довольно обширный и при этом довольно универсальный список признаков "code smells". Но, как мы понимаем, стандарт на говнокод никому не нужен.
Вопрос: Почему заявки из сайта все равно попадают в спам?

Лучший ответ:
Варианты:Настроить свой SMTP, позволяющий проверить возможность отправки письма на ваши адреса, и для него SPF, DKIM, DMARCИспользовать SMTP-сервера, напрмиер, Yandex, если рассылок, если их не многоИспользовать сервисы рассылок, например Mailgun. Для небольших объемов есть бесплатные тарифы

Худший ответ:
1. проверить наличия адреса сайта в спам-листах
2. внести в белый список адреса Site.xxx
Вопрос: Что если несколько пользователей одновременно обратятся к скрипту?

Лучший ответ:
1) разные пользователи одновременно обращаются к разным php-скриптам на nginx или apache сервере?
Не очень понятен вопрос. Каким образом разные пользователи обращаются к разным php скриптам ?
Пользователи обращаются к веб серверу (apache/nginx), и к скриптам (с точки зрения скрипта) обращается только один пользователь, от имени которого запущен собственно apache/nginx.
Как работает многозадачность в apache/nginx можно читать спецификации. Но парралельная обработка одного и того же скрипта не проблема.
2) а если одновременно и к одному скрипту?
Тоже самое
3) несколько пользователей по средством скрипта одновременно запросили данные из БД (MySQL), например, для рендера динамической страницы (и если эта самая страница не закеширована не сервере)?
Опять таки, запрос идет от одного пользователя, от имени которого запущен веб-сервер, который запускает php скрипт, который делает запрос. Нормальная база данных написана так, чтобы обрабатывать много парралельных запросов. Поэтому подобный вопрос имеет смысл поднимать только для очень нагруженных серверов, когда скорости не хватает, и нужно идти в оптимизацию/кластеризацию.
4) нужно одновременно записать в одну таблицу (MySQL) данные от нескольких пользователей? Например, они одновременно отправили комментарий?
Mysql обработает запросы по очереди, в порядке их поступления. Именно потому, что в базу пишут не разные скрипты одновременно, а сам сервер базы - параллельные запросы он поставит в очередь и выполнит.

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

Лучший ответ:
в ___init__
Подчеркиваний много

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

Лучший ответ:
На оси хоязина - никак. Лучше считать, что там полно вирусни, которая отслеживает каждый твой шаг (особенно, если живешь не один, а у компа есть камера - в мире полно любителей home porno)
Только загрузка с LiveCD с сохранением результатов, если надо.

Худший ответ:
Только своя ОС на флешке.
Если ОС чужая - владелец ОС в любом случае будет иметь доступ к вашим данным если захочет.

Если хостовая ОС поддерживает виртуализацию - еще вариант виртуальная машина.
Но тоже остается проблема с перехватом ввода - банальный кейлоггер на хосте сольет все ваши пароли введенные вручную.
Вопрос: Как узнать об изменении данных в бд Mongodb?

Лучший ответ:
Есть же  Change Streams  
Примеры для python есть в документации

Худший ответ:
Как вариант читать oplog
The oplog (operations log) is a special capped collection that keeps a rolling record of all operations that modify the data stored in your databases.
Погуглите в эту сторону, небось уже даже готовые парсеры этого oplog'а есть.
Вопрос: Как организовать защиту подключения к базе данных в программе на c++?

Лучший ответ:
Не в каком случае нельзя хранить данные от БД на клиенте!
Нужна затычка между клиентом и БД в виде сервера.
Пишите сервер для работы с БД.
Клиент отсылает запрос на получение или запись данных на сервер а сервер уже исполняет.
Быстрее всего написать будет сервер на Python.

Худший ответ:
Храните пароль от базы данных в зашифрованном виде в отдельном файле, либо вообще не храните пароль, а показывайте диалог подключения к базе данных при каждом старте программы.
Вопрос: Как подключить google e-commerce к google ads?

Лучший ответ:
Есть отчет "Анализ расходов", например

Худший ответ:
Утм метки спасут отца российской демократии
Вопрос: Безопасно ли отправлять документы для трудоустройства?

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

Худший ответ:
Сканы всего пакета документов и оригинал трудовой отправлял обычной почтой.
Вопрос: Как переоформить домен на ООО с ИП?

Лучший ответ:
Переоформление имеет 2 аспекта:
I. Технический
II. Юридический
I. Технический
1. Передача домена - это смена администратора домена. Пишется заявление своему регистратору с просьбой передать домен и заявление от принимающей стороны о согласии на принятие домена. Формы документов обычно имеются на сайте регистратора.
2. Передача лицензии - надо смотреть условия лицензии. Но, в общем случае,  это делается через владельца прав - у кого лицензировали/приобретали продукт. Необходимо, чтобы не только Вы сменили владельца лицензии, но и у него это было зафиксировано (Может быть не обязательно, но это зависит от условий лицензии.). 
3. Хостинг услуг - это только юридический вопрос - закрывается один договор с ИП и заключается новый договор с ООО. Технически обговаривается только что сервисы/данные не удаляются, а переносятся на новый договор.
II. Юридический
1. Перенос домена. Можно перенести просто по факту - вот не было домена у ООО и вот появился - заключили договор с регистратором. Либо заключается договор, что ИП передает домен ООО - за плату/безвозмездно. Если это зачем-то надо. Если передача без денег, то договор л не делать, чтобы не было повода для налоговой прицепиться.
2. То же самое про лицензию - либо передача просто по факту, либо договор.
В ЛК Регистратора ничего перебивать не надо, т.к. эти действия должны быть задокументированы официально (формально).

Худший ответ:
Как ИП'шнику внести на баланс домены, услуги ранее купленные типа лицензии на коробочную версию конструктора, хостинг услуги. Обратитесь к бухгалтеру, он знает на каком счете это отражать.К примеру если это одно лицо, нельзя ли просто зайти в ЛК Регистратора и перебить на ООО?Почему бы и нет?Вот только с документами непонятно.В чем именно проблема?
Вопрос: Как выровнять перенесенный блок на новую строку flex?

Лучший ответ:
snippet Как Вам такое, например? Лучше открыть на самом сайте, чтоб Вы проверили изменение ширины

Худший ответ:
Немного отдохнув, и решение пришло само.
Значит так, все изначально было правильно мною построено, как изначально изложил код -
.conteiner {
   display: flex;
   flex-wrap: wrap;
}
.shortstory {
    flex: 1 1 25%;
    min-width: 261px;
    padding: 0 10px 20px 10px;
}

То есть, колонки имеют минимум ширину 261 пиксель,  достигнув предела по ширине лишний блок будет переносится на новый ряд, что в итоге он и будет заполнять его на все 100% так как блокам изначально поставлен flex-grow: 1. Если мы хотим получить полную заполняемость ряда, и чтобы блоки распределяли поровну всю ширину, выставляем flex-grow: 1, а не flex-grow: 0, тогда все будет ок.
Но, что же делать с тем блоком, который переносится и растягивается на всю ширину колонки нарушая внешний вид? Ответ был прост и понятен изначально, просто я немного тупанул.
Я изначально выстроил в один ряд 4 колонки, на странице разместил всего 2 ряда, то есть 8 блоков, но если мы начнем сужать страницу, с каждого ряда отваливается по одному блоку, которые заполнят уже новый созданный ряд и заполнят его поровну, что в итоге получим 2 блока больше других.
Значит стоит сделать вывод, что нужно разместить на странице не 8 блоков, а 12, таким образом при сужении будет отваливаться уже не два блока, а три, что в итоге везде будет поровну.
Вот и решение вопроса.
Вопрос: Как разрабатывать еще быстрее?

Лучший ответ:
Ctrl+c Ctrl+v, особенно когда актуально когда работаете с однотипными задачами, и у вас уже имеется куча наработок. Ну и расширение штата

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

Лучший ответ:
ref является идентификтором другого пользователя, чем именно - сами решайте. Хоть напрямую userId из БД.
На нужных страницах поддерживается параметр строки ?ref= если с ним процесс регистрации окончен то на бэкенде будет выдан зарегистрированному новый userId и так же будет известен userId пригласившего, его можно записать например referedBy =  Дальше какая-то магия распределяющая бонусы...

Худший ответ:
а чего тут сложно? реферальная ссылка с GET параметром id направившего юзера, чтобы не таскать параметр дальше(не только эстетика, но так тупо проще) переносим его в кукис(если они не доступны,  предлагаем включить их) и потом при регистрации проверяем наличие данной печеньки и заносим id благодетеля в поле бд таблицы с данными пользователей.
Вопрос: Можно ли учить JavaScript и Mysql одновременно?

Лучший ответ:
Можно.

Худший ответ:
Я учил одновременно, и нормально так получалось, но конечно лучше распределить эти две темы
Вопрос: Как реализовать задачу на пайтоне?

Лучший ответ:
Решение первого варианта:
word1 = 'aabc'
word2 = 'aabacdff'

if any(word2.count(letter) < word1.count(letter) for letter in set(word1)):
    option = 'нельзя'
else:
    option = 'можно'

print(f'Первое слово {option} составить из букв второго')
Ещё эффективнее будет через Counter (обратите внимание на редкое использование unary minus):
from collections import Counter

counter = Counter(word2)
counter.subtract(word1)

option = ('можно', 'нельзя')[bool(-counter)]

print(f'Первое слово {option} составить из букв второго')

Со вторым вариантом задачи разберитесь сами, модифицируя код.

Худший ответ:
Решение за O(n + k), n - длина первой строки, k - длина второй строки:

Создадим словарь, в котором будем хранить количество вхождений каждой из букв первого слова. Например, "hello", будет представлено в словаре:
{
'h' : 1, 
'e' : 1,
'l' : 2,
'o' : 1
} 

Далее просто пробегаемся по второму слову и проверяем, есть ли текущая буква в словаре. Если нет, то такое слово составить невозможно. Есть есть, то просто вычитаем у значения буквы в словаре единицу. Если не можем вычесть(не хватает букв в первом слове), то ответ тоже нет.

s1 = str(input())
s2 = str(input())

d = dict()

for i in range(len(s1)):
    if s1[i] not in d:
        d[s1[i]] = 1
    else:
        d[s1[i]] += 1


def check():
    for i in range(len(s2)):
        if s2[i] not in d:
            return "NO"
        if d[s2[i]] - 1 >= 0:
            d[s2[i]] -= 1
        else:
            return "NO"

    return "YES"


print(check())
Вопрос: Как внедриить JSON в WordPress?

Лучший ответ:
Json это всего лишь формат данных, автобус который возит ваши данные,  работать как с обычным объектом / массивом. 

Высаживаете содержимое из автобуса и делаете, что хотите

$data = file_get_contents( 'https://steampay.com/api/products' );
	if ( ! empty( $data ) ) {
		$args = json_decode( $data );
		
		foreach ( $args->products as $one_product ) {
			echo $one_product->title . '<br>';
		}
	}

Худший ответ:
Тебе надо внедрить JSON в PHP
Или вот ещё статья на эту тему
Яндекс в помощь по этому вопросу..
Вопрос: Как умирают сессии?

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

Худший ответ:
Коротко, посмотрите в пхпинфо путь куда сохраняются сессии, потом посмотрите внутрь через файловый менеджер, там будут файлы внутри себя содержащие сериализацию, ну и от настроек зависит, если куку потеряли, файл сессии не удалится
Можно реализовать свою реализацию хранения сессии
https://www.php.net/manual/ru/class.sessionhandler...
Можно даже хранить в бд эти сессии
Вопрос: Что актуального установить, вместо Ubuntu?

Лучший ответ:
Я использую Xubuntu - вроде, нормальный.

Худший ответ:
Папа debian
Вопрос: Как поставить другой источник в битрикс 24?

Лучший ответ:
Я обычно смотрю в HTML коде через консоль разработчика значение скрытого поля.
Источники которые добавлены при создании Битрикс24 имеют буквенное обозначение, а вот когда добавляешь свой значение будет числовое.

Худший ответ:
К сожалению в доке не совсем ясно, что в source_id требуется указывать не ID из справочника, а STATUS_ID.
В данном случае для вебсайта укажите "SOURCE_ID" => "WEB".
А сами статусы можно посмотреть запросом BX24.callMethod(
        "crm.status.list", 
        { 
            order: { "SORT": "ASC" },
            filter: { "ENTITY_ID": "SOURCE" }
        }, 
        function(result) 
        {
            if(result.error())
                console.error(result.error());
            else
            {
                console.dir(result.data());			
                if(result.more())
                    result.next();						
            }
        }
    );
Вопрос: Как определить, какой программой генерируется файл в Linux?

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

Худший ответ:
в первом случае - заранее настроить аудит и искать событие доступа к файлу в /var/log/audit.log
во втором - inotify.
Вопрос: Можно ли запустить компьютер без процессора?

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

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

Лучший ответ:
Есть 2 способа.
Если есть надобность просто скопировать значения одного словаря с другого простое присваивание одного имени к другому не подойдет.
dict1 = {1: "один", 2: "два"}
dict2 = dict1  # Так делать НЕЛЬЗЯ!
Это просто передаст ссылку на первый объект словаря и любые изменения во втором будут изменять первый словарь так же. По сути ты просто переименуешь его.

Делается это так:
dict1 = {1: "один", 2: "два"}
dict2 = dict1.copy()  # Так делать ПРАВИЛЬНО!
Тут мы создаем копию словаря и присваиваем объекту имя dict2.

Второй способ:
Если нужно как то при это обработать значения которые мы переносим в другой словарь можно применить итерацию:
dict1 = {1: "один", 2: "два"}
dict2 = {}
for key in dict1:
    dict2[key] = dict1[key]
Либо другой способ цикла:
dict1 = {1: "один", 2: "два"}
dict2 = {}
for key, item in dict1.items():
    dict2[key] = item

Тогда мы можем как то обработать наши значения которые присваиваем новому словарю прямо в момент записи, например умножить
dict1 = {1: "один", 2: "два"}
dict2 = {}
for keys in dict1:
    dict2[keys] = dict1[keys] * 2

Худший ответ:
У словарей есть метод update, который добавляет новые значения в словарь и перезаписывает старые:
dict1 = {1: 'one', 2: 'two'}
dict2 = {3: 'three'}
dict2.update(dict1)
dict2
>> {3: 'three', 1: 'one', 2: 'two'}

a = {1: 111, 2: 222, 3: 333}
b = {1: 444, 2: 555, 4: 666, 5: 777}
b.update(a)
b
>> {1: 111, 2: 222, 4: 666, 5: 777, 3: 333}
Вопрос: Как исключить ввод кириллицы, спецсимволов и пробелов?

Лучший ответ:
[a-zA-Z0-9]+
Но у вас плохие требования к паролю.
Они выдают непрофессионализм разработчиков, которые внедряют такие требования.
Это признак того, что пароль лежит в открытом (не хешированном) виде в БД.
Это провоцирует делать слабые пароли.
Это выглядит как поделка студентов.

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

Однако следует делать предупреждения если:
- пароль содержит кириллицу, или любые символы, которые сложно набрать на любой произвольной клавиатуре. Большая проблема пароль с юникод-символами, если вы хотите ввести его на смартфоне. Большая проблема с кириллицей, если вы хотите войти с компа в турции в отпуске, потеряв, к примеру, телефон.
- пароль слишком короткий;
- хеш пароля находится в списке наиболее распространённых паролей;
- пароль выглядит как набранный с инвертированным капс-локом.

Эти предупреждения должны быть заметны, но не должны запрещать создать такой пароль. Обсуждать можно только то, что касается списка самых распространённых паролей, скажем тысячи самых популярных. Ну и короткие (меньше 6 знаков). 
Пароль следует хешировать с только что сгенерированной солью. Хранить соль нужно рядом с хешем. Также рядом можно указать название алгоритма хеширования. Прямо в одной строке. Это не снизит безопасность, зато избавит вас от проблем связанных с переходом на новые алгортимы хеширования.

Худший ответ:
https://ru.stackoverflow.com/questions/761716/%D0%...

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

Лучший ответ:
читать оригинал, но с гугл переводчиком или перевод с django.fu
Из этих двух - конечно, нормальный перевод, а не Алиэкспресс.

Худший ответ:
Вначале вполне сойдёт перевод. Наберётесь основных терминов оттуда, и тогда сможете легче читать оригинальную документацию. 

P.S. качество перевода не знаю
Вопрос: Работать на фрилансе фронтендом (vue/react) и делегировать верстку?

Лучший ответ:
- Кто пробовал такое на практике. Какие есть подводные камни?
роблема в том что мне не нравится заниматься версткой (html/css).

- Как лучше организовать совместную работу?
платить по факту, держать запасного

- Могут ли быть проблемы если верстальщик не знает как его верстка будет натягиваться на vue/react?
вот и узнаете

- И стоит ли говорить заказчику что я буду работать не один?
ни в коем случае

Худший ответ:
Ну ты же работаешь с готовой версткой?  В чём проблема заказать её на стороне?
Вопрос: Чем заменить jQuery: Alpine.js или Stimulus?

Лучший ответ:
Как насчёт Vanilla JS?

Худший ответ:
В общем ответы на тостере как всегда...
Для себя выбрал Alpine.js - все-таки его синтаксис сильно похож для Vue - такой же лаконичный и приятный.
Однако, хранить всю логику прямо в HTML аттрибутах я считаю крайне некрасиво, поэтому я строю аля компоненты.
Посмотрите на этот мой пример: https://jsfiddle.net/rom4i/b10ukdfx/
Очень удобно!

Stimulus, наверное, более правильный способ разработки, но под каждое действие придется создавать отдельный файл, что занимает время, да и синтаксис для меня менее очевидный.
Вопрос: Разработчик недисциплинированно трекает время. Что делать?

Лучший ответ:
А зачем вообще трекать время? Уложился в дедлайн - молодец. Не уложился - разбор полётов. Хронически не укладывается - понижение грейда или увольнение.

Худший ответ:
Была такая проблема. Первый вариант. Был трекер ТаргетПроцесс. Пожалуй худший трекер в мире. Написали хук. Расписывалии задачи по спринту по часам. ПМ контролировал, раз в неделю, чтобы каждый заполнял время.
Вопрос: Какие ресурсы можете порекомендовать?

Лучший ответ:
Начните с этой книги.

Худший ответ:
По ходу дела разберёшься. Больше записывай. Желательно схематично. Что сделали, что необходимо сделать. Какие зависимости. И т.д.
Всё должно быть перед глазами.

Не обязательно с помощью софта. Начни с обычного блокнота и ручки. Со временем будет подбираться софт. Всё очень индивидуально.
Вопрос: Что нужно знать для backend разработки?

Лучший ответ:
Выучите PHP.
99% открытого бэка - написано на нём.

Худший ответ:
На данный момент я junior, но тоже задавался этим вопросом. 
Присматривался к стэку MERN, но пока не совсем ясна робота согласно ACID и что лучше для интернет магазинов и highload проектов.
Сравнение разных бд смотрел, но так же из-за отсутствия знаний пока не понял, что и для чего.
Буду отслеживать ваш вопрос)
Вопрос: Как выставлять счета ООО?

Лучший ответ:
1)Как угодно, точнее как договоритесь. Порядок расчетов обычно уточняется в договоре а там выбираете так, чтобы вам было удобно и вашему контрагенту. В этом случае нет понятия правильно, нужно делать как удобно.
2)У самозанятого ненужно открывать расчетный счет. Там обычные доходы физлица. Но поскольку дело это достаточно новое - могут возникнуть проблемы с оплатой от некоторых организаций. Тут опять же вопрос удобства.
Иногда организации выгоднее заплатить дороже, но без лишних телодвижений. Тут уже надо смотреть по ситуации, и решать проблемы по мере их поступления.Не понятно как вообще будут выглядеть эти реквизиты?Как обычные реквизиты - номер счета, и реквизиты банка.И где будут храниться деньги?Если платят наличкой - деньги хранятся в кошельке, или в кармане пиджака.
Если платят безналом - деньги хранятся в банке.

Худший ответ:
Сейчас придется открывать юр лицо, 
Вы хотите открыть ООО и выставлять счета другому ООО? или:
1) Вы про ИП говорите. 
по вопросу - в некоторых ООО, действительно, могут платить в определённые дни. Сразу уточните. А ещё лучше укажите в договоре даты платежей и пени за просрочку. Тогда эти дни и будут "определёнными". Количество счетов не лимитируется.
2) про самозанятого. Обязанности открывать расчетный счет нет. Но платить наличными организация вряд ли будет. Уточните у них.
Расчетный счет - зайдите в любой  банк, они Вам всё расскажут. А если счет откроете, то  распечатают реквизиты на листочке. А то насколько я понял нужно будет открыть обычную дебетовую карту в банке и сообщить, что на нее идут поступления с которых нужно снимать налог. В таком случае мне ООО предоставить только номер карты? 
не карту, а счет.  В ООО предоставите реквизиты. В договоре надо будет указать, что самозанятый.  
ООО не удерживает налоги с самозанятого. Налоговая выставит
Вопрос: Для чего используются файлы *.json и можно ли к ним применить статическое сжатие на nginx?

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

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

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

Лучший ответ:
Достаточно поместить это всё в закрытый серверный шкаф, и по минимуму использовать удлинители - если что-то и загорается, то скорее они. Также установить автоматы, соответствующие проводке, и противопожарное узо

Худший ответ:
Кому суждено быть затопленным, соседями с верху, тому не дано сгореть в огне.
если комп в корпусе  - то не так страшно - там нечему гореть,
есть, но корпус не даст пламени распространиться.
Я бы не заморачивался, тем более в жилом помещении,
своим носом, дым почуешь быстрее, чем сработает какая то хитрая защита )))
ЭТА ссылка
 для тех, кто не видел, как горят компутаторы/железки