Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Не будет ли говнокодом использовать флексы внутри сетки бутстрап 3?

Лучший ответ:
. row и .col - это абстрактные сущности, которые призваны создать сетку, каркас страницы. Они не имеют никакой семантики или смысловой нагрузки, это просто структурные элементы. Внутри них может быть всё, что угодно -  и если это логично сверстать на флексах, то это нужно верстать на флексах. 
То есть, если внутри условного col-8 нужно сделать ещё три колонки, внутри которых будет какой-то другой контент, то логично использовать внутри еще один .row и .col-4, так как здесь речь идёт о сетке, каркасе. Если же внутри будет какой-то кастомный блок/элемент, типа меню или чего угодно ещё, где нужны все достижения Flexbox - смело можно использовать флексы, никакого говнокода тут не будет и близко.

Худший ответ:
Не будет, это по сути div внутри diva, а .row и .col это всего лишь классы, к которым можно применять любые стили
Вопрос: Какой бесплатный хостинг использовать для закачки файлов? И как это сделать?

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

Хостинг - это другое. Они берут деньги за возможность опубликовать что-то в сети. Там можно получить и постоянные ссылки, и белые IP, и хорошую скорость, и приемлемые лимиты по трафику.

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

Первая ваша ошибка - вы напрасно обобщаете слишком разные задачи. Попробуйте искать либо бесплатную хранилку с приемлемыми лимитами и прямыми ссылками, либо сконцентрируйтесь на одной без прямых ссылок и ищите способ скачивать с неё данные программно. К примеру яндекс, как мне помнится, вроде бы реализовывал протокол web-dav. Это чем-то похоже на ftp по сути.

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

Задавайте вопросы правильно, конкретизируйте и описывайте что вам действительно надо, а не то, как вы думаете устроен этот мир.

Худший ответ:
Вообще можно как раз таки request'ом открыть страницу и спарсить ссылку по кнопке скачать, тогда сайт сгенерирует ссылку, а она непостоянная, но если парсить её самостоятельно, то ты будешь получать каждый раз рабочую. Посмотри парсинг через beautifulsoup4.
Вопрос: Приведение типов в GO, можно сделать красивее?

Лучший ответ:
Можно сделать так, будет меньше кода. В остальном, ничего не уменьшить, ибо го довольно низкоуровневый язык.func interToInt64(inp interface{}) (int64, error) {
	switch v := inp.(type) {
	case int:
		return int64(v), nil
	case int8:
		return int64(v), nil
	case int16:
		return int64(v), nil
	case int32:
		return int64(v), nil
	case int64:
		return v, nil
	case uint:
		return int64(v), nil
	case uint8:
		return int64(v), nil
	case uint16:
		return int64(v), nil
	case uint32:
		return int64(v), nil
	case uint64:
		return int64(v), nil
	case string:
		return strconv.ParseInt(v, 10, 64)
	default:
		return 0, fmt.Errorf("unsupported type %T", inp)
	}
}

Худший ответ:
Ещё вариант:package main

import (
	"fmt"
	"strconv"
)

func main() {
	fmt.Println(interToInt64(1))
	fmt.Println(interToInt64(int64(10)))
	fmt.Println(interToInt64(int8(10)))
	fmt.Println(interToInt64(15.5))
	fmt.Println(interToInt64("15.5"))
	fmt.Println(interToInt64("15"))
	fmt.Println(interToInt64(uint(10)))
	fmt.Println(interToInt64(uint64(999)))
	fmt.Println(interToInt64(uint64(18446744073709551615)))
}

func interToInt64(inp interface{}) (int64, error) {
	strVal := fmt.Sprint(inp)
	if res, err := strconv.ParseInt(strVal, 10, 64); err == nil {
		return res, nil
	}
	return 0, fmt.Errorf("unsupported type %T with value %v", inp, inp)
}
https://play.golang.org/p/Q0_5UIoU3KP
Вопрос: Самый простой способ реализовать real time MySQL (без firebase!) базу данных для маленького приложения?

Лучший ответ:
Базу данных можно выбрать любую. Она не играет роли в realtime приложениях. Позвольте вам немного объяснить. Для передачи данных между клиентом и сервером в браузере существует всего два протокола. HTTP и Websocket. Firebase не магия и также использует их. Если браузером не поддерживается Websocket, то firebase откатывается на HTTP. Используя общераспространенный подход к разработке на PHP у вас не получится использовать websocket протокол поскольку типичные PHP приложения не живут дольше 1 запроса. Соответственно да, в таком варианте остается только ajax. Но точно также работает и firebase если в браузере нет поддержки websocket, так работает facebook, telegram и много всего остального. Они используют long-polling. Клиент отправляет запрос к скрипту на сервер, скрипт в цикле опрашивает хранилище mysql или более продвинутый вариант mysql+redis (чтобы не грузить запросами mysql) и пока данных не будет, цикл так и продолжит крутиться, для клиента это просто выглядит как повисший запрос к серверу. Как только данные появляются, они отправляются на клиент, соединение разрывается, а клиент сразу же отправляет новый запрос.
Есть развитие этой идеи. Называется HTTP Streaming. Отличие от long-polling в том, что после отправки данных клиенту соединение не разрывается, а сервер продолжает отправлять последующие данные по этому же соединению. Соединение разрывается по таймауту. Минус в том, что прокси-сервера могут кешировать небольшие пакеты данных и данные нужно раздувать например пробелами, чтобы пакет данных достигал минимального размера и был способен пробить кеш прокси-сервера. Плюс в том, что если у вас данные для клиента появляются скажем с переодичностью раз в секунду, то не будет происходить постоянного открытия-закрытия соединения как при long-polling.
Есть вариант, когда можно реализовать небольшую прослойку на socket.io. Ваше PHP приложение пишет данные для клиента например в redis. Приложение на socket.io подписывается на redis. Когда PHP что-то отправляет в redis, то socket.io мгновенно об этом узнает и рассылает это событие по websocket протоколу всем подключенным клиентам. Минусы. Раздуваете стек. Нет консистентности данных между записью в основное хранилище (mysql/postgre/mongo/etc) и redis. Соответственно может возникнуть ситуация, когда данные записали, но в redis событие не ушло. Поменяете местами, будет наоборот, событие есть, данных в базе нет.
Вариантов в целом очень много. Всё это называется Comet. Вам проще всего реализовать long-polling.
А реал-тайм база, которая умела пушить данные клиенту по tcp протоколу (но не в браузер) была и называлась она rethinkdb.com. Ныне не развивается. IP в России заблокирован. На сайт можно сходить по VPN.

Худший ответ:
Я не эксперт конечно, но знаю замену Firebase - loopback.io, аналогов ему не встречал.
Вопрос: Как отследить нажатие на кнопку php?

Лучший ответ:
 При нажатии на них должна меняться переменная в php:В первую очередь, Вы должны понимать, что переменные в PHP будут переинициализированы, при каждом новом запуске скрипта и то, что все переменные и значения в PHP-скрипте существуют только в тот момент, пока этот самый скрипт выполняется.
Если Вам нужно хранить значение переменной между запросами - для этого можно использовать например сессию или базу данных, или хранилище или... Как это сделать?) С помощью отправки формы на сервер, либо с помощью AJAX-запроса, это наиболее распространённые способы.

Худший ответ:
Посерчи AJAX.
Выглядеть решение будет примерно так - при клике на кнопку идет AJAX-запрос на сервер, в data отправляешь кнопку по которой кликнул, на сервере обрабатываешь и возвращаешь в браузер.
Вопрос: Страница Apache не видит PHP — почему это происходит?

Лучший ответ:
Вам нужен не просто пакет PHP, а соответствующий модуль апача - libapache2-mod-php

Худший ответ:
1. Так не делают
2. За такое нужно руки ломать
3. Так не делают
4. Включить обработку html как php RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html
Но перед этим вниательно прочитать п.2 :)
Вопрос: Можно ли запустить php-скрипты на разных ядрах?

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

Что значит "вместо PHP_CLI использовать PHP-FPM"?
В консоли вы можете запустить сколько угодно процессов. А PHP-FPM сам балансирует количество потоков в зависимости от настроек.

Худший ответ:
Да, это разные процессы.
Да, каждый процесс будет обрабатываться своим ядром.

Что значит "вместо PHP_CLI использовать PHP-FPM"?
В консоли вы можете запустить сколько угодно процессов. А PHP-FPM сам балансирует количество потоков в зависимости от настроек.
Вопрос: Как исключить столкновение двух окружностей?

Лучший ответ:
"Отодвинуть"  звучит как сдвинуть так, чтобы центры остались на той же прямой. Это было бы 
логично.
Уравнение прямой y = kx + b  строится по двум точкам. Для простоты перенесем центр одной из окружностей в начало координат, тогда уравнение будет y = kx. 
Из условия расстояния строим ещё одно уравнение:
y^2 + x^2 = 4r^2
Решаем систему из двух уравнений, получаем x и y, затем переносим центры обратно.

Отдельно рассмотреть случай, когда центры совпадают, и выбрать тривиальную прямую y = 0, например.

Худший ответ:
Есть много вариантов как это можно сделать. Один из них:
1) Переводите обычные декартовы координаты в полярные. Тогда центр второй относительно центра первой будет на расстоянии
r=R1+R2
2) Далее или выбираете фи произвольно, или же проходите с неким шагов весь круг, рассчитывая расстояние между центром второй окружности сейчас и центром второй окружности после двигания. Нужно выбрать минимум функции, тогда движение будет минимальным.
3) Перевести полярные обратно в декартовы
Вопрос: Что идет вначале Frontend или Backend разработка?

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

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

Лучший ответ:
Бот не может создавать чаты и вступать в них. Для работы с чатами, необходимо работать через библиотеку tblib (почти что свой клиент телеграмма написать).

Худший ответ:
Мне кажется подойдет бот для клиентской стороны на telethon. Как я понял, то что вам нужно будет выглядеть примерно вот так:
from telethon.tl.functions.channels import InviteToChannelRequest

client(InviteToChannelRequest(
         channel=<channel_id>
         users = ['<username>']
))
Вопрос: Ветвление if в javascript. Почему не работает?

Лучший ответ:
Вместо:
(1 < number_cam < 5)

Пишите:
(1 < number_cam && number_cam < 5)

Худший ответ:
Вместо:
(1 < number_cam < 5)

Пишите:
(1 < number_cam && number_cam < 5)
Вопрос: Как делать запрос с localhost к VK API?

Лучший ответ:
Помогло использование вот этого!

Худший ответ:
Как гласит эта документация:
no-cors — ... In addition, JavaScript may not access any properties of the resulting Response. This ensures that ServiceWorkers do not affect the semantics of the Web and prevents security and privacy issues arising from leaking data across domains.
Для обхода CORS, используйте JSONP, как описано в документации ВК:
var script = document.createElement('script');
script.src = "https://api.vk.com/method/getProfiles?uid=66748&access_token=533bacf...&callback=callbackFunc";
document.getElementsByTagName("head")[0].appendChild(script);
function callbackFunc(result) {
   console.log(result);
}
Вопрос: Как быстро выбрать максимальное значение id?

Лучший ответ:
limit 1 означает, что поиск будет идти полный (оптимизированный по индексу, если индекс есть).
Но потом вам будет отдан только 1 строка из найденных.
То есть сам limit 1 ускоряет не поиск, а передачу результата между сервером и вашей программой, если вам нужна только 1 строка, а прочие строки результата не нужны.
В случае с max() все равно результатом будет 1 строка, так что что с limit 1, что без него - разницы нет.
Повангую:
Если вам нужен ID дня новой строки, то это 
https://www.tutorialspoint.com/mysql/mysql-using-s...
Это действительно радикально быстрее.

Худший ответ:
max(id) будет искать по индексу, если он есть. 
Если нет - по всем строкам. 
Отсюда вывод - нужен индекс. Плюсом будет descending index
Если что - автор вопроса "все знает" .
Вопрос: Как грамотно составить класс container?

Лучший ответ:
Хотел узнать, как сейчас выглядит хороший класс container?
Он априори не может быть "хорошим". Класс .container - выполняет самую простую, базовую функцию - удерживать контент. То что вы скинули выше, брейкпоинты - тоже не могут быть "хорошими", стандартизированными- могут, хорошими? - мы же не в детском саду. Для каждого сайта есть свой порог брейкпоинтов, все зависит от того сколько контента у вас в данный момент на экране. Если контейнер "узкий", значит весь ваш UI\UX не продуман и он будет слипшийся. Смотрите на свой дизайн, ничего не мешает вам отступать от стандартных брейкпоинтов, расширять контейнер в угоду контенту, либо сжимать контейнер убирая ненужный контент.

Худший ответ:
А почему бы не резиновым его делать? // scss
.container {
  max-width: 1200px;
  width: 100%;
  margin: 0 auto;
  padding: 0 25px;
  @media (max-width: 992px) {
    padding: 0 20px;
  }
  @media (max-width: 600px) {
    padding: 0 15px;
  }
  @media (max-width: 380px) {
    padding: 0 10px;
  }
}
Не обязательно все тырить у бутстрапа - это не эталон верстки, а лишь инструмент.
Ну или сначала посмотреть на макет, а потом решить как лучше делать именно для текущего макета, как заметил approximate solution, зачем себя в какие-то рамки вообще загонять хорошо или плохо.
Вопрос: Какие есть open source игры с кодом которых мог бы поиграть новичок?

Лучший ответ:
Quake, Quake II, Quake III
Проблема в том, что новички бывают разные.

Худший ответ:
Никто не знает, во что вам играть не скучно.
MUD можно посмотреть.
FreeCiv
FreeDoom
Minetest - клон майнкрафта
Да и вообще. Стоит научитсья пользоваться поиском.
Вопрос: Как перейти с mbr на gpt без переустановки систем?

Лучший ответ:
AOMEI Partition Assistant, EaseUS Partition Master, Paragon чего-то там етц, софта который позволяет делать это без потери данных - навалом. Загрузчик 10-а затем исправит сама. Если инфа важная, стоит обзавестись ИБП.
Комп/бук надеюсь с поддержкой UEFI? Иначе следующий вопрос будет - "как вернуть взад..."

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

Лучший ответ:
прочитайте в документации про Update
также найдите про
Time.deltaTime
UI.Text (или любой другой текст куда собираете вписывать)
а там создать таимер и проставлять его значение в текстовое поле - должны справиться.
а если не справитесь - еще раз пробуйте или бросайте))

Худший ответ:
Есть способ куда проще. Используйте корутины!https://docs.unity3d.com/ru/current/Manual/Corouti...
Вопрос: Готовая cms или разработка?

Лучший ответ:
С нуля будет быстрей. Если у вас по ходу разработки фантазия не разыграется.
Коробочные решения так же придется переделывать. Работы не меньше.

Худший ответ:
Я бы сел и нудно посчитал. Ваши хотелки с нуля на ларавеле накрутят за 2 месяца. На вордпоессе за 2 недели, причём человек с более низким рейтом. Но лучше просчитайте как будете защищаться от банд на одном аккаунте.
Вопрос: Шифрование сообщений/файлов на сайте, как сделать?

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

Ну а дальше - стандартные вещи. Можете почитать https://ru.wikipedia.org/wiki/PGP

Худший ответ:
Это невозможно осуществить.
1. Если сообщения будут передаваться через сайт, то пользователи должны как-то обменяться ключами до начала обмена сообщениями.
2. Если ключи выписывает сайт - все сообщения он также сможет читать.

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

Лучший ответ:
Быстрее всего - COPY запросом.
При том, сразу из csv файла, локального к СУБД.
Через приложение - сильно лучше тоже COPY. В PDO интерфейс для COPY, впрочем, ужасен.
Хуже - относительно большими insert
ещё хуже - кучей запросов в транзакции
кучей запросов вне общей общей транзакции - очевидно будет очень медленно.

Худший ответ:
Надеюсь, не циклом по одной модели за раз пишется.
Делайте batch insert штук по 1000-10000 (оптимальное кол-во подбирается опытным путем).
Вопрос: Как вы организуете большое кол-во собеседований?

Лучший ответ:
Искала работу этой осенью)
Могу сказать что если Вы давно проходили собеседования, то лучше не начинать с компаний, в которые очень хотите попасть, потому что можно быть умным, но поплыть на ряде простых вопросов просто потому, что не освежили память и это собъет хорошее впечатление. Мода на стандартный набор вопросов меняется, то что спрашивали 5 лет назад могут не спросить сейчас, но при этом придумать новые вопросы из стандартного списка. Я была уверена что спросят что-то из серьезных тем, а спрашивали совсем другое и простое, причем нужно было быстро напрячься и вспомнить, чтобы ответить)
У меня была пара дней, когда были два hr и два технических собеса подряд и это была огромная ошибка - это выматывает очень сильно. Лучше планировать не больше одного тех.собеса в день или делать между ними перерыв минимум 2 часа, а лучше больше.
На прескрининге/hr собеседовании очень часто говорят - да мы максимум на полчаса созвонимся - не верьте)) Это спокойно растягивается на час и больше, если разговор пошел не по шаблону. 
По итогу могу сказать, что важно помнить о своих жизненных силах и не пытаться с наскоку пройти все собесы, важно оставаться со свежей головой и оставлять время проработать все вопросы, на которых завалились, на некоторые из них может уйти весь вечер)
Удачи в поисках)
Upd. Неплохо бы составить список стандартных вопросов, у меня это были:
1) локация офиса
2) предоставляет ли компания технику
3) есть ли овертаймы и оплачиваются ли они, какой темп работы и дедлайны
4) как оформляется и ведется сотрудничество, когда подписывать контракт
5) сколько месяцев испыталка
6) состав команды, кто ею управляет
7) тематика проекта
8) технологии, какие из них основные, какие второстепенные
9) какие средства разработки и коммуникации используются (может вылезти нежданчик с виндой, запретом на лицензионный софт и прочей ерундой)
10) для чего нужен английский (только технический, только переписка или полноценное общение one-to-one)

Часть этих вопросов помогла избежать разочарований и зря потраченного времени

Худший ответ:
4 этапа:
1. Исследование требований и собеседований: 30%
2. Попытки в целевые конторы: 1-3шт.
3. Fail-over: 30%
4. Доучивание.
GOTO 1
Вопрос: Какую литературу выбрать для дальнейшего обучения?

Лучший ответ:
Грокаем Алгоритмы очень достойная книга.

Худший ответ:
По алгоритмам -> есть книга "Грокаем алгоритмы". 

Сама она из себя представляет вводную часть к изучению этой темы, это некоторый двухсотстраничный анонс.
Если вообще нет никакого понимания, то читай ее (за два-три дня не напряжённого чтения по 2-3 часа легко осилишь).
Если есть понимание, к примеру, что такое "жадные алгоритмы", то можешь открывать сразу последнюю главу, в которой подробно рассказывается куда можно углубляться и по каким материалам.

В книге используется python, но это классный и простой язык, все примеры понятны.
Вопрос: Что будет, если две точки доступа с одинаковым SSID?

Лучший ответ:
Высвечивается один. Тот, что сильнее.
У меня в квартире 2 точки - оптический модем и еще один роутер в другом конце в режиме АР, подключенный к модему проводом. 
С бесшовным WiFi не морочился, и так нормально работает.

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

Лучший ответ:
Загрузка процессора на 100% обычно означает загрузку всех ядер. В вашем случае приложение однопоточное, и может загрузить только одно.
Вполне вероятно что даже одно ядро будет большую часть времени ожидать отправки данных в видеокарту и не будет загруженно на все 100.
Загрузка GPU еще более сложное понятие. Там уже могут быть сотни ядер и распределение нагрузки на них зависит от кучи параметров.
Есть программы профайлеры, которые могут показать некоторую дополнительную информацию о вашей программе.
Для NVIDIA есть https://developer.nvidia.com/nsight-systems 
С их помощью можно увидеть что именно делает программа большую часть времени.
Тут еще вмешивается Vsync который ограничивает fps скоростью обновления монитора. Так что большую часть времени происходит ожидание.

Худший ответ:
Программа написана на старорежимном OpenGL, не использует дисплейные списки - куча времени уходит на пересылку команд по шине.
Используйте шейдеры.
Вопрос: Что делать, если не запускается Koala компилятор на WinXP?

Лучший ответ:
Коала очень капризная к пути пользовательской папки - чтобы только латиница.
Можете попробовать scout.app - он такой же по своей сути. Ну или переходите на gulp.

Худший ответ:
Можно запустить Less в браузере.<link rel="stylesheet/less" type="text/css" href="styles.less" />
<script src="//cdnjs.cloudflare.com/ajax/libs/less.js/3.9.0/less.min.js" ></script>
Или попробовать поставить старый NodeJS - https://nodejs.org/dist/v5.12.0/
и офф. компиляторnpm install -g less
> lessc styles.less styles.css
Вопрос: Зачем существует «дырявая» клиентская oAuth авторизация?

Лучший ответ:
>>Зачем вообще существует второй вариант? Ведь любой узел (сисадмин, владелец точки wi-fi, провайдер, товарищ майор) может просто взять готовый токен и использовать его.
Данные передаётся по HTTPS! Следовательно токен не доступен промежуточным узлам, так как информация зашифрована.
Если рассматривать авторизацию через ВКонтакте токен известен толкьо: 1) ВКонтакте, 2) Сайту на который производится авторизация, 3) самому пользователю осуществляющему авторизацию
Все промежуточные провайдеры знают только что клиент по факту соединяется с некоторым IP адресом при использовании HTTPS протокола, и они не знают на какой url осуществляется запрос.

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