Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Telegram bot api, как использовать answercallbackquery для отображения alert?

Лучший ответ:
// Ответ на нажатие кнопок
function send_answerCallbackQuery($token, $callback_query_id, $text, $show_alert){
  file_get_contents("https://api.telegram.org/bot".$token."/answerCallbackQuery?callback_query_id=".$callback_query_id."&text=".$text."&show_alert=".$show_alert);
}

if (isset($data['callback_query'])) {
  send_answerCallbackQuery($token, $data['callback_query']['id'], "проверка ", false);
}
Так все работет

Худший ответ:
В поле callback_query_id нужно писать id который получили при запросе callback
Вопрос: Как преобразовать правильный timestamp у vk?

Лучший ответ:
это пхпешный таймстамп, прост умножте его на 1000.
https://jsfiddle.net/qhj36uoL/

Худший ответ:
Может у кого есть предположения как vk преобразовывает этот timstamp в валидныйВообще-то это количество секунд между 01.01.1970 00:00 и сегодняшней датой/временем. А на 1000 требуется умножить, если нужны миллисекунды...
Вопрос: Как найти окна по заголовку или исполняемому файлу?

Лучший ответ:
Встроенной в шарп нет, но есть в Win32 api[DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

Худший ответ:
Как найти окна по заголовкуFindWindowByTitle
Вопрос: Закладки Firefox — чем обрабатывать, если их 'много', ПК, ведь, подвисает?

Лучший ответ:
Всем, кто прочитал вопрос и не понял о чём речь: выяснилось в диалоге с автором вопроса, что речь идёт про менеджер большого количества закладок (линков в "Избранном").Мой вариант решения проблемы: Планирую создание своего приложения на Delphi для удобной работы с закладками.
Если кто-то хочет получить какие-то специальные/необходимые опции в приложении - пишите в комментарии к ответу.

Худший ответ:
Воспользуйтесь расширением "Speed Dial" сайт тут, но установить проще в управлении расширениями
Давно использую, много лет, при создании новой вкладки у вас получится страница со вкладками расположенными под строкой адреса браузера с визуальными закладками, при этом можно целую кучу вкладок наделать по темам (а каждая вкладка это в свою очередь страница с визуальными закладками), используйте, реально классно и удобно!
Вопрос: По каким причинам приватные свойства родителей имеют больший приоритет, нежели публичные свойства потомков?

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

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

Лучший ответ:
Не нужно ничего выдумывать. 
Двайте им одну-две реальные задачи из вашей работы. Может не целиком лендинг, а например"сверстать форму обратной связи" или "сделать модуль для email рассылки на 2000 адресов", или что там у вас  считается за нестандартные задачи.
Вот прямо откройте историю, выберите несколько тасков на 2-4 часа, и готово.
Можно даже им оплатить, если это пройдет в прод.

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

Лучший ответ:
MVC, MVVM, MVP, FLUX, REDUX, HMVC, MVPVM, PAC, VVM, V... а по сути все это "болтология".

Худший ответ:
MVP? Это не паттерн проектирования
https://en.wikipedia.org/wiki/List_of_software_arc...
Вопрос: Где сделать конкурсный отбор программистов на вакансию?

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

Худший ответ:
Договоритесь с администраторами пабликов ВК, разместите там пост. Всё делайте открыто, программисты не будут участвовать если у них есть подозрения. Вам придётся опубликовать решение победителя, иначе многие не станут участвовать (я бы не стал).
Вопрос: Сохраняется ли история изменений файла в Sublime text?

Лучший ответ:
Кто лайкает такие ответы?
Взглянем на вопрос с общих позиций:
1. Sublime Text — продвинутый редактор, даже очень, и в нём, по идее, должны присутствовать все важные функции. Откат к предыдущим изменениям файла на мой взгляд к таковым относится.
2. У программы большое сообщество, в общей сложности написано более 2500 плагинов.
Когда я в своё время искал ответ на Ваш вопрос, то был уверен, что нужный плагин есть. Или по крайней мере нагуглится длинное обсуждение, где многие высказываются за его создание.
Он называется Local History. С установленным плагином после того, как Вы сохраняете любой файл в Sublime Text 3, создаётся копия файла в папке с Local History. Ещё раз сохранили этот же файл — создаётся новая копия, причём старая остаётся и не перезаписывается. Всегда момент можно вернуться к любой из прежних версий или же сравнить с ними нынешнее содержимое файла. Основные настройки: можно задать время хранения версий — я установил безлимит, — и путь к папке Local History.
К сожалению, не получается быстро заменить файл на его копию, но в остальном Local History служит мне несколько месяцев, и несколько раз приходилось прибегать к его помощи.
Спасибо.

Худший ответ:
пользуюсь https://github.com/akalongman/sublimetext-autobackups более полугода
+ стабильность
+ гибкие настройки
- со временем становится долгое открытие списка рез. копий (когда директория с бекапами становится большой)
@Kristinita
сравнивали ли этот плагин с Local History (плюсы/минусы)?
Вопрос: Что изучить первым и выгоднее Angular, Angular 2 или React?

Лучший ответ:
Лучше vuejs.org еще ничего не придумали.

Худший ответ:
react js  - фреймворк пхпешника, если он тебя устраивает - используй, если вдруг 3 буквы не устраивают - angular 2
Вопрос: Как с помощью css задать стили родительскому елементу?

Лучший ответ:
Когда-нибудь ты сможешь выполнить эту задачу только средствами css, например, когда вот это получит поддержку caniuse.com/#feat=css-has
На сегодняшний день ,думаю, что только JS  тебе поможет.

Худший ответ:
Стиль родителя средстави css нельзя изменять. Можно менять только соседний элемент
Вопрос: Стоит ли использовать Angular2 с ES6?

Лучший ответ:
Собственно могу ли я обойтись ES6 при работе с AngularМожете, вопрос в рациональности.
Хоть код на TS отличается не сильно, он все же отличается. А так как большая часть учебных материалов по ангуляру все же будет на TS - то стоит задуматься. Да и не так плох TS.

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

Лучший ответ:
SVG и только SVG.
Ну, можно, конечно, делать всякие абсолютно позиционированные прозрачные блоки на HTML, но там это сложнее позиционировать в силу отсутствия viewBox, как у SVG.
Кроме того, блоки на HTML не могут иметь произвольную форму, а только прямоугольную (clip-path не в счёт, с ним ещё сложнее будет реализовать), что вызовет проблемы при совмещении нескольких объектов произвольной формы вместе. Точнее, будет проблема с зоной взаимодействия этих объектов при наведении мышки из-за наложения прямоугольников.
Все такие интерактивные карты делают с помощью SVG, что как бы намекает.
https://medium.com/@mattcroak718/creating-an-inter...
Я делал такую карту с помощью Boxy SVG:
https://boxy-svg.com
Можно делать в Inkscape, там тоже есть режим просмотр кода разметки.

Худший ответ:
Плагин mapplic
Достаточно удобно редактироват через json файл.
Есть js и wordpress плагины
Вопрос: Что лучше использовать для написания парсера на Python?

Лучший ответ:
В простых случаях библиотеки re хватит за глаза.
Насчет более сложных случаев задавайте вопрос конкретней.

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

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

Худший ответ:
Вы ищите уникальное решение, на все случае жизни. Но так не всегда бывает, каждая задача требует свои решения. 
+1Но тогда ведь я не смогу использовать CursorLoader c CursorAdapter. Или я ошибаюсь?
да, если поле не _id то недоступен целый ряд родных фич из sdk даже по нажатию на элемент списка вы не получите его ключ (из коробки если пк _id то при клике на элемент списка вы получите его _id)
_id по сути уже стандарт  для android, поэтому кроме случаев где по каким то очень важным причинам вам нужно назвать пк как то иначе, я бы рекомендовал все же называть пк _idНапример сделать что то типа репозитория, но только без провайдера
Конечно можно, но тогда целый ряд фич придется пилить самому
мне нравится  ContentProvider  за его простоту, но не нравится за кривое api (нет, правда, метод в котором почти все параметры частенько null в 2016 году это через чур) но его api компенсируется его стабильностью
еще раз опишу кейс его использования когда не нужно давать куда то доступ Клиент сферического интернет магазина 
для наглядности представим что  у нас планшет и что экран разделен на 2 фрагмента
первый фрагмент лента товаров
второй корзина  
(да странный ux но что поделать ....  )
в ленте пользователь жмет на кнопку добавить в корзину, при этом волшебным образом  обновляется ui во втором фрагменте при этом никакой сложной логики  реализовывать для этого не нужно  
думаю такого же эффекта можно добиться  при использовании rxjava но придется попотеть
Вопрос: Как решить проблему с vlan на tp-link?

Лучший ответ:
Решите проблему правильной настройкой оборудования

Худший ответ:
Из вопроса вообще не понятна схема. В слепую можно предложить перевести порт на свиче в транк и дальше смотреть
Вопрос: Зачем нужен nunjucks, как он может помочь в фронтенд верстке?

Лучший ответ:
Приведу в пример свои юзкейсы. Если есть проект размером, например, 10 и больше страниц (один из последних у меня 50+ страниц), и в них есть шапка, подвал и меню повторяющиеся. Представьте, Вы это все копипастом делаете, а потом надо еще пункт добавить или верстка шапки поменяется... Менять вручную это ад. В нунчаках можно шапку и подвал, и меню подключить как модули, если что-то поменялось - редактируете только один файл, меняется сразу везде.
Вариант второй, надо проверить и показать верстку на надежность, переполнением контейнера, к примеру есть таблица, можно вручную скопировать вставить 30 строк, но потом документ будет иметь большой размер и скролить это все будет неудобно, плюс глаза будут уставать, помимо этого может надо какие-то свои спецклассы задавать каждой 10 строке, а потом еще пару строк добавите,  и порядок строк таблицы поменялся, и вручную все классы менять. В нунчакках есть возможность создать массив, как в программировании и запустить цикл с условиями и прочими плюшками, и теперь добавить пару строк можно без проблем, просто добавив в массив нужные значения.
Еще можно вставлять svg в html, при этом визуально не засорять код, в результате можно управлять svg как часть документа, и при этом в src файлах чистота и порядок.
https://mozilla.github.io/nunjucks/ Вот доки.

Худший ответ:
Приведу в пример свои юзкейсы. Если есть проект размером, например, 10 и больше страниц (один из последних у меня 50+ страниц), и в них есть шапка, подвал и меню повторяющиеся. Представьте, Вы это все копипастом делаете, а потом надо еще пункт добавить или верстка шапки поменяется... Менять вручную это ад. В нунчаках можно шапку и подвал, и меню подключить как модули, если что-то поменялось - редактируете только один файл, меняется сразу везде.
Вариант второй, надо проверить и показать верстку на надежность, переполнением контейнера, к примеру есть таблица, можно вручную скопировать вставить 30 строк, но потом документ будет иметь большой размер и скролить это все будет неудобно, плюс глаза будут уставать, помимо этого может надо какие-то свои спецклассы задавать каждой 10 строке, а потом еще пару строк добавите,  и порядок строк таблицы поменялся, и вручную все классы менять. В нунчакках есть возможность создать массив, как в программировании и запустить цикл с условиями и прочими плюшками, и теперь добавить пару строк можно без проблем, просто добавив в массив нужные значения.
Еще можно вставлять svg в html, при этом визуально не засорять код, в результате можно управлять svg как часть документа, и при этом в src файлах чистота и порядок.
https://mozilla.github.io/nunjucks/ Вот доки.
Вопрос: Непонятная проблема с SSH?

Лучший ответ:
демон ssh у Вас помер.
смотрите в логи, почему не стартует

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

Лучший ответ:
GitHub: zirafa/bootstrap-grid-only
Вас может интересовать css/grid12.css.

Худший ответ:
Не хотелось занудствовать, но придется. Согласен с вышесказанным - Так может и не стоит? 
В том смысле, что еще рано. Может, пока что, стоит поплотнее заняться HTML, поковыряться в CSS, сваять свою страничку, с файлом на over100500 строк. А потом еще одну - совершенно другую... и еще одну - абсолютно третью... и т.д., и т.п.. Если, не будет понимания, как работают элементы, сами по себе и взаимодействуя между собой - не сладко придется. На одном фреймворке далеко не уедешь.
Вот эта вещь, всегда должна быть открыта. 
А по теме - суй вот это в шапку.<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
Вопрос: Как настроить nginx под 800 запросов в секунду?

Лучший ответ:
Так, во первых у тебя сколько ядер на машине? Почему кластеров 10, а nginx воркер процессов 2(оба значения должны быть раны количеству ядер)? Во вторых вместо ПМ 2 можно использовать upstream в нигсе. В него же можно подсунуть другие серваки если этот не справляется. 800 подключений это не много, но уже требует кэширования, так что надо в нигсе в upstream, proxy и выдачу прописать кэширование. Ну и смотреть код курить логи с манами. Удачи.

Худший ответ:
может вопрос должен звучать так: "как настроить/потюнить пхпфпм что бы он не умирал?" 
энджинкс искаробки обрабатывает достаточно много запросов
количество ядер конечно играет роль, но и время ответа тоже т.к. если 1 ядро и ответ будет генерится 10 секунд то о чём можно говорить?
ЗЫ ну и надо понимать что пхп это однопоточное УГ от которого много ждать не стоит если не использовать какой нибудь hacklang от фейсбука для компиляции пхпшного кода в бинари!
Вопрос: Как опубликовать информационную базу 1с под Apache2.4?

Лучший ответ:
мне помогло простоsetsebool -P httpd_can_network_connect 1
service httpd restart

Худший ответ:
Нужно было проверить /var/log/audit/audit.log и добавить исключение для httpd в selinux grep httpd /var/log/audit/audit.log | grep denied
semanage port -a -t http_port_t -p tcp 1541
semanage port -a -t http_port_t -p tcp 1560
Вопрос: Переадресация после оплаты Robokassa?

Лучший ответ:
Читайте документацию, там найдете информацию об SuccessURL. У Робокассы очень хорошая документация, так что проблем вызвать не должно.

Худший ответ:
Пользователь зашел к вам на сайт.
Создал заказ, вы отправили его на Робокассу оплачивать.
Он там оплатил, Робокасса вернула его к вам на сайт.
На этот момент никакой информации об оплате вы еще можете не иметь. Оплата через мобильную коммерцию вообще может идти час и более.
Потом Робокасса дергает-таки ваш обработчик, и вы узнаете об оплате.
Если пользователь при этом у вас на сайте - вы еще можете ловить это событие и куда-то его перебрасывать. Ну, или в следующий заход. 
Раз вы фронтендер, вам, наверное, нетрудно будет выдать юзеру оповещение о том, что оплата прошла и теперь он может куда-то там перейти.
Вопрос: Вывод формы в Django?

Лучший ответ:
Или можно использовать https://github.com/jazzband/django-widget-tweaks
И не мешать Python-код с CSS и HTML.

Худший ответ:
Вам надо использовать: django-crispy-forms.
Вопрос: Компания установила кейлогеры своим сотрудникам. Имеет право?

Лучший ответ:
Компьютеры - собственность организации. Организация выдала их сотрудникам для выполнения рабочих обязанностей и вправе контролировать, не используются ли компьютеры в посторонних целях.
Но компания должна была под роспись предупредить сотрудников об объёме и целях мониторинга.
https://habrahabr.ru/post/337614/

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

Лучший ответ:
Если головка застряла, то вытащить данные будет очень трудно, потому что головки "летают" над пластинами буквально в паре микрон, и если головка опустилась на пластину, то она оставила после себя безумно большую борозду. Но скорее всего у вас умер мотор самого диска, сами вы эту процедуру скорее всего не проделаете, а если и попробуете проделать, то напустите на пластины пыль, которая тут же, после первого включения, превратит ваши пластины в дуршлак.
Любое вмешательство во внутренний мир пластин и головок должно проходить исключительно в помещениях нужной чистоты, дома таких условий не добиться никогда!
Рекомендую, если информация действительно очень важная, обратиться в одну из фирм по спасению данных.
И да, делайте бекапы почаще.

Худший ответ:
Залипшая головка немного по другому пищит.
Было похожее. Вероятнее всего- плохой контакт в кабеле данных.
Проверьте кабели (питание и информационный). Попробуйте подключить диск к другому компьютеру или используйте USB-box- c большой вероятностью данные можно будет скопировать
Вопрос: Работа с большим изобилием форм?

Лучший ответ:
Смотря сколько всего форм.
Можно и не заморачиваться сильно. Достаточно Ссылку на первую (1), как я понял (Activation) хранить где-нибудь глобально, чтобы все формы видели (например, в классе Program.MainForm);
В событии Activated просто делать Program.Form1.Hide(); а в событиях Closing или Closed делать Program.Form1.Show()
Ну и да, если форм много, то тогда проще расширить класс Form -public abstract class MyForm : Form
{
    protected override void OnActivated(EventArgs e)
    {
        base.OnActivated(e);
        // TODO: Убедиться, что MainForm != null
        // System.Diagnostics.Debug.Assert(null != Program.MainForm);
        Program.MainForm.Hide(); 
    } // OnActivate

    protected override void OnDeactivate(EventArgs e)
    {
        base.OnDeactivate(e);
        // TODO: Убедиться, что MainForm != null
        // System.Diagnostics.Debug.Assert(null != Program.MainForm);
        Program.MainForm.Show(); 
    } // OnDeactivate
} // class MyForm
В общем, потом достаточно прописать в своей форме наследование не от Form, а от MyForm и всё. Любая форма будет вести себя так.
Если "MainForm" может изменяться от раза к разу, то её в конструктор новой формы надо будет передавать.

Худший ответ:
Оказалось не реально просто! =)private void button1_Click(object sender, EventArgs e)
        {
            this.Hide();
 
            using (var dialog = new Form2())
            {
                dialog.ShowDialog();
            }
 
            this.Show();
        }
Всем спасибо за участие!!
Вопрос: 2 видеокарты на ПК, есть ли смысл?

Лучший ответ:
1 - есть, если знаете что с ними делать
2 - обобщенная - нет. но надо понимать что софт обученный использовать GPU как многоядерный калькулятор, будет пользоваться обеими картами на ура. пример - майнеры крипты (народ носился впоисках материнок с возможность подключения множества видюх - 20 карт через ризеры ;) из "обычного софта" - браузеры. да да, будут пользовать. Excel - начиная с 2016 (а может и раньше) был замечен, что если выводим экран через интегрированну графику, а на НВидии в фоне маним - так вот эхель начинает жутко тупить!!! ему надо отдать кусок ресурсов от фоновой карты, что бы ожил... у вас конечно запас очень большой для запросов бораузеров и ехеля, но общая тенденция в том, что все больше софта умеет использовать GPU, тот же ACAD, на серьезных задачах, схавает обе ваши карты глазом не моргнув
3 - а это уж сами решайте ))
ps о расходе - нет загрузки, нет и особо ощутимого расхода
pps о софте пользующем GPU - проф софт для видео/аудио монтажа, ACAD и любой другой современный продвинутый CAD софт, математические пакеты типа Wolfram Mathematica, пакеты работающие с нейронными сетями. в общем практически любой современный софт, жадный до вычислительных ресурсов. даже для СУБД PostgreSQL существует расширение PG-Strom для расчетов на GPU (MS SQL начиная с 2017, так же умеет использовать GPU но пока только в модуле "машинного обучения")

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

1. Есть ли смысл от того что две видеокарты вместо одной в данной системе ?
При виртуализации - да. Вторая видеокарта обычно пробрасывается напрямую в виртуалку. Правда, это фантастически сложно сделать на линухе, неизвестно как сделать в винде и ооочень дорого делать на ESXi. Я пробовал - ни х.. не получилось :)
В винде - никакой.2. Повышается или падает производительность ? 
Не повышается.
Не падает. 
Просто жрет электричество.3. Какие рекомендации будут ? 
Вынуть и продать 1060 :)
Вопрос: Какой хостинг для asp.net?

Лучший ответ:
smarterasp.net
Сначала пользовался бесплатными периодами. Сейчас у них скидки 50%, поэтому решил наконец купить. Со скидкой стоимось среднего тарифного плана (Advanced) выходит ~2$ месяц.

Худший ответ:
остановился на https://ultravds.com/ пока вроде нормально
стабильность оказалась так себе, хорошо хоть в прод пустить не успел, для меня это критично поэтому сваливаю (
update: сам дурак не правил конифиги postgres и он отожрал всю оперативу
Вопрос: Как передать файл в GET запросе?

Лучший ответ:
Нет. Для передачи POST (PUT ...)

Худший ответ:
В теории - берете все содержимое файла, перегоняете в base64, передаете как параметр запроса. 
На практике - так не стоит делать как минимум потому, что запрос GET подразумевает ПОЛУЧЕНИЕ, а не ПЕРЕДАЧУ.
Вопрос: Какие есть архитектурные решения для лаконичной реализации ролей в React-приложениях?

Лучший ответ:
еще не пробовоал, но можно посотреть как тут
https://auth0.com/blog/role-based-access-control-r...

Худший ответ:
Все просто, я сам такое недавно делал. 
В роутах определяешь область видимости. 
А в конечных компонентах из стора получаешь текущую роль. 
Вот пример такого компонентаclass ProtectedRoute extends Component {
  
  render() {
    const {component, ...rest} = this.props
    return <Route {...rest} render = {this.getComponent}/>
  }
  
  getComponent = (...args) => {
    return this.props.user && this.props.access.indexOf(this.props.user.role) !== -1 ? <Main title={this.props.title} ><this.props.component {...args} /></Main> :
      <ErrorPage/>
  }
}

export default connect(state => ({
  user: userSelector(state)
}), null, null, { pure: false })(ProtectedRoute)
Тут в this.props.access определяешь идентификаторы доступных ролей