Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Знание или гугление?

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

А задаваться вопросами "что будет, если отключат интернет" - для обывателя, который ничего с этим сделать не может, это пустая рефлексия. Что будет, если отключат электричество? Полгода назад вы бы только посмеялись над таким вариантом...

Худший ответ:
Внесу свою лепту. Я full-stack ruby on rails. 
Я всегда гуглил. Возникает задача. Пытаюсь решить, если где-то "втыкаюсь", начинаю гуглить и обычно это решало все вопросы. 
Недавно понял, что хватит заниматься кустарщиной и начал ruby и rails изучать заново. Нашел курсы, читаю официальные документации. 
В итоге понял многие вещи на более низком уровне и понял почему  и как на самом деле работают многие вещи, которые мне казались магией. Начал использовать код не по принципу "нагуглил и копипастю", а  понимаю почему именно сюда нужно использовать этот код.  
Если раньше я могу задачу просто решить, то теперь могу еще это сделать более оптимально и точно так как нужно. 

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

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

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

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

Лучший ответ:
Это называется iKVM. Есть уже упомянутые iLO/iDRAC/iKVM - аппаратные компоненты в составе серверных либо "полусерверных" (матерей, куда ставится обычный проц, но память ECC). Либо просто отдельное устройство, втыкаемое в видео, клаву, мышь и выводимое в тырнет - называется kvm over IP.
Технически - это отдельный микрокомпьютер со своей прошивкой, который позволяет получить доступ, а также смонтировать ISO и переставить систему в случае чего удаленно.
Но это недешево.

Худший ответ:
Устройство называется KVM. Покупаем с сетевым адаптером - и имеем доступ всегда до ПК, как будто Вы за ним...
Вопрос: Какое есть актуальное программное обеспечение для резервного копирования файлов в неизменном виде на момент конца 2021 года (Windows 10)?

Лучший ответ:
Для решения задачи пишется скрипт размером 2-3 строчки (при желании можно и в одну строчку).
Это простое копирование файлов и папок по списку. Список лучше хранить в отдельном файле.
Под виндой можно использовать robocopy для большей эффективности.
Под Линуксом rsync.

Если для восстановления требуется больше суток, то, видимо, и для создания копии потребуется примерно столько же времени. Внешний-то диск имеет USB3 или старый медленный USB2?

Худший ответ:
syncting, отличное приложение, открытый код, независимость от интернета (работает в локальной сети без него, как я понимаю можно свои relay/stun сервера поднять, с помощью которых позволяется копирование между двумя сетями за nat), удобный интерфейс в браузере, кроссплатформенность включая android, причем на столько что свой смартфон можно использовать как промежуточное хранилище (из-за особенностей прав доступа у приложения нет полного доступа на удаление файлов с флешки, но работа с внутренней памятью верная), типа пришли в закрытую сеть или с медленным интернетом, автоматически получили обновления документов по локальной сети, пришли домой, и автоматически залились эти изменения в домашнюю папку. Максимум ручной запуск приложения на смартфоне, а то иначе немного кушает батарейку.

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

Собственно после того как про это приложение узнаешь, всякие onedrive, dropbox и прочие становятся какими то ущербными. Нужно хранить облачно? поднимай сервер (10 минут рукошевелений) на дешевой vps-ке за 10-20$ в год (лучше на двух в разных датацентрах) и вот у тебя 100гб облачное хранилище
lowendhost
Вопрос: Можно ли поменять клавиатуру на ноутбуке?

Лучший ответ:
можно, купить механическую с переключателями cherry mx silent red и подключить по usb

Худший ответ:
да.
если найдешь нешумную клавиатуру под твои размеры :)
Вопрос: Остаются ли какие-то «следы» при использовании с ноутбука через VPN (или Tor) интернета, раздаваемого с телефона?

Лучший ответ:
Пока не задана модель нарушителя - вопрос бессмысленен. Если это жена/сосед - этого достаточно, как правило. Если работодатель - смотря где работаете. Если государство - зависит от того, что и когда делаете. Вот сейчас например, скоро 9 мая. Попробуете сейчас загрузить на сайт Бессмертного Полка какие-нибудь "не те" фотки - и быстро узнаете, что найти Вас не помешает ни Tor, ни VPN...

Худший ответ:
У меня пока что гугловская клавиатура включена... и вот думаю есть ли смысл в Tor-е когда ей пользуюсь?
Не удивлюсь, если она будет "делиться" либо просто вводимой информацией, либо результатами её обработки "в целях улучшения пользовательского опыта и тонкой персонификации сервисов".

Рассмотрите альтернативы: 

https://anysoftkeyboard.github.io/
https://github.com/rkkr/simple-keyboard
https://4pda.ru/forum/index.php?showtopic=900668

Или закройте клавиатуре доступ в интернет с помощью файрволла, например этого: https://www.apkmirror.com/apk/grey-shirts/noroot-f...
Вопрос: Как исправить ошибку TypeError: 'type' object is not subscriptable?

Лучший ответ:
Уффф. Тут уже речь про основы синтаксиса питона.
Ваш первый код делает следующее.
num = list( #построить список из последовательности
    map( #вызываем функцию map()
        int, #первый параметр
        f.read().split() #второй параметр
    )
)
А второй код делает (точнее пытается) вот что
num = list( #построить список из последовательности
    map[ #обращаемся к объекту map и пытаемся получить значение по ключу
        int, #первый элемент кортежа-ключа
        f.read().split() #второй элемент кортежа-ключа
    ]
)
Так как map не является словарём или подобной коллекцией, то конечно это не работает, и генерирует именно такую ошибку, которую вы указали.
Я не пойму, откуда вообще взялась идея что можно просто заменить в вызове функции круглые скобки на квадратные, если у них совершенно разная семантика.
Ну и да, не может быть ничего кроме списка на выходе, так как результат работы map() (а это будет объект-генератор) явно преобразуется в список.
В общем, выше правильно посоветовали - почитайте учебник, того же Марка Лутца, "Изучаем Питон", хотя бы 4е издание. По-крайней мере такие ошибки отпадут.

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

то есть перепишу в обычный список то пишет ошибку
Ну правильно, map - это функция, а не итерируемый объект, чтобы к нему так обращаться
Вопрос: Обязательно нужно минифицировать файлы?

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

В общем случае это крайне желательно(экономит время/энергию/байты, спасает птичек и лисичек), но в некоторых случаях не критично (например сайт малопосещаемый и файлы не большие).

Худший ответ:
Не обязательно.
Вопрос: Сборка проекта под разные сайты?

Лучший ответ:
Можно попробовать через .env, но есть вообще необходимость так усложнять?
Как мне кажется проще завести 3 ветки каждая из которых будет соответствовать сайтам, и соответственной отдельно апке.
Таким образом у вас будет общая кодовая база (если правка для всех, то сразу же во все ветки и отгружаете) и возможность вносить правки точечно.
В любом случае со временем (если разных правок для разных сайтов будет много), у вас уже будут разные приложения, и устраивать адское месево из условий в стилях и скриптах, ради того чтобы сохранить "единое" приложение - бессмысленно.

Худший ответ:
различающиеся компоненты (лэйауты?) вынести в .env и подставлять нужные через component :is=
в особо запущенных случаях - вынести конфиги в jsonы и переключать их через тот же .env
тогда не надо в гите держать много веток и черрипикать изменения общего.
Но такой подход хорош только когда реально изменения минимальные.
Еще можно все общие компоненты вынести в отдельный репозиторий, но тут тоже надо по месту смотреть.
Вопрос: Перевести jQuery в чистый JS?

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

Худший ответ:
подскажите как использовать Pagination.js без jQuery.
Никак
Вопрос: Как расшифровать вредоносный код base64_decode((str_replace(?

Лучший ответ:
Не хватает данных. Алгоритм использует для дешифровки ключ, приходящий в $_POST['d42'] или $_COOKIE['d42'].

Худший ответ:
if($a10=gzinflate($a10)){
Здесь распаковывается сжатая строка и если результат удачный идет далее 
if(isset(_POST['d42'])) setcookie('d42',_POST['d42']);
Здесь проверяется наличие пост параметра возможно используется гдето в дальнейшем. возможно авторизация или чтото еще 

$a10="".create_function((string)null,$a10);
Переменная а10 становиться функцией. (string)null обозначает что у функции нет аргументов 
$a10) код самой функции кторый был отправлен 
unset($k36);
удаляется переменная        
$a10();
Вызывается полезная нагрузка только что созданной функции
Вопрос: Какая выгода компаниям «растить» джуниоров внутри себя?

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

Не везде факторы работают осознанно (то есть это не заговор и не злодеи), а просто примерно в компании понимают, что эти джуны — то, что им почему-то и нужно  или даже единственное доступное

Худший ответ:
1. Иногда это выгоднее, чем нанимать сразу опытных разработчиков.
2. Иногда такие разработчики лояльнее к компании
3. Иногда это единственный возможный вариант, тк в регионе, где работает компания, опытных разработчиков может быть не достаточно.

В общем - если компания это делает, значит это оправдано.
Вопрос: Различия между ASP.NET Core MVC и ASP.NET Core?

Лучший ответ:
asp net core - базовый фреймворк для разработки веб-приложений на .NET
asp net core mvc - надстройка над ним, которая приносит тебе Razor Pages и прочие штуки, чтобы ещё и немного фронт на нём делать.

Худший ответ:
ASP.NET Core MVC и ASP.NET Core - одно и то же.

Или речь о  ASP.NET MVC и ASP.NET Core (MVC) ?
Тогда просто забудьте об  ASP.NET MVC, это старая технология, новые проекты на ней не пилят, кроме исключительных случаев (например, Intranet приложение для заказчика, у которого сертифицирована только старая версия .NET Framework)
Вопрос: На чем зарабатывают детские каналы YouTube?

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

Худший ответ:
В видео тоже нету рекламы
Вы явно ОЧЕНЬ плохо разбираетесь в рекламе. Детские каналы ─ это исключительно коммерческие проекты, и соответственно любой бренд, который хотя бы на несколько секунд чётко и ясно появляется в кадре ─ это проплаченная реклама.
Та реклама, которую вертит ютуб, это сущие гроши для крупных каналов, по сравнению с прайсами за интеграции.

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

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

тебя не трогают просто как физлицо, до поры до времени

Худший ответ:
Все неоднозначно. Но по идее считается когда вы выводите на банковский счет. С этих денег уже да - 100%.
Все остальное можно оспорить.
Вопрос: Безопасно ли верифицировать аккаунт через паспорт на upwork?

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

Худший ответ:
Впиши паспортные данные доступны в любом паспортном столе плюс ещё фотография из паспорта, то есть девятки тысяч людей по России имеют к нему доступ в любую секунду, почему вас это не волнует?
Вопрос: В каком номере Юного техника статья «5 ватт и минимум затрат»?

Лучший ответ:
Нагуглилась вот такая ссылка № 7 июль 1991 стр 74

Худший ответ:
Нашёл схему в ЮТ 09/91. Схему запомнил с одной статьи, а название - с другой
Вопрос: Что лучше Mikrotik или Traffic inspector?

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

Худший ответ:
Использовать надо то, что умеют админы...
Есть лицензии на вин сервер и трафф инспектор?

Лично мое ИМХО. Использовать на любых сетях винду как шлюз - это идиотизм. ПОэтому я за микротик или ПС на линухе...
Вопрос: Как устроены хэштаблицы?

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

Но да, если в таблицу запихать много элементов, а потом почти все оттуда удалить, то она будет большая и почти вся пустая.

Edit:

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

Худший ответ:
Данный вопрос безсмысенно обсуждать только в разделе АЛГОРИТМЫ. 

Дело в том что в каждом языке программирования есть своя реализация хеш-таблиц со своими преференциями.
Например в Java создается по умолчанию пустая табличка с 16 buckets и с фактором загрузки 0.75.

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

Для случая автора число 42. Мы считаем остаток от деления на 16 это будет 10. Тоесть мы запишем в 10 бакет. А после того как в табличку зайдет большое число ключей и и соотношение ключей и емкости станет больше чем 0.75 - будет создана новая таблица с 32 бакетами и старые данные будут скопированы туда с реогранизацией ключей. Это тяжеловатая процедура поэтому изначально хеш-таблицу рекомендуется создавать уже с заранее известным capacity. Если хотите хранить 6 млрд социальных номеров людей планеты земля - то создавайте соотв такую таблицу. Тогда реорганизации не будет. И load factor можно сделать близким к 1.0.

(Старая таблица с 16 бакетами после этой процедуры будет уничтожена)
Вопрос: Какое время писать в базу данных если пользователи в разных временных зонах?

Лучший ответ:
Писать в базу время в UTC будет проще всего.
Нерекомендуемой альтернативной будет хранить время-дату в БД вместе с тайм зоной.

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

There are many nitty gritty details when working with PHPs DateTime instances. You have to know their inner workings pretty well not to make mistakes with date handling. This cookbook entry holds several interesting pieces of information on how to work with PHP DateTime instances in ORM.
...
1. Always convert any DateTime instance to UTC.
2. Only set Timezones for displaying purposes
3. Save the Timezone in the Entity for persistence.
...


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

Лучший ответ:
сделайте страницу на сайте с тегами title + description = gymbalnce.ru
внутри произвольный текст, содержащий gymbalnce.ru пару раз.
и проверьте, через какое-то время должна страница появиться в поиске

потом можно попробовать редирект с нее на главную сделать, должно подхватиться.
а можно оставить, это нестрашно, ведь чел уже на вашем сайте
кнопку ему повесить - перейти на главную и всё.

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

Худший ответ:
Да никак
Вопрос: Почему MSVC выдает ошибку что размер массива должен быть константным выражением, а Clang/GCC компилирует без ошибок?

Лучший ответ:
value тоже должна быть constexpr

Без constexpr срабатывает как раз VLA, о котором пишет Александр Ананьев

Худший ответ:
value тоже должна быть constexpr

Без constexpr срабатывает как раз VLA, о котором пишет Александр Ананьев
Вопрос: Есть пример как оформить репозиторий для портфолио?

Лучший ответ:
1. Сделай в репе всё что можешь сделать. Тоесть например тесты, настроенный ci/cd, и прочее такое.
Бейджики, что тесты прошли/не прошли
2. Полностью опиши проект,  что это такое, и как его у себя задеплоить. В идеале какой-нибудь автоматизированный скрипт (например через Docker)
3. Добавь скрины и ссылку на демку, если это возможно.
4. Если проект сложный, то напиши документацию о том, что и где там есть.
5. Естественно, опиши в отдельном разделе все используемые технологии, и для чего они использовались.

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

А кидать туда тестовые вещи, которые вы специально для интервью наделали - ну это такое...
Вопрос: Как вывести данные из базы данных в инлайн кнопки?

Лучший ответ:

Разделяете задачу на более мелкие пункты до тех пор, пока их можно разделить.
Ищите реализацию пункта в документации/гугле.
Пишите.
Если в процессе не получается что-то конкретное - задаете вопрос гуглу или здесь.


Худший ответ:
На ютубе полно гайдов по базам данных SQLite, в стандартной библиотеке Питона даже есть модуль - sqlite3.
Помимо SQLite есть ещё куча других способов хранения данных, например, MySQL, MongoDB, обычные файлы.
Вопрос: Почему Front end разработчику платят так же, а то и больше, чем Full-stack разработчику?

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

Фулл-стек - это путь вечного "немного во всем"

Говорю это, как человек, который входил в web-разработку "веб-мастером" - это еще шире, чем фулл-стек - где ты и дизайном занимаешься, и наполнением, и SEO - лютый список обязанностей, с нулевой ценностью на рынке труда по итогу.

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

Худший ответ:
Спрос на фронтов больше из за всяких ангуляров вуе и реактора вот и все
Вопрос: Как заставить volumes Docker compose не затирать данные из контейнера?

Лучший ответ:
Запись

- src:/var/www/html

создаёт именованный том src в хранилище (docker volume ls). Надо указывать путь к каталогу, например, как относительный: ./src.

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

Худший ответ:
Ожидаю что файлы из директории var/www/html попадут на хост в ./src

А где в документации описано такое поведение?
Вопрос: Стоит ли использовать wireguard?

Лучший ответ:
Если рассматривать все критерии, который вы указали для нового VPN, то тут лучше присмотреться к OpenVPN - на него есть куча модификация (можно обфусцировать трафик самыми разными способами), умеет в TCP/UDP, более надежен и проверен временем, есть приложения на iOS, Windows, Android, Mac, куда вы сможете расшарить конфиги и использовать в любое время, также можно будет прокинуть весь трафик через Tor, в общем сказка.

Худший ответ:
Смена ip - смена сервера, всякие веб админки и не нужны
Вопрос: C# Какие курсы/видеоуроки вы посоветуете новичку?

Лучший ответ:
Никакие. Берите книгу, и по ней только.

Худший ответ:
Сакутина могу посоветовать, если по Unity :)
Вопрос: Как в гугл-таблицах весь столбец констант увеличить на 10% не меняя структуру и форматирование таблицы?

Лучший ответ:
Можно скопировать столбец в другой лист/книгу, там увеличить на 10%, создав ещё один столбец рядом, а потом новый столбец с новыми данными скопировать обратно в исходную таблицу в режиме "Специальная вставка -> Только значения".

Худший ответ:
Выделить столбец и выполнить скрипт:
function mult(multipler=1.1){
  let range = SpreadsheetApp.getActiveRange();
  let data = range.getValues()
                  .map(row=>row.map(value=>((typeof value) === (typeof 1))?value*multipler:value));
  range.setValues(data);
};
Можно добавить в меню:
function onOpen(e){
  SpreadsheetApp.getUi()
  .createMenu("menu")
  .addItem("+ 10%", "mult")
  .addToUi();
};
Вопрос: Как и какой роутер выбрать для большого количества пользователей?

Лучший ответ:
(сейчас меня закидают помидорами, да и пофиг)
1. знаете Linux или FreeBSD - гордо собираете ПК-роутер;
2. знаете Cisco и есть много денег - покупаете Cisco;
3. знаете Mikrotik - покупаете Mikrotik бизнес-уровня;
4. знаете Mikrotik и мало денег - покупаете Mikrotik SOHO-уровня;
5. не знаете ни Linux, ни Cisco, ни Mikrotik - покупаете TP-Link бизнес-уровня (не SOHO);
6. нет денег даже на TP-Link бизнес-уровня - покупаете Keenetic;

Худший ответ:
Я брал себе роутер mikrotik для кафе https://wi-fi.click/ ,  вполне достойно за свой деньги. Выполняет свою задачу и не создаёт проблем. Ещё можете посмотреть Linux любой.
Вопрос: Как открыть вторую вкладку как новый браузер?

Лучший ответ:
Либо открывайте разые браузеры

Либо сделайте "открыть новую вкладку" и там смените профиль пользователя, если мы про Хром говорим

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

Лучший ответ:
незнаещь что  начни с банальной 1С))
УФН вам в помошь)

Худший ответ:
Если брать какую-то коробку, ее все равно придется под вас допиливать. Что crm, что erp. Но там возможно сложновато и дороговато в обслуживании будет.

Проще сделать что-то свое небольшое кастомное. Но чтобы решало все как вам нужно в одном месте и без бубнов. Мы для своей внутренней работы что-то из этой области писали.  Уже лет 5 как работает.