Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Особенность или уязвимость DNS-серверов reg.ru?

Лучший ответ:
По поводу очищения домена из базы, это абсолютно на проблема, занимает обычно от 2 дней до недели. 
1) Прикрепляете к домену свой чистый сайт, 
2) добавляете в гугл консоль и яндекс вебмастер, в обоих системах есть проверка сайта на вирусы. Подаете заявки на проверку сайта.
3) ESET. Информация есть на этой  странице. Им нужно отписаться на их email (желательно на английском), о том что сайт false positive.
4) Sophos AV. Заходите на эту страницу , выбираете "Web Address" и заполняете форму, в комментарии пишете также что "false positive url"

ps. Если добавится другой антивирус то ищем сайт антивируса и формы обратной связи или почты поддержки и отписываемся туда с пометкой "False Positive Submission". Обычно компании отвечают 1-3 суток и убирают сайт.

ps2. По своему опыту скажу что на историю домена не повлияет, не один десяток сайтов чистил от вирусов, закрывал дыры. Потом отписывался компаниям антивирусов и сайт возвращался в поисковик и обратно в топы поиска (конечно если он там был до этого=) )

Худший ответ:
reg.ru вообще странно обращается с dns. Если вы, например, включите https через их лк, то ns сменятся. Если была одна ns запись, потом вы ее сменили, то в ходе редактирования dns можете обнаружить, что снова раздается старый ns.
Вопрос: Что нужно, чтобы сделать свой сервис для видеоконференций?

Лучший ответ:
Берем один из открытых проектов - OpenMeetings  или bigbluebutton и готово.
Они реализуют вашу задачу из коробки.
Поэтому берем, ставим и пользуемся.
Если что-то не нравится - допиливаем.

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

Лучший ответ:
Удалось решить таким кодом:
import socket
import socks
import requests

socks.set_default_proxy(socks.SOCKS5, addr='адрес', port=1234,
                        username='котак', password='котакбас')
socket.socket = socks.socksocket

r = requests.get("https://ramziv.com/ip").text
print(r)

Худший ответ:
Может у вас PySocks не установлен?
pip install -U requests[socks]

import requests
proxies = {'http': "socks5://server:port"}
r = requests.get('https://ramziv.com/ip', proxies=proxies).text
print(r)

https://stackoverflow.com/questions/12601316/how-t...
Вопрос: Зачем браузер Chrome на Android запрашивает доступ к NFC?

Лучший ответ:
Браузеру NFC не нужен. Доступ к NFC могут запрашивать некоторые сайты

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

Лучший ответ:
wp-vcd.php

Переменная install_code выглядит безумно странно.
Я конечно подозреваю что в WP и не такое может быть, но это самый подозрительный фрагмент из всех файлов

UPD:
Ага, запрос на получение контента со стороннего ресурса


Худший ответ:
Нет смысла удалять этот код, так как у вас он был установлен с каким-то плагином. Осмелюсь предположить, что у вас есть некий премиум плагин, который вы скачали "бесплатно" и вместе с ним весь "прекрасный" багаж.
Соответственно, помимо чистки этих файлов ищите зараженный плагин и удалите его. Или же это может быть в премиум теме, которую используете. Тогда посмотрите например, в functions.php
Также установите плагин Wordfence и просканируйте сайт
Вопрос: Как вставить assembler код в программу на php?

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

Худший ответ:
Ну в общем из предыдущих вопросов автора становится понятно, зачем юному гению это понадобилось
Осталось только открыть ему малюсенький секрет, где у нас работает РНР, а потом уточнить, у какого компьютера наш вундеркинд хочет узнать параметры процессора.
Реальность его немного разочарует, когда выяснится, что почему-то у всех посетителей его сайта оказываются идентичные процессоры!

В общем вопрос из той серии что про FFI рассказывать явно ни малейшего смысла
Вопрос: Не работает breakpoint в slick-slider, как быть?

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

Именно user-scalable=0 лечит chrome. Такой тег прописан на оф. сайте слайдера.

Худший ответ:
Во первых в чем отличие от изначального slidesToShow: 3, и том что на брейкпоинте 1530, и там и там значение - 3, значит судя по всему этот брейкпоинте не нужен или вы забыли изменить значение. Что касается брейкпоинта в общем думаю вы в курсе что если у вас брейкпоинте 1530 то он будет работать с 1529px и ниже и соответственно если брейкпоинт 600 то с 599px и ниже.
Вопрос: Что такое (медленный пк)?

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

Худший ответ:
1) процессор
2) оперативная память
3) видеокарта
Вот основные 3 составляющие. Напишите по этим пунктам характеристики что у вас установлено
Вопрос: Нормально ли изменять параметр функции внутри функции без объявления переменной?

Лучший ответ:
Нормально ли изменять параметр функции внутри функции ...
Не очень.
В вашем примере:const myMyltilpy = (num) => {
    return (num < 0) ? 1 : num * 10;
}
https://developer.mozilla.org/en-US/docs/Web/JavaS...

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

Лучший ответ:
Если CloudFlare работает в режиме прокси, то клиенты (посетители сайта) получают сертификат CloudFlare. Но, между CloudFlare и вашим сервером соединение тоже может быть как HTTP, так и HTTPS (рекомендуется HTTPS). Если оно HTTPS - тогда вам нужно обновлять и второй сертификат, установленный на вашем сервере, иначе по истечении его срока действия CloudFlare не сможет общаться с вашим сайтом.
За это отвечают настройки в разделе SSL/TLS в админке CloudFlare:
Впрочем, это необязательно должен быть платный сертификат от reg.ru - вы можете использовать на самом сервере бесплатный от Let's Encrypt или же во вкладке Origin Server сгенерировать сертификат от CloudFlare (и установить на своем сервере), который будет валидным именно для этого звена - связи между CF и вашим сервером по HTTPS:
Лично я предпочитаю Let's Encrypt - бесплатно, автоматическое продление самим сервером. Один раз настроил и забыл - все работает как швейцарские часы.

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

Лучший ответ:
Andrey Selin, по условию задания требуется придумать алгоритм/программу для сканирования сети за NAT. Интересная у вас организация... NAT выполняет три важных функции.
...
2) Позволяет предотвратить или ограничить обращение снаружи ко внутренним хостам, оставляя возможность обращения изнутри наружу. При инициации соединения изнутри сети создаётся трансляция. Ответные пакеты, поступающие снаружи, соответствуют созданной трансляции и поэтому пропускаются. Если для пакетов, поступающих снаружи, соответствующей трансляции не существует (а она может быть созданной при инициации соединения или статической), они не пропускаются.
Соответственно простучаться внутрь сети за NAT "просто так" не получится. Для этого нужно либо взломать защиту рутера и уже через OS рутера долго читать таблицы сопоставления адресов, либо уже прописаться там и оттуда сканировать локалку. Оба способа как бы больше относятся к области взлома и проникновения, нежели к административным утилитам...

Худший ответ:
Т.е. вы хотите посмотреть, как там у соседа сеть сделана? Какие устройства к его роутеру подключены?
Нельзя.
Вопрос: Массив объектов или массив «массивов»?

Лучший ответ:
Произвел сейчас простейший замер. Разница не велика +-15%.
Выигрывает  двумерный массив объектов.
(производил замер на java)

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

Лучший ответ:
В Home описать функцию изменения counter. И пробросить через пропсы в компонент кнопки. В кнопке повесить этот пропс на onClick событие

Худший ответ:
Через кастомные события.
Вопрос: Что выбрать вместо macbook для дизайна?

Лучший ответ:
Могу посоветовать сначала попробовать поработать в Figma, а потом решать о смене ОС.
Чтобы вам сейчас не посоветовали, перейти будет не так просто) Поймете только когда сами протестируете новые устройства.

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

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

const mysql = require(`mysql`)

const connection = mysql.createConnection({
    host: "",
    user: "",
    password: "",
    database: ""
    multipleStatements: true;
  });
Дальше уже с помощью подключения добавляешь информацию,редактируешь и т.д.

Худший ответ:
Ну а canvas для чего?
Вопрос: Как передать 5 ТБ данных на сервер?

Лучший ответ:
В вашем случае может проще поехать к клиенту с диском 5+ ТБ.
https://habr.com/ru/company/kingservers/blog/316660/

Добавлено
Если данные дедублицировать (ZPAQ и пр.), то неисключено, что они могут занимать существенно меньшее место и тогда эти дедублицированные данные можно отдать через FTPS/HTTP-сервер.

Худший ответ:
Ведь на HDD скорость более 250 Мбит не будет? 250мегабит это примерно 30мегабайт.

Скорость линейной записи обычного HDD примерно 150-200мегабайт в секунду - это примерно 1,2-1,6гигабита.
 Скорость случайной чтении записи обычного HDD около 1Мб/с
В вашем случае линейная нагрузка, так что один диск быстрее сети.

По расчетам при скорости интернета 1 Гбит, как раз так и получится. Интернет это глобальная (всемирная ) сеть. и  у него нет скорости!
Вопрос: Есть нормальные впн?

Лучший ответ:
Купить ВПС за 5 баксов и самому поднять.

Худший ответ:
Что значит нормальные? Они все нормальные. 
Я использую L2TP и ICEv2

Если вам нужна анонимность - нужно учиться анонимизации. VPN вам никак не поможет сам по себе стать анонимным. Но его можно использовать для анонимизации.
Вопрос: Можно ли создать опрос используя telegram-bot-api?

Лучший ответ:
Можно, где-то вы не там документацию смотрите.
Вот официальная дока по методам апи, метод sendPoll публикует опрос https://core.telegram.org/bots/api#sendpoll
Другой вопрос, что используемая вами бибилотека go-telegram-bot-api может еще не поддерживать этот метод. Можете запилить и сделать в нее пул-реквест по этому поводу.

Худший ответ:
Да, можно.
Опрос - это самый обычный бот, который советуется с базой данных и сохраняет данные в ней.
Вопрос: Как вырасти до хорошего JS(React\Vue) программиста?

Лучший ответ:
Пока забей на React/Vue и тд, и на алгоритмы и паттерны тоже.

Порядок учебы должен быть таким:
1. JS основы и практика (если практики нет в работе ищи задачки в интернете)
Настоятельно рекомендую полностью изучить этот бесплатный open-source учебник: https://learn.javascript.ru/
Я еще у них же проходил курс по JS платный (это не обязательно, курс очень во многом повторяет содержание учебника и задачи из него).
В этом учебнике ты найдешь все и про js и про ооп и про работу js в браузере и тд. И подается это все от простого к сложному.
Изучи основы js наизусть, а остальное прочитай и попрактикуй на разок и перечитывай по мере необходимости в работе.

2. Изучи как делать сборку проекта для начала с помощью gulp, потом вебпак.
например: (или другие курсы с ютуба)
https://learn.javascript.ru/screencast/gulp
https://learn.javascript.ru/screencast/webpack
Научись делить код js, scss на небольшие файлы-модули - храни их в правильной структуре и настрой сборку.
Научись настраивать проект так чтобы в нем была сборка js файлов в один, с использованием babel.
Чтобы была сборка стилей scss. И например оптимизация картинок автоматическая.

3. Немного порешай алгоритмы чтобы размять мозг,
например на https://www.codewars.com/

4. Дальше нужно поучить Реакт/Вуй и тд.
Читай документацию и попробуй сделать какой нибудь мини проект.
(например сделай приложение: список в котором можно добавлять элементы и подэлементы до бесконечности т.е. у каждого элемента будет кнопка "добавить дочерний элемент" и "удалить элемент") было у нас такое тестовое задание.

5. Пройди бесплатный курс по Redux от самого создателя редакса Дена Абрамова https://egghead.io/courses/getting-started-with-redux

Дальше уже надо искать работу junior Front-end разработчика, и на проекте подробно изучать документацию всех инструментов которые используются.

Минутка мотивации: Я сам изучил js в основном на learn.javascript и react на оф. сайте, и сейчас спустя 3 года плотной работы с js занимаю должность senior front-end разработчика и team lead-а на проекте. (не хвастаюсь, но мотивирую :) )

Я в числе прочего собеседую людей, и самое важное на что мы в компании смотрим это крепкие знания по js.
Остальное можно доучить достаточно быстро. И когда мы набираем людей например на должность junior React разработчика, то знания js и умение шевелить мозгами обязательны, а вот знаний реакт достаточно поверхностных. Ну и желательно иметь js/react опыт хотябы в виде собственных pet projects на аккаунте github.

Худший ответ:
постоянно натыкаюсь на огромное море текстовой информации

Не правильно, нужно сначала практиковаться, а после читать теории.

Будьте добры, подскажите книги

Книги для JS/React/Vue не нужны, я уже сказал, нужно больше практики чем чтения, на данных языках.

сейчас закончил книгу Моргана "JS для детей",
Уверен если возьметесь за другую любую задачу то сразу забудете знания из книги.

практика там есть, но её небольшое количество.
Скину вам пару ссылок где огромное количество практик.
JavaScript
React
Vue
Вопрос: Если кинуть тело вертикально вверх, какое будет ускорение тела в самой верхней точке?

Лучший ответ:
Нулевое.
Ускорение - это производная от функции скорости по времени, а в самой верхней точке она будет равна нулю.

Худший ответ:
На протяжении всей траектории полета ускорение тела постоянно и равно g (пренебрегая сопротивлением среды и удалением от поверхности Земли).

Отмеченный ответ о "нулевом ускорении" в верхней точке неверен и грубейше безграмотен.
Вопрос: Как заменить числовые ключи массива на соответствующие значения?

Лучший ответ:
$keys = [ 'Название', 'Цена', 'Количество' ];
$newArr = array_map(fn($n) => array_combine($keys, $n), $arr);

Худший ответ:
$flowers = array( 
                  array("розы", 100 , 15),
                  array("тюльпаны", 60 , 25),
                  array("орхидеи", 180 , 7) 
                );
$newArr = [];
foreach($flowers as $arFlower){
    [$flower, $price, $quantity] = $arFlower;
    $flowerItem['Название'] = $flower;
    $flowerItem['Цена'] = $price;
    $flowerItem['Количество'] = $quantity;
    $newArr[] = $flowerItem;
}
Вопрос: Способы подработки для Десктоп разработчика?

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

Худший ответ:
Не знаю веб или мобильных фреймворков.Разве сегодня это проблема? Месяц повтыкать в туториалы без фанатизма даст вам возможность клепать те же мобильные приложения на допустим юнити без напряга. Сидя на чистом десктопе имхо надо либо идти в жесткий корпоратив или выпустить свой продукт без аналогов(или сильно лучше конкурентов) и жить на донат/продажи/поддержку. Или искать более рыбные места, типа мобильной разработки или в веб. Там заказы помельче, но их реально МНОГО, прожить можно.
Вопрос: Как направить DNS-запрос на другой сервер для отдельного диапазона IP при помощи iptables?

Лучший ответ:
вы в DNS запрашиваете не IP, а FQDN, вот от этого и надо плясать.
если вы хотите мир резолвить через 8.8.8.8 а pc.somedomainname.ru через 192.168.0.6 то без разбора самих запросов dns это не сделать. 
Можно конечно сделать правило в iptables которое будет для пакетов на 53 порт искать слово "somedomainname" и делать DNAT в нужное место, но лучше завести свой DNS сервер и настроить forward зоны в соответствии с вашими нуждами.
вполне подойдут dnsmasq или coredns
Но вообще мало входных данных, если это все ваши сети, то почему не сделать DNS сервер с ddns via dhcp или прописать все нужные записи самому.

Худший ответ:
iptables -t nat -I -s 192.168.5.0/24 -d !192.168.0.6 -p tcp -m tcp --dport 53  -j DNAT --to-destination 192.168.0.6:53
iptables -t nat -I -s 192.168.5.0/24 -d !192.168.0.6 -p udp -m udp --dport 53  -j DNAT --to-destination 192.168.0.6:53
попробуйте так. Только что вы пингуете то? Хостнейм или айпишник?
Если айпишник, то DNS не причем.
Вопрос: Почему всем так нужен Doctrine, если он много не умеет?

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

Худший ответ:
Доктрина большая. Есть DBAL, есть квери билдер, есть ORM.
Конкретно мы используем в качестве ORM. Потому что работать с объектами удобно.   
За удобство приходится платить. 
Про "самый сложный фреймфорк" и "идола" - это, разумеется, детский лепет.
Вопрос: Как лучше сохранять параметры команды?

Лучший ответ:
Можно хранить в подобном объекте:{
    command: "перевести",
    params: ["Лёша", 100]
}

Худший ответ:
задавать описание каждой командыconst commands = [{
  name: 'transfer',
  value: /#перевести/i,
  separator: / /,
  params: ['name', 'count']
}, /* ... */];
и получать название и параметры команды в нормальном видеconst parse = (msg) => {
  const command = commands.find((item) => (msg.match(item.value) || {}).index === 0);
  if (!command) {
    return null;
  }

  const args = msg.split(command.separator).slice(1);
  return {
    name: command.name, 
    params: command.params.reduce((acc, curr, i) => ({...acc, [curr]: args[i] || null}), {})
  };
};


parse('#перевести Лёша 100'); 
/* 
  {
    name: 'transfer', 
    params: {
      name: 'Лёша',
      count: '100'
    }
  }
*/
Вопрос: Как записать несколько значений в одном поле MySQL?

Лучший ответ:
Тебе надо освоить базовые принципы реляционных баз данных
и освоить такие понятия как "отношение один ко многим" и join

Поскольку ответ на вопрос "Как записать несколько значений в одном поле MySQL?" звучит так:

завести ещё одну таблицу, в которую писать нужные значения на разных строках, вместе с id строки из основной таблицы


после этого делаешь запрос к этой таблице, передавая ид пользователя, и получаешь все его курсы

и я очень, очень очень очень очень очень очень надеюсь что видеокурсы не по программированию.

Худший ответ:
Поставьте триггер на insert для описанной вами таблице. 
Создать таблицу "config", в ней храните для каждого курса количество доступных уроков "available_lessons". 
В ранее созданном триггере получать по id курса из таблицы config поле "available_lessons" и подставлять это значение в 3 столбец вашей таблицы.
Вопрос: Как лучше захватить два ВЧ запроса для продвигаемой ниши на одной странице?

Лучший ответ:
Теоретически — всё можно. Практически — нужно смотреть кластеризацию по ТОП-у и конкурентов.
А по опыту лучше придерживаться правила "не трогать то, что работает". Любые изменения могут сработать и в негативную сторону.

Худший ответ:
У меня иногда срабатывало в таком стиле:
Title "Голоса ежиков",
H1 "Звуки ежиков".
В Description должно встречать оба слова. "Голоса" и "Звуки" в контенте можно использовать как синонимы. Потом разместить ссылки на оба словосочетания и подкрепить переходами. Но тут зависит еще от тематики, конкуренции и прочего, так что, на свой страх и риск.
Вопрос: Как устранить и не допустить появления в дальнейшем вируса WordPress?

Лучший ответ:
Я нахожу две наиболее вероятные причины взлома:

Кривые руки пользователя (это и потенциально уязвимый код и пароли по типу "qwerty1234")
Устаревшие компоненты, в которых нашли уязвимость. 


Следовательно основные меры безопасности:

Следить за обновлениями ядра.
Следить за обновлениями плагинов.
Перед установкой любого плагина смотреть когда он последний раз обновлялся, какие версии ядра поддерживает.
Следить за компонентами ОС.
Регулярно или автоматически обновлять весь софт до актуальных версий.
Не создавать пользователя с логином admin
Не создавать пользователей с легкоподбираемыми паролями.
Не публиковать и не пересылать пароли в открытых каналах или на скриншотах от таких сервисов как prnt.sc и тп.
Не копировать и вставлять на сайт код, если вы не понимаете как он работает.


В качестве дополнительных мер можно:

Использовать какой-либо плагин для ограничения попыток входа
Установить двухфакторную аутентификацию. 


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

Что можно посоветовать? 
Как минимум сменить пароли как максимум удалять все эти штуки вручную...
Вопрос: Гуманитарий и Java?

Лучший ответ:
За 20 лет в отрасли ничего сложнее арифметики мне не понадобилось. За исключением одного случая, когда я попытался сунуться в машинное обучение. Я уже писал об этом много раз.

Худший ответ:
а в IT хочется решил начать изучение HTML, CSS, в общем выбрать путь web-разработчика.
Дальше не читал.
Это глупое и непродуманное решение, о котором вы пожалеете.
Но вы ведь уже насосались статеек на Хаброке про 300k в месяц, особо не напрягаясь?
Вопрос: Как в гит сбросить файлы которые были изменены?

Лучший ответ:
Откатиться к предыдущему коммиту?
$ git log, находите и копируете номер нужного коммита.
$ git checkout, вставляете номер нужного коммита

Худший ответ:
Добавлю к данным ранее ответам:
если нужно откатить изменения конкретных файлов не внесенные в коммит:
git checkout -- path/to/file
где path/to/file - путь к файлу или папке, можно использовать обычные маски пути, если указывать папку, то откатит все вложенные в нее файлы
Вопрос: Windows10 видит ли user1, что установил user2?

Лучший ответ:
У администратора спросите. 
Как он настроит так и будет.

Худший ответ:
Все зависит от того какие права есть у пользователя
Вопрос: Как избавиться от ошибки too many open files?

Лучший ответ:
находится в интернете в первой строчке https://winitpro.ru/index.php/2019/11/19/oshibka-t...
может немного отличаться от ОС

Худший ответ:
А ulimit как повышали? Надеюсь, через /etc/security/limits.conf?
И есть еще утилита lsof -p 1753
Вопрос: Какой алгоритм текстового калькулятора лучше?

Лучший ответ:
Посмотрите на обратную польскую запись. Самое простое что может быть.
https://habr.com/ru/post/100869/

Худший ответ:
Польская запись -- простой и незатейлевый алгоритм. Работает с выражениями содержащими бинарные операции и скобки. Вероятно ваш выбор.Низходящий разбор это то что вы пытались описать под первым пунктом. Он более универсален. Позволяет разбирать более сложные грамматики c унарными операциями и контекстной завичимостью (один знак может иметь разные значения в зависимости от контекста). В этом методе больше подводных камней. Нужно изучить много теории чтобы понять как обойти некоторые сложности, например левую рекурсию. При некоторой настойчивости можно разобраться.Восходящий разбор. SLR, LALR парсеры. Активно применяются на практике. Они сложные, их нет практического смысла писать самостоятельно. Если вы будете использовать генератор парсеров Bison, то это оно.
То что вы описали вторым пунктом разбивается на выборе операции с максимальным приоритетом. В сложных случаях для этого придется разобрать выражение одним из описанных мной способов.
Вопрос: Как извлечь информацию из habr?

Лучший ответ:
https://itnan.ru/post.php?c=1&p=489348
Оно?

Худший ответ:
https://itnan.ru/post.php?c=1&p=489348
Оно?