Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Возможно ли в WhatsApp создать чат-бот в рамках нескольких пользователей?

Лучший ответ:
Есть костыль к WhatsApp WEB. Называется chat-api. Несмотря на то что это костыль, работает достаточно хорошо, чтобы можно было доверять им автоматизацию общения с клиентами. И у них есть хорошее API. Я думал недавно об этом, в том числе и об реализации. В общем, с помощью их API, нужно создать такую надслойку, имитируя интефейс вацапа организовать работу несколько юзеров, а уже на стороне своего сервера, так как их апи отдает ИДЫ сообщений, привязывать информацию о том, кто и когда отправил это сообщение. Если конечно это для вас важная информация. И в этой надслойке получается надо как то связывать эти две информации. Т.е в самом вацапе не будет понятно кто из твоих юзеров/сотрудников отправил смс, а через надслойку будет видно ...надслойкой может быть тот же CRM

Худший ответ:
Есть еще решение - https://wamm.chat... подключаете Вацап и несколько пользователей, все работают в едином пространстве... но еще видно в их интерфейсе, кто отправил сообщение, кому и когда. Есть фильтры и отчеты... можно чат назначить конкретному... ну и групповые чаты тоже есть... в общем это похоже на то, что вы ищите
Вопрос: С чего начать изучение SQL?

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

Худший ответ:
существуют разные среды, грубо говоря и диалекты языка  разница настолько несущественная для тебя, что тебе не надо даже заморачиваться на эту тему. для решения 80% задач разработчики пишут весьма типичный стандартизированный SQL. даже не заморачивайся на эту тему.
Вопрос: Нужна ли нейронная сеть для расчёта или нет?

Лучший ответ:
Не предскажете никак до тех пор, пока не соберёте все факторы смерти. А их порой и врачи не всегда могут предоставить.

Худший ответ:
Как вариант, можно попробовать построить модель и на НС.

К примеру, одно из первых учебных заданий на Kaggle, это на основе данных пассажиров Титаника спрогнозировать, выжил пассажир или нет.

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

Для более ли менее достоверной модели понадобится оччень много данных, и в них должна действительно присутствовать осмысленная зависимость.
Вопрос: Почему const вместо function?

Лучший ответ:
Потому что так проще, код получается короча и функция не поднимается.
Почитайте style guide airbnb, там есть по этому поводу заметки

Худший ответ:
Почитайте на досуге про стрелочные функции и чем они от обычных отличаются.
Вопрос: Когда к месту настройки почты DKIM SPF DMARC?

Лучший ответ:
1. mail() использует smtp  - так что тут чушь полная, как отправляет при этом сервер это уже его задача, но  точки зрения php маил совершенно валиден.
2. реализаций миллион так что можно использовать обычный маил а в настройках php.ini указать что отправкой будет заниматься например msmtpd, да и сам postfix умеет прекрасно работать с внешним почтовым сервером  в режиме реттранслятора.
3.   яндекс коннект - это почта для вашего домена на яндексе.
4.  на яндексе  коннект можно и полноценно держать ДНС зону с редактором и бесплатно,  есть возможность гегенировать и DKIM DMARC ну и SPF естественно тоже. 
для этого вы   делегировать или сам домен на яндекс и там запросить ключи 
или просто в коннекте их скопировать.
Ну или по API запросить ключи DKIM ( там помоем CURL обычный)
так же ушедшая почта оставляет логи не забыайте о этом

Худший ответ:
Всегда к месту, если хотите, чтобы почта доставлялась. А еще важен человеческий hostname и PTR.
https://www.mail-tester.com/
Вопрос: Как спарсить номер статьи из гиперссылки?

Лучший ответ:
Любым удобным способом

Сплитом
url = 'https://example.com/?p=5144'
page = url.split('?p=')[-1]

Заменой
url = 'https://example.com/?p=5144'
page = url.replace('https://example.com/?p=', '')

Регексом
import re
url = 'https://example.com/?p=5144'
page = re.search(r'\?p=(\d+)', url).group(1)

Худший ответ:
url = soup.find("a", class_="класс тега").get("href")
page = url.replace('https://example.com/?p=', '')
Вопрос: Как заставить все запросы ждать один промис?

Лучший ответ:
Можете использовать очередь
Пример:'use strict';

const { Queue } = require('plain-queue');
const queue = new Queue;

// внутри async function
    chat.quiz = global_quizzes[quiz_id];
    
    if(!chat.quiz) {
        chat.quiz = await queue.addTask(function () {
            return global_quizzes[quiz_id] || Chat_Quizzes.findById(quiz_id).exec();
        });

        global_quizzes[quiz_id] = chat.quiz;
    }

Худший ответ:
ОРМ  +КЕШ...
Вопрос: Как экспортировать проект pycharm?

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

Худший ответ:
Используйте докер.
Вы можете копировать папку с виртуальной средой (.venv) и попробовать ее перенести, но все может с тем же развалиться, что и при установке зависимостей.
Плюс надо смотреть, какие именно проблемы у вас возникают при установке зависимостей на сервере, если они связаны с нехваткой либ в системе, как это часто бывает - используйте докер)
Вопрос: Установка MacOS на Oracle VM VirtualBox. Почему зависает на экране загрузки?

Лучший ответ:
Какой процессор? По какой инструкции делали? Через командную строку необходимые параметры VM меняли?

Худший ответ:
Вот эта команда позволила установке пройти дальше:
VBoxManage modifyvm "mac OS 10.15" –-cpu-profile "Intel Core i7-6700K"

А вообще использовал эту статью - https://www.intoguide.com/install-macos-catalina-v...
И эти команды:
cd "C:\Program Files\Oracle\VirtualBox\" 
VBoxManage.exe modifyvm "mac OS 10.15" --cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff 
VBoxManage setextradata "mac OS 10.15" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac11,3" 
VBoxManage setextradata "mac OS 10.15" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0" 
VBoxManage setextradata "mac OS 10.15" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple" 
VBoxManage setextradata "mac OS 10.15" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" 
VBoxManage setextradata "mac OS 10.15" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1
VBoxManage modifyvm "mac OS 10.15" –-cpu-profile "Intel Core i7-6700K"
VBoxManage setextradata "mac OS 10.15" VBoxInternal2/EfiGraphicsResolution 1280x1024
Вопрос: На хосте не работает скрипт php по отправке сообщения?

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

Худший ответ:
Нормально настроенный почтовый сервер ожидает полноценный почтовый адрес в строке "From:".
Полноценный почтовый адрес - это не первое пришедшее на ум "Test", это именно адрес, с @, с буквами и цифрами слева и справа от @, и что-бы в этом адресе использовался реальный почтовый сервер справа от @.
Се ля ви!
Вопрос: Свободное место на сервере?

Лучший ответ:
tmpfs располагается в памяти, udev -- это представление устройств в виде файлов. судя по размеру, у вас должно быть ещё много пространства неразмечено. смотрите вывод fdisk.

Худший ответ:
У Вас 10 ГБ места и 4 ГИГА памяти. На tmpfs не обращайте внимания, это максимальный размер, который они могут занять, он равен размеру оперативной памяти и размещён логично в памяти.
Создание свопа на 2 ГБ:
dd if =/dev/zero of =/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
Задействовать сразу после создания:
swapon /swapfile
Чтобы он при каждой загрузке был, то отредактируйте файл /etc/fstab и добавьте в него следующую строку:
/swapfile     swap     swap     defaults     0     0
Вопрос: Почему верстальщики не используют css grid?

Лучший ответ:
Потому что моментов, когда задачу можно реализовать только с помощью grid - очень мало. А в остальных случаях всем привычнее использовать тот же flex.
Если сравнить с приходом flex вместо float - на него перешли очень быстро. Тут причина была как раз в том, что flex давал очень много новых возможностей, часть которых до него можно было сделать только на js, к примеру. И эти возможности действительно были необходимы и часто встречались в задачах.

p.s. К примеру сейчас все поголовно переходят с scss переменных на css переменные. Как раз по причине того, что css переменные дают больше возможностей. И эти возможности действительно полезны.

Худший ответ:
Где использовать флексы, а где гриды? Спойлер: да ...
Вопрос: Какой путь программиста выбрать в 2020?

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

script / front, back-end / mobile development
Вы сейчас перечислили почти все области, кроме нативного десктопа. Ну хотите сменить, попробуйте.
Но может имеет смысл найти проект, где востребован ваш текущий опыт?

Худший ответ:
Как, человек, который постоянно парсит hh.ru, скажу тебе, что больше всего спрос в направлении web(front-end, back-end), andriod. Из языков, наиболее востребованы (по кол-ву вакансий): JavaScript, Java, PHP, Python.
В принципе, данная инфа не сильно изменилась. тут
Вопрос: Симуляция нажатия кнопки на сайте?

Лучший ответ:
Либо делай POST-запрос с помощью библиотеки requests (это и будет сабмит формы по сути), либо прикрути Selenium.

Худший ответ:
Я в таких случаях пользуюсь библиотекой MechanicalSoup, там есть метод browser.submit_selected()
С помощью этого супа вообще удобно заполнять формы, переходить по ссылкам
https://mechanicalsoup.readthedocs.io/en/stable/tu...
Вопрос: Ревью кода. Как можна улучшить этот код?

Лучший ответ:
showAllTiles() { // - Show all items
checkIdButton() { // - Show all items if selected "ALl" button
Возможно стоит сразу нормально назвать (или переименовать)?
С отступами какая-то фигня. Настрой редактор.
Ну и можешь вставить свой код сюда, например, там будут подсказки что исправлять.Metrics
There are 13 functions in this file.

Function with the largest signature take 1 arguments, while the median is 1.

Largest function has 13 statements in it, while the median is 1.

The most complex function has a cyclomatic complexity value of 3 while the median is 1.

Eight warnings
19	Missing semicolon.
25	Missing semicolon.
40	Missing semicolon.
47	Missing semicolon.
77	Unnecessary semicolon.
82	Missing semicolon.
87	Missing semicolon.
95	Missing semicolon.
One undefined variable
13	newArray
18	newArray
34	newArray
50	newArray
Three unused variables
12	allTilesVisible
28	checkIdButton
2	filterButtons
И да, хинтеры и линтеры могут встраиваться во многие редакторы и IDE.

Худший ответ:
Добрый день! Сразу бросается в глаза названия переменных и функций;
newArray - не отображает сути
check() - не отображает сути
notFound - что не найдено ?
thisBtnId - зачем this ?
вместо if else можно писать тернарные операторы ;
вместо function () {} стрелочные функции () => {}
вместо if(allHidden === true) просто if(allHidden);
зачем эта строчка if(target.className !== 'filter__btn') return ?
можно так :if(target.className === 'filter__btn') {
      filteringGallery(target.id);
      };
Вопрос: Стоит ли писать собственное IDE на Python?

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

Худший ответ:
Читаешь 118 строчек кода Питона (самое маленькое Питон IDE, ktEDI 0.1.0). Скорее MVP. Самое то для новичков. В версии 0.2.0 добавлю линтер, проверку импортов, переменных, нумерацию строк, колоризацию кода. https://github.com/nasingfaund/tkEDI
Вопрос: Что такое Promise и зачем они нужны?

Лучший ответ:
Это обещание.
Обещаю что отдам(fulfilled) тебе твои деньги, а ты пока подожди, но это не точно(rejected).

Худший ответ:
Вот тут прям в начале все понятно
Вопрос: Какая книга это объяснит?

Лучший ответ:
Для начала - "Правильный вопрос" Шекли. Это кратенько, но хорошо объясняет общее направление.

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

Лучший ответ:
Гугли: "cms коллективные блоги" и найди через 2 минуты cms livestrett, потрать месяц на настройку и тысячи нефти на раскрутку, пойми что в 2020 это уже не стреляет, спейся и опустись на самое дно, напиши пост-исповедь на хабр.
Как-то так.

Худший ответ:
Если правильно понял, как этот сайт работает (смотрел с мобилы, в код не лез), то здесь работает связка WordPress + Js, скорее всего какой-то фреймворк типа Vue или React.
Такие сайты точно делают, всё дело в цене вопроса. Попробуйте поискать на фрилансе.
Вопрос: Подстановка цены в зависимости от ip пользователя?

Лучший ответ:
Там всего чуть больше 50 стран. Зайти в вики и составить список самостоятельно. Или вы из тех, кто ставит отдельный плагин на leftpad?

Худший ответ:
Попробуй API от BigDataCloud.com. Этот сервис возвращает административные и географические данные. 
  
Если бы у тебя были координаты клиента то можно было бы воспользоваться их бесплатным сервисом: Free Reverse Geocoding API
Если же все-таки хочется определять именно по IP то это тоже возможно:  IP-Address geolocation API
Вопрос: Объединяю в себе навыки ux/ui и frontend, как получить больше профита?

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

1. Устроиться в крупную продуктовую компанию, но чистым UX спецом вряд ли получится.
2. Преподавание, в каком-нибудь Скиллбоксе/Нетологии и т.п.
3. Открыть свой бизнес, сами руководите проектом, нанимаете опытного HR, он вам находит специалистов, чтобы вам самому не пришлось заниматься маркетингом, финансами и т.д. Еще вариант сделать мини-студию со специализацией на визуальной части. Цель попасть в awwwards, behance и прочие топы. 
Что дают победы на конкурсах Awwwards и CSS Design...

Короче, если цель получать больше денег, тогда именно так её и надо формулировать, ничего постыдного в этом нет. Если, конечно это в рамках УК)

Худший ответ:
А чего без конкретики то ? Норм зп это сколько?
Сосед дизайнер верстальщик поднимает как свободный копейщик 200к говорит это потолок так что увы
Вопрос: Портятся ли комплектующие ПК от переодического принудительно выключения пк через кнопку питания?

Лучший ответ:
кроме вышесказанного (об импульсе)
основные неизбежно стареющие компоненты:
- электролитические конденсаторы (возможно притча об импульсах, их касается больше всего)
- механические узлы HDD при наличии такового. не смотря на рост технологического качества, износ отменить невозможно, можно только растянуть (upd старт/стоп - всегда стресс для механики hdd
- сами кнопки - питания, ресет, копки мышей
тем не менее, сгореть может какой то чип, гораздо раньше, чем механические элементы придут в негодность. к примеру по тому что бракованый
самый конкретный ответ на ваш вопрос - более всего стареет сама кнопка питания
и сразу хорошие новости:
- стареть она будет очень долго
- а еще, это один их наиболее легко заменяемых элементов

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

Лучший ответ:
Как именно он у вас не работает? Какие действия вы совершаете? На мобильных устройствах в принципе hover работает чуть по другому. Ибо нет события наведения курсора на элемент

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

Лучший ответ:
В одном, конечно.
Вызов двух обработчиков можно реализовать костылями на js, но это ненадёжно.

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

Худший ответ:
Отслеживаете отправку через javascript ajax, отправляете сколько угодно и куда угодно писем после удачной оплаты например.

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

Вот тут примеры кода, как забрать данные из формы, как отправить + php https://stackoverflow.com/questions/16616250/form-...

В пхп естественно вы вольны делать что угодно.

+ Аякса в том, что все это делается фоном, пользователь продолжает тусить по сайту, пока вы там отправляете письма и прочие штуки.
Вопрос: Как заменить часть текста в строке?

Лучший ответ:
У меня нет слов. Для начала, весь этот код это полный мусор, всё можно в разы понятнее и разумнее написать, а это просто бред.
Далее рекомендовал бы использовать локальную базу данных для хранения всякого хлама вроде этого.
По идее должно работать, я не тестировал.
КОД
myfile = 'bot_users.ini'
word = '76561198985130944'
cash = 500
f = open(myfile, 'r+', encoding="utf-8")#открыл файл
lines = f.read().strip().split("\n")
for line in lines:#читаю строки
	if word in line:#ищу слово word = 76561198985130944 в строках
		lines.remove(line)
		new_list = line.split(' ')#создаю список из строки
		print(new_list)#для проверки вывожу на экран
#присваиваю значения        
		steamid = new_list[0]
		name = new_list[8]
		bank = new_list[5]
		newbank = int(bank) + cash#создаю (задаю) новое значение newbank 
		lines.append(" ".join(new_list).replace(bank, str(newbank)))
		print('New Bank: {}'.format(newbank))#проверка значения newbank
		print('>>>>>>>>Found: {}\nSteamid: {}\nName: {}\nBank: {}'.format(word, steamid, name, bank))
f.truncate(0)
f.write("\n".join(lines))
f.close()


Худший ответ:
Ternick Спасибо большое за помощь!

Дополнил код, что бы замена текста происходила в той же строке!

myfile = 'bot_users.ini'
word = '76561198868608679'
cash = 500

f = open(myfile, 'r', encoding="utf-8")#открыл файл
lines = f.read().strip().split("\n")
for i, line in enumerate(lines):#ищу № строки
#for line in lines:#читаю строки# - заменил на строку, указанную выше (что бы определить № строки)
  if word in line:#ищу слово word = 76561198161930938 в строках    
    lines.remove(line)        
    new_list = line.split(' ')          
    steamid = new_list[0]
    name = str(new_list[8])
    bank = new_list[5]
    newbank = int(bank) + cash#создаю (задаю) новое значение newbank 
    new_list[5] = str(newbank)    
    lines.insert(i, " ".join(new_list))#вставляю в туже самую строку данные
    print('New Bank: {}'.format(newbank))#проверка значения newbank
    print('>>>Found!\nLine {}: {}\nSteamid: {}\nName {}\nBank: {}'.format(i, word, steamid, name, bank))
f.close()
f = open(myfile, 'w', encoding="utf-8")
f.write("\n".join(lines))
f.close()
Вопрос: Какая нейронная сеть нужна?

Лучший ответ:
Лучше подойдёт регрессионный анализ.

Сначала постройте график большого числа экспериментов. По виду попытайтесь спрогнозировать, какого рода функция там спрятана: простейшая линейная, квадратичная, полином.

Затем постройте модель и подгоните её параметры, чтобы полученная функция минимально «ошибалась» относительно экспериментальных данных из чёрного ящика.

Худший ответ:
Я уже отвечал в коментарии к предыдущему вопросу.

Пример: 4,5,9 и 3,6,11
Ответ: 3.5, 5.5, 10

Матрица: 
3, 3.5, 4 -> -0.5, 0, +0.5
5, 5.5, 6 -> -0.5, 0, +0.5
9, 10, 11 -> -1, 0, +1Осталось расставить коэффициенты в формуле.
Вопрос: Найти сумму цифр четырёхзначного числа, поможете?

Лучший ответ:
print(sum(map(int, list(input()))))
Для любого кол-ва цифр в числе

Худший ответ:
Переведите это число в строку и считайте отдельные ее элементы.
x = input()
summa = 0
for i in x:
    summa += int(i)
print(summa)
Вопрос: Как спарсить пост со страницы вк?

Лучший ответ:
А не легче ли для этого использовать API ВК???

https://vk.com/dev/wall.getById

Худший ответ:
1. Шлёте GET запрос за страницей.
2. Разбираете(парсите) ее содержимое посредством какой-то библиотеки которая умеет в DOM
3. Получив нужную информацию, делаете с ней что хотите.

Как всё это реализовать? Гуглите пошагово.
Вопрос: Хочу вкатиться в в веб-разработку, с чего начать?

Лучший ответ:
Веб разработка в 2020 это не просто сверстать макет и выгрузить на хостинг.
Помимо знания html и css нужно знать js. Знание js тянет за собой тройку фреймворков. React, Angular и Vue.
Браузер сейчас как вторая операционная система в компьютере с некоторыми ограничениями.
Это что касается фронта.
На беке "сидят" PHP, Java, C#, NodeJs, Go, Python.
Выбор широкий но в тоже время требует от специалиста хороших знаний.
Если говорить о изучении JS то пожалуй можно начать с этого.
Для HTML и CSS в качестве базовых знании может хватить и бесплатной части на этом сайте. А дальше только практика.
Курсы я бы точно не советовал. Как правило там обещают золотые горы только ради того, что бы заработать на студентах деньги.

Худший ответ:
просто сделай простое клиентсервеное приложение

например аналог Тостера хорошо подойдет для этого
или блог чат форум

и тогда всё поймешь

но лучше делать всё это не в стандартный профессиональных фреймворках
а только на чистых языках
и без готовой СУБД - данные хранить в файлах

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

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

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

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

Лучший ответ:
Как я себе представляю решение:
В целом правильно. Идея простая - поднять новый инстанс, перестать слать траффик на старый, подождать пока закончится обработка запросов, убить старый. Это не фантастически сложно, но надо реализовать.
Или пользоваться оркестратором - K8S, и т.п.

Еще вариант - немного дороже, но надежнее - использовать managed service - AWS Elastic Beanstalk,  Google App Engine , Heroku.

Худший ответ:
Инициализировать Docker Swarm с одной нодой.
Создать сервис с приложением - app.
И обновлять сервис с нужными параметрами для исключения простоя.
Простой пример:
docker service create --name nginx --replicas 1 --publish 80:80 nginx:1.18
docker service update nginx --update-order start-first --image nginx:1.19
docker service update
Вопрос: С какими ограничениями я могу столкнуться, если буду писать на чистом Keras?

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

Худший ответ:
На Keras вам будет недоступно обучение с подкреплением. 
Но лучше всё-таки начать с Keras - понять основы, набить пару шишек. И когда придёт осознание того, что вам нужно либо остаться на Keras, либо уйти в pytorch ... либо всё бросить.