Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Где лучше хранить БД? В докере или нет?

Лучший ответ:
Дополню немного ответ Dr. Bacon, поскольку мне кажется он не так понял ваш вопрос, а вы, возможно, не так поняли суть проблемы.
Под БД, например постгрес, обычно понимают две разные вещи:
1) сами данные в файловой системе,
2) сервер базы данных, который реализует сетевой интерфейс для работы с БД и правильным образом кладёт и читает данные в файловой системе.

Так вот, сервер можно развернуть ка кна хостовой машине (как вы сказали "локально"), так и в докер-контейнере.
Файлы БД можно разместить как в файловой системе контейнера, так и в локальной файловой системе, примонтированной внутрь контейнера. 
И тут полно нюансов.
Давайте начнём с того, как правильно.
Правиьным будет взять стандартный докер-образ сервера БД, сконфигурировать его через компоуз-файл, а размещение файлов БД примонтировать в виде отдельного volume.

Что имел в виду Dr. Bacon. Он имел в виду, что если не монтировать файлы БД в volume, то они будут лежать внутри контейнера, а значит при его перезапуске все данные будут стерты, поскольку состояние файловой системы контейнера не принято хранить. Это одно из преимузеств докера - сделал образ унаследовав его от других образов, а потом при запуске контейнера он какждый раз как новенький.

Худший ответ:
За плюшки докера приходится платить понижением производительности файловой системы (хотя при использовании btrfs докером уже не так, но там сам btrfs дает накладные расходы, неоднозначные), можно получить до 20-30% понижение (это тюнится но в ущерб безопасности), кстати не только дисковый io, падает скорость системных вызовов.

Докер - это удобство развертывания и песочница (дает профит при защите от взлома), собственно на этом удобства заканчиваются.

Если по производительности ты не упираешься в дисковую систему то используй докер
Вопрос: Как с помощью diskpart.exe в Windows 10 разметить неразмеченную часть жесткого диска?

Лучший ответ:
зачем с помощью диспарт ? откройте "Управление дисками" и оттуда расширьте раздел или создайте второй. Ну, а так :
list disk 
select disk 0 ( или что там у вас)
create partition primary
ну и в довесок:
list part
select part 3 ( или что там получилось)
format FS=NTFS QUICK (форматируем)
assign letter=G (назначаем буковку)
А вообще у любой команды можно попросить подсказку
help cre part prim

Худший ответ:
поиск - управление компьютером - управление дисками
или
панель управления - администрирование - управление компьютером - управление дисками
Вопрос: Как правильно организовать защиту одной сети от другой?

Лучший ответ:
Никак... отдел ИТ отвечает за сеть)))) как включит "защиту" так и выключит

по сути единственный адекватный вариант - ставить роутер в "разрез" и включать на нем NAT (режим роутера собственно)
но это не помешает отделу ИТ зайти на роутер а дальше попасть в сеть ОБ, при желании

Худший ответ:
Два фаервола - устройства (роутеры например) с каждой стороны провайдеров, определяющие правила доступа к ресурсам и объединенные в одну сеть меду собой
Вопрос: Как написать свой компилятор?

Лучший ответ:
Содержимое этой книги в ответ не вместится.

А ваш вопрос на столько общий, что короче не получится.

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

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

Есть еще оптимизация кода, скорее всего именно это определяет объем и сложность задачи, так как без нее это уже не так сложно.

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

Иногда добавляют еще несколько стадий, например один язык может генерироваться не сразу в объектный код а в исходные коды другого языка, который уже существующим компилятором генерирует итоговый.

Или наоборот, вместо генерации машинного кода, используется коды выдуманной виртуальной машины, которая будет запускаться (транслироваться в реальном времени в машинный код) на разных архитектурах одинаково (например jvm и clr).

И в догонку, в мире уже столько наворотили языков что разрабатывать и поддерживать под каждый оптимальный компилятор становится сложно, что в мире придумали llvm - набор правил, стандартов, библиотек и утилит, включая байткод виртуальной машины и трансляторы на все архитектуры... к примеру opencl использует llvm как основу
Вопрос: Что быстрее: json или sqlite?

Лучший ответ:
Вам следует более детально расписать чего вам нужно добиться.
Сейчас вы пытаетесь сравнивать две совершенно разные функциональности.
Сериализация json довольно не быстрая операция, но всё зависит от того, какой объём и каких данных вы будете сериализовать, а потом ка кхотите эти данныеиспользовать.  sqlite размещает свою БД в файловой системе и там свои накладные расходы на ее использование, а сериализацию json можно делать в памяти, однако тут будет уже сиьно важно какие объёмы и в какой структуре у вас данные. Доступ к большому количеству однотипных записей в sqlite можно сделать по индексу, а json, если его прдставлять в виде строки, нужно сперва десериализовать в структуры данных. Это требует много памяти и никакого индекса на данном этапе у вас нет.

В общем, вы не корректно поставили вопрос. поэтому на него нельзя ответить простым и понятным способом.
Неьзя сравнивать тёплое с мягким.

Худший ответ:
Есть два пути:

сделать два варианта с тестовой информацией и протестировать их, выбрать подходящий
разработать и сделать внутри своей программы стандартный интерфейс для своей базы данных, а базу подставлять по мере необходимости.
Вопрос: Почему не получается скомпилировать файл через wsl на c?

Лучший ответ:
make mario.c
говорит, что нужно собрать mario.c, но собирать ведь надо не его, mario.c -- это исходник. Пиши make mario чтобы собрать mario из mario.c. И да, это работает без Makefile за счёт втроенных в make правил только для таких простых случаев. Для более сложных надо будет писать Makefile.

Худший ответ:
Для компиляции используется gcc, а не make.
Вопрос: Существуют ли онлайн — соревнования по программированию?

Лучший ответ:
Да например есть сайт Codeforce от русских разрабов, там каждую неделю 2-3 раунда проводят. Раунды ограничены по времени, в них дают несколько задач на решение.

Худший ответ:
Соревнования и Олимпиады помогают для поступления в университет. Но они они не способствуют поступлению на работу в большую корпорацию. Скорее наоборот. Олимпиадник - опасен и создает проблемы для проектов которые работают по 20-30 лет. Олимпиадник также будет раздражать других командных игроков.  Его оценки (эстимации) задач будут слишком отличаться от других. Олимпиадник плохо понимает необходимость эстетики программного кода и SOLID-философии. Дай бох что за 5 лет учебы в университете этот гений слегка поостынет и начнет думать как team-player.
Вопрос: Почему скорость инета через 2 роутера больше чем через 1?

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

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

поэтому и совет можно дать только универсальные: сбрось все , перевоткни и перенастрой

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

возможно был какой то vlan или хитрый шейпер на микротике?
Вопрос: Как правильнее вешать события?

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

Худший ответ:
Через атрибуты.
jquery-style пора уже оставить в прошлом и не насиловать труп.
Вопрос: Как замаскировать эмулированные движения мыши и нажатия клавиш?

Лучший ответ:
Берёшь МК поддерживающий работу как HID(какая нибудь Arduino Leonardo или подобные). Пишешь под неё клиент, а у себя на компе разводишь сервак который будет слать в дуину данные. Реализовываешь работу с большими алгоритмами и вычислениями на своём сервере. Всё просто и легко! Но анти-чит может знать об этом так что не гарантирую 100% работоспособности. Надеюсь я вам помог!

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

На сколько я помню клавиши и мышь можно отправлять на разных уровнях, даже на уровне драйвера (в питоне не знаю есть ли такое.)
Вопрос: Обрезать аудиофайл с 00:00:00?

Лучший ответ:
в формате mp3 позиционирование по времени будет неточным. 
Лучше распаковать в WAV, затем вырезать искомое.

Худший ответ:
А вряд ли получится с -c copy: PTS внутри будут указывать плееру воспроизводить фреймы тогда, когда они должны в исходнике воспроизводиться. Попробуйте или сразу перекодировать заново, или добавить фильтр asetpts.
Вопрос: Что за «rating» в html?

Лучший ответ:
Откуда нам знать, что это за атрибут в каком-то рандомном куске какого-то HTML?
Он не стандартный, а взяться мог откуда угодно и означать может тоже всё, что угодно.

Худший ответ:
могу предположить что они не осилили data-* и влепили свой кастомный аттрибут. 
Браузеру на него начхать, но из js он доступен
Вопрос: Почему занятого места на диске больше, чем файлов?

Лучший ответ:
Скорее всего, где-то остались удаленные, но не закрытые файлы - какие-то программы их держат. 
Их можно найти командой
lsof -X / | grep deleted
Если совсем лень разбираться, можно просто перезагрузить систему

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

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

PS. 40 записей в секунду - это в общем-то ни о чём..

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

Лучший ответ:
для обхода ограничений надо определить тип блокировки - TTL, IMEI или же DPI (анализ не свойственных устройству протоколов и портов)

в случае TTL блокировки устанавливай прошивку с возможностью управления iptables. потребуется что-то вроде
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64

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

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

нанёс большее количество термопасты
это так не работает.  чем тоньше слой тем лучше термообмен

в следуащий раз приложите радиатор без пасты к кристалу и попробуйте заглянуть на просвет. Я в своём нетбуке старом именно так и обнаружил причину перегрева

ЗЫ: И вот эти говна вокруг кристала надо убрать, мазать аккуратно и ТОЛЬКО на кристалл

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

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

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

Худший ответ:
тут написано 
https://habr.com/ru/post/265327/
Вопрос: Зачем модификатор public если его можно не использовать?

Лучший ответ:
Потому что так понятнее какая видимость у переменной. В одних языках по умолчанию все переменные, объявленные без модификатора будут private, в других public, а так всё явно задано и путаница исключена.
Не исключена вероятность, что при смене версии языка вдруг это поведение изменится и весь код без явного объявления превратится в тыкву.

Худший ответ:
почитай про ООП и тогда поймёшь
Вопрос: Как создать Телеграм-бот на python, который ищет из гугл таблицы всю информацию?

Лучший ответ:
Это задание, а не вопрос.

Легко решается через готовые библиотеки для python. Необходим сервисный аккаунт и доступ для него в Таблицу.

Худший ответ:
https://translated.turbopages.org/proxy_u/en-ru.ru...

Вот тебе в помощь первая часть, по настройке гугл таблиц и питона, всё очень понятно расписано.
Сделав это, ты уже разберёшься что делать дальше
Вопрос: Почему в примере ниже правильный ответ 0, затем 1?

Лучший ответ:
В документации MDN к for..in прямо пишут, что порядок детерминирован и одинаков во всех браузерах/движках:
The traversal order, as of modern ECMAScript specification, is well-defined and consistent across implementations.

Within each component of the prototype chain, all non-negative integer keys (those that can be array indices) will be traversed first in ascending order by value, then other string keys in ascending chronological order of property creation.
Причем русскоязычная версия там же иначе описывает порядок обхода. Надо бы поправить перевод.

На Русском языке лучше прочитать про порядок свойств на learn.javascript.ru

Худший ответ:
Правильный ответ - зависит от браузера. В спецификации порядок перебора ключей объекта не определён, разные браузеры в разные годы то сортировали ключи то нет.
То что сейчас большинство браузера сортирует - не говорит о том, что они и завтра будут сортировать.
Если вам важен порядок перебора используйте массив, например.
Вопрос: Куда класть приложения из .tar.gz?

Лучший ответ:
sudo apt update
sudo apt install telegram-desktop

https://linuxhint.com/install_telegram_linux_mint/

В вашем случае будет достаточно, и не собирайте из исходников без крайней нужды, это удел разработчиков или параноиков.

Худший ответ:
в linux для приложений, устанавливаемых неконтролируемым методом make install или распаковкой готовых бинарников является каталог /opt, порядок любой, создаешь внутри каталог по имени приложения и в него распаковываешь

для make install есть практика устанавливать в каталог /home/xxx с той же структурой bin/lib/... что и в оригинале, обычно это средствами самого установщика настраивается.
Вопрос: Как создавать массивы с неограниченной вложенностью в c++?

Лучший ответ:
"Такой массив" - это у которого третий член не того типа, как два первых? Вы какой-то не тот язык взяли под эту задачу.
Впрочем, если не пытаться воспроизвести то, что вы нарисовали, а просто строить дерево, то, например, так:
struct structName {
  std::string title;
  std::vector< structName > children;
}

Худший ответ:
В C++ невозможно создавать массивы с неограниченной вложенностью, поскольку размер массива должен быть известен во время компиляции. Однако можно создавать вложенные массивы с фиксированным числом измерений, а затем использовать указатели или динамическое выделение памяти для имитации неограниченной вложенности. Вот два подхода:

1) Использование указателей:
Одним из способов создания массивов с неограниченной вложенностью является использование указателей для создания массива указателей на массивы. Вот пример:

int*** nestedArray;
nestedArray = new int**[10]; // create an array of 10 pointers to int**
for (int i = 0; i < 10; i++) {
    nestedArray[i] = new int*[5]; // create an array of 5 pointers to int* for each of the 10 int**
    for (int j = 0; j < 5; j++) {
        nestedArray[i][j] = new int[3]; // create an array of 3 int for each of the 50 int*
    }
}

В этом примере мы создаем массив из 10 указателей на массивы из 5 указателей на массивы из 3 целых чисел в каждом. Вы можете продолжить вложение массивов, добавив дополнительные уровни указателей.

2) Использование динамического выделения памяти:
Другой способ создания массивов с неограниченной вложенностью — использование динамического выделения памяти с оператором new. Вот пример:

int dims[] = {10, 5, 3}; // an array of the dimensions of the nested arrays
int* arr = new int[dims[0] * dims[1] * dims[2]]; // create a one-dimensional array with the total number of elements
int*** nestedArray = new int**[dims[0]]; // create an array of pointers to arrays of pointers
for (int i = 0; i < dims[0]; i++) {
    nestedArray[i] = new int*[dims[1]]; // create an array of pointers to arrays for each of the pointers in the first level
    for (int j = 0; j < dims[1]; j++) {
        nestedArray[i][j] = arr + (i * dims[1] * dims[2]) + (j * dims[2]); // assign each pointer to the appropriate element in the one-dimensional array
    }
}

В этом примере мы сначала создаем одномерный массив с общим количеством элементов во вложенных массивах. Затем мы создаем массив указателей на массивы указателей и присваиваем каждому указателю соответствующий элемент в одномерном массиве. Вы можете продолжить вложение массивов, соответствующим образом изменив массив измерений и указатели. Обратите внимание, что вам нужно использовать оператор удаления, чтобы освободить память, выделенную с помощью new.
Вопрос: Как обновить Ubuntu 18.04 до 22.04?

Лучший ответ:
Открыть консоль и в ней дать команду do-release-upgrade

Худший ответ:
попробуйте так https://losst.pro/kak-obnovit-ubuntu-do-22-04
Вопрос: Почему ПК не включается хотя, сигнал от матери есть на секунду?

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

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

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

Неисправное оборудование. Неисправный аппаратный компонент, например, оперативная память или процессор, может привести к тому, что ПК не включится. Это может произойти, если компонент поврежден, неправильно установлен или несовместим с материнской платой.

Проблемы с BIOS: если настройки BIOS неверны, компьютер может не включиться должным образом. Это может произойти, если BIOS был сброшен или возникла проблема с прошивкой BIOS.

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

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

Худший ответ:
Возможно было короткое замыкание на корпус. Можно попробовать выдернуть кабель питания из БП и щелкнуть на нём тублером. и так оставить минут на 30
Вопрос: Чем проверить hdd на бэды?

Лучший ответ:
У меня алгоритм такой - смотрим SMART, если релокейтов больше 5 штук, или если драйв работал больше года - делаем полную проверку поверхности с перезаписью.

Еще раз смотрим смарт - если релокейтов стало больше - диск отправляем на почетную пенсию.

Худший ответ:
Если винт лежал долгое время и информация с него не представляет никакой ценности, то перед использованием его всегда сначала форматирую с помощью LLFTOOL, потом проверяю Викторией и, в зависимости от результата, принимаю решение о возможности дальнейшего использования. Винты объёмом менее 160Гб не проверяю и не использую. Хлам. А нет желание потратить время, значит время дороже усилий - тогда все не глядя в мусор, а купить новый с гарантией.
Вопрос: Хочу изучить пентестинг, с чего следует начать?

Лучший ответ:
Да какая литература? Она выходит уже устаревшей. Форумы и только форумы: xss.is и другие. Читайте статьи и пробуйте. Не получается - задавайте вопросы на форумах.
Вам нужно понять как работают такие вещи, как:

SQL-injection
PHP-injection
XSS
CSRF
LFI
RFI
Эксплойты (поиск и эксплуатация)
Научится работать со сканерами (особенно Metasploit)


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

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

Лучший ответ:
Есть ооочень хороший метод  показывать козу таким ... нехорошим козлам :)

Ставится VB и приложение записи экрана
В VB ставится винда
В винде, которая в VB, ставится хром и идется на сайт и запускается просмотр.
В хостовой системе запускается запись экрана или делается скрин

ПРОФИТ!

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

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

В данных условиях задача не имеет решения.

Худший ответ:
нет, купите нормальный роутер
пк на линукс подойдет
Вопрос: Как запретить отрисовку функций рендера html по результату запроса fetch по условию?

Лучший ответ:
Если пугает вложенность, можно добавить ретёрнов. А фетч завернуть в асинк-авейт.

if (item < 0) return;

const response = await fetch(url, options);
const result = await response.json();

if (result.result === 0) return;

currentItem.push(info);
render([info]);
update();

Худший ответ:
Классический способ борьбы с вложенностью - вынос кода в функции: const renderResult = (result) => {
    if (result.result === 0) {
        alert("Not found");
    } else {
        currentItem.push(info);
        render([info]);
        update();
    }
};
if (item < 0) {
    alert("not render")
} else {
    fetch(url, options)
        .then((response) => response.json())
        .then(renderResult)
}