Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как лучше сделать темную/светлую тему для сайта?

Лучший ответ:
Так можно изменить ссылку на стиль
<!DOCTYPE html>
<html>
<head>
	<title></title>

	<link rel="stylesheet" type="text/css" href="light.css" class="style">
</head>
<body>

<button id="color">Сменить цвет</button>

<script type="text/javascript">
	if (localStorage.getItem('style') == 'dark') {
		document.querySelector('.style').href="dark.css";
	}
	document.querySelector('#color').onclick = function (){
		if (document.querySelector('.style').getAttribute('href') === 'light.css') {
			document.querySelector('.style').href="dark.css";
			localStorage.setItem('style', 'dark');
		} else {
			document.querySelector('.style').href="light.css";
			localStorage.setItem('style', 'light');
		}
	}
</script>

</body>
</html>

Но лучше использовать селекторы чтобы менять стиль. И использовать один css файл

<style type="text/css">
	body {
		background: #fff;
		color: #000;
	}
	#color {
		color: #fff;
		background: #000;
	}
	.dark {
		background: #000;
		color: #fff;
	}
	.dark #color {
	color: #000;
	background: #fff;
	}

</style>



<button id="color">Сменить цвет</button>
<script type="text/javascript">
	if (localStorage.getItem('style') == 'dark') {
		document.body.classList.toggle('dark');
	}
	document.querySelector('#color').onclick = function (){
		document.body.classList.toggle('dark');
		if (document.body.getAttribute('class') == 'dark') {
			localStorage.setItem('style', 'dark');
		} else {
			localStorage.setItem('style', '');
		}
	}
</script>

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

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

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

Лучший ответ:
В общем, МелкоСофт не предпологает такой сценарий использования. Хотите сетевое сканирование - купите сетевой сканер.

https://answers.microsoft.com/en-us/windows/forum/...

В не зависимости от вариантов предложенных по ссылке - это все костыли.

Худший ответ:
На линуксе я реализовывал такой сценарий использования saned умеет общаться по сети между двумя компами. Для винды тоже реализуемо но путем стороннего ПО:
клиент: https://sourceforge.net/projects/sanewinds/files/
а вот сервер не удалось найти - только к компу с линуксом подключать

Можно сделать сканирование в папку каким нибудь Scan2pdf и забирать из этой папки расшарив ее.
Вопрос: Укрепить знания PHP велосипедом или через фреймфорк?

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

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

Лучший ответ:
Это проблема на стороне библиотеки telebot'а. Выхода тут два:

1) Ставишь запуск программы с помощью systemd утилиты. В ней в настройке [service] укажи Restart=on-failure. В этом случае если скрипт завершится, то systemd его перезапустит. Ну или поставь перезапуск каждые 30-60 минут.

2) Переходишь и переписываешь на aiogram. В 2015-2017 годах, возможно, либа telebot была актуальна, но прогресс не стоит на месте. А telebot, увы, стоит. Кривая реализация поллинга, проблемный next_step_handler, медленная поддержка новых версий Bot API и т.д.

Аргументы для перехода на aiogram:


это полноценный фреймворк, т.е. позволяет сделать больше полезных вещей;
асинхронный, что делает его быстрее в некоторых задачах;
поддерживается Python 3.7+ и выше, что сподвигнет обновить свой старенький интерпретатор и использовать новые возможности языка;
множество встроенных «помощников» (синтаксический «сахар»), улучшающих читабельность кода;
оперативные обновления (поддержка новых опросов появилась в тот же день, что и в самом Bot API);
русскоязычный чат поддержки и обсуждений, где сидит, в том числе, и сам разработчик фреймворка;
мой любимый пункт: нормально работающий поллинг.


(https://mastergroosha.github.io/telegram-tutorial/...

Лично я выбрал второй путь.

Худший ответ:
Возьми в try/except и поставь таймер 

try:
     #Твой код

except:
     time.sleep(10) # Таймер на 10 секунд
Вопрос: Windows 7 к 10, безопасно ли?

Лучший ответ:
Посмотрите список его зависимостей - там куча системных dll - что не удивительно. Придется заменять и их, скорее всего. А тогда отвалятся другие программы, использующие те же системные библиотеки. И придется еще и их заменять... И в итоге вин7 превратится в вин10 полностью )))

Худший ответ:
Поставь Virtual Box, установи win7, замени файлы, проверь че будет.
спойлерРаботать не будет

P.S. а в чем собсна будет профит? Ты думаешь заменятся окна? Ну так нет, не заменятся. Менять нужно целиком DE, что в винде не возможно. Можно использовать свою DE поверх системной.
Вопрос: Сравнение двух массивов в Powershel?

Лучший ответ:
Вам потребуется преобразовать ваши hastable в [PSCustomObject] и
  изучить возможности Compare-Object

Преобразовать просто - [PSCustomObject]$hastable
А потом, когда у вас будут объекты, а не хеши, их можно сравнивать по отдельным свойствам
В частности, можно будет попробовать
#...
# вместо # $stammArtikelWebseite += $newRoW
$stammArtikelWebseite += [PSCustomObject]$newRoW
# ...
# то что в $Import - уже объекты, их можно менять на месте
# или также из вашего хеша сделать 
# вместо # $stammArtikelcsv += $newRow1
$stammArtikelcsv += [PSCistomObject]$newRow1
#...

# А потом:
Compare-Object -ReferenceObject  $stammArtikelWebseite  -DifferenceObject $stammArtikelcsv -Property preisohne

Худший ответ:
$tupel1 = [System.Tuple]::Create(1, "cisco", 100)
$tupel2 = [System.Tuple]::Create(1, "cisco", 200)
$tupel3 = [System.Tuple]::Create(1, "cisco", 100)

$tupel1 -eq $tupel2
$tupel2 -eq $tupel3
$tupel1 -eq $tupel3

Есть такие тупли )))
aka картежи, их можно сравнивать целиком

False
False
True
Вопрос: Сохраняет ли getimagesize() изображение на сервер?

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

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

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

Худший ответ:
У каких, пардон, "приложений"?
Вопрос: Как перенести ключи от Github на новый комп?

Лучший ответ:
Можно скопировать .ssh на новый комп.

Худший ответ:
Вам правильно предложили, варианта два: Создать новый ключ для компа и добавить на GitHub Скопировать папку с ключами
Я лишь немного дополню, в зависимости от ОС, которую вы используете папка может находиться: Windows - в папке текущего пользователя: C:\Users\{Имя пользователя}\.shh Linux (я пользуюсь Ubuntu, поэтому с уверенностью говорю за неё, но думаю на других сборках ситуация +\- такая же)  - папка находиться по пути ~/.ssh. Можете зайти через файловый менеджер в папку Home (это и есть ~/) и там найти необходимую папку. Если папку не видите, как вариант, нажмите сочетание ctrl+h (отображает или скрывает, скрытые файлы, извиняюсь за тавтологию :) )
Вопрос: Как правильно создать экземпляр Psr\Http\Message\ResponseInterface?

Лучший ответ:
нельзя создать объект из интерфейса

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

Лучший ответ:
Я же еще в прошлом вопросе написал как это сделать.
Зачем 3 листа, если можно использовать один List.
И чтобы заполнить этот лист нужно всего лишь выполнить десериализацию.
https://docs.microsoft.com/ru-ru/dotnet/standard/s...

Худший ответ:
Решено! 
var des = JsonConvert.DeserializeObject<List<Settings>>(File.ReadAllText("settings.json"));
            foreach(string i in des[0].keys)
            {
                Console.WriteLine(i);
            }
Вопрос: Как освоить Git и Gitlab?

Лучший ответ:
Рекомендую progit

Худший ответ:
Рекомендую progit
Вопрос: Могут ли макросы Excel подгрузить информацию в документ из сети?

Лучший ответ:
Вот так:
Private Function getData(strUrl As String) As String
   Dim http As Object

   On Error Resume Next
   Set http = CreateObject("MSXML2.XMLHTTP")
   If Err.Number <> 0 Then
     Set http = CreateObject("MSXML.XMLHTTPRequest")
   End If

   On Error GoTo 0
   If http Is Nothing Then
     getData = ""
     Exit Function
   End If

   http.Open "GET", strUrl, False
   http.Send

   getData = http.responseText
   Set http = Nothing
End Function

Худший ответ:
технически  существует Selenium для VBA
https://www.guru99.com/excel-vba-selenium.html
(эту страницу перевели:
https://coderlessons.com/tutorials/kachestvo-progr...
- но по моему гораздо проще использовать Selenium c Powershell и  при помощи повершела создавать документ эксель
Вопрос: Стоит ли сейчас покупать Macbook на Apple Silicon?

Лучший ответ:
Ябывзял.

Худший ответ:
Сейчас. свои мысли озвучу, все ИМХО конечно. 

Предыстория:
Я продал свой старый мак 15" месяца 3 назад, как раз в ожидании силиконов осенью (да и получилось продать неплохо его).  Работаю на 13шке жены, и даже привык заново к его размерам. Благо сейчас работа позволяет безболезненно на нем сидеть, в 13шке видео монтировать крайне неудобно было.  

1) Я ждал 15-16 на silicon это осенью, релиза не произошло. Вроде поговаривают о том что ноут будет зимой представлен. Не знаю готов ли ждать, и думаю пока не вышел, взять 16pro б.у. поиграться, а будет релиз силиконов, продать свой и купить силикон. 

2) Говорят, что 13про на силиконе рвет 16про, я очень жду 18 ноября, чтобы убедиться в этом. И как раз с этого момента я буду принимать решение, ждать ли мне зимой 16про. 

3) Если   пугает этап обновления приложений, которые критичны для вас, то пожалуй, я бы не рекомендовал бы вам мак на силиконе. Но думаю, что докер и jetbrains запустятся скоро. тем более у jetbrains статус - 
Current Status: JetBrains is working on porting JetBrains Runtime (and all products running on JVM) to Apple Silicon. Our IDEs work on Apple Silicon chips through Rosetta 2. 

Лично мое ИМХО - я его ждал, и хочу купить. Но пока плаваю между - 
macbook 13 silicon - маловероятно
macbook 16 pro 32gb бу - пока не будет полноценной информации и тестов, на полгода попользоваться и слить. 
теоретический 16pro silicon - вот его я жду. Но как показвыает практика, иногда можно ждать очень долго. 

В любом случае, при прочих равных, я бы брал силикон версию.
Вопрос: Как понять архитектуру серверов без документации к нему?

Лучший ответ:
Ахахах... В свое время мне оставили в поддержку несколько десятков серверов - на разных ОС - OpenBSD, FreeBSD, CentOS, Windows Server, а в то время я только Red Hat  Linux немного ковырял...
Просто потому что больше не на кого было хозяйство оставить.
В первую очередь я делал бекапы всех конфигов, до которых можно дотянуться. Потом - брал доки и пытался во всем разобраться самостоятельно. Разбирал конфиги. Обошлось без бегания по форумам. Просто пришлось много работать собственной головой, что в конечном итоге дало немалый профит к опыту.

Худший ответ:
Первым делом определите назначение сервера - веб, файловый, принт и пр.
Для этого найдите там соответствующие службы, можете просто ввести от рута:
systemctl --type=service
И посмотрите. Дальше по ситуации, если найдёте, например, nginx - смотрите его конфиги.
Вопрос: Можно ли ускорить архивацию/разархивацию за счет распараллеливания ??

Лучший ответ:
7z еще лет десять назад начал поддерживать многопроцессорную обработку архивов. Его собственный алгоритм потяжелее zip, но распаковывать zip-ы он тоже умеет.
7z -mmt={количество потоков}

Худший ответ:
Параллельные вычисления ускоряют CPU bound задачи.
Вопрос: Как собрать из массива объект, разбивая каждый элемент массива на ключ/значение по разделителю «=»?

Лучший ответ:
Метод массива reduce вам поможет

Худший ответ:
Object.fromEntries(new URLSearchParams(arr.join('&')))
или

arr.reduce((acc, n) => (
  n = n.split('='),
  acc[n[0]] = n[1],
  acc
), {})
или

Object.assign(...arr.map(n => n.match(/[^=]+/g)).map(([ k, v ]) => ({ [k]: v })))
или

eval(`({${arr.map(n => `"${n.replace('=', '":"')}"`)}})`)
Вопрос: Почему программу дія для удостоверения личности так работает?

Лучший ответ:
При возникновении любого подозрения вам просто откажут в покупке. Или попросят предъявить паспорт как "документ удостоверяющий личность". 
За подделку приложения вряд ли что то сделают, а вот за действия, совершенные при помощи подделки - запросто.

Худший ответ:
По поводу не прав относительно чего? Просто почитайте закон, я думаю там 100% будет какая-то закономерность к приложению на высоком уровне или подтверждение, они же тоже не "глупые", вдруг кассиры смотрят не на возраст, а на какой-то скрытый номер/реестр в вашем телефоне и уже потом на возраст)
Вопрос: В чем ошибка в разделение сетевого кабеля на двойную сетевую розетку?

Лучший ответ:
ошибка в том, что делать так не нужно
если уж очень хочется - то проконтролируйте, что 1,2,3,6 контакты на коннекторах в комп и в свитч совпадают. по вашим картинкам ничерта не понятно обжат стандартно бел ор., ор. бел. зел., зел., бел. син., син., бел. кор., кор.это что это за стандарт такой ?

Худший ответ:
Только недавно пробовал так сделать,  нужно было на неделю поставить  пару принтеров, а кабеля тащить 50 метров по складу.  Так вот даже на парах оранжевой и зеленой линк не поднялся (синея и коричневая аналогично)
Притом по флюку всё правильно было обжато, но тест даже на 10мб не проходил такой вариант.
Вопрос: Бесплатная альтернатива Антивируса Зайцева (AVZ)?

Лучший ответ:
По классификации вахтёры-сыщики AVZ - типичный "сыщик" Очень жаль, что Зайцев бросил своё детище - "сыщиков" совсем немного, и лично я знаю ещё только один - это Malwarebytes Anti-Malware.
Но тут есть нюанс. Дело в том, что сейчас компания Malwarebytes предлагает пользователям версию 3, которая, во-первых, стала платной, и во-вторых, стала "как все", т.е. превратилась в унылого банального "вахтёра". Поэтому если хотите воспользоваться элементами "сыщика" в этом антивирусе, придётся отыскать предыдущую версию, не позже 2.2. Естественно, даже в версии 2.2 этот антивирус будет склонять вас на то, чтобы обновиться до 3 - не поддавайтесь на эти намёки, кликайте кнопку "позже". А что касается антивирусных баз - свежие их версии автоматически, в начале проверки, прекрасно качает и версия 2.2, так что специально об этом вам заботиться не надо (если не считать забот о наличии связи с интернетом). Просто выберите, что проверять, и стартуйте.
UPD: Вадим, спасибо за пополнение списка действующих "сыщиков" (имею ввиду, естественно, Universal Virus Sniffer). Скачал, попробую пользоваться.

Худший ответ:
Попробуйте антивирус на основе clamAV. Это свободный антивирус. Но если вы человек верующий, предупреждаю, логотип у него в виде черта.
Вопрос: Как дописать в файл?

Лучший ответ:
просто дописать в файл можно просто открыв его с нужными флагами - https://nodejs.org/dist/latest-v12.x/docs/api/fs.h...
другой вопрос в том что файл имеет определенный формат и просто взяв и дописав в конец файла его можно поломать

Худший ответ:
Никак. Возможно стоит рассмотреть добавление базы данных в проект
Вопрос: Как сделать проверку на наличие определенного числа в базе данных (SQLite)?

Лучший ответ:
Вот набросал вам самый простой код, поиграйтесь с ним. Тут нет ничего сложного:
import sqlite3

conn = sqlite3.connect('users.db')
cursor = conn.cursor()

name = input('Введите имя пользователя: ')

cursor.execute('SELECT status FROM Users WHERE username = ?',(name,))

result = cursor.fetchone()[0]
if result == 3:
	print('Вы администратор')
else:
	print('Вы обычный пользователь')
Структура базы:


PS: Как сделать чтобы в базе искалось все таблицы где в status указано 3. у вас несколько таблиц? Зачем?

Худший ответ:
По хорошему нужно 2 таблицы и внешний ключ :
create table `rules` (`id` INT PRIMARY KEY, `rule` VARCHAR(50));
insert into  `rules` (`id`, `rule`) VALUES (1, 'user');
insert into  `rules` (`id`,`rule`) VALUES (2, 'moderator');
insert into  `rules` (`id`,`rule`) VALUES (3,'admin');
                                                           
create table `users` (`telegram_id` INT PRIMARY KEY, `username` VARCHAR(50), `status` INT, FOREIGN KEY (`status`)  REFERENCES `rules` (`id`));
insert into  `users` (`telegram_id`, `username`, `status`) VALUES (555, 'user555', '1');     
insert into  `users` (`telegram_id`, `username`, `status`) VALUES (666, 'user666', '2'); 
insert into  `users` (`telegram_id`, `username`, `status`) VALUES (777, 'user777', '3');
insert into  `users` (`telegram_id`, `username`, `status`) VALUES (888, 'user888', '3');

далее делаем запрос чтобы найти админов:
select u.username from users u 
left join rules r
ON u.status=r.id
where id=3;

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

Лучший ответ:
Например,
while (users.length) {
    let part = users.splice(0, 3);
    // что-то делаем с part
}

Худший ответ:
как вариант можно так
snippet
Вопрос: Vue — как встроенное приложение?

Лучший ответ:
Если не нужна поддержка IE11 и Safari - можно использовать web-компоненты и просто подключать стили внутри компонента - они инкапсулируются, иначе придётся покорячиться.

Как это сработает с vuetify не скажу, но в похожей ситуации я использовал postcss-prefix-selector, просто добавив с помощью него короткий класс-префикс для всех стилей либы. Соответственно этот класс назначаешь на контейнер с vue и, при удаче, всё заработает.)

Мне, увы, там ещё кастомный трансформ пришлось добавить для корневых (body, :root и т.п.) селекторов, попатчить саму либу местами и проследить чтобы теперь основные стили сайта не перебивали классы либы, но это уже отдельная история.)

P.S. Для работы postcss-prefix-selector с vue-cli не обязательно вручную вкорячивать loader, можно его просто добавить в .postcssrc.js в plugins: require('postcss-prefix-selector')({
    prefix: '.prefix'
}),

Худший ответ:
без использования iframe
Переписать стили vuetify с учётом специфичности селекторов.
Вопрос: Подойдет ли Lenovo IP3 17IML05 (парам. внутри) для верстки?

Лучший ответ:
Проц нормальный, должен потянуть. 
Память желательно добавить, 8 — это впритык. 
15" достаточно, но это индивидуально. 
17" лучше, конечно. Хотя, если планируете ходить-ездить-летать, то тяжеловат будет.

Худший ответ:
Pentium/Core i3 это неудачный выбор для таких задач, которые вы обозначили. Они будут тянуть плуг ваших задач какое-то время, но совершенно без запаса на будущее.

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

Покупая технику из нижнего сегмента вы подставляете сами себя в будущем.

Я бы смотрел Lenovo S-серии, у которых как минимум Core i5 или Ryzen 5.
Вопрос: Почему неправильно работает этот код?

Лучший ответ:
1. Integer - неизменяемый. 
2. https://stackoverflow.com/a/40523
import java.util.Scanner;

public class Main {
    private static Integer invertDigits(Integer number) {
        Integer temp = 0;
        while (number != 0) {
            temp = temp * 10 + number % 10;
            number /= 10;
        }
        return temp;
    }

    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        Integer number;
        System.out.print("Enter number: ");
        number = scanner.nextInt();
        System.out.println("Reverse digit order: " + invertDigits(number));
    }
}

Худший ответ:
1. Integer - неизменяемый. 
2. https://stackoverflow.com/a/40523
import java.util.Scanner;

public class Main {
    private static Integer invertDigits(Integer number) {
        Integer temp = 0;
        while (number != 0) {
            temp = temp * 10 + number % 10;
            number /= 10;
        }
        return temp;
    }

    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        Integer number;
        System.out.print("Enter number: ");
        number = scanner.nextInt();
        System.out.println("Reverse digit order: " + invertDigits(number));
    }
}
Вопрос: TryAdd в Dictionary есть?

Лучший ответ:
Держите  возможно они там что то попутали
public static class Extensions
    {
        public static bool TryAdd<TKey, TValue>(this Dictionary<TKey, TValue> dictionary, TKey key, TValue value)
        {
            if (dictionary.ContainsKey(key))
            {
                return false;
            }
            dictionary.Add(key, value);
            return true;
        }
       public static bool TryAdd<TKey, TValue>(this Dictionary<TKey, TValue> dictionary, KeyValuePair<TKey,TValue> value)
        {
            return TryAdd(dictionary, value.Key, value.Value);
        }
    }

Худший ответ:
Видимо вы используете старую версию дотнета.
TryAdd появился в .net core 2.0 и .netstandart 2.1
Его нет в .net framework и в .netstandart 2.0
Вопрос: Как долго прослужит процессор при активном рендере 3D сцен?

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

Худший ответ:
Тут скорее важна температура, а так если повезло с процом то может и вас пережить
Вопрос: Как в цикле в последнем значении не ставить /?

Лучший ответ:
В данном случае проще не использовать цикл.
<?php echo implode('<b>/</b>', array_column($product['qt'], 'name')); ?>

Худший ответ:
Проще не выводить такую штуку перед первым элементом
Просто заведите флаг isFirst, который на первой итерации цикла будет true, а на последующих - false
(Через if)
Вопрос: Каким образом с формы пхп передать данные POST, обработать и открыть модальное окно?

Лучший ответ:
я читал ajax, но очень мало
Теперь читайте и пробуйте больше. Пора.

Худший ответ:
Гуглите как использовать jQuery.ajax()
Если я не ошибаюсь, то jQuery из под коробки присутствует в BOOTSTRAP.
Вопрос: Закончил свой первый проект на React+Redux, может ли кто-нибудь посмотреть и сказать над чем поработать?

Лучший ответ:
first_section, second_section и так далее — не лучшие имена компонентов. Что за первый второй компонент? А если компоненты поменять местами, то логика сохранится?

Мне это кажется не удобным.

Почему? В чём будет разница между css и sass файлами? В конечном итоге это всё должно скомпилироваться в один единый код.

my-container — твой контейнер и твой. А почему твой и чем отличается это не ясно.

В общем предлагаю начать с именования. Тут много мест, где с этим можно поработать. Вот я посмотрел, будучи не в курсе, что за проект и ничего не понял из имён компонентов и классов

Худший ответ:
Компоненты с больших букв называют, и по поводу scss, структура примерно такая 
Папка components в ней большими буквами папка MyComponent внутри нее MyComponent.js и MyComponent.scss 
И внутри скриптового файла имаортируешь 
'. /MyComponent.scss'
Поэтому это нормально использовать препроцессор
Вопрос: Как опубликовать react приложение?

Лучший ответ:
Можно на любом хосте для сайта.npm run build
Переносите build на ваш сайт
В .htaccess пишите
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
AddDefaultCharset utf-8

Худший ответ:
А не проще создать символьную ссылку на папку? 
Например:
ln -s build/ public_html
Вопрос: Для чего в макете дизайнер указал значение matrix?

Лучший ответ:
Это не он указывал, а фигма. 
Как и значения position: absolute, left и top.

Худший ответ:
Это не он указывал, а фигма. 
Как и значения position: absolute, left и top.