Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Пользуетесь ли вы кириллицей в Git?

Лучший ответ:
Как в команде договоритесь - так и будет. Для себя пишу на русском. На работе тоже. На прошлой работе писали на английском, хотя компания тоже российская.

Худший ответ:
Нет запрета на русский язык. Требования к коммитам оговариваются заранее в команде. Но желательно использовать единый стиль в проекте. В гите принято использовать императив в заголовках сообщений. Даже автоматические сообщения пишутся в формате «Merge...», а не «Merged...». На русском языке мы пишем аналогично в повелительном наклонении.
«Добавить фичу...»
«Исправить ошибку...»
Потому что коммит, это не констатация факта изменения проекта, а лишь предложение об изменении, которое в нормальных компаниях не идёт сразу в продукт, а сначала попадает на проверку и лишь потом принимается в проект.
Вопрос: Проблема с кодировкой символов, не могу выводить в консоль на русском, как быть?

Лучший ответ:
# -*- encoding: utf-8 -*-
from __future__ import print_function
Python 3.5.2
Будущее уже наступило.... Можно этот заголовок уже не добавлять. Это было актуально во времена python 2.x

Просто сохраните файл скрипта в кодировке utf-8 - и пользуйтесь....
PS: 
Проверил на 3.4.x в Ubuntu 14.04.6 LTS:
root@ubuntuServer:~# python3 --version
Python 3.4.3
root@ubuntuServer:~# cat /etc/issue
Ubuntu 14.04.6 LTS \n \l
root@ubuntuServer:~# python3 ./hello.py
Привет мир!
root@ubuntuServer:~# cat hello.py
print("Привет мир!")
root@ubuntuServer:~# file hello.py
hello.py: UTF-8 Unicode text

все работает

Худший ответ:
Если это сервер с Ubuntu Server 16, то она не поддерживает русский язык.
И питон > 3.5.3 придется ставить отдельно.
Можно попробовать исправить это, поставив расширения на язык.
По опыту, сам пробовал, забил, и взял сервер на 30 руб дороже с Ubuntu Server 20
Вопрос: Как правильно переделать компьютерный БП под питание светодиодов?

Лучший ответ:
адресную лентуПо-видимому, то, что вы назвали адресной лентой, точнее будет назвать  матрицей, поскольку организовать индивидуальное управление диодами легче всего через подключение их в узлы строк и столбцов. Стало понятно, почему 5 вольт.
Если я просто возьму 5V линию и подключу ее к контроллеру - БП будет нормально работать? .... Я слышал, что БП не очень хорошо себя чувствует, если нагружать только один канал.На мой взгляд, можно использовать 5-вольтовый канал сам по себе, без оглядки на остальные. Стабильность напряжения будет сохранена, несмотря на недогрузку остальных каналов, поскольку в комповом БП предусмотрены специальные меры для таких случаев - т.н. цепи групповой стабилизации, помогающие сохранить соотношение выходных напряжений при неравномерной нагрузке. Если вам допустимы отклонения выходного напряжения до 10...15%, то можно не заниматься переделкой БП.
я хочу потом иметь возможность подключить аккумулятор с 12V, как мне лучше это сделать? Если так, то это перечёркивает написанное мною выше, или по крайней мере заставляет вместо 5-вольтового выходного канала использовать 12-вольтовый.
Может есть возможность запитать БП от 12V и потом получить 5V так же, как в предыдущем варианте? Энтузиасты пробовали такую модернизацию стандартных комповых БП, но вам лучше не смотреть в эту сторону, поскольку такая переделка весьма сложна. Лучше внедрять аккумуляторное питание чисто с низковольтной стороны - это вам обойдётся всего лишь в пару развязывающих шоттки-диодов.
Или остается только ставить понижающий преобразователь 12-5? Именно так. Китайцы продают множество подходящих понижающих преобразователей, среди них есть достаточно экономичные, с высоким КПД (я намекаю на то, что они не потребуют дополнительных вентиляторов). 5-вольтовый канал самого БП при этом использовать не получится, к сожалению. Это неизбежная цена аккумуляторного питания.
Если во втором вопросе нужно будет ставить понижающий преобразователь - тогда может тогда и с БП брать сразу 12V и пускать через него?Именно про этот вариант я и толкую.
А что касается вентилятора и шума от него... Его удаление  - это наиболее неудобная переделка компового БП. Можем обсудить и её.

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

Лучший ответ:
Дизайнер это дизайнер. Чистый визуал, часто даже не понимающий как это будет сверстано. 
Верстальщик - ну, сказать что это профессия как то даже не совсем верно. Хотя есть виртуозы, выигрывающие за счет глубокого погружения в тему, знания нюансов и скорости работы. Иногда это нужно именно в таком виде, ну и спрос на таких монстров есть. 
Фронтендер - больше комбайн из верстальщика и ЖСера.  Обычно требуется знание 1-2 серьезных фреймворков/библиотек, а ля вуе, реакт, ангулар... Ну и вебпак сасс лесс до кучи. 

Так что нет, это разные специализации.

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

Лучший ответ:
В первую очередь, наличие ответственности зависит от того к юрисдикции какого государства относится покупка. В РФ такое деяние может быть квалифицировано по ст. 165 УК РФ (Причинение имущественного ущерба путем обмана или злоупотребления доверием) или ст. 159.6 УК РФ (Мошенничество в сфере компьютерной информации). А в другом государстве может не быть "подходящего" запрета и, соответственно, такое деяние вообще не будет квалифицировано как преступление.

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

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

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

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

p.s. помним, что цена на ценнике имеет приоритетное значение тому что ожидает магазин, в момент совершения покупки цена была озвучена? оплачена клиентом в полном размере? помним про то как человек купил телевизор по цене 0 (ошибка на сайте интернетмагазина, после которой все стали писать что цена на сайте не является офертой и т.п.)
Вопрос: Как в Python Datetime сделать так, чтобы менялся год и месяц?

Лучший ответ:
Можно подобрать одну из хороших мощных библиотек для удобной работы с дантами, чтобы там были методы перелистывания дат помесячно.
Но если не хочется плодить зависимости, то я рекомендую штатно разобрать дату на день, месяц и год, убедиться, что день не превышает 28 (иначе такое число не в каждом месяце найдётся), а затем прибавить к месяцу 1 по модулю 12. В случае переполнения нужно увеличить еще и год.

Такое элегантно записыается с помощью функции divmod:
month -= 1
year_increment, month = divmod(month + 1, 12)
month += 1

Худший ответ:
Если вы работаете с Pandas то есть более простое решение.
Добавляем заданное количество месяцев (в данном случае -6)
import datetime as dt
import pandas as pd
date = dt.date.today() + pd.offsets.DateOffset(months=6)
print(date)
Результат:
2022-07-20 00:00:00

Добавляем год:
date = dt.date.today() + pd.offsets.DateOffset(years=1)
print(date)
Результат:
2023-01-20 00:00:00

Добавляем и то и другое:
date = dt.date.today() + pd.offsets.DateOffset(years=1,months=3)
print(date)
Результат:
2023-04-20 00:00:00
Вопрос: Почему планировщик задач Laravel сильно грузит процессор?

Лучший ответ:
1. У ларавел нет никакого особого планировщика, используется cron.
2. Ты каждую минуту запускаешь неизвестно что делающие задания. Может, ты там триллион знаков числа Пи считаешь.
3. Провидцев и предсказателей тут нет.

P.S. Команды, запускающие методы контроллера — ужас.

Худший ответ:
Посмотрите, насколько тяжела эта задача сама по себе без крона и что она делает. Может там есть какой-то лок ресурсов, базы и т.д.
Само по себе поднятие пхп, парсинг и выполнение скрипта штука довольно ресурсоёмкая. Если это нужно делать каждую минуту, может стоит написать демона со sleep.
Вопрос: Как внедрить Kerio Control на предприятии?

Лучший ответ:
Наймите админа

Худший ответ:
"Сеть работает плохо. Раньше был UserGate. Все работало хорошо. Я поставлю Kerio и все опять будет хорошо."
Неверный логический вывод.
Вопрос: Как подключиться к VPN серверу через Proxy?

Лучший ответ:
sudo apt install tor privoxy obfs4proxy

Ставишь по моим мануалам, обфускация obfs4proxy даже из-за великого кЕтайского файрвола будет работать, потому как мосты с шифрованием,сэр...и уже твой провайдер не в курсах, куда ты ломишься. Также есть возможность менять страну выходной ноды для пущей стабильности.

https://disk.yandex.ru/d/ecpXIki1TIht_g

Потом выброшенный в локалку (0.0.0.0/24) порт privoxy 8118 (ну или какой тебе понравится) загоняешь по http в proxifier (это прога для проксирования траффика на винде) и весь траффик, включая траффик VPN-клиента, пойдет через твой собственный совершенно бесплатный и нелогируемый прокси-сервер хоть на луну, если там реализуют модель OSI. Не благодарите.

Худший ответ:
Гуглите wireguard + shadowsocks.
Вопрос: Законно ли писать программу из процедур без in/out параметров, которые оперируют глобальными переменными?

Лучший ответ:
Не стреляйте в пианиста - он играет как умеет.

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

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

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

Армянское Радио Такие программы пишут или в лютой спешке, или при полном отсутствии опыта - а это больше говорит о работодателе, чем о разработчике программы.
Такие программы сплошь и рядом начинаются как маленькие приблуды, создаваемые одним работником для себя, для облегчения своей работы и снятия с себя тупой рутины. И работодатель тут вообще никаким боком - он не поручал и не заказывал, оно само родилось. И тут уж как работник смог, так и сделал. И то, что программа не просто работает, но и полезна настолько, что принято решение её развивать и это развитие оплачивать - так это работнику жирный плюс.

Худший ответ:
Правильным решением было бы забрать трудовую книжку.

Такие программы пишут или в лютой спешке, или при полном отсутствии опыта - а это больше говорит о работодателе, чем о разработчике программы.

4к строк - это еще можно перерефакторить за пару-тройку месяцев в обнимку с отладчиком. Мне в свое время досталось три проекта по 50к строк на Дельфи. С сущностями вроде Button72. Эх, были времена...
Вопрос: Есть ли нормальная программа для прослушивания аудиокниг?

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

Худший ответ:
У меня jetAudio. Куча настроек, только не знаю, что такое таймер сна. Берем папку, слушаем, останавливаем пускаем, после закрывания-открывания продолжает с последнего запомненного места. Есть возможность ускорить без пищания - уж не знаю, как это делается...
Вопрос: Нужен ли случайный mac адрес в wi-fi сети?

Лучший ответ:
Ну естественно. 

Сменяемый мак - чтобы вас не отслеживали трекеры в общественных точках доступа. 
А постоянная привязка мака - противоположное. 

Они не совместимы. По моему это предельно и так ясно

Худший ответ:
Зачем делать привязку по мак? Его ж подделать легко.
Дома так вообще смысла нет
Вопрос: Что это значит в джаве?

Лучший ответ:
Книгу по Java даже не открывал, да?
Это ООП

Худший ответ:
У одного интерфейса могут быть несколько реализаций.
Animal - это интерфейс.
Соответственно, есть разные реализации. Например, 
interface Animal {}
class Dog implements Animal {}
class Cat implements Animal {}

Вот, представьте следующую ситуацию. Вам необходимо написать либу для работы с БД. Притом БД могут быть разные. Это может быть и MySQL, PostgreSQL, SQLite и т.д.
Но у них у всех (независимо от БД) есть некие общие методы. Например, connect() & disconnect()
Тогда создается некий интерфейс Connection 
inteface Connection {
connect(){}
disconnect{}
}
Дальше создаются классы. Например,
class MySQLConnection implements Connection {}
class PostgreSQL implements Connection {}
и т.д.
в которых методы connect() & disconnect() реализуются.

Ну а дальше чтобы подключиться например к БД MySQL используют
Connection c = new MySQLConnection();
c.connect();
Если завтра попросят подключиться к другой БД, то поменяется только new MySQLConnection();
Вопрос: Возможно ли использовать linux на разных компах(операционных системах)?

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

Худший ответ:
Да
Поместите виртуалку на флешку
Вопрос: Как защитить исходники своего проекта от воровства?

Лучший ответ:
1. Разделить репозитории. Дать доступ только к той части проекта, которая минимально необходима разработчику.
2. Не давать доступ на сервер
3. Не давать полные инструкции по развёртыванию
4. Не давать всю БД
5. NDA

А вообще в реальной жизни крайне редко кому-то нужны чужие исходники. И это всё лишняя морока и усложнение для всех.

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

P.S. САРКА́ЗМ
Вопрос: Почему периодически пропадает сеть Ubuntu и скорость передачи данных пишет 100мбит, хотя у сетевой карты заявленная 1000?

Лучший ответ:
Сетевая карта или кабель

Худший ответ:
Рискну предположить, дровишки на адаптер не совсем гут арбайтен.
Вафлевый и Изернет разные обычно адаптеры.
В случае Вафли всё нормально отрабатывает, а Изернет адаптер не хочет, что очень часто бывает в Ubuntu, особливо с новыми чипами.

Рыть драйвер достойный или фикс от парней на просторах.
Думаю, не один ты с этой траблой с твоим адаптером.

Часто помогает ручная настройка netplan-конфига.
Т.е. полностью руками все параметры прописать.
По умолчанию файлик этот (2-х видов он бывает: 01-netcfg.yaml и  01-network-manager-all.yaml. Первый управляется Networkd, а второй NetworkManager) очень убог по параметрам, но его можно модифицировать и прописать любой цинус адаптера от и до!
Вопрос: Как написать калькулятор используя обьектно-ориентированную парадигму программирования?

Лучший ответ:
Я бы посоветовал вам использовать ООП для тех задач, в которых оно нужно, хотя конечно всегда можно натягивать сову на глобус.
Вот популярный калькулятор для js.
https://github.com/WebDevSimplified/Vanilla-JavaSc...

Худший ответ:
>Класс калькулятор? Класс кнопочка? Класс Вычисление? 
ООП это не про классы, ООП это про абстракции
сегодня мы складываем числа, а завтра понадобятся векторы или множества, 
числа тоже бывают разные - дискретные, комплексные, римские, шумерские, ...
или вообще котики из пространства котиков с заданной алгеброй
хорошее ОО решение позволяет любую реализацию в рамках заданной системы абстракций
Вопрос: Что случится с программой (Go, Python, JS, PHP), если потребуется выделить память, а оперативная память в ОС закончилась?

Лучший ответ:
Будет задействован swap файл.
Если места больше нет, то будет out of memory exception и программа крашнется.
А вообще огромные файлы полностью класть в оперативную память это плохо.

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

Лучший ответ:
WakeOnLan +нечто мониорящее ваш сайт на предмет нажатости кнопки

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

Лучший ответ:
Вот так:
/**
* Возвращает примечание к ячейке
* Telegram - @ProgrammerForever
*
* @param {string} sheetName Имя листа
* @param {string} rangeName Адрес ячейки в текстовом виде
* @return Возвращает примечание к ячейке
* @customfunction
*/
function getNotes(sheetName, rangeName){
  return SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange(rangeName).getNotes()
}

Использовать примерно так:
=getNotes("Лист1";"A10")
=getNotes("Лист1";"A10:B15")

Худший ответ:
Такой функции нет. Это делается через редактор скриптов.

https://developers.google.com/apps-script/guides/sheets
Вопрос: Запускается grub вместо виндовс. Как это исправить?

Лучший ответ:
1. Настроить grub 
2. Восстановить оригинальный загрузчик Windows.
Оба варианта гуглятся.

Худший ответ:
Ну ты попал товарищ, это мерзкая ошибка.
Тебе нужно грузиться с флэшки (через которую ставил убунту).
И восстанавливать GRUB, точнее прописывать верные пути, вот инструкция
Вопрос: Где и как лучше начать изучать Python?

Лучший ответ:
https://qna.habr.com Хороший сайт, если в поиск скопировать заголовок вопроса вашего то парочку ответов будет

Худший ответ:
Лучше получать целостное знание а не кусками с разных сайтов. Читать документацию но это долгий вариант.
Быстрее купить курс или изучать по книгам.
Сейчас государство готово оплатить 50% стоимости курса.
https://xn--b1agajda1bcigeoa6ahw4g.xn--p1ai/

Если дешевле есть курсы для самостоятельного изучения, например udemy.com постоянно делает распродажи курсов по 1100р https://www.udemy.com/course/python-python-3/

Канал грамотного человека https://youtube.com/user/zaemiel
Вопрос: Как создать графическое приложение для Windows?

Лучший ответ:
То что вы используете - называется чистый winAPI. И делать на нем интрефейс будет мучительно и неудобно. Но читать надо именно о нем.

Советую если уж по динозаврам - то откопать хотя бы MFC. Будет проще. А лучше всего - использовать Qt - по нему материала вагон.

Худший ответ:
Именно для C++ лучше использовать Qt, как и ответили вам выше.
Но самым простым способом написать GUI приложение, да и приложение в принципе будет, пожалуй, Python. Даже если относитесь к нему скептически, все равно лучше присмотритесь. Легкость создания GUI на Tkinter сильно подкупает.
Вопрос: Как обратиться ко всем элементам через querySelectorAll?

Лучший ответ:
Можно реализовать циклом, но не рекомендую так как если DOM дерево обновится (например, вы добавите новый элемент) вам придется искать его и ручками добавлять ему слушатель. А так как вы добавляли слушатели циклом то соответственно функция обработчик вероятнее всего анонимная. По этому придется еще и функцию выносить в необходимую область видимости.
Лучше вешать слушатель на родителя и проверять таргет.
Например, у вас есть много элементов с классом block, значит вешать слушатель стоит на их родителя, предположим что он имеет класс wrapper
<div class="wrapper">
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
</div>
document.querySelectorAll('.wrapper').addEventListener('mousemove', e => {
  if (!e.target.classList.contains('block')) return; // Если элемент который вызвал это событие не имеет класса block, то отправляем return, тем самым код ниже выполнятся не будет

  // тут писать код который будет выполнятся если элемент который вызвал это событие имеет класса block

})

Худший ответ:
Может дело в том что addEventListenerAll не существует?
Вопрос: Почему html разный?

Лучший ответ:
Либо Selenium, либо открывать F12 - Network и смотреть какие запросы возвращают нужные значения и повторять их. Хотя скорее всего там не просто xhr будут

Худший ответ:
Вполне возможно что весь html рендерится с помощью JS,попробуйте selenium и ему подобные.
Вопрос: Как установить PHP 7.4.15 на Ubuntu 20?

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

Худший ответ:
Воспользуйтесь Sury репазиторием https://packages.sury.org/php/README.txt
Вопрос: Как мне сделать изображение круглым?

Лучший ответ:
В маску надо поставить ваше изображение 
snippet

Худший ответ:
Обычно такие изображения уже обрезаны, тк это единое изображение, а не 2 разных наложенных друг на друга.
Но если очень хочется, можно clip-path обрезать
Вопрос: Достаточна ли защита сайта php?

Лучший ответ:
Главная страница — Страница с формой авторизации — php авторизации
Всё, начиная с php авторизации, защищено от прямого доступа через .htaccess.
Гуглим "php роутинг|маршрутизация". 
И привязываться к конкретному Апачу сейчас - не стоит.
файл с защитой от sql-инъекций — файл подключения к БД MySQL
Если хочется чистого РНР - PDO и подготовленные запросы покрывают и то, и другое.
А вообще стоит поинтересоваться PSR и фреймворками - в них, внезапно, собираются не костыли и говнокод, а те самые best practices, которые вы не знаете, где почитать. Phptherightway вам вообще попадался?

Логин и пароль хэшируются
Логин-то на хрена? Чтобы при следующей регистрации не знать, использован такой или нет?

Худший ответ:
Как уже многие писали - не стоит сейчас писать самому что-то уже давно реализованное по лучшим практикам. Как минимум стоит использовать PDO или же ORM. 
А еще лучше использовать все это вместе с каким-нибудь популярным фреймворком по типу Laravel. Там уже все реализовано: от аутентификации и авторизации до запросов к сторонним API.

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

- использовать на сайте SSL
- пароль в базе нужно хранить в хешированном виде.
 и т.д.

Самые распространенные угрозы описаны в OWASP TOP 10. Почитайте на досуге.

Хешировать пароль на клиенте тоже правильно. Задача сервиса не только запретить доступ к сервису злоумышленникам, но и сохранить пароль клиента в тайне. Передавая пароль на сервер в открытом виде, пусть даже и по защищенному соединению, можно его отдать злоумышленникам. Как минимум запросы могут логироваться, и пароль в открытом виде будет храниться в логах. Злоумышленник может завладеть каким-либо образом доступом к серверу и украсть пароли тысяч или миллионов пользователей. Или же встроить в PHP скрипт определенный код, который будет пароли передавать на удаленный сервер (при владении доступом к серверу бекэнда).

Да, можно высунуть наружу только балансер или фронтэнд, а бекэнды держать без доступа к внешней сети. Но а если злоумышленником является разработчик/сотрудник, который может вытащить данные из этого сервера?

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