pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Как один div центрировать по родителю, а второй сместить справа?

Лучший ответ: один центрируйте, второй абсолютным позиционированием от первого в минус
или сделайте 3 дива 33%
центральному дайте текст по центру, крайнему по левому краю

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

Лучший ответ: 1. Выбираешь бэк, на выбор тьма ЯП: PHP, Python, Node.js, Java и т.д. Ну вообще буквально по барабану.
2. Заводишь базу данных: SQLite\MySQL (одного из двух с головой хватит)
3. Пишешь логику MVC.
4. Пишешь форму, которая будет собирать данные, отправлять их в экшн на бэке, который создаст новую модель, занесет в нее свойства, что ты в форме указал и сохранит это безобразие в базу. База это читай эксель, который просто так руками не взять (на самом деле можно PHPMyadmin\DBBrowser).
5. На главную они просто так не попадут, тебе надо будет написать вьюху, в которую выбрать из базы записи моделек, и циклом вывести (скорее всего шаблонизатором, но это неточно).

5.1 То, что приходит из базы можно фильтровать, скажем сортировать по дате и т.д. Это уже по части языка SQL.

Худший ответ: Не надо ничего писать. Возьмите готовое решение. Наверняка что-то подобное есть на Wordpress.
Вопрос: Какую версию 1C ЗУП выбрать: 2.5 или 3.1*?

Лучший ответ: Если быть точным, то с поддержки снята ЗУП ред.2.5 версии ПРОФ и Базовая, а ЗУП ред.2.5 версии КОРП еще остается на поддержке, но во-первых КОРП стоит 109000 руб., а во-вторых уровень поддержки все равно не тот, что у ред.3.1.
У нас есть несколько клиентов, которые перешли с ЗУП ред.2.5 ПРОФ на КОРП, т.к. конфигурация была сильна переписана под специфику предприятия, но ставить "с нуля" ред.2.5 я бы не советовала. 

вроде как в 3.* не все предусмотрено - с их слов

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

Худший ответ: Только 3.1
Конечно ЗУП 2.5 хорошая, выстраданная конфигурация. ЗУП 3.1 сыровата. Однако это вопрос времени. Вы же не рассматриваете вопрос внедрения ЗиК 7.7 )) Хотя ЗиК в свое время была лучше ЗУП 2.5.
Вопрос: На чем можно сделать подобный сайт?

Лучший ответ: Сделано отвратно. В некоторых местах огромные чёрные тени, т.е. увеличенные буквы которые всё перекрывают.

Сделать можно на css трансформациях, как это сделано тут. Или canvas

Худший ответ: Мне кажется не надо подобное делать, никогда
Вопрос: Не могу работать и учиться без фонового звука, это нормaльно?

Лучший ответ: - Изучал английский методом прослушивания английского аудио во время сна
- И как выучил?
- Нет. Но зато при звуках английской речи мгновенно засыпаю.
P.S. Человек состоит из привычек. Непросто изменить человека, но при некоторой настойчивости вполне можно изменить в себе какие-то привычки, что приведет в конечном счете к изменению себя.

Худший ответ: Была программа - шум природы (дождь проходит, птичка крикнет). Может, сначала перейти на неё? Причём, громкие крики отменить (есть настройка). Ну а потом и от неё тоже избавиться.
Вопрос: Поддерживает ли intellij idea язык swift?

Лучший ответ: intellij idea - нет, но есть appcode, который поддерживает.
Естественно, только под мак.

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

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

Худший ответ: Интересно как два цп на матери делят между собой вычисления во время игр?Просто ОС раскидывает потоки по разным ядрам.Это ведь нелегко и тратится время и ресурсы?Да.Две головы повышают производительность, и снижают скорость.
Поэтому брать для игр двухголовую машину не лучшая идея. В играх очень важна скорость.
Вопрос: Почему не сохраняется JSON в БД?

Лучший ответ: Размер поля какой? В него вмещается твое значение?
Попробуй тип поля TEXT, где хочешь products сохранить в БД.

Худший ответ: Смотри ошибки в логах
Проверяй содержимое переменных
Проверь запрос руками из консоли или из пхпмайадмина
Думай головой
Вопрос: Перспективы в системном программировании?

Лучший ответ: Перспективы хорошие. Хорошие специалисты нужны везде.

Худший ответ: Я например думаю, что в будущем это профессия будет востребована в больших компаниях
Я тебе с уверенностью скажу, что эта профессия уже сейчас востребованна в больших компаниях соответствующего профиля.
Вопрос: Можно ли проверить почту gmail из bash?

Лучший ответ: при помощи curl --url "imaps://user:password@imap.gmail.com/INBOX;UID=1"

Худший ответ: при помощи curl --url "imaps://user:password@imap.gmail.com/INBOX;UID=1"
Вопрос: Хочу делать игры как в 80х, можно ли получить от этого пользу?

Лучший ответ: Если вас интерисует именно графика 80ых, то попробуйте делать современные игры с пиксельной графикой, примеры: Into The Breach, Broforce, Noita. 

Если же вы про гемплей 80ых, то врядли это может "вылиться во что-то полезное".

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

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

Худший ответ: Headless браузеры. Например, puppeteer и его адаптации для разных языков.
Вопрос: Reqirements.txt — нужно ли писать пакеты из стандартной библиотеки?

Лучший ответ: Выполните pip freeze > Reqirements.txt в активированном виртуальном окружении. Данная команда сама сформирует файл Reqirements.txt и засунет в него все нужные библиотеки и версии.

Худший ответ: Нет, они идут вместе с интерпретатором
Вопрос: Какие сейчас cms лучшие для интернете магазина?

Лучший ответ: Посмотрите на связку October CMS + Shopaholic.

Кратко (по озвученным требованиям)



не хочу время тратить на переобучение если учить "слабую" cms
October - мощная, набирающая популярность, современная CMS с Laravel под капотом.


какую выбрать для максимального удовлетворения

October и Shopaholic очень хорошо расширяются через экстенды не в пример другим решениям.



Развёрнуто

October - самая популярная CMS на базе Laravel Framework, который уже лет пять является самым популярным в мире фреймворком на PHP. Знание October это на 80% знание Laravel. Это как бы готовый CRUD над фреймворком с дополнительным API, которое адаптирует фреймворк к задачам, которые решают CMS. Очень хорошо владеть и Октябрем и Ларой. Можно работать в целом с одним и тем же стеком и подбирать наиболее подходящий инструмент под конкретную задачу.

Октябрь очень аскетичный из коробки, даже управление навигацией решается через отдельный плагин. В админке не будет ничего, что не нужно пользователю, т.к. вся функциональность ставится по требованию. Эту же философию продолжает и Shopaholic. В целом, если нужна современная CMS под e-commerce с хорошим DX (Developer Experience) и хорошей основой для дальнейшей кастомизации силами разработчика, то обязательно присмотритесь к этой связке.

Плюсы:

- это все ещё CMS, а не фреймворк, потому стартовать можно так же легко, как с любой другой CMS;
- это действительно кастомизируемое решение, т.к. в пайплайн любых данных можно вклиниться своим экстендом и, обработав их своей кастомной бизнес-логикой, вернуть обратно без костыляния "в ядре";
- под капотом у October CMS полноценный Laravel Framework и его мощнейшая экосистема;
- отлично держит нагрузки (среднее время отклика страницы при 50 пользователях онайлн, создающих 2 запроса в секунду - 100мс, см приаттаченный скриншот);
- отличная производительность - время отклика каталога, размером 210 товаров 100-150 мс, фильтрации - 80-100 мс, при 21 000 товаров - 900-1100 мс и 500-600 мс соответственно;
- низкая средняя стоимость платного плагина 19$ (для сравнения Magento - 199$, Prestashop - 105€, WooCommerce - 82$, OpenCart - 36$, MODX (miniShop) - 23$).



Минусы:

- в силу возраста проекта (2 года) все еще небольшая экосистема по сравнению с другими платформами, потому может не понравится ни одна готовая тема или не будет подходящего плагина под дополнительную потребность;
- сравнительно небольшое сообщество, но оно компенсируется огромным сообществом Laravel, специалисты которого очень быстро осваивают Oсtober;
- тех поддержка не уровня ITSM и пр., а "домашняя" ламповая а чате сообщества на уровне прямого общения в с разработчиками платформы (но это опять же является следствием молодости, а также может быть и плюсом для небольшого проекта).

P.S. Тесты гонялись на стандартном дроплете DO 2CPU/4GB RAM.
P.P.S. Недавно вышла большая статья на Smashing Magazine, ориентированная на новичков Building An E-Commerce Site With October CMS And S....

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

Для небольших и несложных Modx + Minishop2.
Для чего-то серьезного Bitrix или CS-Cart.
Вопрос: Стоит ли сейчас читать Стива Макконнелла — Совершенный код?

Лучший ответ: Дядя Боб совсем недавно в своём блоге в очередной раз писал, что в программировании ничего принципиально не поменялось с 80-х.

Худший ответ: Вобщем, ответ на ваш вопрос - это на первый взгляд в IT все бежит, если углубиться, все эти новые js или не js фреймворки это малая доля от того что нужно знать и что меняется, а на фундаментальном уровне за 20 последних лет ничего кардинально не меняется. Книги по конкретным фреймворкам которые не вносят чего-то необычного (типа actor model) и современные читать смысла не много(ибо дока + паттерны под капотом и архитектурные правила те же что и раньше), а чтобы понять какой-нибудь MVC(а большинство не понимает что это такое аля "создал папочку контроллеры значит MVC т.к. так на Хабре пишут") и сейчас читать записи 70-х годов по сути необходимо, если вдруг когда-нибудь захочется углубиться, конечно. Тоже самое с очень многими темами.
P.s. В общем, читать Совершенный Код исключительно хорошее занятие, как и Рефакторинг от Фаулера например :)
Вопрос: Как учесть этот параметр — нужно еще?

Лучший ответ: Если рассматривать общую концепцию, то учитывать параметр лучше или. Или если не вдаваться в подробности, то я бы выбрал всё таки или. Но иначе не получиться не учитывать параметр. Нужно ещё?

З.Ы.: Пишите вопросы понятно и развёрнуто...

Худший ответ: учитывая этот параметр - нет, не нужно
но этот параметр учесть всё же как-то придётся
Вопрос: Как уже на собеседовании понять, какое в компании качество кода?

Лучший ответ: Ну вообще стоит начать с того, что Вы подразумеваете под говонокодом. Зачастую говнокод - это не только криво написаный метод/класс, это еще плохо оптимизированная бд, кривая архитектура приложения и неверно выбранные инструменты для решения задач поставленных перед проектом. В любом случае проект делают люди, которые меняться на проекте, посему нужно выяснить детали самого подхода разработки проектов в самой компании:
  - спросить сколько проект находится в разработке, степень покрытия тестами, если прокт древний и не покрыт, то плохо;
  - если проект древний, то узнать обновляются ли на нем версии инструментов/фреймворков на более новые, выяснить что с обратной совместимостью; 
  - спросить как происходит процесс мерджа новых фич, если если через мерджреквесты на тимлида, которые он аппрувит или отклоняет, то уже не плохо, и Вам подскажут, проконтролируют, что не плохо. Eсли пуш в ветку девелопмент, то плохо;
  - если используют мерджреквесты на тимлида, то спросить используется ли git-flow, если да, то хорошо, это минимизирует варинт того, что Вы получите кучу крешей от того, что было запушино коллегами, если не используется, то плохо;
  - узнать что проиходит с CI на проекте, если есть тесты, то запускаются ли они при деплойменте, если да то хорошо, нет - плохо;
  - если это web проект, на котором используется бекенд и фронтенд фреймворки, то стоит спросить развернуты ли они на разных серверах, если да то хорошо, если нет то плохо;
Выяснить это все иначе, чем по косвенным признакам, является маловероятным.

Худший ответ: Даже, если вы спросите: а дайте ка взглянуть на ваш код - вы же понимаете, что получите красивый участок.
Можете задать такой вопрос. Программистов можно условно разделить на три категории по тому, что им нравится:
* Исполнитель - его радует результат, максимально быстро и чтоб работало.
* Гик - ему интересно попробовать всякие моднявые штуки, только вышла новая либа - он хочет ее заюзать.
* Головолом - ему интересны сложные крупные задачи, там где надо посидеть, по медитировать.
Собсно вопрос: какого человека по этим категориям вы ищите?
Чаще всего идет микс из двух, если говорят все три важны одинаково - интервьюеру глубоко фиолетово. Если при этом интервьюером является технический специалист - это очень плохой знак.
Так же можете спросить, кто по этой шкале есть в команде. Если команда состоит из одного типа программистов - это очень плохо.
Что касается качества кода: спросите про используемые соглашения, критерии на код ревью и покрытость тестами
Вопрос: Как распределить заказы по курьерам?

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

Худший ответ: Есть уже готовые решения для распределения заказов по курьерам и автоматическому построению маршрутов. Попробуйте систему EdiCourier. Там 1000 заказов распределяются за 10 минут. Всё максимально автоматизировано, можно связать со своими внутренними системами.
Вопрос: Как сохранить в mysql интервал «от N до бесконечности»?

Лучший ответ: В базах данных отсутствие значения обозначается как NULL.
WHERE ( Val >= ValFrom ) AND (( Val <= ValTo ) OR ( ValTo IS NULL ))

Худший ответ: 0 - подходит! :))
Вопрос: Инициализация элемента к нулю?

Лучший ответ: 1, 3. Просто совпадение, обычно потому, что компиляторы в отладочном режиме всё инициализируют нулями (проще отлаживать). На это нельзя рассчитывать, пиши HWND window = nullptr.
2. Лучше написать std::string str;, да и всё. Можно рассчитывать, что будет пустая строка.

Почему 1,3 плохо, а 2 хорошо? Потому что HWND и HRESULT — синонимы для встроенных типов (не то указатель, не то число того же размера), а у них конструктор по умолчанию ничего не делает. А string — нормальный себе объект.

Худший ответ: Вызывается конструктор по умолчанию. Для указателя это 0, он же nullptr.
HWND и HRESULT это void*.
Это корявая запись в стиле C#. В С++ лучше инициализирвоать сам создаваемый объект, чтобы избежать копирования (не в данном случае, а вообще, если объект имеет сложный тип). Т.е. писать сразу:
HWND window(); или HWND window = nullptr;
Вопрос: Перегрузка методов — это не более, чем синтаксический сахар?

Лучший ответ: это точно не сахар, а чистой воды полиформизм ООП
ваш вопрос скорее в плоскости стоит ли использовать полиформизм?
можно нагуглить море инфы к примеру сразу на русском https://habr.com/ru/post/37576/
ps чем пользуюсь сам, чуть ли не ежедневноstatic void print(this string s, string pfx = "", string sfx = "") => Console.WriteLine(pfx + s + sfx);
static void print(this IEnumerable<string> sa, string pfx = "", string sfx = "") => sa.ToList().ForEach(s => s.print(pfx, sfx));pps ну или упрощенноstatic void print(this string s) => Console.WriteLine(s);
static void print(this IEnumerable<string> sa) => sa.ToList().ForEach(s => s.print());ppps очень удобноusing System;
using System.Diagnostics;
using System.Linq;

namespace ff.links
{
    static partial class Program
    {
        static void Main(string[] args)
        {
            var sw = new Stopwatch();
            sw.Start();
            "let's begin...".print();

            var finds = fromTypical().scan();
            "find targets is ".print(pfx, finds.Count().ToString());
            //finds.print();
            var bro = finds.Where(b => b.Contains(ffBinary));
            "find browsers is ".print(pfx, bro.Count().ToString());
            bro.print(pfx);
            var cfg = finds.Where(b => b.Contains(fflConfig));
            "find configs is ".print(pfx, cfg.Count().ToString());
            cfg.print(pfx);
            var profiles = finds.Where(b => b.Contains(ffProfileSign));
            "find profiles is ".print(pfx, profiles.Count().ToString());
            //profiles.print();

            profiles.buildLinks(bro.First());
            //profiles.prefsApplay();

            //links2start();
            sw.Stop();
            var ts = sw.Elapsed;
            $"RunTime {ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}.{ts.Milliseconds:000}".print();
//#if DEBUG
//            "press any key to continue...".print();
//            Console.ReadKey();
//#endif
        }
        const string pfx = "  ::> ";
    }
}

Худший ответ: Перезагрузка методов - это выдуманный вами термин. 
А то что вы описали - это перегрузка.

И нет, это не совсем синтаксический сахар. А все таки часть архитектуры и местами инкапсуляции сложных методов (когда количество аргументов меняется).

К тому же это еще и к синтаксису так себе относится - это будут разные методы со всех точек зрения.
Вопрос: Скрыть приватные данные от пользователя php?

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

Худший ответ: Отключите вывод ошибок в поток, перенаправьте в логи. 
боты получат 

да ничего они не получпт
Вопрос: Как сравнить две даты по минутам?

Лучший ответ: let date1 = new Date('2020-05-08 12:51').getTime();
let date2 = new Date('2020-05-08 12:52').getTime();

/* переводим timestamp в минуты */
date1 = Math.floor((date1 / 1000 / 60));
date2 = Math.floor((date2 / 1000 / 60));

/* сравниванием минуты */
if (date1 === date2) {
    console.log('время в минутах совпадает');
} else {
    console.log('время в минутах НЕ совпадает');
}

/* или через тернарный оператор:
    (date1 === date2) ? 'время в минутах совпадает' : 'время в минутах НЕ совпадает';
*/

Худший ответ: Получите timstamp, удалите часть которая отвечает за миллисекунды и секунды и сравните полученные числа
Вопрос: Почему выдаётся ошибка при подключении к базе данных?

Лучший ответ: Нет такой функции в PHP7:
Внимание
Данное расширение устарело, начиная с версии PHP 5.5.0, и удалено в PHP 7.0.0.


Худший ответ: Прийдётся вам последнюю строку заменить на:
$DB_CONN = mysqli_connect($nameSERVER,$nameUSER,$passUSER);
mysqli_select_db($DB_CONN, $nameDB);
А дальше во всех PHP-скриптах ВСЕ вызовы SQL-функций  mysql_query("SELECT ...") заменить на mysqli_query($DB_CONN, "SELECT ...");. Разница в букве 'i' после 'mysql', что бы получилось 'mysqli_'. И в параметре $DB_CONN первым аргументом в mysqli_* функциях, см. документацию.
Вопрос: Как найти уникальные значения именно с помощью метода .find?

Лучший ответ: Насколько я понимаю, это скриншот вот отсюда https://learn.javascript.ru/map-set
Там подразумевается, что если использовать не Set, а обычный массив, то перед вставкой надо бы проверять, нет ли уже такого значения. И cделать это можно и при помощи find, и indexOf, и includes, и еще примерно десятком способов.snippet
вариант с includes читается получшеsnippet

Худший ответ: Например так:[1,2,3,1,2,3,4,0,-1].filter(function(el) {
  return !this.find(el2 => el === el2) && (this.push(el), true);
}, [])
Вопрос: Как сделать, чтобы форма не отправлялась при условии что символов недостаточно?

Лучший ответ: $('#but1').on('click', function(event) {
  if (item.val().length < 15) {
    alert('< 15 символов');
    event.preventDefault();
    // event.stopPropagation(); <-- еще можно остановить клик, но так не советуется делать
  }
});

Худший ответ: Добрый день! 

Как-то так:

HTML

<input type="tel" placeholder="+48 111-111-111" id="phone" name="phone" data-field="item" minlength="9" required>
<input id="but1" value="Zamówic" type="submit">

JS

phone.addEventListener('keyup', function(evt){
  let length = this.value.length
  if (length < 9) document.getElementById('but1').disabled = true;
  else if (length == 9) document.getElementById('but1').disabled = false;
  else if (length > 9) document.getElementById('but1').disabled = true;
})

https://jsfiddle.net/pavlukd/opvnemr5/
Вопрос: Как сделать точно такой же заголовок?

Лучший ответ: +- так https://codepen.io/notiv/pen/RwNzpLv

Худший ответ: 1. Шрифтом управлять нельзя. 
1.1. Можно поменять в частном порядке конфигурацию шрифта для точной передачи эффекта, но это попахивает. Именно шрифта, а не его настроек в css.
1.2. Либо подобрать шрифт или его «китайскую» копию, у которой хуже с конфигурацией, но она точь-в-точь подходит. Да, такое бывает. К примеру, если немного поиграться с Arial параметрами css, то выйдет вполне себе Helvetica.
2. У каждого шрифта свой ascend и descend
3. Можно управлять подобием интерлиньяжа (в css это смехотворное свойство, порождающее только проблемы)
4. Заголовок блочный элемент, а span строчный и он умеет заливаться. 

Но можно поиграться в частном случае и получить что-то такое: https://codepen.io/i-am-studio_ru/pen/GRgbmro
Вопрос: Существует ли способ сохранить значение переменной перманентно в php?

Лучший ответ: Что мешает записать токен в сессию, в файл, в мемкеш или в базу данных, например?

Худший ответ: var_export выдаст строку в формате PHP, добавляйте впереди что то типа $x=, сохраняйте в файл с расширением .PHP и подключайте прямо в код include.
Это самый быстрый способ инициализации больших структур и массивов которые редко меняются, с оговорками и объектов.
p.s. ещё есть serialize/unserialize и json_encode/json_decode, они чуть медленней но для своих случаев удобнее.
Вопрос: Какой есть бесплатный Linux шлюз с функцией просмотра URL запросов клиентов?

Лучший ответ: Нужен вариант Linux сервера с веб интерфейсом
Смешались в кучу кони, люди... 

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

Ну то есть - пошел юзер на https://mail.ru - ну типа почту почитать. Установил с ним https-соединение. А потом, находясь на этом сайте перешел на love.mail.ru - и вот он уже сидит и "строит свою любовь"! А в логе это нифига не отразится, ибо https.

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

Худший ответ: До 40 пользователей Ideco UTM бесплатен. А так pfsense.
Вопрос: Как перевести пароли с md5 на bcrypt?

Лучший ответ: Сморите по регламенту сайта, каков официальный срок действия пароля (если нет такого, то определяетесь с этим).
1. Создаете в базе новое поле под bcrypt пароль, а также дату смены пароля.
2. Делаете авторизацию использующую как md5, так и bcrypt если последняя задана.
3. Разрабатываете систему оповещения для пользователей, у которых истек срок действия пароля.
4. Ставите дату пароля такой же как и дату регистрации пользователя, если не использовали это раньше.
5. При смене пароля пишете только bcrypt, md5 не используете, лучше сделать поле-флаг, что пользователь менял пароль уже по новой технологии.
В течение пару периодов срока действия пароля будет постепенный переход на новый хэш.
Активных пользователей придется как-то стимулировать, чтобы сменили пароль.
Неактивные будут восстанавливать пароль, например, по email, если они вернутся на ваш ресурс и вы решите когда-нибудь больше не поддерживать md5 хэш.
PS: Принудительно заставлять менять пароль пользователю - это не самый оптимальный вариант. Заменяйте хэш пароля по новому алгоритму, как только получили от пользователя исходный пароль, который валиден по старому алгоритму, например, в процессе авторизации.

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

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