Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Можно ли доверять ookla speedtest?

Лучший ответ:
Можно ли доверять ookla speedtest?Разумеется. 
Там все честно показано.
Главное понимать что конкретно вы измеряете!  Все вопросы обычно идут от непонимания того, что пытаются измерить.

когда-то где-то от кого-то слышал, что ookla сотрудничает с операторами и показывает завышенные скоростиНу в сети какой только чуши не услышишь.

Как видите, показания отличаются значительноРазумеется. Они и должны отличаться.

На реальных задачах серьезной потери скорости не вижу.О какой потери скорости идет речь?

Когда вы измеряете скорость - вы измеряете скорость до определенного сервера, по определенному протоколу, в определенный момент времени.

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


Худший ответ:
Зависит от сервера, на котором проходите тест. ookla, например(по-моему?) ищет серверы недалекие от вас, возможно еще и по пингу. В то время как другие могут использовать 1 сервер для всех, который расположен где-нибудь в тундре. И если такой сервер может отдать максимум 100Мбит, а у вас 400, тогда такой спидтест и покажет примерно 80 Мбит.
Проверял свою скорость только что на ookla и www.testskorosti.ru. Я живу в Запорожской обл. Скорость 45 Мбит. ookla показал 50 МБит, больше чем testskorosti - 19.3 МБит. Хотя практически все файлы качаются по 5,7 МБ(Мегабайт) в секунду. Но тут стоит обратить внимание, что ookla
выбрал тестовый сервер в Мариуполе, который от меня примерно 80 км, в то время как testskorosti выбрал сервер в Москве, которая от маня более 1000 км.

PS: testskorosti.ru - такое чувство, что название сайта придумали какие-то школьники. Не очень доверяю сайтам, с таким названием.
Вопрос: Где развлекаться дизайнеру в онлайне?

Лучший ответ:
https://www.youtube.com/c/uprockpro
Чат канала https://t.me/designwrite
Еще один чат - https://t.me/ne_znal_talk

Анастасия, поделитесь и вы :)

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

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

Кэш служит для ускорения доступа к данным, а не для их хранения

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

Лучший ответ:
ОЧЕНЬ люблю таких ребят :) 

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

таких вопросов уже была уйма, но специально для тебя вкратце напишу еще раз: ЛЮБАЯ ИДЕЯ НИЧЕГО НЕ СТОИТ. любой код достаточного объема, увы, имеет кучу костылей и спорных решений, поэтому легче написать с нуля свое, чем взять код из готового проекта. 

кроме того, во-первых, 90+% трат — маркетинг и продвижение, код (тем более, идея) — вторичен, во-вторых, что будем делать, когда конкуренты на коленке запилят клоны, м? любая коммерчески выгодная идея будет скопирована сотни раз, запатентовать такие вещи нельзя по большому счету.

из вариантов — не выкладывайте разработчикам планы на развитие проекта. этого будет достаточно. то есть фичи должны быть только у тебя (в голове или на бумаге, не важно), и должны раскрываться по ходу разработки. можно подписать NDA (если в юрисдикции США) или договор о неразглашении / коммерческой тайне, но это, извини, пердеж на зажигалку.

Худший ответ:
Изоляция модульных блоков через заранее созданный интерфейс-"клей".
Вопрос: Где можно заказать code review?

Лучший ответ:
Артур, я посмотрел куски кода в твоих последних вопросах. Если ты продолжаешь игнорировать PSR-2 и использовать нестрогое сравнение (if ($this->get('parametr') == 1)), то нечего пока ревьювить, всё плохо.

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

Лучший ответ:
Можно ли эксель назвать субд?
Тогда и текстовый файл это тоже СУБД.
И берестяная грамота туда же.Microsoft Access - вот это можно назвать СУБД.
А Excel это табличный процессор.

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

Лучший ответ:
От одного до бесконечности.

Худший ответ:
Сайт сайту рознь.

Обычный гомно-сайт - 1 человек (так называемый веб-мастер - чуть-чуть программист, чуть-чуть верстальщик, совсем чуть-чуть - дизайнер, в общем, сам себе и режиссер, и жнец, и дудец).
Этапы:

Беседа с заказчиком 
Подбор/покупка подходящей темы для CMS или HTML-шаблона
Установка темы ("натягивание" HTML-шаблона) на CMS, правки и кастомизация темы/шаблона, наполнение контентом 


Классический сайт с хорошим бюджетом и классической схемой разработки (как в старые добрые времена) - 5 человек.
Этапы:

Консультация менеджера, составление ТЗ, отрисовкка мокапа (схематичного прототипа) 
Дизайнер выполняет дизайн-макет  
Верстальщик выполняет верстку дизайн-макета ("переносит картинку в HTML и CSS") 
Программист выполняет интеграцию получившейся верстки с CMS (или разрабатывает бэкенд), заливает сайт на хостинг 
Контент-менеджер и/или SEO-специалист занимается(-ются) наполнением сайта контентом и поисковой оптимизацией) 


Веб-приложение, веб-сервис и т.д. (сложные и масштабные заказы, в том числе из разряда "а мне вот сайт нужен, как Авито"). Необходимый минимум - предположительно 4 человека: менеджер, архитектор, фронтенд-пограммист, бэкенд-программист.

Всё это грубо и утрировано, по всем пунктам можно долго спорить (особенно в последнем варианте). Но чтобы представлять картину вполне себе информативная схема, мне кажется.
Вопрос: Где можно купить адаптер для ssd pci-e?

Лучший ответ:
У вас разъём M.2 B & M key. Вам подойдёт, например, Simplecom SA221.

Худший ответ:
их как * , как и для других интерфейсов
правильно киворды подберите
www.alizona.ru/promotion/promotion_m.2-ssd-usb-pro...
Вопрос: Что за flat, как это работает?

Лучший ответ:
Переменная flat хранит промежуточный результат.
Вот тут можно почитать про reduce подробнее.

Худший ответ:
Ну вроде бы ответ есть.
Вопрос: Что сейчас стоит изучать, html,css,js + углублено php или лучше js+фреймфорк типа react, angular?

Лучший ответ:
Вопрос некорректен потому что JS-фреймворки это не что иное, как JS с оберткой. Не знаешь JS не суйся во фреймворки. А чтобы стать фронтом — HTML + CSS + JS. Потратить какое-то время, чтобы хотя бы обзорно понимать, как работает бэк на примере того же PHP тоже можно.

Иными словами:
1. Не зная CSS и HTML не сможешь собрать морду;
2. Не зная JS ты не сможешь оживить эту морду.

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

Лучший ответ:
Главный совет: занимайтесь этим только, если это вам нравится. Если вы занимаетесь этим только из-за денег, то вас ждет большое разочарование, а рынка ждет очередной вайтишник. 
Хорошо подумайте, реально ли вам это интересно, или же стоит заняться чем-то другим? Я знаю кучу людей, которые поняли, что это веб - это не их, но они продолжали учится исключительно из-за сказок про бешеные бабки на фрилансе. Есть множество более творческих профессий, может быть у вас к чему-то другому лежит душа? Ну а если вы все-таки прирожденный веб-разработчик, то вам стоит начать с:JavaScript - learn.javascript.ruPHP - у Дэвида Скляра есть очень неплохая книга. Самое то для начинающих.
Дальше можете приступить к фреймворкам, разрабатывать себе портфолио и возможно даже пытаться брать первые заказы. Но насчет последнего - торопиться не стоит.

Худший ответ:
1. Научитесь устанавливать и хорошо администрировать WP: настраивать доступы, права, почту и прочее.
2. Научитесь создавать WP-шаблоны по макету заказчика (документация по созданию шаблона, js/css).
3. Выучите PHP и фреймворк, чтобы писать модули для WP.
Как только сможете делать всё до конца и качественно - тогда сможете зарабатывать.
Вопрос: Как можно сократить данный код?

Лучший ответ:
Если бы был порядок и полное совпадение имен переменных и классов, можно часть сократить так:const buttons = {};
'all,love,chef,girl,boy,grandma,grandpa'
  .split(',').forEach((name) => buttons[name] = menuWrapper.querySelector('.' + name));Использовать потом, например, вместо girlButton — buttons.girl

Худший ответ:
Добавить функцию, например:
function _(x) {return document.querySelector(x); }
И сразу вставлять в код типа:
_('.a').style.color = 'red';

Короче не придумать, так как тут нет чего-то общего, что можно заменить.
Вопрос: Какой IT факультет выбрать в вузе?

Лучший ответ:
востребованным
Востребованным можно быть в любой области. Главное, быть профессионалом в ней. Для этого нужно получить профильное образование и хороший опыт (практику). А что именно выбирать - зависит от ваших предпочтений. За вас никто не решит, что вам нравится, а что - нет.

Худший ответ:
Вы правда думаете, что кто-то будет сейчас искать информацию по всем этим программам в вашем институте (вы бы хоть написали, какой ВУЗ рассматриваете, у всех разные программы по одним и тем же специальностям) и потом даст на блюдечке ответ? Нет.
Заходите на сайт ВУЗа, затем ищите программы по этим специальностям. Изучайте их и сравнивайте между собой, думайте, что для вас было бы интересно и в целом востребовано. Это и выбирайте.
Вопрос: Как использовать useStore, useSelector, useDispatch hook?

Лучший ответ:
1. useDispatch - получение функции store.dispatch в компоненте. Раньше для вызова action функциональный компонент приходилось оборачивать в вызов connect:const Foo = ({ dispatch }) => {
  const handler = useCallback(() => {
    dispatch(action());
  }, []);

  return (
    <Bar onClick={handler} />
  );
};

export default connect()(Foo);
Сейчас:const Foo = () => {
  const dispatch = useDispatch();

  const handler = useCallback(() => {
    dispatch(action());
  }, []);

  return (
    <Bar onClick={handler} />
  );
};

export default Foo;
2. useSelector - маппинг значения из store.
Раньше:const Foo = ({ value }) => {
  return (
    <Bar value={value} />
  );
};

const mapStateToProps = state => ({
  value: state.value,
});

export default connect(mapStateToProps)(Foo);const Foo = () => {
  const value = useSelector(state => state.value);

  return (
    <Bar value={value} />
  );
};

export default Foo;
3. useStore - получение store целиком:const valueSelector = state => state.value;

const Foo = () => {
  const { dispatch, getState, subscribe } = useStore();
  const value = valueSelector(getState());
  
  useEffect(() => subscribe(console.log), []);

  const handler = useCallback(() => {
    dispatch(action());
  }, []);

  return (
    <Bar onClick={handler} value={value} />
  );
};

export default Foo;
Вряд ли useStore вам, действительно, понадобится на практике.

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

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

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

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

Худший ответ:
Есть специальный софт - перезаписывает, да еще и многократно. Искать по выражению "data wipe"
Без специального софта - как сказал Sanes - просто забить файлами под завязку.
А еще можно физически уничтожить носитель. Это даже быстрее.
P.S.:
Обычное форматирование флешки с FAT не поможет. Сейчас форматирование всего лишь обнуляет таблицы, указывающие на данные, но сами данные, как правило не удаляет.
Вопрос: Что подразумевает полный рабочий день?

Лучший ответ:
1) Если у тебя работа 8 часов, и начало работы в 10 утра, то работодатель и твои коллеги ожидают от тебя, что в любой момент с 10 до 19 (час на обед + 8) - они могут тебе написать, позвонить и ты оперативно выйдешь с ними на связь. И скажем, они буду ожидать, что если есть вопросы по какому-то коду, то IDEA/GIT и прочее у тебя будут открыты (т.е. ты в рабочей обстановке) - на какой-то доп вкладке смотреть сериальчик никто не мешает (лучше использовать другой браузер).

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

Самая главная проблема ребят на удаленке, что они путают удаленку и свободный график. Типа, когда хочу начинаю работать, когда хочу заканчиваю работать, когда хочу отваливаюсь. Нет, тут нужно быть доступным и в рабочем состоянии в определенный интервал времени. Ибо когда в тебя заходят ребята с каким-то вопросом в рабочее время, а ты в это время поехал в магазин или по девкам с мысленной формулировкой (доработаю часы ночью) - это увольнение.

Что касается часов - просто списывай время на все, чем ты занимаешься (кодинг, митинги, созвоны с ребятами, консультация QA по своим таскам и так далее). Тогда получится, что ты кодил условно 5 часов, а времени списано в общем 7-8 часов.

Худший ответ:
Что подразумевает полный рабочий день (на удаленке)?

Обычно это подразумевает 40 часов в неделю.

ВСЕ остальные нюансы - примеры перечислены ниже, зависят от конкретного работодателя:
* когда начинать и когда заканчивать, может зависеть от часового пояса клиента или команды
* нужно ли постоянно быть на связи, зависит от проекта и обязанностей.
* активно работать - зависит от обязанностей. Например дежурный админ должен все время следить за уведомлениями мониторинга, а пойти на 2 часа обедать
* Отчитываться о реально потраченном времени может быть обязательно или не очень, или только по бумажке.
* Нужно ли ставить софт, который будет следить за вашей активностью или не нужно

Вариантов может быть море, это нужно уточнять при трудоустройстве.
Вопрос: Как передать UTM-метки в CRM Битрикс 24 с помощью PHP?

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

if(isset($_GET["utm_source"])) setcookie("utm_source",$_GET["utm_source"],time()+3600*24*30,"/"); 
if(isset($_GET["utm_medium"])) setcookie("utm_medium",$_GET["utm_medium"],time()+3600*24*30,"/"); 
if(isset($_GET["utm_campaign"])) setcookie("utm_campaign",$_GET["utm_campaign"],time()+3600*24*30,"/"); 
if(isset($_GET["utm_content"])) setcookie("utm_content",$_GET["utm_content"],time()+3600*24*30,"/"); 
if(isset($_GET["utm_term"])) setcookie("utm_term",$_GET["utm_term"],time()+3600*24*30,"/");

Добавляйте его на каждую страницу↑.

Затем создаем в форме невидимые поля, cо значениями:
<input name="utm-source" type="hidden" value="<?=$_COOKIE['utm_source']?>">
<input name="utm-medium" type="hidden" value="<?=$_COOKIE['utm_medium']?>">
<input name="utm-compaign" type="hidden" value="<?=$_COOKIE['utm_compaign']?>">
<input name="utm-content" type="hidden" value="<?=$_COOKIE['utm_content']?>">
<input name="utm-term" type="hidden" value="<?=$_COOKIE['utm_term']?>">

А в обработчике уже принимаем данные, как и все остальные поля:
'UTM_SOURCE' => $_POST['utm-source'],
	            'UTM_MEDIUM' => $_POST['utm-medium'],
	            'UTM_CAMPAIGN' => $_POST['utm-campaign'],
	            'UTM_CONTENT' => $_POST['utm-content'],
	            'UTM_TERM' => $_POST['utm-term'],

Результат:


Худший ответ:
Все поля, кроме UTM передаются нормально.
а поля с УТМ ... ( продолжите предложение)
в то время как в GET / GLOBALS я вижу
(сюда дамп)
Вопрос: Почему Ubuntu с Gnome больше грузит процессор чем Windows 10 когда просто стоит ничего не делает?

Лучший ответ:
Потому что Linux для десктопа отвратительно оптимизирован, а GNOME - самый прожорливый и дырявый (в плане памяти) DE из всех существующих.

Хотя, может, у вас просто cpufreq выставлен на максимальную производительность или fancontrol не настроен.

Худший ответ:
Была такая проблема. Посмотрите логи. Если они очень быстро растут. То проблема в опции ядра, которую можно отключить через параметр загрузчика "/etc/default/grub". Добавьте в параметры загрузки - pci=noaer. 
Если вкратце этот параметр отвечает за расширенный лог об ошибках.
Вопрос: Так ли важна скорость загрузки по PageSpeed Insights?

Лучший ответ:
Используйте современные форматы изображений JPEG 2000, JPEG XR и WebP
Для этого существует тэг picture с source, в котором и можно использовать webp. Если не будет поддерживаться, то и не будет использоваться этот sourceУстраните ресурсы, блокирующие отображение
Советую почитать по critical-css, т.е. css который необходим для отображения первого экрана. Весь остальной css можно подключать как раз внизу сайта.Настройте подходящий размер изображений
но на мобильном нет таких размеров. в лучшем случае 375px и @2x, что соответствует 750px, нужно подгружать те форматы и размеры изображения, которые будут подходить текущему разрешению экрана, через тот же вышеупомянутый тег source внутри pictureЗадайте правила эффективного использования кеша для статических объектов
Так как мы не можем повлиять на установку кеша на серверах яндекса - можно использовать ленивую загрузку яндекс карт, например решение с промисом, который вы уже будете запускать по окончанию загрузки страницы. Или сделать комбо - первоначально отдаем скриншот, а если уже нужен интерактив - подгружаем скрипты через промис и рендерим карту.Как это можно исправить, или это не так важно...? Как вы поступаете в таких ситуациях? Вы придерживаетесь рекомендациям google? 
Как было написано - это всего лишь рекомендация. Руководствоваться этими рекомендациями или нет, решать лично вам. Однако гугл уже давно использует данные PageSpeedInsights, и учитывает их при ранжировании

Худший ответ:
https://habr.com/post/429668/
Больше нет, особо не волнуйтесь. Вернее, финальное значение все равно важно, но теперь все эти "сжатия в оптимизированные форматы" имеют очень малый вес, главное значение - как быстро грузится сайт. И всё.
Вопрос: Уровень знаний css/html для JavaScript?

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

Худший ответ:
https://learn.javascript.ru/Ну и пару напутствующих слов:)Учитесь гуглить
Вопрос: Можно ли переделать скрипт плавного скролла?

Лучший ответ:
<button class="slowly" data-target="some_id">Take me there but slowly</button>$(".slowly").on("click", function (event) {
      /*Отменяем стандартную обработку нажатия по ссылке.*/
      event.preventDefault();
      /*Забираем идентификатор блока с атрибута href.*/
      var id = $(this).attr('href') || $(this).attr('data-target');
      /*Узнаём высоту от начала страницы до блока, на который ссылается якорь.*/
      var top = $(id).offset().top;
      /*Анимируем переход на расстояние - top за 1000ms.*/
      $('body,html').animate({scrollTop: top}, 1200);

Худший ответ:
Сделайте кнопку просто ссылкой <a href="#block">Перейти</a> и сделайте ей стиль похожий на кнопку
Вопрос: Почему данный код сработает?

Лучший ответ:
Потому что когда вы пишете a = 2, не объявляя ее, значение записывается в глобальную переменную a. Если внутри функций заменить a = 2 на let a = 2, поведение поменяется.

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

Лучший ответ:
Для фронтенда - ничего. Битрикс это бэкенд. Да у него есть своя js библа, но ее мало кто реально использует. На практике битрикс это бэкенд, и вам ничего не нужно о нем знать. Бэкенд который надо учитывать при верстке - плохой бэкенд и это не про Битрикс.
Просто делайте хорошую верстку - она натягивается на любой бэкенд.
Вообще у меня есть вот такой список: https://github.com/Suntechnic/web_manuals/blob/mas...

Худший ответ:
Можете начать с материалов на сайте Битрикса https://dev.1c-bitrix.ru/learning/
Вопрос: Какую оболочку выбрать для приложения?

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

Худший ответ:
Взять aura router и не мять себе мозг. Как на счёт такого варианта?
Вопрос: Как навесить правильно onClick на details?

Лучший ответ:
Показ/скрытие содержимого details при клике - это поведение по умолчанию, видимо, оно конфликтует с вашими попытками управлять состоянием details. Отменяйте действие по умолчанию при клике:toggleDetails = (e) => {
  e.preventDefault();
  this.setState({ details: !this.state.details });
}

Худший ответ:
Вот так работает как надоtoggleDetails = () => {
    this.setState({
      details: !this.state.details
    });
  };

<details open={this.state.details} onClick={() => this.toggleDetails}>
    <summary>Заголовок</summary>
     Вложение details
</details>