Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: В чем преимущество «фабричного метода» перед простым созданием объектов?

Лучший ответ:
Просто пример дурацкий. Представьте что вам нужно в зависимости от времени суток создавать разных животных. Ночью львов, днём котят. Причём не в одном месте приложения. Тогда метод initial будет включать в себя проверку на время суток и в зависимости от этого отдавать нужное животное. Причём так будет автоматически происходить везде где вызывается Animal::initial().

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

Советую для понимания посмотреть пример в англоязычной википедии и там же реализацию на Java. Суть в том, что у вас есть игра лабиринт. И есть два режима игры, обычный - когда игрок может перемещаться из комнаты только в смежную комнату и магический режим - когда игрок может перемещаться в любую комнату. Алгоритм самой игры для обоих режимов один и тот же, а вот бизнес-правила перемещения игрока по комнатам - разные. Вы реализуете эти бизнес-правила в OrdinaryRoom и MagicRoom, а в самом алгоритме игры вместо того, чтобы создавать какой-то из этих объектов - вызываете просто абстрактный метод makeRoom(). А затем создаете два подкласса, которые будут реализовывать метод makeRoom и возвращать нужный тип комнаты. Таким образом вы получаете два различных режима игры написав один алгоритм.

Вообще смысл данного шаблона довольно сложно понять. В интернете его почти всегда объясняют неверно. Прямо как пример на C#. Это совсем не то, о чем писали в книге банды четырех. Пример соответствующий тому о чем рассказывается в книге реализован в примере на Java. Нужно приложить усилия и постараться вникнуть в идею. Можно перед этим изучить Template method, его проще понять, там похожая идея, только там вы перекладываете часть поведения на подклассы, а здесь перекладываете создание объекта на подклассы. Factory method практически всегда используется в связке с Template method если мы говорим о классической реализации шаблона из книги банды четырех.

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

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

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

Лучший ответ:
Не совсем понял - нужны средние цены валют или информация по торговым парам?

Если торговые пары:
- Непосредственно с апи бирж
- Можно через бесплатные библиотеки, например ccxt

Если средние:
- Coingecko
- Cryptorank
- Cryptocompare
- CMC
- Наверняка есть и другие варианты - гугл в помощь

Худший ответ:
Идешь на биржу, где нужные тебе криптовалюты (например binance) и с помощью их rest api получаешь все что тебе нужно, лимиты очень большие (десяток запросов в секунду кажется)

p.s. напоминаю, курс на биржах вещь абстрактная, ты будешь получать либо усредненное значение (либо min/max) на интервале, либо значение в прошлом
Вопрос: Автоматизация верстки в полиграфии, поможете)?

Лучший ответ:
Создание файлов PDF 
https://python-scripts.com/create-pdf-pyfpdf

Чтение файлов Excel
https://openpyxl.readthedocs.io/en/stable/

Пример чтения файла
https://openpyxl.readthedocs.io/en/stable/usage.ht...

Худший ответ:
Я похожие задачи решал так:
- В Inkscape готовился макет документа в svg-формате. Внутри SVG - это обычный текстовый XML-файл. 
- Потом на его основе строился шаблон, мы использовали стандартный шаблонизатор джанго, но можно взять и сторонний, например Jinja или любой другой, тысячи их. У нас структура документа была гораздо сложнее вашей и я использовал многоуровневые шаблоны для разных фрагментов документа. Да, WISIWIG редактирования шаблонов добиться не получилось, но такая задача была не критичной. В вашем случае шаблон получается тривиальным и можно даже подстановку делать на уровне строк, только экранирование нужно аккуратно сделать.

Это всё лет десять назад уже делалось. Сейчас может быть есть инструменты поудобнее. Не следил за новостями в этом направлении.
- Далее шаблон рендерится заполняясь данными из контекста, и итоговый SVG-документ обрабатывается headless инстансом редактора Inkscape, который крутился на отдельной виртуалке, а позднее запускался в docker-контейнере. Это фактически запуск Inkscape -A document.svg document.pdf, при котором документ преобразуется в pdf-файл.
В итоге полученные pdf опционально собираются в один, чтобы сделать многостраничный документ и его удобнее было печатать. Не помню какая библиотека для этого использовалась, но задача распространённая и простая, найдёте.
Вопрос: Как называется этот разъем на 32pin, установлен на sony vaio PCV-A85N, как соеденить с ноутбуком?

Лучший ответ:
Судя по этой картинке, это проприетарный соньковский разъём.


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

Лучший ответ:
1. df -h
2. ps -aux
3. iftop, nload
4. last
5. Хз.
6. history
7. tar

Худший ответ:
1, 2, 3 и 5 можно сделать с помощью prometheus+grafana, но новичку будет муторно
4 есть в логах ssh, но вообще 4 и 6 делается с помощью auditd
7 - по-разному, можно снимать образ системы целиком или конкретно копирование файлов, дампы БД и прочее - методика и инструмент зависят от софта и задач.
Вопрос: Как стать разработчиком? Есть ли вузы связанные с разработкой?

Лучший ответ:
Разработчиком можно стать и без ВУЗа. А можно ВУЗ закончить, но не стать.

Худший ответ:
Любой вуз где есть специальность "программное обеспчение" или как то так. 
Ни в одном вузе никогда не будет факультетов ТОЛЬКО с профильными предметами. 
Ну и как минимум любому разрабу не помешает математика (и все около нее).
Вопрос: Как искать работу верстальщиком в upwork?

Лучший ответ:
В англоязычном интернете нет понятия "верстальщик".
В принципе такой профессии нет.

Есть профессия frontender. Верстальщик - это типа фронтендер на минималках.

Как вариант - можно искать заказы по словам "convert" и "html". Довольно часто бывают заказы типа "convert image to html".

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

Лучший ответ:
А если принять к факту, что по умолчанию в регистрах хранится значение 0x00
Ничего в регистрах "по умолчанию" не хранится, кроме того, что в них в последний раз было записано.

я попробовал ничего не записывать в регистр AH и вызвать прерывание 0x16, значит по умолчанию в регистре 0x00.
Нет, это значит только то, что в этом месте твоей программы в этот раз в регистре AH был 0.

в подпрограмме read_keyboard почему то не сохраняют регистр AX
Потому что результат возвращают в нём.

почему сохранили регистр BX - я не понял
…а также cx, dx, si и di. При том, что функция 0 int 16 меняет только AX. Я думаю, что на всякий случай их сохранили, для надёжности.

Худший ответ:
Я рекомендую обязательно смотреть документацию, чтобы четко понимать какие регистры используют входные данные, и куда помещается результат.
push и pop в данном случае используются чтобы сохранить значения регистров, а затем восстановить их. Однако вызываемые функции НЕ ИСПОЛЬЗУЮТ эти регистры. И сохранение/восстановление не имеет никакого смысла.
int 10
0eH писать символ на активную видео страницу (эмуляция телетайпа)
вход:  AL = записываемый символ (использует существующий атрибут)
           BL = цвет переднего плана (для графических режимов)

display_letter:
mov ah, 0x0E ; код функции которая выводит букву на экран
mov bx, 0x000F ; 00 - нулевая страница; BL - цвет буквы
int 0x10 ; обращаемся к BIOS, чтобы она нарисовала букву
int 16
00H читать (ожидать) следующую нажатую клавишу
выход: AL = ASCII символ (если AL=0, AH содержит расширенный код ASCII )
            AH = сканкод  или расширенный код ASCII

read_keyboard:
mov ah, 0x00 ; код функции считывающей символ с клавиатуры
int 0x16 ; обращаемся к BIOS чтобы выполнить ее
Вопрос: Что такое «типы данных» в Python?

Лучший ответ:
Все типы данных - это классы, но не все классы - это типы данных. Хотя классы - это типы=) но не буду вас путать.
"map, range, срез" - это не типы данных.
Полагаю в том вашем вопросе од типами жанных имеют в виду простые типы вроде строк, чисел с плавающей точкой, целых чисел и даже комплЕксных.
Кортежи (tuple) и словари (dict) - это уже структуры данных, коллекции... как угодно. Да, технически это тоже классы и в каком-то смысле их можно назвать типами, но все эти терминологические дебри вам ни к чему.
Просто считайте типами данных атомарные значения простых типов. Если к вам докопаются при таком понимании, то надо таких слать=).
Дальше интереснее. range, к примеру, это класс, инстанс которого "умеет" делать генератор арифметических последовательностей. Вот это вот слово "умеет" связано с питоновским понятием протоколов. К примеру, если к объекту можно обратиться по индексу, значит он поддерживает соответствующий протокол __getitem__. Если объект поддерживает срезы, то в этот метод можно подать специальный объект - инстанс slice. Этот инстанс просто несёт три параметра среза (начало, конец и шаг), а как его будет применять объект - это на откуп программисту.

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

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

Худший ответ:
Нет map, range, срез это не типы данных. Это функции. Они выполняют операции над данными.
На счет классов, да. class Int или class String описывают типы данных и их методы (функции которые можно выполнить с ними).
Если вам трудно это понять, то представьте, что тип данных это надпись на коробке, которая обозначает что в ней находится.
Например, есть две коробки, на одной написано "Игрушки", а на другой "Провода". Это своего рода типы данных.
Вопрос: Русский open-source, есть ли он?

Лучший ответ:
Можешь посмотреть на какой-нибудь опенсорс от крупных российских компаний:
https://github.com/skbkontur
https://github.com/Yandex
https://github.com/Tinkoff
https://github.com/VKCOM
(Первое что вспомнил. Наверняка есть ещё)
Или на какой-нибудь продукт, который ими используется

А всё что не привязано к конкретной компании - оно и не будет привязано к конкретной стране

Худший ответ:
Сделай свой?
Для начала не надо даже создавать продукт, в привычном понимании слова. Сделайте, например, словарь выражений для выборки данных. Презентуйте здесь с просьбой о критике.
Мы пока говорить с машинами по-русски не умеем, а должны.
Я сам пробовал, но я музыкант. У меня на каждый полутон по 200 приемов, как его разукрасить. Здесь не нужно быть старшим. Достаточно быть просто технически грамотным.
Вопрос: Возможно ли использовать файл, предоставленный ссылкой на скачивание как исполняемый в самом коде?

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

Худший ответ:
это называется jsonp

содержимое файла выглядит примерно так:

блок.innerHTML = 'тут данные'
Вопрос: Как привести экземляр класса из List к своему первональному виду игнорируя других потомков базового класса цепочки?

Лучший ответ:
typeof() или .GetType() на худой конец, чтобы не гадать.

Худший ответ:
Вообще похоже на кейс, где можно применить полиморфизм.
Добавьте какой-нибудь виртуальный метод в базовый класс и переопределяйте его в наследниках.
Например можно использовать ToString.
С другой стороны мне кажется, что тут вы зря применили наследование. Можно использовать интерфейсы для добавления SSN и прочего к классам. Тогда через StringBuilder можно будет собрать итоговую строку просто применяя такой код:
var sb = new StringBuilder();
if (person as IWithX withX) 
  sb.AppendLine(person.X);
if(person as IWithY withY)
  sb.AppendLine(person.Y);
Вопрос: Почему не работает margin?

Лучший ответ:
Потому что она не блочная и не имеет ширины.

Вот так сработает
a {
  display: block;
  width: fit-content;
  margin-left: auto;
  margin-right: auto;
}

Либо просто задайте контейнеру text-align: center

И еще пачка способов по запросу "горизонтальное выравнивание css"

Худший ответ:
Ссылка не просто block - а inline-blockinline, для таких элементов действую правила текста(inline), соответственно margin: auto равен нулю.
Если же вы поменяете display на block, то, как блочный элемент, ссылка займёт всю ширину, и опять же margin: auto равен нулю.)

Решения: 
а) text-align: center контейнеру, чтоб центрировать текст а вместе с ним и inline элементы.
б) display: block и text-align: center самой ссылке чтоб центрировать текст внутри неё.
с) перейти на flex.
...
Вопрос: Какие есть Алгоритмы генерации сетки Судоку?

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

Худший ответ:
1) Заполняете случайно по одной цифре, по правилам судоку
2) Пишете решалку автоматическую. Варьируя набор "скиллов" решалки можно менять сложность итоговой головоломки.
3) Если решается, то готово, если получается вилка, то п.1
Вопрос: Thymeleaf, th:text не работает, если находится внутри другого th:text, как обойти?

Лучший ответ:
Если память не изменяет, то вам нужен th:inline
Примерно так:
<h4 th:inline="text">[[${product.name}]]<span th:text="${product.getPrice()}">45</span></h4>
Вот, прочитайте этот вопрос:
https://stackoverflow.com/questions/25071985/thyme...

Худший ответ:
Наверное так? Иначе подстановка содержимого в тег h4 затрет тот шаблон, который вы в нем написали.
<h4><span th:text="${product.name}">Some product</span><span th:text="${product.getPrice()}">45</span></h4>
Вопрос: Как изменить уровень яркости?

Лучший ответ:
Для десктопа можно попробовать monitorian:
https://github.com/emoacht/Monitorian
У него кроме GUI есть и CLI.

Для регулировки яркости на десктопе он использует DDC/CI, который по идее должен быть у всех дислееев, даже если подключение идёт по VGA (возможно, придётся включить в настройках монитора)

Худший ответ:
(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1, X), где X — значение яркости в процентах.

Только не факт, что это вам поможет на десктопе.
Вопрос: Как хранить сайт на гитхабе?

Лучший ответ:
Видео от Вадима Макеева, одного из участников проекта Дока: https://www.youtube.com/watch?v=hevU4NdIsoU

Худший ответ:
Тоже искал в свое время как это сделать, в итоге выбрал netlify.

Но тут вы можете почитать
Вопрос: Как сделать сеть между компьютерами в офисе?

Лучший ответ:
Кабель от провайдера втыкаете в WiFi-роутер, остальные роутеры настраиваете, как повторители сигнала (WDS) и вперёд.

Худший ответ:
Наймите специалиста, иначе придется делать и учит слишком многое, ради слишком малого
Вопрос: Vscode не видит git, что делать?

Лучший ответ:
После переустановки Windows тоже столкнулся с такой проблемой, новые репозитории не создавало и старые в проектах не видело (предлагало инициализировать новый, хотя в проекте уже была папка .git). Комментарий выше не помог т.к. все уже было прописано после установки самого GIT. Оказалось, что была добавлена новая опция для безопасности. Чтобы отключить её глобально можно прописать следующую команду: git config --global --add safe.directory "*" в терминал и должно заработать. Но рекомендую перед её применением ознакомиться для чего данная опция вообще была введена. Другие варианты для этой настройки можно посмотреть странице git

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

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

Иногда на компьютере установлены портативные сборки**, и здесь могут начинаться проблемы. Нужно отметить, что добавить путь в настройках редактора "git.path" не привело к успеху на win7.


Чтобы добавить переменные среды нужно щёлкнуть ПКМ на значке "Мой компьютер", затем выбрать в меню "Свойства". В новом окне найти ссылку "Дополнительные параметры системы". Во вкладке "Дополнительно" внизу нажать кнопку "Переменные среды...". В верхней (пользовательской) области нужно изменить значение переменной "Path"***. Обычно там указано что-то вроде %AppData%\npm
В win10 добавили линуксовых команд, поэтому можно поискать git набрав в консоли where git. Тоже самое можно сделать с VS Code where code. Самые древние сборки будут иметь путь %LocalAppData%\GitHub\PortableGit_hsa\bin. Копируем его.В win7 скорее всего придётся искать путь через ярлыки.
В win10 просто добавляем путь в пользовательскую переменную "Path".В win7 нужно скопировать значения переменной Path в пустой блокнот, затем через ; (точку с запятой) добавить пути к папкам. Получится что-то похожее на %AppData%\npm;%LocalAppData%\GitHub\PortableGit_sha\bin;%ProgramFiles%\Microsoft VS Code\bin
По завершению требуется перезагрузить компьютер.
Вопрос: Как некоторые сайты определяют, что я пытаюсь скормить им временную почту при регистрации?

Лучший ответ:
скорее всего фильтр по доменам, поискать менее популярные

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

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

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

Лучший ответ:
Неправильно ты, Дядя Фёдор, бутерброд ешь...Нужно писать про то в чем хорошо разбираешься. Потому что, если ты будешь писать про то, в чем ты не разбираешься, на сайтах вроде Хабра, где есть система дизлайков, то ничего хорошего тебе это не принесет.

Худший ответ:
Легко! Вам выше по столбу настучали ЦА Хабра. По принципу матрёшки: кидаете статью для 80% респондентов, раскрывая решение их боли, ссужая крик и выходя на 20% ЦА - по схеме "причина -боль- следствие". И, ву-а-ля:-)
ЗЫ: предварительно добавьте к вашему ноунейму столько же знакоф)
Вопрос: Как получить дату -3 дня?

Лучший ответ:
Батники не умеют работать с датами. Все переменные там - строки.
Вы можете вручную разделить дату на составные части и вычислить -3 дня.
Так же можно написать вспомогательный скрипт на JS/VBS, которые умеют работать с датами. В скрипт передавать дату и он будет вычислять -3 дня и выводить ее в stdout, где батником можно эту дату прочитать.
Или же вы можете использовать powershell вместо cmd, там, наверняка, можно решить вашу задачу без лишних телодвижений.

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

Худший ответ:
как вариант взять левую утилиту и использовать ее, например jq:
jq -nr 'now-3*24*60*60|strftime("%d.%m.%Y")'
выдаст дату на три дня отстоящую от текущей даты

если нужно от конкретно указанной даты:
echo "25.04.2022" | jq -rR 'strptime("%d.%m.%Y")|mktime-3*24*60*60|strftime("%d.%m.%Y")'

заворачиваете всё это в переменную и пользуетесь
Вопрос: Почему не получается сравнить отрицание в switch?

Лучший ответ:
Так как вы хотите сделать не получится если отсутствует break, проверка не выполняется - отрабатывают все инструкции после первого true.

Худший ответ:
Так как вы хотите сделать не получится если отсутствует break, проверка не выполняется - отрабатывают все инструкции после первого true.
Вопрос: Как писать нормально: for (int i = 0; ...) or for (int i = NULL; ...)?

Лучший ответ:
NULL - служебный дефайн, который есть, в частности, в венде.

Общей практикой является int i = 0; Хотя бы потому, что так короче.

Проблема в другом. В int.
В большинстве языков, int - это 32 бита со знаком, то есть, два гигабайта. В современных же системах памяти - десятки-сотни-тысячи гигабайт, а программы обрабатывают разного рода бигдату и ML. Так что индексация массива интами может легко выйти трудноуловимыми багами.

Поэтому правильно писать for(size_t i = 0; ..

Худший ответ:
int i = 0
NULL применяют к указателям. Более того, NULL - это макрос ОС Windows. К языку C++ это никак не относится.
В C++ для указателей используется nullptr.
Вопрос: Можно ли в работающем RAID-10 уменьшить количество физических дисков?

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

Худший ответ:
Не понимаю что именно у вас там виртуальное.

Изменить конфигурацию raid нельзя (кажется можно увеличить количество дисков), но можно оперировать логическими дисками поверх него (разделы и файловые системы),  я не помню умело ли это windows2k но сейчас windows умеет, есть куча сторонних утилит или штатные в linux (загрузиться с livecd), можно сжать физически раздел за счет свободного места (к сожалению не полностью, есть неперемещаемые области) переместить, создать новые и т.п.

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

p.s. в linux, софтварный raid на основе файловой системы btrfs умеет уменьшаться и увеличиваться налету (выпадет ошибка если места не хватит), но для продакшна я бы его не рекомендовал.
Вопрос: Проблема с компиляцией?

Лучший ответ:
Для кода на плюсах, надо вызывать не gcc а g++

Худший ответ:
это не с код, так что выдавайте полные команды