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

Лучший ответ:
Это считается не docker-way (правильнее в отдельном контейнере запустить отдельный обработчик очереди), но можно так:

одна команда & другая команда

Можно также сделать скрипт, который всё как надо запустит, и использовать его в качестве cmd. Можно также внедрить в контейнер микросистему управления сервисами типа runit.

Почему считается, что плохо так делать? Если php-fpm упадёт, то весь контейнер упадёт и может перезапуститься автоматом. А если упадёт второй сервис, то контейнер будет работать как ни в чём не бывало.

Худший ответ:
Установите внутри контейнера Supervisor и уже в нем описывайте Ваши команды.
Вопрос: Как вывести всех родителей у подкатегории до главной категории?

Лучший ответ:
WITH RECURSIVE
cte AS ( SELECT *, 1 level
         FROM category 
         WHERE id = $category_id
         UNION ALL
         SELECT cat.*, cte.level + 1
         FROM category cat
         JOIN cte ON cat.id = cte.parent_id )
SELECT *
FROM cte
ORDER BY level;
Для древних версий:
SELECT CONCAT_WS('=>', c1.id, c2.id, c3.id, c4.id, c5.id) path
FROM category c1
LEFT JOIN category c2 ON c1.parent_id = c2.id
LEFT JOIN category c3 ON c2.parent_id = c3.id
LEFT JOIN category c4 ON c3.parent_id = c4.id
LEFT JOIN category c5 ON c4.parent_id = c5.id
WHERE c1.id = $category_id
Ну соответственно подрихтовать до нужного вида выходного набора.

Худший ответ:
В MySQL 8 решается одним запросом:
WITH RECURSIVE `cte` (`id`, `parent_id`, `title`, `n`) AS (
  SELECT `id`, `parent_id`, `title`, 0
    FROM `table`
    WHERE `id` = :categoryId
  UNION
  SELECT `t`.`id`, `t`.`parent_id`, `t`.`title`, `n`+1
    FROM `cte`
    JOIN `table` AS `t` ON `t`.`id` = `cte`.`parent_id`
)
SELECT `id`, `title`
  FROM `cte`
  ORDER BY `n` DESCОстаётся только выбрать все строки из ответа и вывести их в цикле.
Вопрос: Ошибка SyntaxError: invalid syntax как исправить?

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

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

Лучший ответ:
Зависит от вакансии. Может так оказаться, что придется заниматься почти тем же - микротики, прокси, линуха, а может - что чем-то что кардинально новое. 

Здесь проблема в другом. ИБ, если оно в конторе вообще есть (и это не Сбер, не ВТБ, не Почта России и не профильная контора по ИБ-оутсорсу) - обычно представлено в количестве одного-двух человек. У них может не быть каких-то технических компетенций, но у них есть главное - доверие. ИБ - это про лояльность к текущей конторе. Потому что как правило для ИБ не существует ограничений по правам - она им не подлежит, она сама их ставит, следовательно доверие к ней должно быть запредельным.

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

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

Лучший ответ:
У меня был такой момент что камерам не хватало питания по PoE. Хотя и дистанция была небольшой. Как вариант - если есть PoE адаптеры попробовать через него и запитаться от розетки - если после этого проблема с камерой пропадёт - проблема в питании

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

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

Худший ответ:
public static void Main(string[] args)
{
    // подождет 1с и вызовет SomeMethod 1 раз
    var t1 = new System.Threading.Timer(SomeWork, null, TimeSpan.FromSeconds(1), TimeSpan.Zero);
    // подождет 5с и будет вызывать SomeMethod раз в секунду
    var t2 = new System.Threading.Timer(SomeWork, null, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(1));
    Console.ReadKey();
}

public static void SomeWork(object state)
{
    Console.WriteLine("work");
}
Вопрос: Какое направление перспективней? UX/UI-дизайнер или 3D-моделлер? Перспектива работы с NFT-проектами?

Лучший ответ:
Выбирай то, что тебе интересно.  От чего прям руки дрожат и время пролетает незаметно. 
Я вот так по дурости ушел в конструкторы в свое время (не выбирал, просто так получилось), потерял там 10 лет с ощущением «как все достало», сейчас работаю там, где работе в кайф — вот это круто.

Звучит банально, конечно. Но стремиться надо именно к этому, а не «туда где плотют больше».

Худший ответ:
Все очевидно:
1. Выбирайте то направление, которое для вас интересней.
2. Если оба одинаково интересны - то, где больше платят (погуглите вакансии и релевантную статистику).
3. Если платят +/- одинаково - то, которое более востребовано (но тут палка о двух концах, так как больше вакансий == выше конкуренция).
Вопрос: На каких Cisco можно поднять постоянный VPN?

Лучший ответ:
тут два варианта: маршрутизатор или файрвол
дальше вам решать что вам больше подходит под ваши задачи
1. минимальный рухтер, который протащит 100 метров - ISR4331/K9 
правда надо понимать что цискина производительность считается как сумма входящего трафика по всем интерфейсам. т.е. если вам надо загрузить 100 метров в обе стороны то по цискиной математике это уже 200 метров
тут либо брать модель 4351 либо докупать к 4331 perfomance license на 300М (оно right to use так что если совесть позволит можно сэкономить)
кроме IPSec получите стандартные фишки маршрутизации: динамику, PBR, VRF, QoS, итп
плюс к этому вся ISR серия умеет в телефонию

2. файрвола хватит самого простого FPR1010-NGFW-K9
он протащит теже 300 метров как 4331 с лицензией
при этом дополнительно получите стейтфул файрвол, IPS и прочие секурити фишки если они нужны (большинство по подписке)

з.ы. маршрутизатор работает под IOS-XE и та же OS используется на всех коммутаторах каталист (это к вопросу о в будущем все на циско)
а вот в файрволах все не так
там ASA или FXOS

Худший ответ:
Покупать целую циску ради одного впна как-то странно. Думаю, что сначала нужно набросать план "как будет потом" и вписать железку, которая будет терминировать впн, в него. Может, органичнее будет и с какого-нибудь линукса поднять туннель, например. А так-то 100 мегабит может и EOL ASA5510, не говоря уж о более свежих.
Вопрос: Какой дистрибутив Linux выбрать для системного администратора и\или DevOps инженера на свой ПК?

Лучший ответ:
Системный администратор и\или DevOps инженер сам должен знать какой ему линукс нужен и для чего.

Худший ответ:
В крупных конторах чаще всего используются rhel, ubuntu и популярные облачные решения (например aws linux)
Выбирай любой. Вообще особой разницы нет.
Вопрос: Какие инструменты можно использовать для подключения к ПК с Linux с ПК с Windows по локальной сети для достижения 30-60 FPS?

Лучший ответ:
Если вас не путает проприетарное ПО — рекомендую thinlinc. Работает быстро, пробрасывает звук и USB-устройства, бесплатен для <=5 пользователей. Это один из лучших полноценных вариантов.

Худший ответ:
www.straightrunning.com/XmingNotes
меня выручил
Вопрос: Можно ли заставить SSD троттлить при менее высоких температурах?

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

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

Однако, не думаю, что получится что-то сделать легко и быстро. Не исключаю, что можно пробовать исследовать прошивку вашего ССД на предмет того, можно ли изменить этот параметр. Это вам надо делать самому, или искать людей, увлекающихся подобными исследованиями.

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

И попробуйте написать в поддержку производителю (скорее всего, на английском) - вдруг ответят что-нибудь дельное. Если сообщат что-то по теме, дайте пожалуйста, знать, мне тоже было бы интересно услышать.

P.S.
Как "костыльный" вариант - держать в трее программу наподобие https://openhardwaremonitor.org/ и вручную ограничивать нагрузку, когда увидите, что температура поднялась выше тех же 65 град. 
Также можно попробовать настроить алерт на превышение этого предела.
Вопрос: Почему при пайке, отрывая жало от точки припоя, за жалом тянется хвост?

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

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

Альтернатива - использовать жало, к которому припой не пристает вообще. Такие есть. Разумеется подача припоя и флюса становится сложнее, тут и пригодится паяльная паста. Ну а там где паяльная паста, то уже недалеко и до паяльного фена.

Еще можно купить вот такую хрень https://www.aliexpress.com/item/1005003523148728.html и паять все компоненты разом. Стоит не так дорого. Если у вас плата сделана правильно, то компоненты в перевернутом состоянии будут удерживаться за счет сил поверхностного натяжения.

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

Лучший ответ:
Если ошибка возникает на сразу после выбора раздела для установки Windows 10, 8.1 или Windows 7 и вы видите сообщение «Нам не удалось создать новый раздел (Ошибка: 0x8007045d)», при этом вы выбираете большое незанятое пространство на диске, попробуйте вручную создать раздел на этом пространстве: нажать «Создать» в программе установки и указать более скромный размер — 50-100 Гб, учитывая, что размеры указываются в мегабайтах (ошибка часто появляется на дисках размером от терабайта). Также разделы можно создать в Diskpart в командной строке, которая открывается в программе установки по нажатию Shift+F10, либо Shift+Fn+F10 на некоторых ноутбуках. Как именно создавать разделы в DISKPART — опишу далее.
Если ошибка появилась после подключения новых дисков к компьютеру, попробуйте отключить все диски и накопители (в том числе приводы компакт-дисков, необязательные на этом этапе USB-устройства), оставив только диск, на который производится установка.
Выполните проверку диска (раздела), на который производится установка, на ошибки с помощью командной строки: опять же, открыть ее можно с помощью Shift+F10 или Shift+Fn+F10 прямо в программе установки, затем использовать команду chkdsk C: /f /r (где C: — буква проверяемого диска). Учитывайте, что буквы дисков в программе установки могут отличаться от тех, что были в системе. Чтобы посмотреть актуальные буквы можно использовать по порядку команды


diskpart
list volume
exit


Если ошибка с кодом 0x8007045d возникает при копировании файлов установки и сообщает, что Windows не удается установить необходимые файлы, попробуйте следующие варианты: подключить флешку к другому разъему, желательно не через USB-хаб, а в случае ПК — на задней панели компьютера. Также может иметь смысл попробовать записать другой образ на другой накопитель. Одновременно, эта же ошибка может говорить и о проблемах с жестким диском или SSD, а в некоторых случаях — и с оперативной памятью.

Как сделать разделы с помощью DISKPART
Используйте по порядку следующие команды:

diskpart

list disk (в результате выполнения этой команды вы получите список подключенных дисков, вам нужен номер диска, на котором будем создавать разделы, далее — N)
select disk N
create partition primary size=РАЗМЕР_В_МЕГАБАЙТАХ (рекомендую установить в районе 40-50 Гб или, соответственно, 40960-51200 Мб).

Вы можете повторить команду, чтобы создать следующие разделы на этом же диске. Форматировать их не обязательно, программа установки это должна сделать сама.
После создания разделов, введите команду exit и закройте командную строку, обновите список разделов в программе установки. Выберите раздел для установки и нажмите «Далее», чтобы проверить, сохранится ли ошибка.

Худший ответ:
Скорей всего он раньше был размечен как MBR а не GPT и на нём присутствуют разделы, которые Windows не видит.
Похоже он был снят с NAS или линуксового сервера
Скачайте Стрельца, загрузитесь с него и с помощью MiniTool Partition Wizard удалите все разделы и разметку MBR
Вопрос: Какие темы из школы нужны для data science?

Лучший ответ:
Вся школьная математика (алгебра и геометрия) + теория вероятностей + статистика + прикладная статистика (две главные) + дифференциальные уравнения + частные производные + высшая алгебра + дискретная математика + численные методы + оптимизация + возможно, интегральные уравнения.

По времени, на это уйдёт примерно 11 лет школы + 6 лет вуза.

Но в реальности достаточно выучить питон и просто выполнять задания начальства.

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

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

Далее, даже если не обращать внимание на то с каких устройств заходят посетители, вам придется подстраиваться под поисковые системы, которые требуют оптимизацию под мобильные устройства. При Mobile First верстке у вас эта оптимизацию получится сама собой так как вы выбираете кратчайший путь к правильному отображению. Браузер не будет вообще применять свойства которые больше доступного размера, в то время как при first desktop будут применены все стили и переопределены, отсюда и всякие визуальные скачки при входе на сайт, которые критичны для первой отрисовки и прочие хорошо наблюдаемые не точности с отступами, вылезание блоков за пределы экрана и т.д.. А в случае, если начинают манипулировать вложенностью повышая специфичность, то первый рендеринг для мобильных устройств превращается в страдания

Кроме того, все становится более логично, шрифты увеличиваются, картинки становятся больше, как по мне это воспринимается намного легче и разгружает мозг.

От того что я верстаю через min, свойств в css файле меньше не становится. 
Ну так все приходит с опытом

Если бы я делал через min-width, то верхняя часть хедера изначально была бы скрыта (display: none), но при ширине выше, например 768px, я бы ее показал (display: block) и писал бы остальные свойства для нее в этом же медиа-запросе.
Это все нюансы, один display: block ничего не порешает. Но бывают ситуации когда стоит комбинировать и min и max, я например описываю меню в отдельных media, я не делаю общих стилей для десктопа и мобилок, потому что там общего практически ничего нет, даже цвета и шрифты иногда отличаются вот кстати размышления Вадима Макеева на эту тему, я делал так задолго до просмотра этого видео и это удобно, кроме того используя сборщик можно раскидать их в разные файлы работать как с отдельными блоками не оглядываясь на переопределения.

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

Лучший ответ:
Вам дизайнер в каждый пункт меню специально положил по прямоугольничку. Который показывает ширину каждой ссылки. И их ширина на удивление одинаковая. И отступы между элементами тоже одинаковые.

А вы его небрежным обзываете. Ну как так?


Худший ответ:
Если дизайнер проявил небрежность, пиксел-перфект (это вообще достаточно условное понятие) не нужен. Требуется сверстать аккуратно, а не точно.
Вопрос: Git — не могу понять суть?

Лучший ответ:
git hist
чтобы получить хэш конкретного коммита
git checkout <hash>
чтобы вернутся к конкретному коммиту по его хэшу

Худший ответ:
Спасибо)
git checkout  - работает)

А по названию, подскажите, как вызвать нужный коммит - например у меня -a -m"2"
 git commit -a -m"2"

Дмитрий, за вторую ссылку спасибо.
Вопрос: Зачем Visual Studio нужен свой runtime?

Лучший ответ:
Вы C++ не путаете ли с C++/CLI?

C++/CLI сделано для того, чтобы было легче с дотнетом взаимодействовать

Худший ответ:
Этот рантайм - это библиотеки для .Net

Его пришлось запилить, когда MS сделал С# и .Net. Тупо копировать туда libc++ почему-то не решили. 

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

Оно работает в c++, только если попросить visual studio компилировать под common language runtime.
Вопрос: Что надо сделать что бы таймер не сбрасывался при обновлении страницы?

Лучший ответ:
Сохранять данные в localStorage на каждом тике.
А при старте брать значение из localStorage

Худший ответ:
лучше один раз в начале определить дату-время окончания отсчёта, и её 1 раз сохранить сразу же в LocalStorage.

По таймеру показывать разницу текущего времени и «времени Че». 

Таймеры не точны. Поэтому лучше зарядить этот таймер не на 1 секунду, а чаще, на 250 мс, например — это поможет избежать иногда проскакивания секунды или, наоборот, чуть более быстрой смены.
Вопрос: Когда передавать сайт на регисрацию в поисковики?

Лучший ответ:
Вот если бы вы хлеб пекли бы, то для покупателей в магазине на полки вы бы хлеб выставляли бы или тазик с мукой и водой и табличкой "under construction"?

Худший ответ:
Когда он готов с точки зрения сео
Вопрос: С чего начать программирование физики и симуляций?

Лучший ответ:
во 1. с выбора чего то одного. 
во 2. с теории
в 3-х. Формулы
в 4-х численные методы.
в 5-х учите программирование.
и вот у вас уже есть реальные примеры расчета физики.

Худший ответ:
1) Можно посмотреть готовые библиотеки:
для воды - библиотека PhysX от Nvidia,
для деформации - Fusion360
2) есть пакеты в Матлабе (только сейчас санкции, может не пройти).
3) примеры из книг (хотя бы типа Physics for Game Developers).
Есть, конечно, и серьёзная физика - уравнения в частных производных (для полей). Расчёты тоже можно визуализировать.
Вопрос: Бесплатный VPN-плагин для хрома, чтобы переключить IP на заданную страну?

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

Возможно подойдут
browsec

Худший ответ:
Tor
Подходит по всем пунктам, кроме слов "плагин" и "хром".
Вопрос: Может ли вирус размножиться в локальную сеть?

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

Худший ответ:
Если нет пароля, то спокойно полезет по сети(локальной), по этому есть умный и тупой свитч.
Вопрос: Как работает оператор «&»?

Лучший ответ:
Хорошо работает.

Худший ответ:
Оператор & - проводит побитовую операцию and над двумя значением. Здесь бинарная 2 — это 10, а 3 — 11. Результатом побитового and является 10 — бинарная 2. Побитовое and над 011(3) и 100(4) выдает результат 000(0).
Вопрос: Если установить mysql и postgresql будут ли они конфликтовать?

Лучший ответ:
не будет.

Худший ответ:
нет, не будет.
различия только в параметрах подключения и драйверах-коннекторах к БД
Вопрос: Для чего используется «@» перед переменными в Python?

Лучший ответ:
Для того, чтобы вы задали себе этот вопрос и открыли для себя пользу учебников.  Целая глава посвящена вопросу!
spoilerЭти жулики в роликах про ботов сами этот вопрос изучили, а вас не учат, а заставляют как обезьянок повторять тупые действия. Так вам и надо, неучи. 

Худший ответ:
Это декораторы
Вопрос: Как вносить изменения в шаблон страницы без перезагрузки томкат?

Лучший ответ:
Тут говорят, что можно включить hot reload для Thymeleaf. Это позволит автоматически обновлять страницу при изменении шаблона без необходимости перезапуска сервера. Для этого нужно добавить следующие строки в файл application.properties:

spring.thymeleaf.cache=false
spring.thymeleaf.enabled=true

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

Худший ответ:
Благодарю за ответы!
Вопрос: Резиновые наклейки с обратной стороны экрана планшета, из чего сделать?

Лучший ответ:
Скорей всего это демпфер от продавливанис экрана. можно клеить

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

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

А вообще, если ты хочешь посмотреть что же получаем из пост запрос, просто делай запись в файл, так будет проще понять где ошибка и тд. К примеру
import requests

getpost = requests.get('https://www.parimatch.ru/')
with open('log.html', 'w', encoding='utf-8') as f:
	f.write(getpost.text)
Далее сможем открыть эту страничку, и посмотреть что нам загрузило.

В основном как мы видим, есть лишь пустая старничка с заставкой. Значит инфа вся подгружается скриптом.

Ещё раз повторюсь, что не всё так просто, но за то весело устроено. :D

Я вот пока посмотрел, матчи сначала подружаются get запросом по адресу https://www.parimatch.ru/api/top-matches в формате:
spoiler"abTestLabel":null,"topEvents":[{"id":"F","eventList":["1|6154167","1|6154172","1|6154171","1|6154169","1|6153670","1|6154164","1|6154166","1|6154165","1|6154170","1|6154168"]},{"id":"CS","eventList":["1|6193860","1|6173617","1|6193859","1|6161642","2|6192368","1|6193855","1|6193858","2|6191488","2|6192369","2|6191486"]},{"id":"H","eventList":["1|6185855","1|6185856","1|6174639","1|6174637","1|6174635","1|6174636","1|6190210","1|6174680","1|6174948","1|6179742"]},{"id":"B","eventList":["1|6173785","1|6173786","1|6173784","1|6173976","1|6174103","1|6173789","1|6173929","1|6166406","1|6166663","2|6188578"]},{"id":"T","eventList":["1|6189125","1|6192182","1|6191996","1|6190277","1|6190232","1|6189853","1|6192338","1|6192328","2|6186610","1|6191995"]},{"id":"TT","eventList":["2|6193585","2|6192227","2|6193586","2|6193234","2|6193462","2|6193912","2|6192904","1|6193575","1|6193624","1|6193623"]},{"id":"VB","eventList":["2|6187527","1|6187528","1|6191657","1|6187530","1|6186281","1|6177549","1|6186390","1|6186283","1|6186388","1|6186284"]}],"source":"TopMatch"}
С которого по этим данным отправляется запрос в БД на получение данных по адресу
https://www.parimatch.ru/content/strapi/system/graphql?

query: "query getData($id: [String]) {events(where: {id: $id}) { slug, id, sportCode, categoryId, tournamentId }}" В котором в параметрах даты передаются ID матчей что получены с первого запроса "variables":{"id":["6173617","6154171","6154169".

Надеюсь помог. :g

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

Лучший ответ:
Зачем столько гемороя если есть официальное api?
api.steampowered.com/ISteamApps/GetAppList/v0001 - список всех приложений
store.steampowered.com/api/appdetails?appids=43864... - информация о приложении appids, код страны из которой запрос - cc
цены в центах [App Id] > data > price_overview
(взял это отсюда)

По уму документация тут, ллидербоард тут

Худший ответ:
P.S. Мой код выдает ошибки.
Какие ошибки выдаёт?