Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Есть ли где-то статистика по миграции it-специалистов из Петербурга в Москву?

Лучший ответ:
Сразу скажу, что статистики у меня нет, но я прожил и проработал в Спб 4 года, и общался со многими программистами. 
По моим наблюдениям, программисты из Спб не сильно стремятся в Мск (даже побывать лишний раз). Мск представляется им грязным, суетливым городом, который отнимает очень много времени. В такое место они не хотят ехать даже за более высокую з/п.
Некоторые уезжают в Мск, но их ничтожно мало. Чаще всего, едут за границу. Я вот так, например поступил. Сначала я подумывал поехать в Мск, но потом решил, что это лишено смысла. В Спб я жил спокойно (именно спокойно, вообще без стрессов), тратил минут двадцать на дорогу до офиса, который, находился в историческом центре, вообще не считал деньги (при это с лихвой хватало и на путешествия и для накоплений). У меня есть куча знакомых, которые живут в Мск, неплохо зарабатывают, но, скажем, ездят по часу до работы (в одну сторону), или стоят в пробках (в том числе и в метро), постоянно куда-то бегут, дышат выхлопными газами... зачем?
Спб это уже неплохое место для получения необходимого набора навыков для переезда, так зачем нужна буферная зона? Тем более, что Мск хоть и может предложить неплохой уровень жизни, но не лучше, чем популярные направления для переезда программистов.

Худший ответ:
79% первых и 18% вторых, еще 3% - сложно классифицировать
Вопрос: Обязательное начало ввода с цифр 5739, как сделать?

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

Худший ответ:
https://codepen.io/anon/pen/drxWXp
но лучше вводить меньше, и потом уже добавлять где то 5739 + input.value
Вопрос: Стоит ли покупать смартфон с Super Amoled дисплеем?

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

Худший ответ:
подробно отвечал тут
Какой тип матрицы лучше?
вкратце - OLED выгорают и (зависит от добросовестности производителя) мерцают.
из современных недорогих хороших смартфонов - Xiaomi Redmi Note 3 Pro (9-10к рублей, 3 ГБ памяти, большой экран и т.д.), посмотрите, может понравится
Вопрос: Как точно подсчитать время создания программного продукта?

Лучший ответ:
это примерно то же самое что научиться абсолютно точно предсказывать погоду на месяцы вперед.
Есть хорошая мантра:
таски на 4 часа мы делаем за 4 часа, таски на 8 часов мы делаем за 12, таски на 16 часов мы делаем за 24, таски на 40 часов мы не делаем никогда.
Просто старайтесь делать декомпозицию задачи на как можно меньшие кусочки. И домножайте на коэффициенты рисков (в вашем случае - 4). Со временем этот коэффициент будет уменьшаться и вы будете точнее предсказывать сроки.

Худший ответ:
Только опыт.
Если хочешь что-то из фундаментального, то почитай Фредерика Брукса "Мифический человеко-месяц"
Вопрос: Как проводить оплату клиентской рекламы при работе в статусе самозанятого (НПД)?

Лучший ответ:
Если клиент мне переводит мне деньги на счёт, часть из которых идет на оплату его рекламы в Гугл.АДС и/или в Яндекс.Директе. 
Как это обозначать в приложении для самозанятых? 
Никак не обозначить. Вы не вправе применять НПД - ст.4 п.2 Закона 2. Не вправе применять специальный налоговый режим:
5) лица, ведущие предпринимательскую деятельность в интересах другого лица на основе договоров поручения, договоров комиссии либо агентских договоров, если иное не предусмотрено пунктом 6 настоящей части;

Худший ответ:
Откройте ооошку и проводите нормально доходы и расходы
Вопрос: Где найти готовую разметку страницы?

Лучший ответ:
Если у кого есть ссылочка, буду признателен! 
есть, держите
https://codepen.io/anon/pen/JzgNJX

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

Лучший ответ:
Утверждение "Я довольно давно работаю программистом, но так и не научился реализовывать алгоритмы." противоречиво. Программист это тот кто умеет реализовывать алгоритмы, ему деньги платят именно за это. Т.е. какая-то из частей этого утверждения неверна (возможно обе)
Но ваша беда не в этом. Сам по себе "реализованный алгоритм" чисто теоретическая, бессмысленная субстанция, примерно то же самое, что "сферический конь в вакууме". Этим занимаются школьники на уроках информатики. В реале программисту деньги платит заказчик (работодатель) за решение своих проблем. Т.е. программист должен изучить проблему и расчленить эту проблему на последовательность алгоритмов. То что получится в итоге называется программа, а процесс называется программирование
В вашем случае получается что вы не решаете проблему (не пишете программу), вы в нее даже не вникаете, а пытаетесь писать бесполезный, ни кому ненужный код.

Худший ответ:
Отвечаю на свой же вопрос: "Это нормально"
Я сделал такой вывод когда читал эту книгу: Экстремальное программирование. Разработка через т...
Даже из простой алгоритм можно реализовать сложным языком и потом думать как такая сложнотень пришла мне в голову. А надо было всего лишь в начале осмыслить какой-то простой кусочек, написать к нему тест, сделать тест выполнимым и от рефакторить.
Вопрос: Рабочее окружение современного разработчика. Мобильное, быстроразворачиваемое, вандалоустойчивое?

Лучший ответ:
храним все важные документы в облаке, а серсы у нас и так в GIT.

Худший ответ:
ХЗ, у меня вся работа в гугл-драйве ...
Вопрос: Как редактировать CSS WordPress темы из браузера?

Лучший ответ:
Ну можно сколхозить следующим образом. 
1) В хроме можно привязывать файл из dev тулза в локальный файл. Погуглите, в недавних обновлениях было.
2) Этот привязанный файл переопределяете поверх серверного. т.е. чтобы браузер вместо удаленного качал локальный. Можно использовать всякие переопределяющие файлы проги, прокси, локальный сервер, или например расширение для хрома https://chrome.google.com/webstore/detail/resource... Я обычно же использую BrowserSync, перехожу через консоль в директорию, где будут лежать переопределяемые файлы, и выполняюbrowser-sync start --proxy адрес_сайта --files './' --ss './'
И создается локальный сервер, через который я работаю. Структуру папок нужно иметь такую же, как и на сервере. т.е. если там стиль лежит в /styles/style.css, то и вы создавайте эту папку и кидайте туда этот файл. Плюс бонусом будет LiveReload. Так можно менять все статические файлы. Серверные скрипты так сделать не получится. К тому же, файл физически на вашем компьютере, и после всех изменений, нужно кинуть измененный файл на сервер. 
PS: По хорошему, правки лучше не делать сразу на продакшн сервере, но если надо, то пусть.

Худший ответ:
Редактируйте CSS в каком-нибудь редакторе, сохраняйте, а затем открывайте браузер с вкладкой сайта и просто нажимайте Ctrl+F5.
Вопрос: Определиться со стеком для python для дальнейшего изучения?

Лучший ответ:
Сам я недавно устроился в первые работать в офис Python разработчиком, могу сказать, что бывшее отношение к вебу как к чему-то простому будто ветром сдуло, не смотря на несколько собственных реализованных проектов. В компании используется такой стек: django, PostgreSQL, angular. И на сколько я осознал, бизнес ценит именно full stack разработчиков, которые и запросы оптимизируют и асинхронную формочку для регистации прикрутят и баги пофиксят и сервер поднимут. В общем, копните глубже, web — это хороший выбор!

Худший ответ:
Elasticsearch + redis, это для баз.
Также flask и httpio/asyncio
Вопрос: Как поднять сервер на домашнем компьютере?

Лучший ответ:
Как поднять сервер на домашнем компьютере?Ставите любой удобный вам веб сервер на нужную машину и все.
Под windows есть куча серверов и nginx и апач, и множество других.Существуют ли готовые решение? (Запустил одну программу, кинул файлы в папку и все работает)Настраивать в любом случае придется. А так любой веб сервер.Для доступа на ваш сервер из глобальной сети обязательно нужен белый IP адрес. Если его нет доступ невозможен.
Так же может потребоваться настройка сети - тут все зависит от ее конфигурации. Например настройка правил файервола на роутере и на компьютере, проброс нужных портов на роутере, и.т.п.

Худший ответ:
1) Openserver или XAMMP  - готовые обертки 
2) (неверное утверждение было), нужен белый ip, либо комп с белым ip и vpn сеть.
Вопрос: Как реализовать подобные стрелки в web?

Лучший ответ:
Raphael.js (SVG) - там есть такой функционал.

Худший ответ:
jointjs
Там правда разработчики пиарят свой новый фреймворк, rappid, но для диаграм со стрелочками будет достаточно бесплатного jointjs.
Вопрос: Как выбрать контрольные точки?

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

Худший ответ:
Если что-то ломается между промежуточными точками, значит вы что-то делаете не так. Бесконечно плодить точки невозможно, да и не правильно. 
Например вот так делать не нужно:
Вопрос: Как написать большое приложение на Vue.js и не умереть?

Лучший ответ:
Возможно что то не так в конфигах webpack ?
У меня сейчас в проекте порядка 600+ vue компонентов. 
Пересборка в dev с hot reload занимает 2-5 сек.
(win, ram 16gb, ssd, какой то старенький i3)

Худший ответ:
Полностью согласен с Buzzzzer  !
У самого есть production проект где намного больше чем "30 компонентов разного объема" билдится все довольно шустро, не смотря что у меня Macbook Air. Попробуйте webpack-bundle-analyzer может какие-то аномалии в бандлах. Или сравните ваш конфиг webpack и тот который по-умолчанию в vue-cli.
Знаком со случаем когда люди не вникая в webpack, напутали с настройкой Entry Points, из-за чего бандл, под production ENV внутри докера билбился до 10 минут. Но ничего, не умерли от этого
Вопрос: Как загрузить страницу http?

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

Худший ответ:
Wireshark, Fiddler и т.п. сниффер, либо Phantom.js, Selenium и т.п.
Вопрос: Как конвертировать текст в речь на php?

Лучший ответ:
Есть js библиотеки , с помощью которых делают сайты для слабовидящих, с озвучкой

Худший ответ:
php не задан для подобного.
Ищите готовые реализации на других языках а потом с ними пробуйте делать обмен данными..
Вопрос: Как правильно сконфигурировать ubuntu 16.04,для работы скрипта с openserver?

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

Худший ответ:
В общем,если кто-то с этим столкнётся.
Действия,которые я предпринимал на время установки установил права 777 на все файлы и папки сайта.
Включил mod_rewrite,изменил файлы конфигурации.
-----
В случае ошибок смотрите логи апача они хоть какую-то информацию дают получить.
Вопрос: Не даёт нормально установить любой пакет python через pip из-за utf-8. Что делать?

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

Худший ответ:
1) Virtualenv может помочь.
2) создать учётку с не кириллицей.
3) Ну или ставить как системные библиотеки, которые доступны для всех пользователей, в С:/python3 (pythonpath)
Вопрос: Как создать несколько записей в таблице с помощью doctrine одним запросом?

Лучший ответ:
Никак.
Можно конечно написать "сырой" sql запрос в обход doctrine, или даже сделать LOAD DATA INFILE если данных действительно много. Но это уже фичи, которые по разному реализованы в разных СУБД и доктрина таким не занимается.

Худший ответ:
Это не слишком много запросов к базе. Это то, как надо работать с базой.insert into tablename (id,blabla) values(1,'werwer'),(2,'wqewqe'),(3,'qwewe');
Такой код не нужен. Если таких данных будет много вы просто по памяти вылетите.
У вас $em->flush(); за циклом, все верно!
Вопрос: Как поставит винду вместо линукс?

Лучший ответ:
когда ставлю с флешки винду, всегда выбивает ошибку Boot error
Видимо, BIOS не видит устройства, с которого можно загрузиться. Либо вы флешку загрузочную неправильно записали, либо в BIOS настройка загрузки с флешки не включена или в неверном приоритете перед сломанным загрузчиком на жёстком диске.знаю что на Линукс другая файловая ситема
Это вообще ни при чём.

Худший ответ:
когда ставлю с флешки винду, всегда выбивает ошибку Boot error
Видимо, BIOS не видит устройства, с которого можно загрузиться. Либо вы флешку загрузочную неправильно записали, либо в BIOS настройка загрузки с флешки не включена или в неверном приоритете перед сломанным загрузчиком на жёстком диске.знаю что на Линукс другая файловая ситема
Это вообще ни при чём.
Вопрос: Фреймворк PHP без установки?

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

Худший ответ:
Надо только Composer установить, он обычно на VPS в коробке не идёт, остальное все устанавливаться вместе с демо версией isp manager. И дальше с его помощью поставить фреймворк - тот же Laravel, Yii2, Symfony или другой какой пожелаете.
Вопрос: Генерация документации по api?

Лучший ответ:
В целом стандартом для документирования API сейчас можно назвать Swagger.io. Для него, в свою очередь, можно найти пакеты как для интеграции его и Laravel, так и для преобразования его yaml-файлов в файлы с markdown-разметкой. Намного больше решений можно найти в Google по запросам вроде "swagger.io laravel", "swagger.io markdown" и т.д.

Худший ответ:
Окей, гугл, покажи мне "laravel markdown generator":
https://github.com/mpociot/laravel-apidoc-generator
https://github.com/InfyOmLabs/laravel-generator
Вопрос: Нужно ли удалять компонент после закрытия?

Лучший ответ:
Если Angular 2+, может стоит попробовать *ngIf?
Он сам скрывает DOM-содержимое.

Худший ответ:
Если повторный вызов компонента исплючен, то можно и удалить. А так вообще, hidden вполне достаточно.
Вопрос: Как починить видеокарту Palit 970, которая заливает экран случайным цветом после 65 градусов?

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

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

Лучший ответ:
в вики достаточно кратко и понятно
https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%88%D...
-----
но не берите грех на душу, если нет опыта, отдайте задачу тем кто уже занимался этими вещами. Иначе за такие решения, сами разработчики могут затоить на вас лютую злобу)

Худший ответ:
А что такое "получить"? Я так понимаю, "получают" образование. Вы спрашиваете - где учиться? Ну тогда было бы неплохо знать, где живете, уровень вашего текущего образования и (как обычно для ИТ-специальностей) - уровень вашего английского.
А если "получить" - это самостоятельно освоить - ну так в интернете ресурсов просто море:
www.7wdata.be
https://www.datasciencecentral.com
https://datascienceplus.com
https://www.kdnuggets.com
https://www.analyticsvidhya.com
https://towardsdatascience.com
и далее по списку......
Написано только что
Вопрос: Как навесить обработчики событий на вставляемый html-код?

Лучший ответ:
вторым аргументом в функцию .on() передать селекторы элементов, на которые вы хотите навесить обработчики, например, так:$('body').on('click', '.add-copy__input-file', handlerFunc);

Худший ответ:
вторым аргументом в функцию .on() передать селекторы элементов, на которые вы хотите навесить обработчики, например, так:$('body').on('click', '.add-copy__input-file', handlerFunc);
Вопрос: Не стартует экран без перевключения блока питания — что подыхает?

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

Худший ответ:
Надо бы побольше информации : какая мама , какой БП , а то дежурный телепат в отпуске.
Вопрос: Есть ли разница между горутинами и await в C#?

Лучший ответ:
Несмотря на то, что эти инструменты созданы для решения одних и тех же проблем, делают они это по-разному, как под капотом, так и в плане предлагаемых абстракций. Потому нельзя сказать что async/await в C# - это "просто обертка над горутинами".
Горутины в Go - это концепция stackful coroutines (под капотом) + CSP (в абстракциях). Каждый раз, когда мы создаём горутину, под неё выделяется отдельный стек вызовов для её собственных нужд. При этом, когда происходит паника, то stack unwinding (размотка стека вызовов) происходит только в пределах этой горутины и не покидает границ её стека. Стек горутины полностью отвязан от стека её создания/вызова, потому горутина не может возвращать результат. Любое общение между горутинами выполняется либо посредством каналов, либо какой-то общей памяти.
async/await в C# (то есть, Task'и) - это концепция stackless coroutines (под капотом) + futures (в абстракциях). Код с async/await'ами компилятор превращает в определенную стэйт-машину с yield point'ами. У них нет отдельного стека, они выполняются в том же стеке что и вызывающий их код. Соотвественно, есть возможность словить exception'ы (аналог panic'и) возникающие внутри асинхронного Task'а прямо в запускающем его коде. Так как выполнение идёт на том же стеке - Task нормально может возвращать результат и мы его можем считать в вызывающем коде без дополнительных примитивов/инструментов.
При этом, если мы запустим Go с GOMAXPROCS=1, то мы получим однопоточный асинхронный код в Go (по умолчанию он многопоточный). Также и в C# мы можем выполнять Task'и как на одном потоке, так и на thread pool, получая аналогичные Go гарантии рантайма.
С точки зрения абстракций/использования - это уже вкусовщина. Кому как больше нравится. У futures лучше дизайн в плане composability (их эргономичнее join'ить и select'ить), но они вынуждают писать везде async и await. У горутин надо постоянно городить чехарду с синхронизацией (попробуйте сделать аналог await для произвольной горутины), но если эту чехарду прятать под капот (как обычно и делают), то код вообще выглядит полностью синхронным и программисты радуются.

Худший ответ:
После вызова горутины выполнение немедленно перейдет к следующей строке, не дожидаясь, пока вызываемая функция завершится.  Ключевое слово await указывает на то что нужно ждать пока вызываемая функция вернет результат и только потом переходить к выполнению следующей строки.
Вопрос: Есть ли смысл покупать Visual Composer за полную сумму ecли можна купить тему по скидке за 15-20$ где он уже идет вместе с ней?

Лучший ответ:
Покупая Visual Composer вместе с темой, Вы не получаете лицензию на него, поэтому если Вы хотите иметь поддержку и обновления Visual Composer отдельно, то имеет. Если всё будете делать через службу поддержки темы, то не особо. Единственное, чтобы они вовремя его обновляли, т.к. старые версии VC не всегда совместимы с актуальными версиями WordPress.
Ссылки по теме:What are the benefits of direct license for Visual...Can I update Visual Composer if I have purchased i...Who is applicable for support at support.wpbakery.com?

Худший ответ:
Его вообще нет смысла ни покупать ни даром использовать. От всех подобных конструкторов только проблемы. А этот - впереди планеты всей.
Вопрос: Могу ли я восстановить свою ОС?

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

Худший ответ:
 Ремонт стоит 12к р. это того стоит, не смотря какая у меня там инфа?Ремонт диска в принципе невозможен. 12к.р может стоить попытка восстановления информации, но никак не ремонт диска, диск в любом случае на помойку. А стоит ли ваша информация 12к.р. - это уже у вас спросить надо.Могу я восстановить свою ОС windows 8.1 или мне ее покупать придетсяЕсли вы ее покупали у вас должен быть ключ - в документах, либо в виде наклейки на корпусе, либо просто привязка к биосу. Все зависит от того какую именно версию и как покупали.
Вопрос: Какие есть хорошие онлайн ресурсы по изучению С++?

Лучший ответ:
Често говоря не совсем понимаю зачем вам нужен именно онлайн ресурс? Есть книги - кончно же Стауструп, я считаю обязателен к прочтению. Если очень сложно (Струструп с нуля будет сложен во многих случаях) то есть очень понятная книга "Моя первая программа на С/С++" автор Нейбауэр А. - очень все внятно там изложено для самых начинающих. Но Страуструп обязателен тут без вариантов. У Страуструпа в конце каждой главы есть упражнения этого будет достаточно для самого начала. 
Будет ОЧЕНЬ!!! (прям именно очень я бы считал это обязательным) полезно перед тем как изучать С++ посвятить 2-4 месяца изучению ассемблера  -многие аспекты будут куда более понятно и легко. Моя личная ошибка была в свое время то что я начинал изучение программирования вообще с Паскаля. И когда я стал изучать С/С++ то многие аспекты я даже не понимал что не понимал. Это сильно затруднило жизнь. 
Далее - что бы изучать любой язык, втч и такой сложный и многогранный язык как С++ у которого очень высокий порог вхождения, единственный способ это на нем писать. После того как освоите Страуструпа (а точнее в процессе) нужно на нем писать. Много и разное. Напишие несколько программ - скажем веб-сервер многопоточный,  парсер какой нибудь (например медицинских, торговых или биржевых данных), драйвер какой нибудь, что нибудь графическое то (если после этого охота не пропадет этим вообще заниматься :) советую примкнуть к какому нибудь опен сорс проекту который будет вас увлекать и реально нравится. Преимущество в том что вы бесплатно получите обратную связь от реально крутых. Если такой обратной связи нет бросайте этот проект и присоединитесь к другому. 
Еще НУЖНО прочитать Скотт Мейерс - Наиболее эффективное использование C++. 35 новых рекомендаций по улучшению ваших программ и проектов и Скотт Мэйерс - Эффективное использование C++. 55 верных советов улучшить структуру и код ваших программ
Потом уже можно прогрессировать почитать обязательно C++ Concurrency in Action, Williams A, можно с осторожностью, что бы не повредить мозг, почитать Александреску и Addison Wesley C++ Template Metaprogramming Concepts Tools and Techniques from Boost and Beyond. Конечно надо перед этим поисользовать boost (так как это наше все). Еще очень посоветую Системное программирование на C++ для Unix, Теренс Чан - очень хорошая и Linux Системное программирование, Роберт Лав. 
Онлайн вы будете все это изучать много дольше. И так путь очень непростой и небыстрый. Хотя возможно стоит того. Хотя рынок труда С++ сейчас снижается на мой взгляд под пятой жавы и это конечно печально.....

Худший ответ:
Дополняя cap_nemo еще дам ссылку на нашу литературу(не онлайн, но очень советую)
https://www.altlinux.org/Books:Qt-C%2B%2B
Вопрос: Не работает scroll на мобильных устройствах. Как исправить?

Лучший ответ:
Напиши так:$('html, body')

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

Лучший ответ:
Оставлю это здесь.

Худший ответ:
Сущность: users
Сущность: rolesсущность rolesid, user_id, name
Соответственно роли ссылаются на конкретного пользователя, через roles.user_id -> users.id
(или наоборот, если у пользователя только одна роль может быть)Опционально: 
Можно добавить еще сущность roles_permissions, которая будет ссылаться на roles.role_id
А данные id, name_perm