pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Как установить приложение?

Лучший ответ: параметры командной строки  msiexec.exe
https://msdn.microsoft.com/ru-ru/windows/desktop/c...
араметры
/qn
Запрет на отображение пользовательского интерфейса.
/qb
Отображение основного пользовательского интерфейса.
/qr
Отображение сокращенного пользовательского интерфейса с выводом модального диалогового окна в конце установки.
/qf
Отображение полного пользовательского интерфейса с выводом модального диалогового окна в конце.
/qn+
Запрет на отображение пользовательского интерфейса за исключением вывода модального диалогового окна в конце.
/qb+
Отображение основного пользовательского интерфейса с выводом модального диалогового окна в конце.
/qb-
Отображение основного пользовательского интерфейса без модальных диалоговых окон.
Примечания
Параметр /qb+- не является поддерживаемым уровнем пользовательского интерфейса. При отмене установки пользователем модальное окно не выводится.

Худший ответ: Тут два варианта - костыльный и сложный.Костыльный - берете аутоит и  пишите на нем скрипт который будет кликать  на кнопки. Но работать будет не стабильно.Сложный - инсталлируете вручную приложение на чистую ОС, отслеживаете все изменения что делает установщик - куда что копирует, какие записи в реестре делает, какие библиотеки регистрирует, и.т.п. После чего на основе полученной информации делаете свой установщик с помощью той же InnoSetup или аналогичных программ, с нужными вам плюшками вроде тихого режима, и.т.д.
Для отслеживания я обычно использую утилиты Руссиновича, хотя есть и такие программы как - Ashampoo UnInstaller, Revo Uninstaller, и.т.д.
Если приложение не архисложное вроде VisualStudio или MS Office, то обычно там все не так уж и сложно.
Основные действия которые делает установщик - копирует файлы куда надо (юзерпрофиль, и программ файлз), прописывает параметры в реестре, возможно регистрирует какие то библиотеки.
Вопрос: Как проверить наличие слова в txt файле?

Лучший ответ: Сначала сделать из прочитанного файла массив слов, если, конечно, Вы этого еще не сделали.
Затем при получении нового сообщения через for проходиться по всем словам
//badWords - переменная, в которую, предположим, и записан этот массив
for (let word of badWords) {
    if (message.content.includes(word)) {}
};

Худший ответ: // запрещенные слова
array = ["ыва", "файл", "уй", "иг_Л"]

// регулярное выражение
blacklist = new RegExp(array.join("|"), 'gi')

text = /* содержимое прочитанного файла */

blacklist.test(text)
// true если найдено, false если нет

UPD нужна будет еще одна регулярка, которая будет экранировать неподходящие специальные символы в array
Вопрос: Как работает url сайтов?

Лучший ответ: Гуглите, как работают php роутеры и вам все станет ясно)

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

<?php 
        session_start();

$id_post =   ... ;//якобы твоя переменная с id поста

if(isset($_POST['post_go']) {
        $file_php =  "posts/" .  $id_post  . "_post.html" ";

     //Если файла нету... 
        if (!file_exists($file_php)) {
            $fp = fopen($file_php, "w"); // ("r" - считывать "w" - создавать "a" - добавлять к тексту),мы создаем файл
            fwrite($fp, '
            
        //html разметка post

            ');
            fclose($fp);
header("Location:" .  $id_post . "_post.html" );
}

?>

<form action="index.php" method="POST">
<input type="submit" name="post_go"> 
</form>

Редактировал не редакторе а в сухую, поправь где ошибся
Вопрос: Какие есть аналоги select2?

Лучший ответ: Лично я использовал https://joshuajohnson.co.uk/Choices в последних проектах. Нет зависимостей, работает быстро.
Например, вот так он работает с 500 select'ами, которые я генерирую не очень правильным способом динамически при загрузке страницы, то есть это весьма тяжелая процедура:snippet

Худший ответ: Сами напишите, если уж насколько проблемно. Можно не все select'ы сразу подгружать, а по мере скролла их уже отображать.
Так или иначе все более-менее похоже работают.
Тестируйте просто всё по очереди:
https://selectize.github.io/selectize.js/
https://github.hubspot.com/select/docs/welcome/
https://selectric.js.org/
Или на ванильном JS: https://joshuajohnson.co.uk/Choices/ , https://slimselectjs.com/ - по идее, работать должно быстрее.
Вопрос: Какой самый удобный сервис (сайт) для сопоставления синтаксиса языков программирования?

Лучший ответ: Я только один сайт такой нашел. hyperpolyglot.org

Худший ответ: Есть такой Derek Banas, у которого довольно большой список языков, по крайней мере, он при рассказе даёт похожие примеры.
Вопрос: Как сделать двойное условие в SQL запросе?

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

Худший ответ: AND всегда приоритетнее, чем OR. Надо так.WHERE (`categories_id` = '17' OR `categories_id_2` = '17' ...)
  AND (`categories_id` = '1' OR `categories_id_2` = '1' ...)
Может, как говорит, oleg_ods, сработает связь 1:∞, может, и не сработает — но быстрое исправление запроса такое.
Вопрос: Какое сочетание клавиш для импорта модуля после написания функции?

Лучший ответ: Я тут погуглил за тебя:
https://www.jetbrains.com/help/pycharm/creating-an...

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

Лучший ответ: Формула периметра квадрата не зависит от языка программирования.
Периметр_квадрата = длина_стороны * 4

Худший ответ: var l =4*h;
Даже вот так
https://jsfiddle.net/vkorotenko/sf40t827/
Вопрос: Какие параметры обязательны для установки linux?

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

Худший ответ: Для новичка - ставьте ubuntu 18.04 или Минт на той же основе. 
Рабочий стол(окружение) - lxde. 
Собственно xubuntu это оно и есть
Вопрос: Как объяснить такое решение задач?

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

Худший ответ: Эта и другие статьи, которые гуглятся по словам «приведение типов в JavaScript»
Вопрос: 100% uptime c CloudFlare?

Лучший ответ: 1) Правда ли, если поставить CloudFlare, можно обеспечить 100% uptime? и сайт вообще не будет ложиться из-за каких-то возможных проблем на уровне хостинга.
ну как бы логику-то включите, как CF может сделать ваш хостинг сделать всегда онлайн?
Никак естественно в этом он не поможет.
Кеш может быть отдан или заглушка что сайт лежит, но это к аптайму вашего хостинга никак особо не относится.

Худший ответ: 1) правда, но не вся
2) ха-ха, нет, но можно минимизировать тыщ за 5 USD
Вопрос: Как вызвать контекстное меню как в браузерах?

Лучший ответ: Работает только в достаточно новых браузерах:
https://developer.mozilla.org/en-US/docs/Web/API/N...navigator.share({
    title: 'Дратути!', // Заголовок
    text: 'Здарова, бандиты!', // Текст
    url: 'https://bandits.org', // ссылка
  });
Текущая ссылка и title:snippet
Свои параметры:snippet
На примере data-атрибутов:snippet
~ ~ ~
Всё это вызывает сие меню:
И весьма недурно отправляет, например, в Telegram:

Худший ответ: Вот так
Вопрос: На кого учиться программисту?

Лучший ответ: если не вижу смыслаТ.е. ты способен видеть смыслы, но их нет? Ответ очевиден - иди на философский.

Худший ответ: Иди на работу, если ты уже "программист". В вузе только время потеряешь.
Вопрос: Raycast unity2D, не находит объект, что делать?

Лучший ответ: давайте попробуем по полочкам. систематизировать все ваши прошлые вопросы и попытки.
я б советовал с нуля сделать,чтоб было "чисто и ясно" и без оглядки на прошлые попытки и путаницу.
- в сцене будет главный объект. проверятель нажатия и создатель объектов.
- инстанцируются объекты пусть через бесконечный цикл в коронтине (хотя как по мне лучше был бы таимер на Update, но тут думаю не принципиально)
- проверка попадания по объекту - на Update через Raycast
теперь к мелочам. найдите документацию или примеры на форуме про  RaycastHit hit;
	там внутри hit - куча информации во что вы лучом попали и по хороше добавить бы проверку что попали именно в нужный объект, мало ли что там еще слоем или тегом будет помечено случайно.саму проверку "скастовать луч" - вам бы делать только по клику/Down/Up мышкой (смотрите в сторону Input) для работы с 2D колайдерами есть отдельные реикасты Physics2D. чтоб избавится от костылей с 3d коллайдерами))

Худший ответ: На враге должен быть коллайдер с флагом триггер.
Вопрос: Как по максимуму про апгрейдить ноут Acer Aspire A715-71G?

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

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

кол-во ОЗУ ограничено процом и поддержкой материнки, но современные процы поддерживаю больше 16 ГБ, на сайте производителя обычно пишут совместимые модели

Худший ответ: Если что-то не так написал не гнобите, я ужасно шарю в этой сфере...
Вопрос: Как сделать инициализацию функции по изменению элемента JS, JQ?

Лучший ответ: Событие input.

Худший ответ: Можно через keyup/keydown
Ну или как написал Vadim Bogomazov через событие Input
Вопрос: Не могу почему-то создать пользователя для папке, в чем может быть причина?

Лучший ответ: надо или username или uid указывать.
то есть
chown user:user /path/to/folder
редактирую.
а. понял, у вас прям пользователь такой, да? user1001 ?
ок. пробуем так.
chown user1001:user1001 /folder/

Худший ответ:  chown: неверный пользователь: «user1001:1000»
Ну так вам пишет, что пользователя user1001 нет в системе.
какие юзера есть в /etc/passwd?
Может забыли самого пользователя создать?
Вопрос: Почему не все клиенты могут получить доступ к контенту?

Лучший ответ: Имхо, траблы с сертификатом. Сервис Ping Admin ругается: "Проблема с соединением через SSL. Скорее всего на сервере отключены ряд шифров для SSL, из-за чего некоторые клиенты не смогут подключиться." Я бы поставил обычный сертификат от Lets Encrypt и не экспериментировал.

Худший ответ: проверьте, что IP не заблокирован роскомпозором.
Вопрос: Как в pyqt5 сделать кнопку некликабельной(неактивной)?

Лучший ответ: Ну например такif a == b:
   self.button.setEnabled(False)
else:
   self.button.setEnabled(True)

Худший ответ: import sys
from PyQt5.QtWidgets import (QWidget, QApplication, QPushButton, QSlider,
    QVBoxLayout, QMessageBox)
from PyQt5.QtCore import Qt


class QButtonExample(QWidget):
    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):
        self.setGeometry(300, 300, 200, 150)
        self.button = QPushButton(self, text="Ты не сможешь на меня нажать!")
        self.button.setEnabled(False)
        self.button.clicked.connect(self.handleButton)

        slider = QSlider(Qt.Horizontal, self)
        slider.setFocusPolicy(Qt.NoFocus)
        slider.setGeometry(30, 40, 100, 30)
        slider.valueChanged[int].connect(self.changeValue)

        boxLayout = QVBoxLayout(self)
        # boxLayout.addStretch(1)
        boxLayout.addWidget(self.button)
        boxLayout.addWidget(slider)


    def changeValue(self, value):
        if value > 50:
            self.button.setEnabled(True)
        else:
            self.button.setEnabled(False)

    def handleButton(self):
        QMessageBox.information(None, 'Сообщение от программы', "Да ладно! у тебя получилось!")


if __name__ == '__main__':

    app = QApplication(sys.argv)
    myApplication = QButtonExample()
    myApplication.show()
    sys.exit(app.exec_())
Вопрос: Brew update и Brew upgrade в чём разница?

Лучший ответ: Если вкратце, в общих чертах, то brew update обновит сам brew , а вот brew upgrade - обновит формулы, пакеты которые вы поставили через brew.

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

Не надо думать, что вас унижают давай короткие ответы. Чем раньше вы научитесь читать официальную документацию, тем быстрее перестанете задавать простые вопросы, а начнете сами находить на них ответы.
Вопрос: Возможно ли суммировать канал от 4х LTE модемов?

Лучший ответ: Можно, но есть пара нюансов.

Поищите статью "Настоящее суммирование интернет-каналов — OpenMPTCPRouter" на Хабре.

Худший ответ: Подключите йоту, тарифы копеечные...

Только если вручную разбить потоки, через маршрутизацию. 
Типо на этот сайт - через 1й шлюз
На этот сайт - через 2й шлюз

Если проблема что ограничивается скорость торрентов - чернз любой впн пустите трафф, скорость не будет урезаться
Вопрос: Предстоит замена Точки доступа MikroTik SXT SA5 на такую же, как перевести клиентов?

Лучший ответ: Скопировать конфиг

Худший ответ: Открываете winbox и коннектитесь к старой точке, набираете в терминале export file=bck. В меню files появляется файл копии настроек, сохраняете их на ваш ПК и подключаетесь к новой точке, копируете их в меню files и в терминале набираете import bck.
Вопрос: Как запустить bash скрипт по нажатию кнопки и завершить при отпускании?

Лучший ответ: по нажатию запускайте скрипт в фоне, в скрипте пишите в файл его PIDecho $$>myscript.pid
по отжатию убивайтеkill $(cat myscript.pid)

Худший ответ: Остановить и продолжить выполнение процесса в Linux можно с помощью функции kill.
Вот пример в Python.
Вопрос: Стоит ли ставить обратный слэш перед глобальными функциями?

Лучший ответ: Это делается для ускорения работы. Стандартная функция со слешем быстрее вызывается ибо чётко задан неимспейс.
Но, по факту, смысла в этих мизерных оптимизациях нет. Только внешний вид кода портит. В хайлоад-проектах узкое место это не пхп.
Итого:Есть ли от этого какой-то прок? 
Нет.Этого требуют какие-то соглашения по стилю кода?
PSR -- нет.

Худший ответ: стоит, выигрышь в скорости есть
Вопрос: 1с 7.7 нестандартный DPI?

Лучший ответ: desktopwidth:i:<value>
desktopheight:i:<value>
where <value> is the resolution, such as 1680 or 1050.
Или
winitpro.ru/index.php/2017/12/27/rdp-masshtabirova...

Худший ответ: Поставить виртуалбокс с ВиндовсХП, где настроить слабые графические характеристики?
Вопрос: Не работают запросы INSERT и UPDATE, что я сделал не так?

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

и где может быть моя ошибка.В произвольном месте. По этому проверяют по порядку
1) Что передается в data в яваскрипте (console.log)
2) Что передается в на сервер (смотрим нетворк браузера)
3) Что получили на стороне сервера (var_dump и тот же нетворк, смотрим ответ аякса)
4) Проверяем запрос, и с таким заданием плейсхолдеров бинд не нужен:
$stm = $this->db->prepare($sql);
$stmt->execute($params);

Худший ответ: public function postEdit($post, $id) {
    $params = [
      'id' => $id,
      'name' => $post['name'],
      'description' => $post['description'],
      'text' => $post['text'],
    ];
    $this->db->query('UPDATE `posts` SET name = :name, description = :description, text = :text WHERE id = :id', $params);
  }
Судя по всему, ":" в вашем случае в ключах не нужны
Вопрос: Нужно ли художнику платить налоги за пожертвования на Patreon?

Лучший ответ:  Конкретнее – допустим за подписку можно будет просматривать поэтапный процесс рисования как обучающий материал либо просто возможность просматривать дополнительные рисунки.
Вот не надо только перевирать. Это уже никак не пожертвование, это купля-продажа в самом натуральном виде, со всеми вытекающими.
Добровольные денежные пожертвования налогом не облагаются.с любых денежных переводов, которые выступают подарком от любого человека, никогда не нужно платить НДФЛ. Этот человек может быть родственником, другом, знакомым знакомого, коллегой, деловым партнером, любовником, поклонником творчества, благодарным читателем и просто желающим помочь в трудной ситуации.
Подарок деньгами можно сделать по письменному или по устному договору. Перевод с назначением платежа, из которого понятно, что это подарок или безвозмездная помощь, — это фактически заключенный и исполненный договор. Но на крупную сумму лучше составить его письменно, чтобы подстраховаться.
О таких подарках не нужно никуда сообщать, их не нужно указывать в декларации. Вообще ничего не нужно делать. Получили и потратили. Если, конечно, вы не должностное лицо на госслужбе.

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

Лучший ответ: А что, сделать один запрос вместо отдельных для каждого элемента - нет, было никак? Свойство Documents, оно же массив, можно сразу всё передать.

document.querySelector('.allstatus-btn').addEventListener('click', () => {
  const items = Object.fromEntries(Array.from(
    document.querySelectorAll('.number-all'),
    n => [ n.innerText, n ]
  ));

  fetch('https://api.novaposhta.ua/v2.0/json/', {
    method: 'POST',
    body: JSON.stringify({
      modelName: 'TrackingDocument',
      calledMethod: 'getStatusDocuments',
      methodProperties: {
        Documents: Object.keys(items).map(n => ({
          DocumentNumber: n,
          Phone: '',
        })),
      },
      apiKey: '',
    }),
  })
    .then(r => r.json())
    .then(r => r.data.forEach(n => items[n.Number].innerHTML += n.Status));
});

Худший ответ: Пробуй(те).var button = document.getElementsByClassName('allstatus-btn')[0], // предположим, что он единственный
    numbersAll = document.getElementsByClassName('number-all');

button.onclick = function (event) {
    for (var i = 0; i < numbersAll.length; i++) {
        (function (i) {
            var _this = numbersAll[i],
                id = _this.textContent;

            fetch(
                    'https://api.novaposhta.ua/v2.0/json/', {
                        method: 'POST',
                        headers: {
                            'Content-Type': 'application/json'
                        },
                        body: JSON.stringify({
                            "modelName": "TrackingDocument",
                            "calledMethod": "getStatusDocuments",
                            "methodProperties": {
                                "Documents": [{
                                    "DocumentNumber": id,
                                    "Phone": ""
                                }]
                            },
                            "apiKey": ""
                        })
                    }
                )
                .then(response => response.json())
                .then(result => {
                    console.log(result)
                    result.data.forEach(function (item, i, arr) {
                        _this.insertAdjacentHTML('beforeend', item.Status);
                    });
                })
        })(i);

    }
}
ПыСы: рано ещё для фетчь
Вопрос: Слишком быстрая программа,всё так?

Лучший ответ: Добро пожаловать в асинхронность. request() выполняется асинхронно. Вот вы его вызвали, он внутри себя запомнил, по какой ссылке нужно (будет) обратиться и куда вернуть результат. И внешний вызов request() всё, отыграл. 
Веб-запрос ещё не пошёл выполняться, а уже работает следующая итерация вашего цикла for().
Все запросы пойдут выполняться почти параллельно. Поэтому и длительность десяти запросов примерно равна длительности одного.
Хинт не по теме вопроса, а про число записей на стене ВК
 ВКонтакте есть хороший API. В том числе, есть метод wall.get() для получения записей со стены и общего числа записей. 
Чтобы выполнить запрос к АПИ ВК, понадобится сначала получить токен. Для метода wall.get() годится сервисный токен или токен пользователя.

Худший ответ: Что бы вам не приходил ответ из кеша браузера/прокси, поменяйте запрашиваемый URL на request("https://vk.com/wall-73247559?own=1&rnd="+(90000+Math.random()*9999), function(....
Вопрос: Как в Oracle или Teradata разбить все строки таблицы на N равновеликие СЛУЧАЙНЫЕ выборки?

Лучший ответ: select t1. *, ntile(N) over (order by dbms_random.random) nbatch  from t1
 А дальше выбираете нужные части nbatch.
ntile в Oracle используется для построения гистограмм, поэтому +/- должен работать быстро.

Худший ответ: Практически методом Монте-Карло помечаем числами из случайного интервала записи таблицы и берем интересуемую порцию по этой случайной метрике. Поскольку, рандом у нас по равномерному закону распределения работает, то и порцию данных вы получите примерно ожидаемой длины.
select *
from (
select t.*, dbms_random.value(0, 100) rnd
  from table t
) A
where A.rnd <= 30 -- выбираем примерно 30% случайных записей от ген. выборки
Вопрос: Стоит ли выбирать mongoDB?

Лучший ответ: Возьмите лучше PostgreSQL, к нему как раз есть отличный драйвер для ноды: https://node-postgres.com

Худший ответ: Кажется, вас лучше взять реляционную БД.
Я бы смотрел в сторону postgresql, но можно и mysql
Вопрос: Как в js указать все числа находящиеся в определенном диапазоне?

Лучший ответ: В JS есть клевая штука: генераторы. 
Чтобы не забивать сразу память всеми значениями (что, если понадобится от 1 до 1050), можно их получать по одному:
// эта функция - Генератор. Он создаёт итерируемые штуки
function* makeRangeIterator(start = 0, end = 100, step = 1) {
    let iterationCount = 0;
    for (let i = start; i < end; i += step) {
        iterationCount++;
        yield i;
    }
    return iterationCount;
}

// вот сделаем итератор от 1 и до 10 (исключая конец)
var r1_10 = makeRangeIterator(1, 10);

// в цикле получим из итератора значения
for (i of r1_10) {
  console.log(i); // выведет от 1 до 9
}

Худший ответ: Я так предполагаю в условии? Если так то let i = 55;
if ( i >= 1 && i <= 100) {
   // что-то там происходит...
}
Вопрос: Как выровнять контейнер по левому краю?

Лучший ответ: Если хочется свежих подходов, изучите эту статью, она вам поможет решить вопрос.
https://habr.com/ru/post/463923/

Худший ответ: Отцентрировать контейнер слева? Это как? 
Так что ли? https://jsfiddle.net/kanonir/f7zs428o/2/
Вопрос: Как добавить wifi адаптер в ifconfig linux?

Лучший ответ: Ищите драйверы на сайте производителя.
Если их нет - увы, Linux его не поддерживает (скорее всего, так оно и будет).

Худший ответ: Установить firmware-misc-nonfree
Вопрос: Какую книгу по допускам посоветуете?

Лучший ответ: Для 3д печати это так не работает. Там погрешность печати такая что о допусках речь даже не идёт. 
"После печати доработать напильником"

Что надо чтобы распечатать шестерёнку на вал.
1. Найти готовую модель шестерёнки, нарисовать самому, или сгенерировать по параметрам в одном из генераторов шестерёнок.
2. Распечатать шестерёнку, проверить совпадение размеров штангенциркулем, внести корректировки в параметры печати или модель т.к. с первого раза наверняка не получится попасть в размер из за низкой точности печати.
3. Отверстие для вала рассверлить сверлом, т.к. отверстия в 3д печати получаются всегда меньше чем задано, сверло взять чуть меньше, на вал для 5 мм наверно 4.9 будет Ок. Особо продвинутые используют регулируемые развёртки.
4. Шестерню зафиксировать на валу при помощи суперклея или фиксирующего винта т.к. обычно вал гладкий и пластик хорошо скользит прокручиваясь.

Вот для примера моя шестерёнка на вал 5мм, в теле шестерни отверстия, в которые вставляются две обычные гайки (но лучше конечно поискать квадратные гайки), сквозь которые вкручивается два винта фиксируя шестерню на валу, винты можно использовать потайные, без шляпки.


Худший ответ: Если нужен прямой и короткий ответ на заданный вопрос - то нужна "Единая система допусков и посадок". По крайней мере, лежащий у меня альбомчик озаглавлен именно так. Но для его применения понадобится ещё литература.