Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Является ли данный код нарушением принципа Dependency Inversion?

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

Худший ответ:
не будет, но лучше использовать абстрактную фабрику
p.s. new зарезервировано php и не может быть именем метода
Вопрос: Как заставить Telegram бота отправлять сообщения другому боту?

Лучший ответ:
Никак.

Если пользователь пишет вашему боту, можете через telethon взаимодействовать со вторым ботом

Худший ответ:
Боты не могут взаимодействовать между собой, потому что: что-бы бот получил возможность писать тебе, нужно дать ему разрешение (самое первое нажатие кнопки start, когда заходишь в диалог с ботом). То есть нужно, что бы один бот послал второму боту команду start, но он не может это сделать, потому что второй бот "не дал ему разрешение".
Возможно есть другие способы решения задачи, если ты напишешь саму задачу, а не свою идею.
Вопрос: С чего начать изучать NodeJS?

Лучший ответ:
С замечательной книги "Исскуство гугления для дошколят" авторства Евгения Борисовича Ланского.
Читаете Е. Б. Ланского и сразу всё поймёте.

Худший ответ:
Хорошая книга для ноды паттерны проектирования node
Js если я не путаю название, зелёная обложка
Вопрос: Как сделать круговую обрезку аватара?

Лучший ответ:
На реакте и без библиотек...
Вспомнился диалог из "Алисы..." (х/ф):
- Нам надо разделиться...
- Так, давай разделимся...
- НО! ВМЕСТЕ!
В интернете решений с уроками - просто навалом. Видимо, реакт все ресурсы забрал))

Худший ответ:
Введя в Гугл crop image js/react выводятся 100500 библиотек, смотришь что подходит и юзаешь

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

Лучший ответ:
Просто добавьте int foo(); выше bar, а реализацию оставьте как есть.
Слово static тут не нужно, можете удалить.

Худший ответ:
Вынести определение функций в заголовочный файл (*.h)
Вопрос: Почему HDMI и Display port дают разную картинку?

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

Худший ответ:
Нашёл в чём дело.
У HDMI входа в параметрах монитора есть опция "диапазон RGB"
и там два варианта 0-255 или 16-235. Аналогичный параметр есть в настройке видеокарты.
Переключение этой опции и даёт ощутимое изменение картинки.
При подключения по дисплейпорту такой проблемы не возникает.
Вопрос: Можно ли быть подростку фрилансером?

Лучший ответ:
У нас свободная страна можно быть хоть геем хоть фрилансеров

Худший ответ:
А как же школа? Правильно Алексей, а не Олексей))) 
Цель есть - это уже хорошо. Что касается фриланса, то разве что профиль на родителя, а сам работаешь.
Вопрос: Есть ли сборник примеров/советов, обучающих С++ программированию?

Лучший ответ:
Слишком много литературы есть по С++
макулатуры.Т.е. не обучение языку, а обучение бытовому программированиюЭто
https://www.oreilly.com/library/view/expert-c-prog...
https://www.oreilly.com/library/view/the-modern-c/...
https://www.oreilly.com/library/view/modern-c-prog...
как бытовое пьянство, все сам.В частности интересует: Обработка данных, Абстрактное программирование, ШаблоныБери(те) все по списку
На буржуйском есть поинтереснее.
например раздва

Худший ответ:
Лично меня учит исходный код, который нахожу на github и в исходниках boost. По-другому не знаю как ещё. 
Мне кажется , что каждый, кто пишет на C++ считает, что у него навыки ниже среднего, лично мне только такие люди попадались. С книгами все не однозначно, потому что в них много опечаток, и даже ошибок, что не удивительно, если речь идёт о C++. Даже стандарт C++ без ошибок в компиляторе поддержать задача не тривиальная. 
В общем, спасение утопающих - дело рук самих утопающих.
https://github.com/fffaraz/awesome-cpp
Вопрос: Где можно арендовать системник удаленно?

Лучший ответ:
Это и есть dedicated/vps

Худший ответ:
Тут самый дешёвый.
Вопрос: Подходит ли С++ как первый язык новичку?

Лучший ответ:
Сам изучал плюсы с 9 класса. Лично я советую их начать изучать, но дальше STL не заходить (никакие SFML, Qt итд не стоит учить НА НАЧАЛЬНОМ ЭТАПЕ). 
На нем хорошо учиться и легко переходить на другой язык будет (особенно на Си-подобный). Алгоритмы, паттерны и структуры данных самое то.
А уже после, когда будете более менее плавать так сказать в среде, уже сами решайте: можете продолжить изучать С++, фраемворки и библы к нему (писал выше), но лично я после почти 3-х лет сбегаю на C#)))
Мне если что 18, поэтому мой ответ вовсе не претендует на звание единственной истины) Я лишь высказал свое мнение по своему опыту.
P.S. Обучение на нем, безусловно, сложнее будет, но не намного. Зато потом будет легче)

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

Лучший ответ:
В целом, с развитием Laravel, весь фронтент рекомендуется выводить из Blade на Vue.js - а там уже на JS создавать любые формы и отправлять данные форм на сервер через API.
Вот простой урок на Laracasts (англ) - https://laracasts.com/series/learn-vue-2-step-by-s...

Худший ответ:
1. Как помнится из коробки что-то было для работы с формами, но потом выкинули?Так и есть, выкинули за ненадобностью подобных хвостов в основном фреймворке. В том смысле, что этот хвост ещё и поддерживать нужно...Выходит по дефолту работаем с формами на чистом HTML (+blade)? Может какие-то пакеты юзаете?Можно так, можете пользоваться теми формами которые выпилили, можете воспользоваться вариантом аки symfony, ещё можно тут поискать другие варианты.2. Как правильно работать при CRUD c C и U, т.е. нужно два раза форму показать и это разные вьюхи? или форму в одну вьюху закидываете и там рулите?Всё индивидуально. В общей сложности, при простых вариантах - создавать разные файлы форм не обязательно, при "C" можете создавать ту же форму что и при "U", передавая туда пустую модель.
Вопрос: Курсы web-дизайна с нуля, что посоветуете?

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

Худший ответ:
Структуру можно посмотреть не оплачивая курсы. Курсы можно найти в общем доступе
Вопрос: Могу ли получить доступ к мировому IP из серой сети?

Лучший ответ:
Можно, но роутер надо настраивать.
И не каждый роутер поддерживает такое.
Вообще  в сети много материалов по этой теме можете погуглить по ключевому слову - hairpin nat

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

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

Худший ответ:
После 'examples': ['Привет', 'Здарова', 'Добрый день'] надо поставить запятую, и так после каждого элемента key:value, кроме последнего.
Вопрос: Как спарсить дату сайта?

Лучший ответ:
У обеих страниц есть метатег формата <meta name="mediator_published_time" content="2019-09-02T22:51:00+0600">
Берите его парсите с dateutilimport requests

from lxml.html import fromstring
from dateutil import parser as dtparser

r = requests.get(url, headers=header)
html = fromstring(r.text)
dt_string = html.find('.//meta[@name="mediator_published_time"]').get('content')
dt_obj = dtparser.parse(dt_string)>>> datetime.datetime(2019, 9, 2, 22, 51, tzinfo=tzoffset(None, 21600))

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

Лучший ответ:
Клавиатуру залили. 
Как вариант что-то со шлейфом из за неудачной разборки чистки.

Худший ответ:
Советую ее заменить, не ремонтно пригодна.
Вопрос: Unity Physics.SphereCast: что обозначают параметры?

Лучший ответ:
Есть RayCast - стреляет лучом, из точки в заданном направление, определённой длинны.
А есть SphereCast - тоже самое, только луч толще.

Худший ответ:
Есть RayCast - стреляет лучом, из точки в заданном направление, определённой длинны.
А есть SphereCast - тоже самое, только луч толще.
Вопрос: Как вы отслеживаете просрочку контрактов и лицензий?

Лучший ответ:
Общий термин - CMDB. Но в каждой организации, да и даже в отделе/команде, могут быть свои инструменты.

Худший ответ:
Отличный сервис как раз для Ваших целей https://www.martechguru.com/
Вопрос: Фриланс или стажировка (курсы)?

Лучший ответ:
Могу посоветовать начать принимать решения от которых зависит ваша жизнь самостоятельно. Это навык который в жизни пригодится в сто раз больше чем  php/верстка. 

А помимо этого - советов всего два:
 - идите на фриланс.
 - идите в академию.

Выбирайте какой больше нравится.

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

Лучший ответ:
Не много поковыряла апи и того, и другого, решила проблему таким образом, может кому пригодится
$(function() {
        var $fotoramaDiv = $('.fotorama').fotorama();
        var fotorama = $fotoramaDiv.data('fotorama');
        var imagArr = fotorama.data;
        var srcArr = [];

        for(var i = 0; i < imagArr.length; i++){
            var src = {};
            src.src = imagArr[i].img;
            srcArr.push(src);
        }
        
        $('.fotorama__img').click(function(){
            $.fancybox.open(srcArr, {
                loop: false
            });
        });
    });

Худший ответ:
Зачем вам Fancybox если вы используете фотораму?
Вопрос: В чем отличия между 3g модемами (промышленными и usb)?

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

Худший ответ:
1. «Промышленный» значит мощный, громоздкий, но при этом почти вечный, с хорошей поддержкой и способный работать всегда и везде.
3. Да, обычно режут трафик, ну и договор от юрлица тащит за собой более дорогой тариф. А так всем плевать.
4. Ввозить и использовать можно, а продавать вряд ли, да и не купит никто.
Вопрос: Какую материнскую плату посоветуете для ryzen 5 3600?

Лучший ответ:
https://www.asus.com/ru/Motherboards/PRIME-B450M-A...
Свежие ревизии из коробки поддерживают 3-е поколение, у них на коробке это написано.
Оперативку лучше попроще, частотой не более 3000, с супер-пупер оперативкой может не завестись или зависать в процессе работы. Я три сервера собрал на этой плате, с оперативкой на 2666 (Samsung, AMD) работают отлично.
Кстати, рассмотрите вариант Ryzen-5 3500X, отличие только в отключенном гипертрединге, а разница в цене заметная.

Худший ответ:
https://www.citilink.ru/catalog/computers_and_note... топ за свои деньги
https://www.e-katalog.ru/CRUCIAL-BL2K8G30C15U4BL.htm и православный крушал
Вопрос: Можно ли подтвердить свою квалификацию IT-специалиста без диплома?

Лучший ответ:
Не бросайте учебу, пожалеете.
Кстати, это уже 3643794-й вопрос про ВО и IT, могли б и по сайту погуглить для приличия.

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

Лучший ответ:
System.out.println( match.replaceAll(new Function<MatchResult, String>() {
                                                 @Override
                                                 public String apply(MatchResult u) {
                                                     return u.group(1) == null ? u.group().toUpperCase() : u.group().toLowerCase();
                                                 }
                }));
Стало понятнее? )

Худший ответ:
Я бы советовал вам попробовать разобраться самому. Вот статья, она даст знания.
https://m.habr.com/ru/company/luxoft/blog/270383/
Вопрос: Почему нельзя найти длину массива?

Лучший ответ:
Длинна массива не итерируется. Уберите foraech и просто присвойте длину. Но вообще да, похоже у вас смешались знания на тему массивов.

Худший ответ:
https://metanit.com/sharp/tutorial/2.4.php

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

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

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

Лучший ответ:
Ты сам выбираешь ЕГЭ и недопустить из-за хотелок школы тебя не могут. Школа отдельно, ЕГЭ отдельно

Худший ответ:
Журнал оценок для твоей школки :) допустим им могут пользоваться все, ученики могут только смотреть инфу, а учителя вносить оценки + каждому подсчитывает средний балл.
Вопрос: Что будет если несовершеннолетнему на UpWork в tax information указать фио родителя?

Лучший ответ:
Забанят.
Данные должны быть только свои. Даже если ты полностью зарегистрируешься под именем родителя и пройдешь видео-верификацию, то в дальнейшем рано или поздно upwork'у захочется повторить верификацию, т.к. или платежные данные будут не соответствовать, или еще что и тогда точно получишь бан. 
Лучше попрактикуйся на СНГ-биржах и с опытом работы иди на upwork. Как раз получишь незабываемый опыт общения с заказчиками, в дальнейшем пригодится.

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

Лучший ответ:
вы уж простите, но на такой вопрос...будет очень дурацкий ответ.
размер "упал" ?? вроде понятно что уменьшился, но не факт)
из за чего? из-за того что поменяли что-то)
может быть причиной? может, а может и нет)
скорее всего вам придется вспоминать что именно случилось в момент изменения размера.
новая версия юнити, перешли с mono на ill2cpp, убрали поддержку x86.
может просто удалили что то из папки StreamingAssets или что-то подобное))
пока что ваш вопрос выглядит как "а у меня кампутер не включается, что починить надо?"

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

Лучший ответ:
В биос и конфигурить.

Худший ответ:
биос сбрасывал к настройкам по умолчанию 
Ну сами себе и ответили :) В BIOS скорость вращения кулеров ставится обычно на Optimal (у разных - пункты по-разному, но смысл один). Если нужно чтобы крутил "тихо" - зайти в BIOS и перенастроить скорость. Но нужно иметь в виду, что сервер может сам увеличить обороты, если посчитает, что перегревается.
Вопрос: Почему когда \n в строке Python не работает, когда я достаю ее из БД?

Лучший ответ:
Дело в том, что '\n' имеет магию только в ЯП. В остальном это просто два символа. По факту на стадии обработки кода '\n' заменяется на символ перевода каретки {по идее он не видимый}. Скорее всего вам нужно обрабатывать строку как-нибудь или пихать в функцию на подобии этой:
def formatter(s):
    return s.replace("\\n", "\n").replace("\\t", "\t")# and etc.

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

Лучший ответ:
Для таких случаев придумали docblock (а начиная с php 8 - union типы):

# PHP 7+

declare(strict_types=1);

/**
 * @param int|string|float $a
 * @param int|string|float $b
 * @return string
 */
function summ($a, $b): string {
    return bcadd((string)$a, (string)$b);
}

# PHP 8+

declare(strict_types=1);

function summ(int|float|string $a, int|float|string $b): string {
    return bcadd((string)$a, (string)$b);
}

P.S. Помимо этого можно кастовать результат к инту, если он в пределах допустимого int32/int64 (зависит от ОС и сборки пыха) значения
return $result > \PHP_INT_MAX ? $result : (int)$result;

Худший ответ:
Вообще не нормально. Любые интерфейсы и делаются для того чтобы было понятно и адекватно. Можно просто внутри производить приведение типов
Вопрос: В чём преимущество assert перед циклом if-else?

Лучший ответ:
assert - только для отладки. Он не заменяtт ничего, если запустить интерпретатор с флагом -о, - assert вообще игнорируется. Так что не стоит использовать его ни для чего, кроме целей отладки. Он не заменит ни циклы, ни if-else

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

try:
    assert x == y
    print(true_message)
except AssertionError:
    print(fail_message)
Вопрос: Можно ли самому изучить программирование логических контроллеров?

Лучший ответ:
ПЛК программируются на одном из стандартных языков 

С и С++ в этом списке нет, есть подобия

Знания и методы программирования, которые пригодны для программирования ПК, для ПЛК  не годны, там своя специфика. 

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

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

Цифровая электроника здесь стоит не на первом месте, в ПЛК с точки зрения электроники никто серьезно не полезет (потому что убытки от поехавшего крышей ПЛК могут легко и многократно перекрыть стоимость замены сдохшего). Достаточно обычной науки о контактах и понимания закона Ома.

Чтобы прикинуть свои силы, попробуйте прямо здесь набросать, как вы при помощи ПЛК будете автоматизировать работу простого советского воздушного компрессора, который кто-то захотел подключить к SCADA-системе в своем гараже. 

-какие нужны датчики
-какие нужны исполнительные механизмы
-как обеспечить безопасную работу машины при поехавшем крышей ПЛК

Худший ответ:
Почитайте CoDeSys
Нужны языки ST (аналог Паскаля/С), графические CFC и SFC.
Есть ещё 3 версия Codesys, там можно применять объекты и интерфейсы (ООП).
Вопрос: Не работает else if, в чем проблема?

Лучший ответ:
Вместо И (&&) должно быть ИЛИ (||).

Худший ответ:
Вместо И (&&) должно быть ИЛИ (||).
Вопрос: Что стало с информацией,хранившейся на эВм СССР?

Лучший ответ:
В момент распада СССР стала информацией, хранящейся на ЭВМ России и других стран.

Худший ответ:
я свои диски запихнул в образы и до сих пор где-то лежат. А возможно даже и диски прочитаются, только вот комп уже перестал включаться.
Вопрос: Какой PHP-микро-фреймворк взять для простенького REST API с авторизацией, и чтобы не из «большой тройки»?

Лучший ответ:
Может, в редакторе Swagger накидать спеки API и автоматом сгенерить по ним сервер и клиент на любом из предлагаемых языков/фреймворков?
Например, сервер под теми же Lumen, Slim, Silex, Symfony, Node.js

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

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

Худший ответ:
Разумеется, нужна.
Т.к. GET - это цель.
А POST - это выбор цели.
И, если цель пропала, то... сами понимаете.
Вопрос: Где скачать список зарегистрированных доменов?

Лучший ответ:
Вот ссылки на актуальные списки всех зарегистрированных доменов RU/SU/РФ:
Список всех доменов .ru - https://reghouse.ru/upload/ru_domains.txt
Список всех доменов .рф - https://reghouse.ru/upload/rf_domains.txt
Список всех доменов .su - https://reghouse.ru/upload/su_domains.txt
Список всех доменов 3-го уровня (*.ru, *.su) - https://reghouse.ru/upload/3l_domains.txt
Файл зоны .ru - https://reghouse.ru/upload/ru_zone.txt
Файл зоны .рф -  https://reghouse.ru/upload/rf_zone.txt
Файл зоны .su - https://reghouse.ru/upload/su_zone.txt

Худший ответ:
Актуальный список доменов можно получить у ру-центра , для этого надо заключить доп соглашение.
Вопрос: SELECT ... FOR UPDATE в innoDB не лочит записи. Я и дальше могу обращаться к записи. Почему не происходит лока?

Лучший ответ:
Вам надо установить уровень изоляции:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED; - тогда будете ждать

Худший ответ:
Решено. Все работает, но только для параллельных запросов с FOR UPDATE, а я пробовал поймать лок с запросом без FOR UPDATE. То есть мой параллельный запрос должен был выглядеть не так:
SELECT * FROM user_balance WHERE id = 1
А вот так:
SELECT * FROM user_balance WHERE id = 1 FOR UPDATE
Вопрос: Как выбрать кабель SATA to USB?

Лучший ответ:
Внешний ssd и состоит из обычного + переходника. Смело берите обычный ssd и кейс от орико или ugreen (самое простое это взять прозрачный dexp - это перемаркированный orico). Обязательно с usb 3.0. Никаких особых кабелей нет - они все с одного завода поставляются по сути.

Худший ответ:
Внешний SSD это и есть обычный SSD + переходник + кабель, просто его для тебя собрали на заводе.
Можно без проблем собрать самому, купить диск, контейнер, кабель.
Любой usb3 кабель справится с задачей. 
Для компактности можно взять m.2 диск и маленький корпус.
Вопрос: Какие есть популярные виды обмена и хранения данных для сайта?

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

Если вы начинаете работать с БД, то просто с mysql хотя бы разберитесь до уверенного использования. Есть множество проектов, которым mysql с головой хватает.

Нет смысла бегать галопом по европам, не освоив хотя бы один инструмент. Все SQL базы для новичка более-менее похожи.
Nosql базы нужны для других типов данных.

Худший ответ:
На стороне сервера используйте MySQL, на стороне клиента IndexDB.
Вопрос: Как конвертировать pdf в HTML средствами python?

Лучший ответ:
И так, скажут прямо. Конвертировать pdf в html не получится ни на каком языке программирования! Максимум, что можно извлечь из pdf , это текст, который будет лишен какой бы то ни было разметки. Ибо сам формат pdf создан для препринта и в нем отсутствует информация о заголовках, параграфах, стилях. Более того, в pdf есть текст и атрибуты, где и как этот текст разместить, и больше ничего для текста.

Худший ответ:
https://github.com/coolwanglu/pdf2htmlEX
результат получается прям скажем странный