Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Что такое MVC и как его использовать?

Лучший ответ:
На мелких одноразовых задачах вида "сделать форму, которая бы сохраняла что-то в таблицу и забыть про нее" понять преимущества MVC невозможно.

MVC - это не про сделать, а про поддерживать и развивать.

Представим, что вместо обычной формы мы решим сделать ajax. Если у нас будет обычный винегрет из SQL, PHP и html, то придется переписывать его весь.
Если же у нас нормальная структура, то просто заменим во View вызов шаблонизатора на json кодирование. то есть поменяем одну строчку кода.

Допустим, в дополнение к форме нам нужно будет сделать консольную команду, которая берет данные из файла.

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

Худший ответ:
MVC - архитектурный шаблон. Это не какая-то конкретная задача "сделать форму", "посчитать расход за месяц и сделать отчёт". Это уровнем выше и это не про код как таковой. MVC как я думаю вы уже прочитали это 3 слоя приложения (хотя M на самом деле делится на большее кол-во слоев, но сейчас не об этом). MVC был придуман как раз чтобы отделять слой представления от слоя логики, чтобы при изменении представления (которое меняется обычно чаще чем логика) не сломать слой логики, то есть для развязывания кода друг от друга. На конкретном примере можно рассказать про например "посчитать расход за месяц и сделать отчёт". Понятно что посчитать расход за месяц и сгенерировать сам отчёт это дело именно логики приложения. Как отчёт будет отображаться логику нашу волновать не должно, по этому мы стараемся максимально обособленно писать слой M и на сколько это возможно обособленно писать слой V. Логика у нас просто посчитает всё, сгенерирует данные отчёта а дальше мы уже можем из слоя логики (M) послать во вне эти данные, а слой V у нас может быть вообще чем угодно, это и десктоп приложения для винды, линукс, или это веб или еще что в голову придет. Это при условии, что разделение произведено правильно и слой M у нас действительно независим, иначе под каждый слой представления V (веб, десктоп, мобилки) мы будем кучей if проверять, где же мы сейчас хотим отобразить и городить кучу бесполезного кода. В форматах ответа на Q&A ресурсах нельзя дать хорошее полное понимание архитектуры ПО, по этому советую почитать книжку Роберта Мартина "Чистая архитектура". Для новичка скорее всего будет вообще нихрена не понятно, но сделать это стоит, что-то в голове отложится, а может и понимание придет, кто его знает.
Вопрос: Где ошибка в коде переворота двумерного массива?

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

Надо отдельно обработать случай y == y1

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

Лучший ответ:
Это сочетание двух шаблонов проектирования - Builder + Fluent Interface. Описание и примеры реализаций:
Builder
Fluent Interface

Худший ответ:
Это называется цепочкой методов.

class nClass
{
    public function _construct() 
    {}

    public function add(int $value)
    {
        //Code...
        return $this;
    }
}

$nclass = new nClass();

$nclass->add(2)->add(33);
Вопрос: Сайт выдает капчу data:image/png;base64, как ее декодировать на php?

Лучший ответ:
отрежь ему голову, по самую запятую. заодно между : и ; можешь в content-type пихать

Худший ответ:
header('Content-Type: image/png');

echo base64_decode(substr($str, 21));
Вроде правильно посчитал с телефона
Вопрос: Как дозаполнить корректно поля для Entity при конвертации из DTO?

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

Итак, насколько я вас понял, то вы хотите обновить существующую запись на основе данных, которые прибежали из контроллера в виде DTO.

Во-первых, в данном случае стоит использовать PutMapping (full updates) или PatchMapping (partial updates)
Читаем подробно тут:
https://www.baeldung.com/http-put-patch-difference...

Во-вторых, после того, как вы получили DTO вам необходимо его замаппить в Entity и обновить в БД. Однако, могут быть поля, которые не были заполнены в DTO и вы не хотите, чтобы они были применены, как null, так?

Далее конвертирую в entity, но откуда мне взять значения тех полей, которых не было в запросе? 
Вам не нужно дозаполнять поля сконвертированного entity. Вам необходимо:
1) найти этот entity по идентификатору.
2) Если не хотите, чтобы null поля были применены к сущности, то при маппинге (см. ниже) сделать null check и если поле DTO null, то не сеттить его к сущности.
3) сохранить сущность.

Что касается маппинга:
1) Вы можете использовать интерфейс Converter<S, T>. И для каждого из полей сделать проверку типа (псевдокод): if (fieldValue != null) { entity.setField(fieldValue); }
2) Если вы используете какую-либо библиотеку для маппинга (modelMapper, MapStruct и др.), то используйте возможности либы. Например, для modelMapper:
modelMapper.getConfiguration().setPropertyCondition(Conditions.isNotNull());
https://stackoverflow.com/questions/45451025/how-t...

Также прокомментирую ваши комментарии из другого ответа:
вот мне интересно, как решается этот вопрос. Разве это нормально, что на каждый пришедший запрос к сервису приходится ходить к базе данных? И это без учета логики! 
Можно настроить кеширование и тогда, обращения к БД не будет.


Это базовая ситуация, с которой сталкивается каждый. Допустим у меня entity Person с атрибутом даты рождения, которую я не хочу отображать в PersonDto. Когда пользователь пришлем мне PersonDto по API для, допустим, операции обновления, то как мне при конвертации в entity вернуть эту дату рождения, чтобы я мог сохранить новую сущность? 
Обратите внимание на то, что может быть несколько DTO.
Например,
PersonCreationRequest - dto, которое заполняется из фронта при создании юзера
PersonCreationResponse - dto, которое заполняется из бекенда после создания юзера
PersonUpdatingRequest - dto, которое заполняется из фронта при обновлении юзера
PersonUpdatingResponse - dto, которое заполняется из бекенда после обновления юзера
PersonDto - общее dto, которое заполняется из бекенда для других нужд.
Могут быть и другие DTO...
Соответственно, ответ на ваш вопрос - используйте разные DTO.

Не знаю насколько точно смог ответить на ваш вопрос.

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

Лучший ответ:
Идея дурацкая, если честно, но сделать можно:

create sequence shared_sequence;
create table production_data(id bigint default nextval('shared_sequence'), value text);
create table demo_data(id bigint default nextval('shared_sequence'), value text);

Худший ответ:
А я-бы с id на key перешёл. Тогда не только две таблицы  но десять nodes смогут одно и тоже параллельно обрабатывать и сохранять. Те. Key описывает record, а не какое-то случайно генерированное id.
Вопрос: Почему опера обновила стили, а хром — нет?

Лучший ответ:
Сtrl+F5 в нужном браузере.

Худший ответ:
Я тебе такой совет могу дать, не знаю точно, правильно это или нет, но это рабочий совет... Да и другого выхода я не вижу. Каждый раз, когда правишь стили, прописывай новый путь к файлу стилей, типа был https://site.my/style.css, сделай https://site.my/style.css?version=million. Какого-то хрена хром не обновляет стили (кэш, имею в виду), даже если файл был изменён.

Конечно, можно контрлэф5, но вот посетителей сайта ты не заставишь это делать каждый раз, когда правишь стили.
Вопрос: Как понять что знаешь язык программирования?

Лучший ответ:
"Я выучил английский по учебнику, разговариваю со словарем, с людьми боюсь.
Когда мне можно будет начать учить китайский?"

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

Лучший ответ:
https://arsenkin.ru/tools/check-top/
https://tools.pixelplus.ru/tools/top-10

Это проверенные сервисы

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

Лучший ответ:
title = Label(frame, text='Randomizer', bg='Grey', fg='', font=('Arial', 20, 'bold'))
Кажется, fg не хочет быть пустой строкой.

Худший ответ:
Интерпретатор вам же все пишет...
Подозреваю что не устраивает fg=''. Смотрите в хелпе, допустимое ли значение
Вопрос: Как управлять сервером PostgreSQL через ansible без ssh-подключений?

Лучший ответ:
То есть у вас есть доступ к тому хосту к сервису постгреса ?

Если посмотреть соответствующие модули, например
postgresql-db
То там есть параметр login_host  - то есть можно обращаться к другому хосту
а для самого плейбука можно использовать ansible_connection: local

Худший ответ:
Всех благодарю за ответы, все были правы. Без стороннего хоста не обойтись. В роли стороннего хоста также может выступать и локальный хост, на котором запускается Ansible.
Дополню ответ тем, что на такой сторонний хост обязательно нужно поставить не только клиента posgresql, но и пакет python3-psycopg2 или python-psycopg2 в зависимости от того, какой python вы используете: python3 или python2, соответственно.
Вопрос: Как сделать общий сервис во всех контроллерах?

Лучший ответ:
Абстрактный контроллер реализует Service Subscriber. Вам достаточно туда добавить ваш Setting:

abstract class Controller extends AbstractController
{
    public static function getSubscribedServices()
    {
        return array_merge(parent::getSubscribedServices(), [
            'setting' => Setting::class,
        ]);
    }

    protected function getSetting(): Setting
    {
        return $this->get('setting');
    }
}

Худший ответ:
Простейший вариант - написать свой compiler pass, в нём выбрать сервисы (через findTaggedServiceIds) по тегу controller.service_arguments и дополнить определение сервисов либо вызовом вашего метода либо добавлением аргумента в конструктор, это можно делать по имени.

Можно сделать ещё более общее решение: определить интерфейс, например SettingsAwareInterface примерно такого вида:
namespace App\Contracts;

interface SettingsAwareInterface
{
    public function getSettings(): Setting;

    public function setSettings(Setting $settings): void;
}
затем в services.yaml добавить:
_instanceof:
  App\Contracts\SettingsAwareInterface:
    tags:
      - {name: 'app.settings-aware'}
и в compiler pass работать с тегом app.settings-aware, это позволит вам передавать данный сервис не только в контроллеры.
Вопрос: На какой cms начать верстать магазин лучше всего?

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

Joomla мертва и никому не нужна.

Wordpress это более 60% рынка CMS и 30% от всех сайтов на планете. Выбор очевиден. Про костыли выброси эти фразы в мусорку и никому не говори. У него есть свои минусы но к тому времени когда ты их осознаешь уже будет понимание что с этим делать. И если будешь отталкивать от того как малыми силами сделать сайт на плагинах останешься без работы и без денег. Вордпрес это максимальный профит за короткий срок а если не умеешь готовить то это уже другой вопрос.

Для начала разберись с пониманием что такое "верстать" и что это не связано с CMS. Разделяй процессы. Сначала верстать потом натягивать.

Худший ответ:
Modx + Minishop2
Причина. По сути ИМ почти сразу становится самописом, как только что то начинаете продавать. Сразу надо вносить правки по заполнению карточек товара, интеграции с внешней учётной системой, поиском. Затем начнутся проблемы с "вредителями" и плагины будут самым меньшим злом.
Поэтому можно (нужно) изначально выбирать ту cms, которая максимально заточена под самопис.
Вопрос: Как правильно обновить?

Лучший ответ:
Попробуй сделать копию папки и удалить

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

Лучший ответ:
Делаете секцию с контейнерами и контентом.
Делаете секцию БЕЗ контейнера синий блок
И делаете секцию с контейнером и контентом.

Худший ответ:
Думаю, что речь про margin-bottom: -10px; хотя картинку и не вижу. 
Без абсолютного и минус маргина, вряд ли "выйдешь за блок".
Вопрос: Какие качественные оффлайн курсы можно пройти в Санкт-Петербурге?

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

Худший ответ:
Вы сначала определитесь что вам нужно. Дело в том что понятия "качественные" и "курсы" ни где не пересекаются и пересекаться физически не могут по определению. 
Если вам необходимо образование то это ВУЗ, если знания то это тяжелая, долгая работа. В идеале стоит совместить и то и другое, при наличии ВО процесс обучения идет быстрее и проще.  Любые курсы это не более чем один из множества "честных" способов отъема денег у населения. Короче, там сидят такие же гопники что и в темной подворотне только вежливые и интеллигентные
Вопрос: Как полностью сбросить телефон на Android?

Лучший ответ:
Если я правильно понял, это Google Factory Reset Protection
По задумке это защита устройств от использования ворами и т.п.

способы вроде есть, гуглятся, первый же результат к примеру

Худший ответ:
Можете перепрошить смарт xiaomi перепрошиваются не так сложно в инете полно гайдов пример для этого по ссылке https://www.youtube.com/watch?v=PVaFV46JfFE
Вопрос: Каким софтом отсканировать в МФУ много листов каждый в отдельный PDF?

Лучший ответ:
данную задачу лучше решать следующим образом
сканируешь всю серию в один файл pdf а затем с помощью imagemagic (мощнейшая утилита работы с изображениями, командная строка) разобрать страницы полученного файла хоть в картинки хоть в pdf
convert test.pdf -quality 100 page-%4d.png

Худший ответ:
Проще порезать постранично готовую пдф
Вопрос: Как получить текущий путь в BAT файле?

Лучший ответ:
Именно так и узнавать текущий путь: %CD%
Это не важно где лежит батник, т.к. исполняется не сам батник, а cmd.exe. Т.е. когда вы 2ПКМите на батнике, лежащем на раб.столе запускается команда: cmd.exe /c c:\users\user\Desktop\file.bat
При этом путь где лежит батник никакого отношения к текущему пути не имеет. cmd.exe обычно запускается с текущим каталогом %SystemRoot%\System32.
Чтоб перейти в каталог, где лежит батник, используйте команду: cd /d "%~dp0"
Пути  можно получать из параметров батника, указанным способом, то же самое можно делать для переменных цикла, и параметров процедур. Список доступных модификаторов (буквы после %~ доступны в описании команд call и for.

Худший ответ:
команда ls, или же через проводник
Вопрос: Нужен ли babel, если используешь TypeScript?

Лучший ответ:
Typescript compiler - это инструмент проверки типов и компиляции typescript в javascript. Так же он умеет транспайлить конструкции новых стандартов js в более старые стандарты, но это не основная задача этого инструмента, и делает он это хуже целевых инструментов, в частности его можно настроить только на конкретный стандарт.

Babel - это инструмент для парсинга js кода в AST, обхода и модификации AST и обратной сериализации AST в js. Так же это еще и экосистема плагинов и пресетов. Плагины как правило реализуют транспиляцию одной из фич более нового стандарта в более старый. Пресеты - это просто конфигурируемый набор плагинов.
Так же в Babel AST есть поддержка некоторых расширений js (а ts - это тоже расширение js), но включается это все флагами.

В экосистеме babel есть preset-env нацеленный именно на транспиляцию более новых стандартов в более старые. Его особенностью является поддержка browserlist и подключения только тех плагинов, которые нужны для указанных браузеров. За счет этого получается более оптимальный js на выходе, так как многие фичи после транспайлинга работают медленнее чем нативные и занимают больше кода.

Еще в экосистеме babel есть preset-typescript, который включает поддержку ts синтаксиса и транспиляцию ts в js. При этом, в отличии от tsc, он не делает проверку типов, а некоторые сущности может обрабатывать неправильно (как и большинство сторонних компиляторов ts, т.к. у ts нет строгой спеки и единственным источником правды является код tsc, который далек от идеального).

Оптимальным по выходному результату (пусть и за счет времени сборки) будет вариант, когда сначала ts код обрабатывается через tsc без транспиляции в старые стандарты, а затем происходит транспиляция с помощью babel + preset-env + browserlist.

Худший ответ:
Зачастую, когда используется связка babel + typescript, то typescript выступает как typecheck инструмент. То есть, typescript ничего не компилит, а просто проверяет типы (через какой-нибудь fork-ts-checker-webpack-plugin).

А бабел уже имеет плагины, которые затем транслируют синтаксис typescript в js.
Вопрос: Нужен ли прокси для Парсинга вк при помощи VK API?

Лучший ответ:
У vk есть ограничения на обращение к api, прокси не поможет.
VK Api - ограничения

Худший ответ:
Лучше много аккаунтов + прокси. Только номера телефонов ещё должны быть нормальные, а то блокируют, если покупать виртуальные.
Вопрос: Как Портировать игру с Андроид на Пк, игра на unity?

Лучший ответ:
Начать просто с переключения TargetPlatform и посмотреть что отвалится

Худший ответ:
Зависит от вашей игры.
Код в любом случае нужно будет переписывать, переделывать управление и интерфейс под Андроид, возможно ещё какие то функции игры.
Стоит создать новый проект, и на основе ПК игры делать уже под Андроид, копируя и заменяя необходимые блоки кода, объектов и так далее.
Вопрос: Как завести акк на AWS из России (по состоянию на 20 июня 2022) — появились какие-то годные решения?

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

Эрик Блейн, которого больше знают под псевдонимом Джордж Оруэлл, нервно курит в сторонке.

AWS может быть и рад был бы Вам что-то продать - но ему не дают :) И еще долго давать не будут. И не факт, что когда "там" разрешат - его не забанят "тут"

"Я знал, что будет плохо, но не знал, что так скоро" (С) В. Цой "Фильмы"

Худший ответ:
Неа. Пользуйся аналогами в ры

Или проси друга в европе
Вопрос: Ошибка RuntimeError: can't start new thread на Python (MacBook Pro M1 2020 ОЗУ 8 Гб) как настроить или обойти?

Лучший ответ:
Попробуйте выставить параметр threads в False, чтобы грузить в один поток или числом укажите нужное количество потоков. Например: 10
yf.download(tickers = nasdaq_tickers, period = 'max', interval = '1d', group_by = 'ticker', threads=False)
yf.download(tickers = nasdaq_tickers, period = 'max', interval = '1d', group_by = 'ticker', threads=10)

Худший ответ:
Можно слегка изменить код и скачать сначала четные а потом нечетные тикеры. Может проблема с потоками M1 проскочит мимо. Ну не проскочит - тогда поделить на 4 части. Тикер по модулю 4. Я всегда так делал. Если какая-то инфо-система подавилась данными. Делаем партишенинг.
Вопрос: Какой роутер/маршрутизатор с ограничением доступа по открытому порту можно приобрести?

Лучший ответ:
микротик, йопт

"Мы Можем Многое" (С) Мавроди

Худший ответ:
Микротик. С уровнем лицензии lv4 или выше
Вопрос: Возможно ли подключение нескольких АКБ к одму ИБП?

Лучший ответ:
Можно ли одним ибп паралельно заряжать сразу 6 акб, нужна ли балансировка (Временем заряда готов пожертвовать)Можно теоретически. Практически надо смотреть -  зарядное будет выдавать максимальный ток длительное время, вполне может перегреться, если не рассчитано на такое.  Так что вполне может потребоваться активное охлаждение.
Ну балансировка вешь нужная, ибо один дохлый будет тянуть за собой все. Только как вы ее сделаете? Это невозможно без переделки конструкции АКБ. В общем вместо грозди меллких АКБ уместнее подключить один, но более емкий.

Реально ли запитать таким франкенштейном нагрузку в 600 ватт?Это зависит исключительно от ИБП, но никак не зависит от количества и емкости подключенных АКБ.

В целом идея норм или забить и купить нормальный ибпСмотря на то, что вы хотите получить в итоге.
Если ИБП способный питать нагрузку большую чем заявлено производителем - нет.
Если ИБП способный питать заявленную нагрузку длительное время - вполне, но скорее всего нужно будет мудрить с охлаждением.

Недорогие ИБП обычно не грешат активным охлаждением, и не рассчитаны на длительную работу - потому что штатный АКБ способен от силы протянуть минут 5.  Если вместо 5 минут будет 50минут - есть вероятность что пассивное охлаждение не справится.

Я подключал к  недорогому 600ватному Ippon'у  обычный автомобильный аккумулятор на 60а/ч  - прекрасно работает, но охлаждение пришлось колхозить.

Худший ответ:
1. Параллельно можно и нужно, продлит время работы. При параллельном подключении балансировать не надо. Само собой увеличится время заряда в разы.
2. Зависит от ИБП, если он и сможет тащить нагрузку, возможно что уже через 15 минут он начнёт перегреваться, а через пол часа расплавится. Если нагрев слегка выше нормы то можно попробовать приделать вентилятор прорезав окно в ИБП и подключив вентилятор на реле которое переключает нагрузку на батарею, чтоб вентилятор включался автоматически.
Стоит понимать что у ИБП мощность может быть указана не в ваттах, а в VA, в ваттах это примерно процентов на 20 меньше.
Так же стоит понимать что электродвигатели крайне скверно работают от ИБП и скорей всего сплит система не заработает от дешевого ИБП.
3. Пробуй, если ИБП потянет то считай повезло.
Вопрос: Есть ли сайт для глухих с видео с YouTube?

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

Худший ответ:
Если ютуб не делает субтитры, то уж точно за него не станут делать
Вопрос: Есть ли курсы по Go наподобие JavaRush?

Лучший ответ:
gotour https://go.dev/tour/welcome/1
Это обязательно для прохождения

Худший ответ:
Есть на stepik курсы по основам Go