Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Facebook прослушивает звонки?

Лучший ответ:
Если У Вас нет железобетоных доказательств того, что они не прослушивают - лучше считать, что прослушивают (и я совершенно не удивлюсь, если это так оно и есть - ворон ворону глаз не выклюет)

Худший ответ:
Если приложение FB установлено и разрешён доступ к микрофону, то вполне вероятно.
Вопрос: Как сделать проверку Telebot на пользователя и воспринимал только его?

Лучший ответ:
import telebot

token = 'token'

bot = telebot.TeleBot(token)

ADMIN = 121495485 # Цифры заменить на свой id

@bot.message_handler(content_types=['text'])
def repeat_all_message(message):
	print(message.chat.id)
	if message.chat.id == ADMIN:
		bot.send_message(message.chat.id,'Ты админ')
	else:
		bot.send_message(message.chat.id,'Ты не админ')

if __name__ == '__main__':
    bot.polling(none_stop=True)

Худший ответ:
при запросе id должен вернуться id, а не 'creator', смотрите у себя, ошибка в коде.
Вы скорее всего не правильно запрашиваете id, за теле бот не шарю, но в aiogram это - message.from_user.id. 

 bot.get_chat_member - мне кажется это не нужно, просто напишите \
if message.chat.id == <Мой id>
Вопрос: Как перенести печатную плату с радиоэлементами на принципиальную схему?

Лучший ответ:
То, чем вы собрались заниматься - весьма трудоёмкое занятие, и требует хорошего зрения, а также большого терпения и усидчивости. Мне пришлось немало заниматься этим сразу по окончании ВУЗа, когда конторе, куда меня распределили, было поручено сделать точную копию "цельнотянутого" с выставки немецкого станка.
Ваш БП - хороший объект для освоения методики и приобретения навыков, поскольку он достаточно простой. Если вам придётся делать это с 2-сторонней платой, содержащей SMD-элементы, вот тогда вы взвоете по-настоящему, и там будет не обойтись без мультиметра с функцией прозвонки. А если такая плата будет вдобавок ещё и многослойная... ну, тогда вообще швах, на такое можно соглашаться только под угрозой смерти.
Судя по последнему фото, начали вы правильно, но на первом шаге следить за размещением компонентов на листе бумаги и рисовать линии под 90 градусов ни к чему. На этом шаге рисуйте как бог на душу положит, под любыми углами, ставя линии хоть наперекрест, но обязательно следите за точностью связей - каждый электрический контакт линий между собой должен отмечаться крупной точкой (как принято на принципиальных схемах). Располагать элементы на первом шаге можно на любом свободном месте листа - главное, чтобы их выводы были продлены куда надо и их подключение фиксировалось крупными, хорошо заметными точками (впрочем, если вывод идёт в единственное место без разветвления, точка не нужна).  Удобочитаемость схемы на первом шаге не требуется или необязательна, точность по отношению к исходному оригиналу - обязательна.
Получив путаную схему первого шага, в точности которой вы уверены, приступайте ко второму - глядя на эту путанку, перерисуйте её так, чтобы стал понятнее её принцип работы (смотреть на само изделие при этом уже не обязательно - ведь в точности схемы первого шага вы уверены, верно?). Почти наверняка с первой попытки это не получится, поэтому после второго шага приступайте к третьему - расставляйте элементы на листе ещё удобнее и читабельнее.  При этом не возбраняется пользоваться стирательной резинкой. После нескольких таких шагов у вас начнёт получаться нечто похожее на схемы, нарисованные профессионалами.
А последним шагом может быть перенос рукописной карандашной схемы в комп с помошью любого схемного редактора (впрочем, редактор лучше выбрать такой, который поддерживает обозначения элементов по российскому ГОСТу).

Худший ответ:
Все просто. Берете какой ни будь схемный редактор (я предпочитаю Proteus). Выбираете необходимые вам элементы и соединяете их согласно проводников на плате, расставляете элементы таким образом чтобы схема хорошо читалась.  Если уж сильно вам хочется по старинке на бумаге то сначала вам необходимо создать таблицу соединений выводов, а уже потом рисовать схему, но по моему это будет в десятки раз дольше
Вопрос: Почему не работает отправка почты из PHPMailer используя smtp.yandex-а?

Лучший ответ:
Yandex требует получать отдельный пароль для "почтовых программ "

Худший ответ:
Полная инструкция:

https://phpstack.ru/php/smtp-ot-yandex-kak-otpravi...

Обратите внимания на "пароли приложений"
Вопрос: Как скомпилировать jar в exe без возможности открыть файл как архив?

Лучший ответ:
Excelsior JET некогда решал данную задачу.

Худший ответ:
Следует уточнить. Существуют 2 подхода:
1. SFX like
2. Загрузчик читающий прямо из секций файла

Первый содержит стаб который на время выполнения программы распаковывает jvm и ваше приложение в отдельную директорию, где собственно можно все и увидеть. Плюс если покопаться в экзешнике можно вырезать нужную секцию и распаковать

Второй не создает мусора и работает транслируя запросы, добраться сложнее, но в памяти все равно есть ваше приложение.

В общем все зависит от настырности реверсера. 
С вашей же стороны в какой то момент легче прикрытся лицензионным соглашением вместо того что бы тратить усилия на защиту
Вопрос: Как читать дженерики в TypeScript?

Лучший ответ:
Данная функция принимает аргумент constructor любого типа T, который является подтипом типа { new (...args: any[]): {} }

В свою очередь { new (...args: any[]): {} } - это абсолютно тоже самое, что и new (...args: any[]) => {}. Это сигнатура конструктора, с любым количеством любых элементов и инстанциирующий значение с типом {}.

Ну и тип {} - это множество всех не нулевых значений (не только объектов), то есть по сути это как тип any, но без null | undefined и с не сломанной вариантностью. Здесь его безболезненно можно заменить на тип unknown, в отличии от тех же аргументов, где из-за контрвариантности аргументов функций (и конструкторов) предикаты на типах ломаются и без any нормально не сделать.

В целом, под такой дженерик подойдет абсолютно любой конструктор

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

Лучший ответ:
Есть вероятность что ограничения на шейпере идут по mac адресам. Можно попробовать на пк вписать mac от телефона и наоборот. Но это такое, в нормальной сети такого не будет.
Я бы пошел другим путем, пнул админа через служебку с целью предоставления доступа к нужным ресурсам по служебной необходимости. А там пусть сами решают, будут сами городить обход до гитхаба или может админ откроет сквозной выход до vpn нужного Вам.
В общем я к тому что если доступ нужен именно по причине рабочего процесса то и решать проблему нужно механизмами рабочего процесса, а не пытаться выкручиваться самому.

Худший ответ:
подозреваю, что телефоны от компов отличаются не по какому то магическому признаку, а просто телефоны через беспроводное подключение приземляются в одну сетку, а компы через провод в другую
легко определить тупо сравнив ip адрес сети на компе и телефоне
Вопрос: WPF или Windows?

Лучший ответ:
Что лучше учить если новичок в C#C#

Худший ответ:
И то, и другое - фреймворки для разработки GUI (Графического пользовательского интерфейса). 
И этими двумя выбор, в принципе, не ограничивается. Существуют и другие:
Avalonia
Qt
wxWidgets
Да и другие есть, кто-то больше, а кто-то меньше приспособлен для C#. В целом, даже на UnityEngine можно GUI сделать (да ещё какой!). Так же, к программе можно сделать и веб-интерфейс.

Тут следует понять, что GUI - это оболочка. Сама по себе она должна отрисовать окошки, кнопочки, текстовые поля, списки и пр., но остальное всё должна делать программа, написанная разработчиком.
Хорошей практикой вообще считается писать так, чтобы как можно меньше была привязка программной логики к графической оболочке. Сама программа может вообще быть скомпилирована в class library, а уж интерфейс  потом к ней можно пристыковывать любой. 

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

Что проще сказать сложно. Мне вот проще WF, но исключительно потому, что это первое (и на тот момент - единственное, что вообще было доступно для C#), сейчас выбор богаче.
Есть так называемый "синдром утёнка", обычно люди хвалят то, что увидели и освоили первым (так утёнок, якобы, считает первое увиденное им существо своей мамой). Поэтому я и говорю - не стоит акцентировать внимание на GUI, сам язык важнее.
Вопрос: Где сохранять проект с большыми файлами?

Лучший ответ:
на твоем Пэка

Худший ответ:
Отлично хранятся на Bitbacket.org, у меня там хранятся проекты до 10гб. Ограничений пока не заметил. Git клиент должен уметь в LFS.

апд: прочитал что могут в любой момент порезать репозиторий (правила пользования), т.к. официально размер не ограничен, видимо надо обнаглеть сильно чтобы тебе порезали размер хранения.  
"Мы ожидаем, что вы будете вежливы и уважаете добросовестное использование."
Вопрос: Почему мой бот discord.py не может подключиться к голосовому каналу?

Лучший ответ:
Почему мой бот discord.py не может подключиться к голосовому каналу?Потому что  слушал и писал как показано в одном видеоуроке на disord.py
Если не способны перевести и понять ошибку начните с изучения основ языка.
И бросайте смотреть видео на которых учат писать подобный код, автор даже на Джуна не тянет.

Худший ответ:
Переменная server в 40-ю строку вашего кода приходит со значением None. У None нет метода .voice_channels
Вам надо понять, где и почему переменная serverне получила ссылку на объект, который ожидается в server

Разбираться в ваших длиннющих «комбо-функциях» нет никакого желания. Рекомендую рефакторить код, разбить функции на много мелких и отлаживать их по-отдельности.
Вопрос: Есть ли кроссбраузерный вариант копирования текст в буфер обмена?

Лучший ответ:
function copyToClipboard(value) {
    var prev_focus = document.activeElement;
    var area = document.createElement('textarea');
    area.value = value;
    document.body.appendChild(area);
    area.focus();
    area.select();
    area.setSelectionRange(0, 99999); /* For mobile devices */
    document.execCommand('copy');
    document.body.removeChild(area);
    if (prev_focus) {
        prev_focus.focus();
    }
}

Работает везде - Firefox, Chrome, Safari

Худший ответ:
Я же работаю на http
Работай на https, либо document.execCommand("copy") по выделенному тексту.
Вопрос: Зачем ларавели нужен докер?

Лучший ответ:
Докер нужен потому что ставите на Windows и чтобы упростить развертывание окружения.

Обойтись без докера можно, но с докером проще.

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

Лучший ответ:
Уволят уже в любом случае, возможность бороться за деньги зависит от условий оплаты.
Если зарплата - 100% оклад (без премий), то самое простое предложить увольнение по соглашению сторон с выплатой премии в 2 оклада (просите 4 оклада, соглашайтесь на 2, если повезет - 3). В этом случае работодателю дешевле заплатить и расторгнуть договор полюбовно. Важно при этом строго соблюдать трудовой договор - приходить на работу вовремя, сидеть до конца дня. Можно даже не работать, просто сидеть за компьютером, соблюдая формальности.
Хорошая идея попросить свой ноутбук или другую технику (если он Вам нужен), так как с большой долей вероятности работодатель просто уберет ее на склад, а так сэкономит на выплатах)

Если зарплата делится на оклад и премию, проще согласиться по собственному, так как работодатель имеет право срезать премию и держать Вас на голом окладе до тех пор, пока не согласитесь написать заявление по собственному. Но все равно можно попросить выходное пособие в три оклада, согласившись в итоге на 1-2.

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

Судиться с работодателем можно, но это долгий процесс, обычно выгоднее быстро найти новую работу, благо рынок сейчас жив и предложений хватает. На всякий случай напомню, что за исключением расходов на адвоката все судебные расходы несет работодатель, то есть Вы в основном рискуете своим временем.

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

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

Худший ответ:
Если доступен bash

sort -g -S500M -o /path/to/output.txt /path/to/input.txt
Вопрос: Мертв ли JQUERY?

Лучший ответ:
Он устарел. (точка)
Но не умер! Еще уйма проектов его использует и эти проекты нужно кому-то поддерживать)

Худший ответ:
Жив, обновляется. Предыдущий коммит в jquery/jquery был 24-го мая.
Вопрос: Как установить Microsoft SQL Server на неподдерживаемые дистрибутивы?

Лучший ответ:
На 22 версию еще рано, она только появилась. 
На 21 встанет так же как и на 20.04. (Я так думаю)
Только странно использовать 21 версию вместо 20 ltc

Худший ответ:
универсально - контейнирзация (например докер) или даже виртуализация
Вопрос: Стоит ли искать ошибки при изучении языка?

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

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

Лучший ответ:
Задачу можно решать многими способами. Например. Рассмотрим векторы образованные центром O(ox,oy) и точками A(ax,ay), B(bx,by). Их сумма по правилу паралеллограмма даст нам направление для биссеткрисы угла
которая образована AOB. Уравнение биссектрисы будет известно. 

Решаем пересечение этой прямой с окружностью и получаем искомый центр дуги.

Что в этой задаче плохо. В этой задаче - "ленивый" автор который не удосужился придумать названия для точек и заставил всех придумывать свои нелепые названия или писать словами.

Что еще плохо. В этой задаче на самом деле не одна а две дуги. Но мы каким-то образом должны догадаться что речь идет о малой дуге. Об этом - тоже надо сообщать. Это раздражает.

На будущее - оформляй задачи как в задачнике.

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

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

Худший ответ:
Да конечно, стилус с блютус можно нанести вред здоровью.
Если хорошо постараться, то стилусом можно лишить себя слуха, зрения или даже лишить жизни.
Не используйте стилус с блютусом если вам кажется что стилус в руке может нанести вам вред. 
Медленно отложите стилус в сторону и обратитесь к врачу.
Вопрос: Как переименовать и почистить имена файлов с помощью regex на linux?

Лучший ответ:
Берешь и чистишь.
Без конкретных примеров неизвестно что сказать.
Ну и утилита rename умеет в регэксп

Худший ответ:
Команда  find  поддерживает  regexp  (и не только)
Например
$ find . -regextype sed -regex ".*/[a-f0-9\-]\{36\}\.jpg"
./test/81397018-b84a-11e0-9d2a-001b77dc0bed.jpg
./81397018-b84a-11e0-9d2a-001b77dc0bed.jpg
Ну и если чего нашла
find . -regextype sed -regex ".*/[a-f0-9\-]\{36\}\.jpg" --exec rm {} \;
Вопрос: Как избавиться от нагрева ноутбука?

Лучший ответ:

Почистить от пыли
Заменить термопасту


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

Лучший ответ:
А причем здесь двоичный код?

Числа на четность проверяются по-другому:
if num % 2 == 0:
    ...

Плюс, если вы идете по рэнжу, то это просто все числа с двойки с шагом 2.

Худший ответ:
А причем здесь двоичный код?

Числа на четность проверяются по-другому:
if num % 2 == 0:
    ...

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

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

Как настроить приём входящих подключений, запретив исходящие?
Фаерволлом.

Худший ответ:
Проброс снаружи RDP-порта на сервер - не есть открытие для него интернета, если всё остальное запрещено.
Вопрос: Linux не удалось установить базовую систему в каталог /target?

Лучший ответ:
Хотел установить kali linux, но сталкнулся с ошибкой

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

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

Лучший ответ:
Таймеры в JS не точны, поэтому лучше вызывать tick() почаще. Скажем, 10 раз в секунду.
Мигание лучше сделать полный цикл за секунду: чтобы и появлялось  и гасло двоеточие каждую секунду:
snippetЗамедленный вариант через секунду закомменчен.

Худший ответ:
https://codepen.io/alex922/pen/XWgxdRq
На CSS. Можно настроить анимацию, цвет и прочее...
Вопрос: Отключение жесткого диска(второстепенного), как правильно?

Лучший ответ:
Ну так, системный диск в одном месте, загрузчик в другом
Берем aomei backupper копируем efi 100мб
С помощью aomei part assist освобождаем место с уменьшением размера диска C:\, так чтобы вначале было чуть больше 100мб
С помощью aomei backupper (с флешки восстанавливаем efi раздел в неразмеченное пространство)
Должно завестись

Если случится так, что не заведется: придется восстанавливать загрузчик через флешку с виндой
Раздел у нас есть так что проблем не возникнет
Вот инструкция
https://remontka.pro/windows-10-bootloader-fix/

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

Лучший ответ:
Самое простое - это просто позволить игрокам покупать и продавать валюту X по любой цене за валюту Y.
Это и будет регулирование спросом и предложением.

Если же нужно всё же фиксировать курс по игровым правилам, то ты можешь посчитать сумму валюты всех игроков. И просто соотнести их.

Так если валюты X - 1000 единиц в игровом мире, а валюты Y - 2000 единиц,
то курс будет: 1 ед. X = 2 ед. Y.

То есть получается, что валюта X - более редкая, поэтому более дорогая. А дальше курс определяется соотношением. Вот и формула.

Можно добавить всякие хитрости. Например, если ты вливаешь в игру 100000 X, то курс меняется не резко, а плавно, и не обязательно линейно.

Также курс может быть подвержен мелким скачкам от каких-то игровых событий, объявлений.

Конечно, польза самой валюты (что на неё можно купить) определяется субъективно игроками. Так что если какая-то валюта будет условно бесполезной, то курс по идее должен быть иным. Ну а что ты хотел при регулировании игровыми правилами? Если хочешь полностью рыночные отношения, то решение в первом абзаце - дать игрокам полную свободу самим выбирать курс.

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

Например доходы владельца игры. Как именно доходы игры зависят от курса этой валюты? Торговля является самоцелью игры или в игре есть игровые предметы, которые по этой цене покупаются и могут являться предметом внеигрового торга? В зависимости от цели будет меняться требуемый алгоритм.

На самом деле задача не тривиальная, сервера форекс-кухонь (хороший маркер - наличие mt4/5 терминала) лицензируются и поставляются именно с таким алгоритмом, и стоит это очень дорого.

Если же курс валюты может быть абсолютно любым, то просто поставь простой rand, ежесекундно меняя курс или его дельту изменения на случайное значение (от -1 до 1).
Вопрос: Глупые вопросы по тостеру, которые меня интересуют?

Лучший ответ:


Все пользователи с 0 вопросов и 9999 ответов действительно гении или это новореги или им удаляли вопросы?Аудитория Тостера, по сути, делится на четыре группы:

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


Худший ответ:
1. потому что нафиг ненадо и нагружает сервер. в большинстве случаев вопрошающие и так знают какие теги ставить
2. потому что сохраняй  у себя на ПК, вот почему. место не резиновое
3. просто они гуглят лучше))

ПС - это все без наезда следует расценивать ))
Вопрос: Как отобразить два v-for в таблице?

Лучший ответ:
Одного хватит. Который будет работать с вычисляемым свойством, представляющим объединённые данные.

Худший ответ:
в простейшем случае как-то так: https://codepen.io/FragsterAt/pen/RwyEwRB
но, скорее всего, нужно как-то склеить эти два результата в computed поле и выводить уже его (также через один v-for)
Вопрос: Как правильно разместить на сайте полику конф-ии, обработку перс. данных и договор-оферту?

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

Заметным текстом на видном месте. Чтобы нельзя было придраться, что вы нарочно спрятали данную информацию от пользователя.

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

Заметным текстом на видном месте. Чтобы нельзя было придраться, что вы нарочно спрятали данную информацию от пользователя.