Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как делать сложные запросы используя репозитории и объединение разных таблиц?

Лучший ответ:
 решением этой несложной задачки.
Уважаю такой оптимизм. 

Проблема эта не нова. Называется она object-relational impedance mismatch и очень многие считают её в принципе нерешаемой, сравнивая её с  проигранной США войной во Вьетнаме. 
Так что можно надеяться на что угодно, только не на простое решение. Но сначала надо проблему осознать. Что отображение объектов на реляционную базу, которое называется object-relational mapping, сокращённо ORM,  никогда не бывает простым.

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

К примеру, "нерешаемость" проблемы с impedance mismatch относится к попыткам сделать универсальный ORM, который на вход получает имя любого класса, а на выходе коллекцию объектов. Про такой вариант можно действительно забыть (привет, элоквент-элоквент - и в продакшен!). Но вот полуавтоматическое решение вполне можно накостылить. Главное всегда помнить о проблеме, и как только автоматический маппинг перестаёт работать - тут же от него оказываться в пользу ручного колупания с запросами. Главное этого не бояться и не загонять себя в клетку словами "репозиторий", "один объект-одна таблица" и пр. У тебя есть задача - инстанцировать объект или коллекци объектов из БД. Окей, ты пишешь методы, которые это делают оптимальным способом, не важно - одна там таблица используется, 10 или еще плюс 2 кэша и носкл датабаза в придачу. 
Надо тебе сохранить объект или коллекци объектов в БД? Окей, пишешь метод, коорый делает это оптимальным способом. Да, это куча черной работы. Но зато у тебя будет чистая доменная логика (которая вообще никакого отношения к базе данных или "репозиториям" не имеет).

Отдельно прекламирую Cycle ORM. Сам я ненастоящий сварщик, но взрослые дядьки говорят что она лучше всего подходит для нормально реализованного маппинга объектов на БД. Лучше чем Доктрина или прости-господи Элоквент. С нетерпением жду доклада автора на ПХПРаша.

Худший ответ:
Можно использовать представления со стороны БД, либо фабрики хранилищ со стороны кода.
Модно сначала просто статически запечь в отдельный класс, если это действительно узкое место. Если паттерн себя проявит, то можно оформить в виде фабрики.

Вон в C# в Entity Framework почти как вы сказали, только там запрос конструируется из коллекций классов, которые умеют в маппинг конкретной предметной области. Но там на выходе уже полноценная ORM с оптимизациями типа отложенного запроса к БД: технология Linq-To-Entity реализует реляционную логику, так что громоздкий SQL запрос модно отложить до самого последнего момента.
Вопрос: Как вывести PHP переменную?

Лучший ответ:
Как вывести PHP переменную?

Ждем вопросов как включить компьютер

Худший ответ:
Если 
В php 
$link = "example.com";
То чтобы вывести ссылку в html 
ссылка
Вопрос: Кто проходил курсы от Otus? Отзывы? Мнения?

Лучший ответ:
Я проходил веб разработка Python. Дает очень много. Скилы, которые вы так просто не приобретете типа celery, jenkins graphana много всего.
и самое главное - вы делаете задания, потом свой проект и получаете код ревью от топовых разработчиков.
Своих денег стоит. Приготовьтесь уделять время. Суббота уходит на домашку целиком плюс на буднях еще делать приходится.
К слову, лично знаю парня, которого после курса разработчик Python (который обычный, не веб) взяли в яндекс.

Худший ответ:
Можно на трекере поискать были уже записи их курсов.
По питону хорошие advanced курсы на Pluralsight
Вопрос: Как расширить существующую модель на PHP?

Лучший ответ:
как бы сначала надо ответить на вопрос "где это нужно и зачем"Вариант 1
Не надо делать ооп ради ооп, просто в класс Message добавь метод getUrl()Вариант 2
Message это какой-то сторонний класс, и нет возможности его изменить, по этому делаем над ним декоратор.class MessageDecorator
{
    private $message;

    public function __construct(Message $message)
    {
        $this->message = $message;
    }

    public function getTitle()
    {
        return $this->message->getTitle();
    }
    
    public function getText()
    {
        return $this->message->getText();
    }

    public function getUrl()
    {
        // create url
        return 'url';
    }
}

$message = new MessageDecorator(new Message($title, $text));
$url = $message->getUrl();Вариант 3
Выносим генерацию url в отдельный сервисclass UrlService
{
    public function getMessageUrl(Message $message)
    {
        // create url
        return 'url';
    }
}

$message = new Message($title, $text);
$urlService = new UrlService();
$url = $urlService->getMessageUrl($message);

Худший ответ:
Это называется "Наследование"
https://www.php.net/manual/ru/language.oop5.inheri...
https://www.php-fig.org/psr/psr-4/
Вопрос: Совмещаются ли 5Ghz антенны с 2.4Ghz?

Лучший ответ:
5 и 2.4 ГГц это разные частоты и антенны им нужны разные - они физически не могут работать на одних и тех же антеннах, так как оптимальная длина антенны кратна дине волны а так как частота разная то и длина волны разная, следовательно у них должны быть разные размеры чем больше частота тем меньше длина волны и тем меньше размер активных элементов антенны.

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

Лучший ответ:
Да всем плевать на эту «самобытную идею слайдера».
Только если ты не выставишь ее на тот же Awwwards или на какой другой конкурс. Да и в этом случае в 90% всем будет плевать.
Весь мир ворует идеи друг у друга. И это нормально.
А патентов на «самобытную идею слайдера» надеюсь не придумали еще.

Худший ответ:
Да всем плевать на эту «самобытную идею слайдера».
Только если ты не выставишь ее на тот же Awwwards или на какой другой конкурс. Да и в этом случае в 90% всем будет плевать.
Весь мир ворует идеи друг у друга. И это нормально.
А патентов на «самобытную идею слайдера» надеюсь не придумали еще.
Вопрос: Как подключаться к своему серверу по SSH?

Лучший ответ:
Схема действий стандартная.
1. Гуглишь
2. Делаешь
3. Ничего не работает
4. Смотри п.1

Худший ответ:
1. Пробросить порт, это легко, куча мануалов в картинках гуглится.
2. Убедится что ip точно реальный, а не из внутренней сети провайдера. Если не реальный стряти с провайдера реальный.
3. Если ip динамический настроить какой нить dyndns.
---
На севере ничего дополнительно делать не требуется если к ssh внутрях сети подключается. Ну разве что я бы парольную аутентификацию на ключик заменил, спокойнее.
Вопрос: Как поднять собственную базу драйверов для Windows?

Лучший ответ:
Интегрировать все необходимые драйверы в дистрибутив. Гуглить по словам unattended install  windows.

Худший ответ:
Запустить Windows-Server c AD. Домен контроллер поставить.
Там есть сервис : Выступать в роли сервера обновлений. Можно не сам сервер сделать сервером обновления, а делегировать другой машине.
НО денег и времени потратишь ...ну очень много. Если машин 50-100 можно и ручками поставить драйвера, а вот больше 100 машин...  Значит у организации денег много пусть разоряются на полноценную сеть с домен контроллером и всякими доп лицензиями.
Вопрос: Как связать значение ключей при сортировке?

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

Худший ответ:
Очевидно нужно включить в сортировку и первый и второй ключ
Вместо этого return дописать сравнение второго ключа
Вопрос: Как устранить зазоры при переводе вектора из Illustrator в Photoshop?

Лучший ответ:
Выравнивание по пиксельной сетке включите в иллюстраторе.

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

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

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

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

Худший ответ:
"Максимально лаконично" у вас получилось (*в смысле упущенных подробностей, важных для понимания проблемы), а с чёткостью - наоборот. Прежде всего, что за сеть wifi - запароленная или открытая? Это видно при попытке к ней подключиться. Далее, что за точка доступа (AP) её раздаёт (в смысле технической марки)? Запишите её и выдайте сюда. Если AP подвешена под потолком и потрогать/посмотреть не получится, то хотя бы сфотографируйте через zoom-объектив. Это поможет узнать, каков доступ на её админскую страничку (IP-адрес наподобие 196.168.0.1, или 196.168.10.0, или...).
Впрочем, если у вас поработал действительно "волшебник", то он наверняка прикрыл доступ в админку. И правильно сделал, поскольку покуда вы качаете торрент (играете в онлайн-игру, смотрите видео FHD и т.д.) через узкое горлышко служебного доступа, другие пользователи этой сети вынуждены ждать, когда же вы закончите. В этом случае переходите на домашний торрент-доступ.
Вопрос: Корректное удаление элемента массива через input onChange как сделать?

Лучший ответ:
А зачем какой-то отдельный массив? Храните состояние чекбоксов в элементах workers.

При изменении состояния чекбоксов обновляйте workers:

inputChange = e => {
  const index = +e.target.dataset.index;

  this.setState({
    workers: this.state.workers.map((n, i) => i === index
      ? { ...n, checked: e.target.checked }
      : n
    ),
  });
}
<input
  type="checkbox"
  data-index={index}
  onChange={this.inputChange}
  checked={item.checked}
/>
Соответственно, вычисление суммы будет выглядеть так:

const sum = this.state.workers.reduce((acc, n) => acc + (n.checked ? n.salary : 0), 0);
https://codesandbox.io/s/ol342z1znz

Худший ответ:
Вариант решения.
Вопрос: Как сделать эффект затемнения в css?

Лучший ответ:
создать прозрачный темный блок position: absolute и при наведении делать его полупрозрачным

Худший ответ:
Простой вариант: если у вас затемняемое изображение это отдельный элемент (например #img, то расположите под ним черный фон, а на картинку навесьте #img:hover {
opacity: 0.5
}

Больше вариантов можно легко нагуглить, например ТЫК
Вопрос: Как поставить вопросу метку С /*Язык программирования С*/?

Лучший ответ:
Просто напишите букву и сохраните вопрос.

Худший ответ:
Просто напишите букву и сохраните вопрос.
Вопрос: Как отправить запрос на INSERT и UPDATE из одной формы?

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

Худший ответ:
Вам не стоит ни чего писать дальше, пока не поймёте,  что из формы сайта не посылаюся запросы insert, update, select
Вопрос: В какой области IT применение знаний — не самое важное?

Лучший ответ:
Вот идеальный рабочий день - полдня в чем-то разбираться, полдня это простым языком объяснять другим кому интересно. 
Перевожу: Хочу развлекаться за счёт работодателя.
Работа - это не про развлечение, это продажа своего труда за деньги. И программирование - это не про развлечение. Программист 49% времени пишет скучный код, а иногда и переписывает чужой ужасный код, ещё 49% времени занудно ловит унылые баги. Остаётся радоваться оставшимся двум процентам интересного.

Худший ответ:
Просто оставьте ИТ своим хобби.
Вопрос: Как восстановить данные поcле форматирования NTFS->EXT4?

Лучший ответ:
Testdisk прекрасно с этим справляется. Он опенсурсный. Умеет восстанавливать предыдущие талицы разделов без потерь!
Снимите на всякий случай дамп через dd и укажите путь до него программе, она выведет все найденые раздела, если все на месте можно  востановить на исходном диске.
Однажды столкнулся с похожей проблемой, перепробовал много разных средств, но смог помочь только TestDisk.

Худший ответ:
У меня такое тоже было, восстановил с помощью GetDataBack for NTFS
Вопрос: Есть ли смысл распространять свою cms на php платно?

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

Худший ответ:
Что такого в ней есть, чего нет у других? "У меня есть золотая корова, но вам я ее не покажу, вдруг распилите". По факту все может оказаться пшиком. И дело не в е*учих PSR и прочих свистоперделках, из-за которых вас могут закидать гавном, а в том какой спектр задач можно закрыть с помощью нее.
Вопрос: Как правильно составить условие IF PHP?

Лучший ответ:
$codes = [4, 16 ... 125];
if (isset($result['error']) && in_array($result['error']['code'], $codes)) {
     //что-то делаем.
}
Вам подойдет функция in_array. В итоге сильно сократит условие.

Худший ответ:
if (!isset($result['error']) || $result['error']['code'] == '4' || $result['error']['code'] == '16') {
...
Сначала проверку isset()
Вопрос: Есть ли резон идти в JS разработку?

Лучший ответ:
 Сейчас умею html, css, sass, pug, gulp, bootstrap, немного php и основы JS (а также jquery), ну и само собой WordPress
Меня в своё время с такими знаниями(в далекие бородатые 2012) даже на порог конторы не пустили, когда начали спрашивать "основы js", которые я не знал. А вы 8 лет стагнируете и топчитесь в знаниям, которые по сути охватывают первый год "учебы", что делали остальные 7 лет?)

среднем выходит $800-$1000 в месяц при плотном графике
Т.е за 8 лет вы на сайтах выросли до 1000$ в месяц? У Вас проблемы)

 Резонно ли тратить время на изучение, и переходить полностью в другую сферу работы
Да, Вам забыли рассказать 8 лет назад, что Веб - это как раз ежедневный анализ новых фич, коих на css-tricks выходит пачками, и попытка угнаться за поездом, так что давно пора.

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

Худший ответ:
Да, стоит потратить время и выучить React, другой уровень денег.  Думаю даже джуниором вы сможете зарабатывать свой нынешний потолок.
Вопрос: Выбор курсов для front-end. Treehouse, Udemy и т.д?

Лучший ответ:
День добрый, знаешь почему не чувствуешь себя готовым?) есть пару сверстанных проектов сверстай пару десятков  и будет тебе счастье).  Чаще всего наблюдения не приводят ни к чему хорошему, надо поставить цель и достигнуть ее путем труда, боли и страданий. https://themeforest.net/ посмотри примеры, выбери  может что приглянется и вперед верстать.
P.S. мое ИМХО только работать а не наблюдать, особенно если У меня есть хорошие базовые знания

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

Лучший ответ:
Когда ответом на вопрос является документация, то ссылка на неё лучше пересказа своими словами.
Так же модераторы не удаляют вопросы, ответ на который "легко" находится поиском по сети — ответ ссылка.

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

Лучший ответ:
Как уже предложил в соседней ветке, используйте ffmpeg -i и парсите его вывод. Есть также библиотека https://github.com/bramp/ffmpeg-cli-wrapper для того же самого и https://github.com/kokorin/Jaffree
Увы, фреймворк JMF, а также все альтернативы (xuggle и т.д.), как-то не особо пошли у java-сообщества. Обычно всю работу с бедиа делают на других языках, используя некие сервисы для связи явы с нужным функционалом :-(
Буду приятно удивлен и непременно попользую, если кто подскажет вменяемую и развивающуюся альтернативу для медиа на яве.

Худший ответ:
Спасибо за упоминание Jaffree. В ffmpeg есть 2 утилиты: ffprobe и ffmpeg.
Самое простое: ffprobe <путь к файлу> - но этот способ не всегда правильно показывает продолжительность, т.к. он сканирует только заголовки медиа стримов.
Более точное и но чуть менее быстрое: ffmpeg -i <путь до файла> -f null -c copy /dev/null (или просто Nul в Windows).
Вопрос: Calc() css как сначала вычесть, а потом разделить?

Лучший ответ:
есть такая штука - математика и она утверждает, что:width: calc((100% - 130px) / 3);
это тоже самое что иwidth: calc(33,33333333% - 43,33333333px);

Худший ответ:
width: calc((100% - 130px) / 3); прекрасно работает.
Вопрос: Какую бд использовать для оффлайн словаря?

Лучший ответ:
SQLite одно из стандартных решений (с ней FMDB). 
Довольно простое ))

Худший ответ:
Годится любая embedded key-value database for Swift.
Да хоть SwiftStore
Вопрос: Как запускать код Ruby на Sublime Text 3?

Лучший ответ:
1. Пишете код на Sublime
2. Сохраняете
3. Запускаете в консоли
4. Все
Если хотите, чтобы в одном месте можно было писать и запускать код то это уже к RubyMine или Visual Studio Code

Худший ответ:
Зачем вам эта боль? Поставьте себе RubyMine это лучшее для разработки на Ruby. Когда-то я писал и в Sublime и позже в VSCode, но на работе посадили за RM и это в разы облегчает разработку. Тут есть много чего, что не умеют редакторы.
Вопрос: Можно ли через управляемый коммутатор раздать интернет на 2 маршрутизатора?

Лучший ответ:
Можно google://vrrp

Худший ответ:
А какова цель? И как вы хотите использовать свитч? До роутеров или после? Можно и так и так.
Вообще вариантов, как с этим играться масса. Вот пару.
Можете на роутерах вррп настроить, попросить у провайдеров по 2 шнурка с lacp, всего 4, настроить lacp на роутерах. И настроить lacp на 2х портах коммутатора.
Можете и наоборот)
В коммутатор вставляете 2 порта провайдера и 4  порта от 2х роутеров. Настраиваете lacp группы 2 шт, в каждой по 1 порту каждого роутера, на роутерах тоже настраиваете агрегирование. На коммутаторе надо разрулить, чтобы каждая lag группа имела доступ к обоим провайдерам, а между собой провайдеры доступа не имели, как и к остальному коммутатору... с ходу не скажу, как сделать, но если нет - просто воткнуть в один влан, надеясь, что всё будет ок. Если провайдеры со своей стороны сделают агрегирование и дадут ещё 2 кабеля будет проще.
Дальше по ситуации)
Вообще если вы хотите использовать только 1 роутер одновременно вам эта вся хрень не нужна. Настраиваете один - на второй разливаете бэкап, при поломке провода перетыкаете один в один, всё.
Не писать на тостере пьяным! X10
Вопрос: Не отображаются файлы на диске. Что делать?

Лучший ответ:
Использую DVD RW диск как флэш накопитель.
Дальше читал с трудом - мешала ладонь на лице.виноват дисковод?
Да. Вполне возможно, что не читает нормально такие диски.

Худший ответ:
Лучшее решение - прекратить издевательство над собой и здравым смыслом и купить флешку.
Самая простая SanDisk Cruzer Blade на 16 гигов стоит 200 рублей.
То что диск не читается это нормально, так и должно быть, все диски рано или поздно перестают читаться или писаться, точно так же как и сидирумы со временем сдыхают.
Вопрос: Как используя только HTML(атрибуты) сделать блоки в одну строку?

Лучший ответ:
Таблица с одной строкой. Все остальные методы требуют css.

Худший ответ:
В атрибуты можно стили записать: <div style="display: flex"></div>
Вопрос: Можно ли подключить к одному HTML два CSS?

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

Худший ответ:
подключите свой файл со стилями после стилей уикит. И тогда ваши стили будут перекрывать стили уикита. Что не перекроет, разбираться - почему. В основном ошибки бывают из-за неправильного описания классов в своей таблице. А так !important если что ))
Вопрос: Почему HDD 500gb и 1tb почти одинаково стоят?

Лучший ответ:
Потому что себестоимость почти одинаковая.

Худший ответ:
Когда-то очень давно (вроде, вторая половина 199*-х) я смотрел цены на диски. Вроде, тогда диски были размером от половины гигабайта до двух гигабайт. Построил график зависимости цены от ёмкости. Получилось почти прямая линия "40 долларов + 60 долларов за гигабайт", ЕМНИП.

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

И есть второе объяснение этому факту:
Писюки не имеют операционки, зашитой в ПЗУ. Точнее, есть аж несколько таких операционое - Intel_MEв чипсете, Linux в HDD; но все они - "внутренние", и юзеру недоступны. Загрузка операционки по сети - сделана из-рук-вон-плохо. Поэтому людям нужно иметь хоть какой-то диск, не очень важно какой ёмкости. И чтобы продавать диски большей ёмкости - приходится делать разницу в цене минимальной.
Если бы разработчики вместо дебильной UEFI сделали нормальную операционку - то ценообразование для дисков могло бы существенно измениться.
Вопрос: Риск авторских прав если программист заливает приложение в AppStore под корпоративным аккаунтом, но используя личную электронную почту?

Лучший ответ:
Несет ли заказчик какие либо риски если я не использую его корпоративную почту при авторизации в AppleID?Разумеется. Когда работа компании завязана на какие-то личные аккаунты сотрудников это всегда риски.
Только непонятно каким боком тут авторское право.

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

Лучший ответ:
в настройках соединения (в браузере)
нужные/указаные домены пускаем по обычному пути,(не используя прокси)
а все остальные заворачиваем на несуществующий прокси.
более гибко можно настроить через .pac файл ,указав файл в настройках браузера
https://en.wikipedia.org/wiki/Proxy_auto-config

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