Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как сделать, чтобы youtube-dl на удаленном сервере (Ubuntu) докачивала файлы до конца?

Лучший ответ:
Присоединюсь.
Разработчики забросили поддержку youtube-dl и гугл довольно оперативно заблочил нормальную скорость его работы (намеренно, либо ютуб просто "развивается", и парралельно поломал работу утилиты).

Сейчас активно развивается форк yt-dlp, у которого и скорость скачивания на уровне, и в дальнейшем его пока еще не забрасывают.
Так, как это форк, то обратная совместимость полная. Меняете youtube-dl на yt-dlp и все работает.

Худший ответ:
Мб у вас с интернетом проблемы, например он медленный и загрузка прерывается возможный фикс, 

Можете попробовать через скрипт скачать
import youtube_dl


def download_(link):
    ydl_opts = {'outtmpl': 'video/%(title)s.%(ext)s'}
    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
        ydl.download([link])


download_("https://www.youtube.com/watch?v=zV3k9OlQTqs")
Вопрос: Где на практике используется явное преобразование объектных типов в Java?

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

Худший ответ:
На практике применяется.
Например есть какой-то метод, который что-то делает с объектами типа Man и Robot.
И вот чтобы не писать два метода, которые, по сути делают одно и тоже, можно попробовать сделать метод унифицированный, в котором, возможно, понадобится преобразование типов (с предварительной проверкой через instanceof).
Вопрос: Snmp-agent community name — как узнать?

Лучший ответ:
в процессе настройки коммутатора вы указываете snmp community и права для него.
Обычно используется public как ro и private как rw.
По хорошему - не надо на рабочей сети использовать стандартные значения, лучше поменять.
Соответственно - если вы настраиваете - то вы знаете.

В заббиксе - коммунити либо лежит в глобальном макросе, либо указывается для хоста.. Либо и то и то )

Худший ответ:
В 99% встреченных мною устройств - по-умолчанию прокатывал public
Только у коммутаторах TP-Link пришлось вписывать самостоятельно
Вопрос: Почему не работает компьютер?

Лучший ответ:
Попробуйте достать ОЗУ, почистить контакты ластиком (не забудьте смахнуть его остатки) и вставить память обратно

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

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

use \Bitrix\Main,
	\Bitrix\Tasks\CheckList\Task
	;

Main\Loader::IncludeModule('tasks');

/**
 * @var integer Идентификатор задачи
 */
$taskId = 6;

/**
 * @var integer Идентификатор пользователя
 */
$userId = 1;

$result = Task\TaskCheckListFacade::add(
	$taskId,
	$userId,
	[
		'TITLE'        => 'Test data',
		'PARENT_ID'    => 0,
		'SORT_INDEX'   => '10',
		'IS_COMPLETE'  => 'N',
		'IS_IMPORTANT' => 'N',
		'MEMBERS'      => [],
		'ATTACHMENTS'  => [],
	]
);

var_dump($result);

Худший ответ:
Добрый день! На дворе сентябрь 22 года, но увы, документации по методу CheckListFacade так и не появилось.

Подскажите пожалуйста правильную связку. Мне надо создать в 1 задаче 2 разных чек-листа. Они создаются без проблем. 

$taskId = 1;
$userId = 1;
$task = CTaskItem::getInstance($taskId, $userId);

$result = Task\TaskCheckListFacade::add(
  $taskId,
  $userId,
  [
    'TITLE'        => 'Test data',
    'PARENT_ID'    => 0,
    'SORT_INDEX'   => '10',
    'IS_COMPLETE'  => 'N',
    'IS_IMPORTANT' => 'N',
    'MEMBERS'      => [],
    'ATTACHMENTS'  => [],
  ]
);
\CTaskCheckListItem::add($task, ['TITLE'=>'TITLE1', 'SORT_INDEX'=>10, 'IS_COMPLETE'=>'N']);

$result2 = Task\TaskCheckListFacade::add(
  $taskId,
  $userId,
  [
    'TITLE'        => 'Test data2',
    'PARENT_ID'    => 0,
    'SORT_INDEX'   => '20',
    'IS_COMPLETE'  => 'N',
    'IS_IMPORTANT' => 'N',
    'MEMBERS'      => [],
    'ATTACHMENTS'  => [],
  ]
);

\CTaskCheckListItem::add($task, ['TITLE'=>'TITLE1', 'SORT_INDEX'=>10, 'IS_COMPLETE'=>'N']);

Но, все созданные поля прикрепляются к первому чек-листу. Что и логично, так как нигде не указывается куда их прицепить. Подскажите как принудительно указать, полям к какому чек-листу им прикрепляться? Пункты описанные выше - не работают. Спасибо!

P.S. Последний пункт работает, но это дичайшее извращение =)
Вопрос: Где ошибка в js?

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

Худший ответ:
Удалите строчку Array.from(listItems).forEach((cl) => cl.classList.remove("active")); и все заработает
Вопрос: Для чего нужны другие закладки в браузере Google Chrome?

Лучший ответ:
Просто как отдельная папка. 
Можете своих понаделать

Худший ответ:
Типо разные тиры страниц. Например в Других закладках хранить не очень важные закладки
Вопрос: Сложно ли перейти с frontend на backend и остаться на том же уровне зарплаты?

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

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

P.S. Получают не всегда столько, сколько знают, а столько за сколько себя смогут продать.

Худший ответ:
получи опыт на фрилансе и проходи собеседование на норм зп
Вопрос: Что точно означает 'эта сеть блокирует защищённый трафик DNS'?

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

РКН решил контролировать трафик
Но оказалось что нужно дох.. ресурсов
РКН решил контролировать только DNS
Но нашлись люди, которые подняли сервера DNS-over-HTTPS и общедоступные DNS
РКН решил заблокировать DoH и общедоступные сервера DNS
-- вы находитесь здесь---
...

Худший ответ:
Я сотрудник данного провайдера, пожаловался клиент. Да, забыл про установленное у нас ТСПУ, которое контролируется Роскомпозором :|
Вопрос: Акутальна ли сейчас ссылочная нагрузка?

Лучший ответ:
нагрузка да

оттуда  - нет

Худший ответ:
С форумов вряд ли. Ссылки должны быть качественными. Профили - это больше под дорвеи.
Вопрос: Как заставить работать .htaccess, если скрипт скрипт работает благодаря php -S localhost:8000?

Лучший ответ:
никак: htaccess – фишка апача.
можете эмулировать его на пыхе, а если нужен именно он – поднимайте апач или лайтспид.

Худший ответ:
учитывая, что словом "хэтеаксес" пэхапешные массы называют роутинг, который заворачивает все запросы на индекс пхп, то достаточно всего лишь прочитать документацию 
php -S localhost:8000 index.php
Вопрос: Как добавить один html файл в другой с помощью {{> }}?

Лучший ответ:
Скорее всего, он использовал шаблонизатор, предположу, что Handlebars, по синтаксису похоже, но возможно что-то другое

Худший ответ:
Перемотать видеоролик на начало или посмотреть предыдущий видеоролик и обратить внимание на инструментарий мужика. Что он использует еще помимо классики - CSS/HTML/JS.
Вопрос: Как записать результат функции(простые числа) в массив?

Лучший ответ:
Функцию не обязательно, можно в начале создать массив, потом в цикле сделать ее копию и записать туда числа

$myarr = array();
            for ($c = 1; $c <= 100; $c++) {
                for ($i = 2; $i < $c; $i++) {
                    if ($c % $i == 0) continue 2;
                }
                $myarr[] = $c;
            }
        print_r($myarr);

Худший ответ:
Надо ясно представлять себе, что на входе, что на выходе.
У каждого «атома» кода, и более крупных штуковин типа функции.

Наверное, стоит разобраться, что возвращает ваша функция. Пока — ничего, т.к. там нет return. Она только печатает значения.

Давайте по шагам. Вот мы в переменную добавим что-то из функции:function func_a()
{
  return 5;
}

$result = func_a();
$result === 5; // true
Функция может вернуть и массив:function func_b()
{
   return [1, 2, 3, 4, 5];
}

$result_array = func_b();
В вашей задаче, наверное, лучше формировать массив прямо внутри функции, и возвращать готовенький.

spoiler/**
 * Collect array of prime numbers up to provided top limit
 * @param int $top limit
 * @return array 
 */
function primes(int $top = 100):array
{
    if ($top <= 1) return [];
    $result = [2];
    for ($i = 3; $i <= $top; $i += 2) {
        for ($j = 3; $j < $i / 2; $j += 2) {
            if ($i % $j === 0) continue 2;
        }
        array_push($result, $i);
    }
    return $result;
}

primes(55) // [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53]
Алгоритм набора простых чисел можно улучшать и улучшать. Погуглите, что человечество уже напридумывало. Как минимум, чётные числа после 2 можно смело пропускать; проверять не до верхнего предела, а только до его половины. Подробнее (на англ.).
Вопрос: Как вставить переменную в строку в кавычках?

Лучший ответ:
Вообще-то это C/C++.

char url[макс_длина];
sprintf(url, "https://site.com/%s", <тут переменная>);
curl_easy_setopt(curl, CURLOPT_URL, url);

Худший ответ:
var a = "какое-то значение"
url = "https://site.com/" + a
Вопрос: Стоит ли использовать везде GraphQL?

Лучший ответ:
Если Вы не пишите внешнее или публичное API, то GraphQL и REST - будут крайне отвратительным выбором. Они ограничивают Вас в низкоуровневом CRUD, создавая больше проблем, чем решают, а главное затрудняют выражать Ваше API в терминах доменной области.
Посмотрите в сторону RPC протоколов, и посмотрите как элегантно на них можно описать конкретно Ваш домен. Да и выбор тут огромен: Apache Thrift, gRPC, JSON-RPC, а так же мой любимый, но почему-то малоизвестный в русскоязычном интернете E/A/?T (расшифровывается как entity/action/optional-target)

Худший ответ:
REST это вообще не "метод" а описание архитектуры. включает в себя несколько базовых принципов и все.
GraphQL  напротив, это конкретный протокол взаимодействия .

а как реализовать протокол клиент-сервер надо решать исходя из конкретных условий конкретной задачи.   конкретно выделенных человекочасов.
Вопрос: Ноут выдаёт синий экран если на ютубе выбрать качество 1440p, будет ли то же самое, если я подключу к нему монитор 1920 * 1080?

Лучший ответ:
Конечно. Устройство вывода же тут не при чем

Худший ответ:
Проверяйте монитор не ютубом, а специальным софтом для проверки.
Есть онлайн варианты, типа такого, и есть десктопные, с ещё большим количеством тестов.
Вопрос: Можно ли использовать Apache после установки phpmyadmin для других веб страниц на той же машине в каталоге var/www?

Лучший ответ:
можно, разрешаю

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

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

Худший ответ:
Если понимаешь, что делает этот код, можешь изучать всё, что угодно

$a = [ 2 <=['-']=> $b];
Вопрос: Какое направление в университете мне нужно для программиста?

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

Худший ответ:
информатика, информатика, инженерия программного обеспечения (самая понятная), информационная безопасность С этими названиями стоит быть осторожнее, т.к. они довольно расплывчатые. Проблема может быть в том, что в разных вузах на одинаковых специальностях программированию может быть уделено разное время, в одном с первого курса начнете прогать, а в другом только со 2-3, поэтому прежде чем подавать документы нужно попросить программу по предметам и поспрашивать в группах университета, что преподают. 
ИБ кстати далеко не всегда про программирование.
Вопрос: Есть 2 варианта кода. Во 2-м варианте при определённом положении оператора return в ветвлении if-else программа выдает ошибку, почему?

Лучший ответ:
Скорее всего компилятор ругается на то, что у вас не во всех вариантах событий возвращается какое-либо значение, допустим в коде ниже если выполнится условие if(income1>income2), но не выполнится вложенное в него if(income1>income3), то функция просто ничего не вернет, ибо блок else для вложенного if отсутствует.
if (income1>income2) {
            if (income1>income3) { 
                return film1;  
            }

Худший ответ:
Скорее всего компилятор ругается на то, что у вас не во всех вариантах событий возвращается какое-либо значение, допустим в коде ниже если выполнится условие if(income1>income2), но не выполнится вложенное в него if(income1>income3), то функция просто ничего не вернет, ибо блок else для вложенного if отсутствует.
if (income1>income2) {
            if (income1>income3) { 
                return film1;  
            }
Вопрос: Как обнулить счетчик авто-инкремента в postgresql?

Лучший ответ:
В отличии от MySQL где TRUNCATE TABLE автоматически сбрасывает авто инкремент, в PostgreSQL нужно добавить ключ RESTART IDENTITY
TRUNCATE TABLE tbl RESTART IDENTITY;

run sql oline

Худший ответ:
postgresql+identity+сбросить
Вопрос: Как проверить есть ли элемент на странице в selenium python с помощью if?

Лучший ответ:
Сейчас модно как-то так:
driver.implicitly_wait(15)
if bool(driver.find_elements(by="class name", value='blabla')):
    print('Yesss')
else:
    print('Nooo')
и без всяких try

Худший ответ:
def check_exists_by_xpath(xpath):
    try:
        webdriver.find_element_by_xpath(xpath)
    except NoSuchElementException:
        return False
    return True

*Спастил
в функцию передаешь xpath и он возвращает True или False
Вопрос: Как соединить двойное подчеркивание?

Лучший ответ:
Включите лигатуры в настройках.
И используйте шрифт с лигатурами.
Встроенный шрифт Jetbrains Mono или, например, Fira Code.

Худший ответ:
Включите лигатуры в настройках.
И используйте шрифт с лигатурами.
Встроенный шрифт Jetbrains Mono или, например, Fira Code.
Вопрос: Можно ли открыть общий доступ ко всему системному диску?

Лучший ответ:
Это скажется отрицательно на вашей безопасности. А если вас это не волнует, то можете смело включать общий доступ и даже удалить пароль с Wi-Fi.

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

Лучший ответ:
Файл подкачки нужен всегда.
Если памяти будет хватать - он не будет использоваться.

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

С технической точки зрения windows нужен файл подкачки в любом случае и система его создает автоматически размером кажется 2мб прямо в c:\windows, как минимум так было раньше.
Вопрос: Где вывод результата выполнения команды?

Лучший ответ:
для start-service нужно указать -Passthru параметр.

Худший ответ:
Так и должно быть.
Раз ничего нет-значит выполнилась.
Для вывода дополнительных данных - погуглите "Powershell verbose output" и в частности про стандартный параметр -Verbose
А для перенаправления вывода есть | Out-File
Вопрос: Что проверить, если перестал подключаться 1.1.1.1 от Cloudflare?

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

Худший ответ:
Перейти на другого оператора DNS.
Вопрос: Как работают интерпретаторы компилирующего типа?

Лучший ответ:
1) То есть считал строку, скомпилировал - получил двоичный код. Выполнил этот двоичный код. 
НЕТ. Считал — выполнил. Выполняется машинный код интерпретатора, а не программы. 

3) Байт-код понятен среде/виртуальной машине (.NET, Java), которая компилирует байт-код в двоичный код
В ЧИСТОМ СЛУЧАЕ — НЕТ. Считал команду байт-кода — выполнил. Точно так же выполняется машинный код интерпретатора, а не программы. Что-то вроде:
switch (opcode) {
case OP_ADD: {
       auto res = stack.pop() + stack.pop();
       stack.push(res);
   }
.....
}

Байт-код используется по нескольким причинам.
1. 3 быстрее 1.
2. С расширением языка мы меняем только компиляцию в байт-код. Оптимизация байт-кода, интерпретатор — остаются.

А компиляция в машинный код в 1 и 3 — это так называемая JIT-компиляция. Она может выполняться не всегда. Одни команды могут быть в машинном коде, а другие — интерпретироваться.

Кроме того, байт-код часто используется и в классических компиляторах 2-го типа! Это позволяет делать многоплатформенные коллекции компиляторов — все frontend’ы компилируют в байт-код, затем с байт-кодом делаем какую-то магию вроде оптимизации, отдаём его backend’у, и тот готовит OBJ-файл для нужного процессора.

Худший ответ:
Всё верно?Нет.
"3" Виртуальная машина выполняет байт-код, как подпрограмму, запоминая стек, переменные и пр. окружения. Никакой компиляции.
Разделитель строк — частый разделитель команд языка,  но не единственный.
Вопрос: Линукс. Это взлом? Тогда как?

Лучший ответ:
Главный вопрос - какой мессенджер?

Некоторые, например PSI, просто отображают в статусе ролик, который усер просматривает и песню, которую усер слушает.

Худший ответ:
'А был ли мальчик', точно был взлом?

Вариант 'через плечо' на экран посмотрел не подходит? человек не знакомый, это мог просто прохожий в окно заглянул.

Еще вариант, тебе в месседженере кинули ссылку на ютуб ролик, с вероятностью 99% ты его бы посмотрел, особенно если подгадать с темой (общались по работе), позже можно с гарантией сказать что в это время ты смотрел этот ролик.

Дальше - фишинг, у тебя ютуб точно ютуб а не какой-нибудь youlube? а может заходишь на http вариант (злоумышленник может такие сайты MITM-ить, подменяя в т.ч. скрипты аналитики, но это немного хардкор)?

Поэтому нужно больше информации, к примеру как ты смотрел этот ролик как пришел к нему? поиском в гугле/ютубе или со стороннего сайта? или в месседженере ссылку кинули?
Вопрос: Как скомпилировать консольное приложение для Android?

Лучший ответ:
Общая идея android приложений - это dalvik bytecode (обычно это java) виртуальная машина, но разрешается использовать нативные библиотеки

Соответственно пишешь минимальное приложение на java (пусть даже без gui, а вывод при необходимости делать в системные логи), которое первым делом подключит библиотеку, которую так же помещаешь в apk.

Исторически это называется java native interafce, позволяет навести мосты между java приложением и нативным c/c++.

дока - https://developer.android.com/studio/projects/add-...
немного про android jni - https://developer.android.com/training/articles/pe... там же слева смотри ссылки как собирать

Это очень трудоемкий путь, помимо того что придется пробираться через дебри jni прослойки и ограничений, понадобится поддерживать все многообразие железа (архитектур) причем как 32-битных так и 64-битных, где уже на этапе их сборки и отладки появится миллион проблем, т.е. не только x86 но и arm, причем последний это не пара а много много - arm64-v8a , armeabi , armeabi-v7a ... (больше если надо поддерживать старое железо)

Худший ответ:
Общая идея android приложений - это dalvik bytecode (обычно это java) виртуальная машина, но разрешается использовать нативные библиотеки

Соответственно пишешь минимальное приложение на java (пусть даже без gui, а вывод при необходимости делать в системные логи), которое первым делом подключит библиотеку, которую так же помещаешь в apk.

Исторически это называется java native interafce, позволяет навести мосты между java приложением и нативным c/c++.

дока - https://developer.android.com/studio/projects/add-...
немного про android jni - https://developer.android.com/training/articles/pe... там же слева смотри ссылки как собирать

Это очень трудоемкий путь, помимо того что придется пробираться через дебри jni прослойки и ограничений, понадобится поддерживать все многообразие железа (архитектур) причем как 32-битных так и 64-битных, где уже на этапе их сборки и отладки появится миллион проблем, т.е. не только x86 но и arm, причем последний это не пара а много много - arm64-v8a , armeabi , armeabi-v7a ... (больше если надо поддерживать старое железо)
Вопрос: Почему невозможно создать объект в стеке?

Лучший ответ:
"ссылка на неразрешенный внешний символ "public: __thiscall MobilePhone::~MobilePhone(void)"

Линковщик пишет, что не определен деструктор. Конструктор определен, а деструктор нет.

Худший ответ:
"ссылка на неразрешенный внешний символ "public: __thiscall MobilePhone::~MobilePhone(void)"

Линковщик пишет, что не определен деструктор. Конструктор определен, а деструктор нет.
Вопрос: Кто несет ответственность за нелицензионное ПО на арендованном сервере?

Лучший ответ:
Юридические вопросы, к сожалению, не решаются вот так, жёсткими определениями. Достаточность или недостаточность определяется конкретным судьёй на конкретном заседании по конкретному вопросу.
И очень много переменных - кто наехал, с каким обвинением, есть ли гос. интерес, какой адвокат, болит ли голова у судьи, нравится ли ему ваша физиономия, и пр.
Многие недолюбливают юристов, потому что считают, что те высасывают проблемы из пальца, однако, они руководствуются принципом, лучше перестраховаться, чем потом огребать по искам.
Я к чему - внести в пользовательское соглашение конкретные формулировки, что ответственность за контрафактное ПО, детскую порнографию и призывы освободить Навального на жёстких дисках лежит исключительно на ваших добропорядочных клиентах, вам ничего не стоит, однако на гипотетическом судебном разбирательстве будет однозначно трактоваться в вашу пользу.

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

Лучший ответ:
пропатчить сырцы и перекомпелять.

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

Лучший ответ:
Спустить это дерьмо в унитаз и сделать БД в нормальной форме.
Идентификаторы пользователей лежат в отдельной таблице.
После этого достаются тупым джойном без всяких лайков

должна быть ещё одна таблица, в которой два поля, information_id и user_id 
и три записи
2|29
2|28
2|31
и тупой запрос, 
SELECT i.* FROM information i, users_info ui WHERE i.id=ui.information_id and ui.user_id=28;

Худший ответ:
SELECT * FROM `table` WHERE FIND_IN_SET('28', `users_id`) > 0

Если уж очень сильно хочется именно LIKE, то

SELECT * FROM `table` WHERE (`users_id` LIKE '28,%' OR `users_id` LIKE '%,28,%' OR `users_id` LIKE '%,28')