Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как максимально ускорить данный код на Python?

Лучший ответ:
1. Конструкция [-1 for _ in range(n)] уже создаёт список. Дальше этот список просто выкидывается и генерируется array.array. Итого в одной строчке сразу генерируются 6 потенциально огромных коллекций. Либо можно переделать на (-1 for _ in range(n)), либо отказаться от array.array, его преимущества здесь сомнительны:In [3]: a = array("I", range(10000))                                                                                    

In [4]: b = list(range(10000))                                                                                          

In [5]: %timeit sum(a)                                                                                                  
206 µs ± 6.03 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [6]: %timeit sum(b)                                                                                                  
69.3 µs ± 367 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [7]: %timeit a[7777]                                                                                                 
49.5 ns ± 0.564 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

In [8]: %timeit b[7777]                                                                                                 
33.6 ns ± 0.411 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
2. Убрать рекурсию. Совсем.
3. Удалить typing

Худший ответ:
Окей, в итоговой версии я избавился от рекурсии, типизации и Arrayев. Основной профит получил от рекурсии, конечно. Этого не хватило для решения задачи, но код заметно ускорился.n, m = map(int, input().split())

parent, weight, rank = [-1 for _ in range(n)], [0 for _ in range(n)], [1 for _ in range(n)]


def find_set(v):
    while parent[v] != -1 and parent[v] != v:
        parent[v] = parent[parent[v]]
        weight[parent[v]] += weight[v]
        weight[v] = 0
        v = parent[v]
    if parent[v] == -1:
        parent[v] = v
    return v


def union_sets(a, b, cost):
    a = find_set(a)
    b = find_set(b)
    if a != b:
        if rank[a] < rank[b]:
            a, b = b, a
        parent[b] = a
        weight[a] += cost
        weight[a] += weight[b]
        weight[b] = 0
        if rank[a] == rank[b]:
            rank[a] += 1
    else:
        weight[a] += cost


def main():
    with open("input.txt", "r") as inp:
        with open("output.txt", "w") as out:
            inp.__next__()
            for line in inp:
                st = line.split()
                if len(st) != 4:
                    out.write(str(weight[find_set(int(st[1]) - 1)]) + "\n")
                else:
                    union_sets(int(st[1]) - 1, int(st[2]) - 1, int(st[3]))


main()
Вопрос: Как быстро учить фреймворки? Например react js?

Лучший ответ:
Документация - отличный вариант.
Так же, быстро выучить основы реакт можно по этому туториалу (ру текст)

Худший ответ:
UPD: Не заметил, что ссылку на этот туториал автор сам уже указал. Но оставлю свой комментарий как независимый взгляд:)
Здравствуйте.
По моему опыту ключевое слово -- не документация, а туториал. Понять сначала принципы, а потом уже обращаться к документации за подробностями во время проектов.
Если говорить о react, то вот очень хороший туториал по нему и по redux: https://m.habr.com/post/279249/
Кстати, на русском, и автор актуализирует его постоянно. В первой части только реакт, во второй еще немного рассказывается про промышленный цикл разработки и сборки фронтенда.
Вопрос: Дайте советы по оптимизации css кода?

Лучший ответ:
Как писал Компьюций,
В программировании примерно 30% времени уходит на собственно программирование, а остальные 70% – на придумывание имён переменных и функций.
Это же справедливо и для верстки.

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

Из инструментария.
1. Хорошо бы перейти на BEM от нашего всеми любимого Яндекса.
2. Использовать препроцессоры css типа less или sass, что значительно упрощает как чтение, так и редактирование css.
3. Поисковые системы, в которых можно найти ответ на вопрос.
4. Youtube с профильными уроками.
5. Светлая голова, которая может подсказать правильные решение и подход.
6. Инструмент вроде map для любимого IDE.
7. Сам IDE, который в разы упрощает жизнь. Варианты, лучшие на мой вкус: Brackets, Atom, WebStorm.

Худший ответ:
БЭМ, css in js - для продвинутых, имеются тонкости.
Вопрос: Какая камера лучше для уличного видеонаблюдения?

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

Они примерно одинаковые.
IP монтировать удобнее при питании по РоЕ
Я бы взял IP

Худший ответ:
IP - щас дороже, потом проще менять будет
Расстояние с которого надо видеть номер?? Это ОЧЕНЬ важный параметр,от него подбирается объектив и качество картинки
AHD - не советую впринципе, там блин разнобой у производителей. Могут быть не совместимы между разными.
Если надумаете аналог брать, берите TVI
Из ip я советую hiwatch или hikvision, у них очень хорошее ПО, я пользуюсь только ими 
для новых установок
Примеры недорогих 
https://www.dssl.ru/products/ds-2cd2022wd-i/
https://www.dssl.ru/products/ds-i120-ulichnaya-ip-...
Матрикс - внутри китайское гамно в оболочке, незнаю насколько стабильно будет работать, я про ПО камеры
Вопрос: Для чего нужен интерфейс смарт-контракта?

Лучший ответ:
Интерфейс необходим для вызова любой функции контракта из клиента или другого контракта. 
В вызов входит сигнатура метода - первые 4 байта хеша от имени функции и ее параметров (без возвращаемого значения).
В большинстве случаев у вас есть весь контракт и нет необходимости выделять отдельно интерфейс. 
Интерфейс может помочь унифицировать код, а также пригодится там, где точно неизвестна реализация контракта - например нужна работа с любыми токенами, которые поддерживают ERC20. 
Еще интерфейс будет полезен для всяких грязных хаков с fallback функциями и delegatecall (proxy) - когда вызов идет через промежуточный контракт.

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

Лучший ответ:
401 - нормальный ответ сервера на неправильные данные при авторизации. MDN:Код ответа на статус ошибки  HTTP 401 Unauthorized клиента указывает, что запрос не был применен, поскольку ему не хватает действительных учетных данных для целевого ресурса.
Скрывать не нужно, так как консоль предназначена для разработчика (не зря в хроме раздел называется Chrome DEV tools), а не для пользователя. По таким ошибкам самому же будет намного проще дебажить.
Пользователю же важно вывести понятную ошибку в интерфейсе.

Худший ответ:
Просто поменяйте код ответа на любой из диапазона 200-299. Код 400+ означает, что клиент сделал что-то неправильно, поэтому он увидит ошибку. Иногда без консоли не увидит, иногда увидит в каком-нибудь плагине число ошибок и станет хуже относиться к вашему сервису. 
Ошибки 400+ нужно отдавать тогда, когда кто-то делает неправильный запрос. То есть тогда, когда клиент (человек или js-приложение) может знать, что так делать нельзя. А если это проверка на авторизацию, то это нормальный запрос, в котором нет ошибки. 
Когда запрос корректный, клиент не ошибся, нужно отдавать код 200-299.
Вопрос: Как преобразовать RGB в 1 из 24 цветов?

Лучший ответ:
Самый простой способ - вычислить расстояние вашего цвета до каждого из 24 и выбрать ближайший.
Ну что-то вроде Number Distance (Color source, Color target) {
  const dRed   = Math.Abs(target.r - source.r);
  const dGreen = Math.Abs(target.g - source.g);
  const dBlue  = Math.Abs(target.b - source.b);

  return dRed + dGreen + dBlue;
}
Я бы начал с этого и посмотрел, куда оно меня приведет

Худший ответ:
Поскольку этот ряд из 24 цветов не упорядочен по какому-либо параметру и содержит цвета, которые имеют случайные расстояния между ними в любом из основных цветовых пространств, написать функцию, которая бы математически приводила 24-битные цвета к этой палитре - нельзя. Можно только найти и захардкодить lookup table, либо каждый раз считать расстояние. Декартово (как вам посоветовали в соседнем ответе) или перцептивное (тогда нужно, например, переводить все в цветовое пространство, которое учитывает восприятие человека, и считать в нем).
Вопрос: Какой фрейморк лучше подойдет для разработки чат бота?

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

Худший ответ:
Попробуйте прочитать вот это https://habr.com/ru/post/456240/
Вопрос: Фриланс биржи, какие живы и где брать заказы?

Лучший ответ:
Поисковик не помог и не поможет, а знаешь почему? Потому что ты не запустил контексную рекламу по ключевым словам. Я вот когда запустил, мне в день по 7-8 чел начало звонить.
А биржи - это мусор, по причине высокой конкуренции и низкой оплаты. Как пример - можешь сам это проверить зайдя на "Фрилансим" - обрати внимание на "Дата публикации", "Кол-во откликов" и на цену.

Худший ответ:
топтал
Вопрос: Чем в С# отличаются понятия: класс, объект, экземпляр?

Лучший ответ:
Объект - это экземпляр класса.
А класс - описание объекта

Худший ответ:
В php эти понятия тоже различаются
Вопрос: Как настроить c++ Mysql на Linux?

Лучший ответ:
Поскольку никакого смысла, кроме учебного, в такой затее быть не может - попробуйте повторить эту работу под Линукс, будет полезно.
Ставите QtCreator, загоняете в проект свои исходники, разбираетесь, что в них прибито гвоздями к Виндам и как это сделать нормально, а не по виндометодичкам.
Глядишь, и научитесь писать на С++, а не в VisualStudio.

Худший ответ:
С большим-большим трудом.
Попробуйте запустить в Wine.
Вопрос: Кого нанимать для разработки мобильного приложения: фриланс разработчиков или студию?

Лучший ответ:
Хотим сделать мобильное приложение заказа услуг для дома и комфортной жизни (репетиторы, фотографы, уборщицы и т.п). Будет отдельное приложение для клиентов и для исполнителей.
Не только приложения. А еще + сервер (или что то вроде firebase, но в любом случае - не бесплатно).Бюджет на разработку 1-3 тыс. долларовНикого не нанимать. Забудьте.
Впрочем, найдутся школьники, что согласятся. Но до ума не доведут.
Стоимость подобного проекта - примерно в 10 раз больше.
P.S.:
Исполнители отдельные напрямую без студии - дешевле при прочих равных. Но вопросы организации работы - лежать будут на вас.
Студия - дороже, но менее затратно по времени для вас, организационную работу с конечными исполнителями студия возьмет на себя. 
Плюс дело не только в затратах вашего времени - а сможете ли вы организовать работу исполнителей?
P.P.S.:
Если студия дешевая, то она попросту наймет исполнителей - те же фриленсеров, что можете нанять и вы напрямую.
Нормальная студия - существенно дороже.

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

Лучший ответ:
todo-апп != CMS. Да, вам нужна админка. 

Общая схема: в админке есть данные о проектах, клиент их грузит через API и рендерит (можно и SSR). Делаете роут для админки, в которой нужно авторизоваться и там же редактировать контент, который (также, как и с получением, хотя в этом случае SSR кажется более лаконичным, на мой взгляд) изменяется в бд. 

Лучше всего забить да взять и сверстать статический ленд (можно и на React, но все та же статика) и разместить да хоть на том же github.io.

Худший ответ:
Думаю БД вам и не понадобится. Я делал похожий сайт на Gatsby + Contenful CMS. Только у меня динамически создаются страницы блога.
Вопрос: Использование нелицензионного ПО, будет ли ответственность на админе?

Лучший ответ:
снимет ли расписка ответственность с меня или это филькина грамота?Не снимет.
Это хуже чем филькина грамота, это собственно факт, который прокурор пришьет к делу, и будет считаться доказательством вашей вины.
Наличие у вас такой расписки говорит о том что вы знали о том что программа используется незаконно, и несмотря на это эксплуатировали ее. Собственно факт неправомерного использования. Ну и хочу еще договор задним числом перезаключить, вписать, что обслуживаю только сеть и железо компов, к софту отношения не имею.Вот!  Уже лучше. 
А теперь уточним- 
Вы заключаете договор на обслуживание - четко оговариваете что будет делать.
Каждый месяц, или как у вас там по договору- вы предоставляете заказчику акт выполненных работ. Он подписывает и оплачивает.
Так вот - ни в договоре, ни в актах не должно быть даже намека на нарушение закона.
Например - настройка программы 1с.
Настраивать программу - совершенно законно. Это можно писать в договор и в акт выполненных работ.
Обновление программы 1с - для обновления у заказчика должна быть подписка ИТС. Если ее нет - обновление незаконно, поэтому ни в договор, ни в акт не пишем. Вместо этого - пишем замена жесткого диска, ремонт системного блока, или проведение профилактических работ по информационной безопасности.
Установили пиратскую 1с на сервер, а в акте пишите - настройка резервного копирования БД 1с.
А задача заказчика - подписывать акты, и платить деньги.
Вот и все.
По документам вы предприниматель.
По договору вы оказываете услуги по обслуживанию IT инфраструктуры.
В актах выполненных работ нет установки софта.
Все чисто.
Это конечно не защитит вас от проблем, но доказать вашу вину будет практически невозможно, если конечно не найдут десяток свидетелей которые свечку держали во время установки пиратской 1с, или (что более вероятно) если вы сами не признаетесь.

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

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

Худший ответ:
мапсми базируется на карте сделанной из открытых геоданных openstreetmap.org
для онлайн-карт есть джава-скрипт движок leaflet, генератор тайлов mapnik и множество других открытых опенсорс проектов, смотри https://wiki.openstreetmap.org/wiki/
для офлайн есть библиотека векторных карт mapsforge и несколько опенсорс проектов навигаторов к примеру тот же мапсми
поверх них можете разместить свои данные.
данные опенстритмап вы можете свободно и бесплатно использовать, в пределах лицензии конечно же.
Вопрос: Как вставить картинку в Flask?

Лучший ответ:
Да легко!<img src="/path/to/image.jpg">

Худший ответ:
<img src="{{ url_for('static', filename='site/images/img.img') }}" />
Будет икать в папке static тогда
Вопрос: Как на 100% отключить доступ в интернет?

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

Худший ответ:
Можете добавить значения в host и доступа не будет совсем.
Вопрос: Не проходить трафик через WiFi station и bridge?

Лучший ответ:
Настраивайте wireless интерерфейс как station pseudobridge

Худший ответ:
А как клиенты пингуют 192.168.1.1 если ,с ваших слов ,они не получают по dhcp ничего. А микротик видит интернет?  А зачем бриджевать Ethernet?  У вас клиенты по проводу через микротик работают?
Вопрос: Как перестать прокрастинировать и начать учиться?

Лучший ответ:
Из всего вашего длинного вопроса, создается ощущение, что вы на самом деле не учитесь, а читаете.
Займитесь практикой. Решайте реальные задачи, которые возникают перед вами при написании какого-то продукта. Неважно, маленького или большого - когда у вас будет готовый продукт, позади будет множество реально решенных проблем. И почитывая на досуге книги вы будете просто убеждаться, что выбрали правильное решение, либо видеть другое решение, но вы при этом уже сможете с собственными аргументами решить какое более удачное в конкретном случае.
Учеба это не время, это усилия - переведите ваши усилия на 80% в практику.

Худший ответ:
Как избавиться от страха что-то упустить?
Это к психиатру, это фобия и это надо лечитьКак выучить язык(PHP), фреймворк (Laravel) и получить фундаментальные знания computer science как можно скорее и с гарантированным результатом?
Обратиться к хорошему педагогу, он составит индивидуальный план обученияКак решить проблему вечно скапливающегося списка материала на изучение?
Не пополнять его Как избавиться от страха, что я всё это учу зря и потом надо будет переучиваться?
Принять это как данность, это от Вас не зависит, но я бы сходил к психотерапевту, это та же проблема и это лечится.Как не делать лишнего и не тратить время зря?
Так не бывает. Читаем про правило Парето.Всё это со мной не первый год, не даёт по-настоящему работать и я уже не знаю, что делать.
Идти к специалисту (психиатру), я не шучу, будет только хуже, не запускайте.А еще хочется постоянно всё структурировать, собирать и потом не потерять. И делать это идеально. 
Это ПЕДАНТИ́ЗМ. Не шутите со своим здоровьем, уверен, что 1 раз переступить через страх похода к мозгоправу и все решиться. Так нельзя жить. Не тупите.
Вопрос: Можно ли так делать по БЭМ?

Лучший ответ:
Нет, так плохо. Должен быть один из 3-х вариантов:
<!-- 1 -->
<section class="info"> 
    <div class="info__something container">
        <div class="info__wrapper"> 

<!-- 2 -->
<section class="info container"> 
    <div class="info__wrapper">  

<!-- 3 -->
<section class="info"> 
    <div class="info__wrapper container">

Худший ответ:
Да, в БЭМе вы можете миксовать сущности сколько душе угодно
Вопрос: Учить PHP 5 или 7?

Лучший ответ:
Однозначно 7 даже потому, что пока вы будете учить и на момент когда вы выучите уже и 7 устареет 7.0 на сегодняшний день уже (deprecated) 
Ветка 7.0 закончила свой жизненный цикл 10 Jan 2019 вместе с 5.6

Худший ответ:
Никакой "колоссальной разницы" в самом языке нет.
РНР 5 и РНР 7 - это не два разных языка. Это один и тот же язык, семерка просто быстрее и из нее выпилено много вещей, которые оставались еще с 4 версии, а в 5 считались устаревшими и не поощрялись к использованию.
Поэтому сам по себе вопрос - что учить, 5 или 7  - не имеет смысла. Язык один и тот же. 
Но есть значительная разница в подходах и экосистеме.
Любой учебник, рассчитанный на 5, гарантированно ничего не расскажет о композере, стандартах PSR, современных шаблонизаторах, фреймворках, способах отладки и многих других важных вещах, без которых немыслим современный РНР. И в этом смысле надо разумеется искать более свежие материалы, а не те, которые были написаны 5-10-20 лет назад.
Вопрос: RX560 работает в PCI-E х8 а не в х16?

Лучший ответ:
Ещё вопросы есть?

Худший ответ:
А какой у вас, внезапно, процессор?
PCI-E x16 подсоединён именно к процессору и об этом есть маленькая оговорка:AMD Ryzen™ Processors
1 x PCIe 3.0/2.0 x16 (x16 mode)
AMD 7th Generation A-series/Athlon™ Processors
1 x PCIe 3.0/2.0 x16 (x8 mode) 
В зависимости от CPU слот может быть x8 только.
Впрочем полосы пропускания для RX560 должно хватать и так.
Вопрос: Страшные красные значки на ярлыках WINDOWS?

Лучший ответ:
Такое бывает когда файлы выгружаются в облако, яндекса к примеру
Удалите яндекс браузер и софт от яндекса
Удалите малвербитес
Прогоните систему dr web cureit и похожей прогой от касперского
Антивирусы ВСЕГДА детектируют кряк как вирус, это норма
Качайте софт только с норм трекеро. К примеру rutracker и nnmclub

Худший ответ:
Попробуйте win10tweaker ом отключить
Или eset ом прогнать систему
Вопрос: Какой алгоритм прикручивания React/Vue к верстке?

Лучший ответ:
Тут наоборот, вёрстку к фреймворку прикручивают)
ИМХО, самый лёгкий способ - настроить сборку Sass, Pug через Webpack (Он всё равно понадобиться для работы с фреймворком). Тогда не придётся ничего никуда переносить.
Другой путь - по одному переносить вёрстку в компоненты. Классы, декоративные элементы, сетку, ...
Да, CSS можно просто подключить собранный Gulp-ом или перенести. Но переносить придётся постоянно, если есть доработки.
Чтобы не создавать кашу, я бы рекомендовал просто перенести сборку вёрстки/стилей на Webpack

Худший ответ:
Посмотрите руководство - там написано все по-русски понятным языком.
В Vue, например, можно верстать на любом шаблонизаторе (например, pug) с использованием любых препроцессоров (например, sass) прямо в самих компонентах.
Вопрос: Годится ли такая книга для изучения PHP/ООП?

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

Худший ответ:
3. Сильно ли сломает сознание, если уже есть какой-то закреплённый материал по докам (нужно ли будет переучиваться)?
Ну и собственно это основное, что интересует.
Ну судя по названию, то эта книга больше о шаблонах проектирования с примерами на php. Если вы пишите на php, то думаю однозначно нужно почитать её. Прежде чем покупать, можно с интернета скачать и посмотреть, стоит или нет тратить на нее время и деньги, но лично я бы купил и прочитал ее в любом случае.
Что касается "ломки" сознания, то многие, в том числе и я, попадали в такую ловушку - при написании проекта вы всегда будете стремится применить какой-нибудь паттерн.
Вопрос: Как избежать большого количества аргументов в функциях?

Лучший ответ:
В идеале переделать.
Если переделать нет возможности - структуры будут однозначно лучше.
Еще есть вариант "функциональные опции" https://golang-blog.blogspot.com/2019/10/functiona...

Худший ответ:
Воспользуйтесь функциональными опциями с прописанными значениями по умолчанию
https://m.habr.com/ru/post/489296/

Либо заверните не обязательные поля в структуру и передавайте структуру как параметр функции.

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

Лучший ответ:
все бред, никаких поколений нет, есть только алгоритмя консенсуса
и их два класса:
либо трудноподделываемые  - Proof of Work прежде всего, ну и некоторые другие
либо быстрые, но, увы, контролируемые, типа византийских генералов

Худший ответ:
Принципиальная разница в блокчейнах 3-го и 4-го поколения состоит в их технических характеристиках и в том влиянии, которое блокчейн 4-го поколения способен оказать на наше общество - обеспечение равных прав и возможностей сторон при проведении бизнес-операций и бизнес сотрудничестве, открытость и доступность всех процессов и нужной информации, прозрачность движения средств.
Блокчейн 4-го поколения - это разработки масштабных промышленных приложений, которые способны одновременно управлять многими процессами, храня и обрабатывая огромные массивы данных и обеспечивая их логическую взаимосвязь и согласованность.
По вопросу - блокчейна и реального бизнеса - посмотрите в сторону открытой платформы AERGO
Разработкой платформы занимается известная компания BLOCKO, партнеры которой: Amazon, Microsoft, IBM, Cisco, Samsung, LG, Hyundai.
Вопрос: В каком софте можно потренироваться в работе с stm32?

Лучший ответ:
Это все рукоблудие, а вот -  отличная отладочная плата за смешные деньги, с stlink2 в комплекте (отдельный, а не отрезной как на родном нуклео), плюс cp2102 на борту, можно с UART работать, и с двумя кварцами (8 мгц и часовой).

Худший ответ:
В протеусе 8 есть какие-то стм32