Как настроить смартфоны и ПК. Информационный портал
  • Главная
  • Windows 8
  • Как закончить отношения и не потерять общих друзей. Алгоритм определения раздела «Возможные друзья

Как закончить отношения и не потерять общих друзей. Алгоритм определения раздела «Возможные друзья

Привет, хабраюзер.
Однажды у меня возникла необходимость найти человека, зная его внешний вид и зная о его членстве в определенном клубе. Также я владел адресами(вконтакте) страниц двух других членов клуба. Почти наверняка искомый человек был у каждого из них в друзьях. Решить эту проблему можно было разными путями. В статье я напишу о том, как мной было реализовано решение с использованием vk.com API.
1.Задача
Сделать сервис, который будет находить всех общих друзей двух отдельно взятых пользователей, не требуя верификации и аккаунта в социальной сети для пользователей сервиса. Получить данные об общих друзьях:
  • фотография
Реализовать задание на базе API вконтакте. Написать отельный класс для этого.
2.Решение
2.1.Определяем необходимые методы API
Заходим в список методов API. И поискав, находим то, что нам нужно.

Для получения друзей пользователя есть метод friends.get .
friends.get - возвращает список идентификаторов друзей пользователя или расширенную информацию о друзьях пользователя (при использовании параметра fields).

И, что важно, в рамках решения поставленной задачи это открытый метод, не требующий access_token.

Обязательный параметр только один:

Используя данный метод, можно получить информацию обо всех друзьях каждого из двух наших множеств, но такой подход не будет оптимальным. Пользователь А может иметь 2000 людей в друзьях, пересекаться с друзьями пользователя В будут только 3 человека. В таком случае информация о 1997 пользователях будет нам ненужной, и ресурсы, затраченные на её получение, будут потрачены впустую.
Мы будем запрашивать исключительно идентификаторы пользователей, и получив нужные нам номера(которые принадлежат множеству А и В), уже по ним выбирать информацию.

Для получения информации о пользователе есть метод users.get .
users.get - Возвращает расширенную информацию о пользователях.

Данный метод также не нуждается в access_token, то есть идеально подходит для нашей задачи.


В user_ids мы передадим массив идентификаторов пользователей, которые встречаются в обоих множествах.
Мы хотим получить только аватар размером 100*100, для этого в параметре fields передадим значение photo_100.

2.2.Переходим к практической стороне
Я написал простой класс на php:

Class VkFriends { public function clean_var($var) { $var = strip_tags($var); $var = preg_replace("~\D+~", "", $var); $var = trim($var); return $var; } public function get_friends($u_id) { $friends = file_get_contents("https://api.vk.com/method/friends.get?user_id=".$u_id); $friends = json_decode($friends); if(!isset($friends->error)){ return $friends; }else{ return ""; } } public function mutual_friends($friends) { $mutual = array_intersect($friends->response, $friends->response); if(!empty($mutual)){ return $mutual; }else{ return ""; } } public function get_users_info($users) { $u_ids = implode(",",$users); $u_info = file_get_contents("https://api.vk.com/method/users.get?user_ids=".$u_ids."&fields=photo_100"); $u_info = json_decode($u_info); return $u_info; } public function view_user_info($u_info) { $uid = $u_info->uid; $first_name = $u_info->first_name; $last_name = $u_info->last_name; = $u_info->photo_100; print("

"); } public function view_users_info($users_info) { for($i=0;$iresponse);$i++){ $this->view_user_info($users_info->response[$i]); } } }

Теперь смотрим на наш класс в действии:

$vkf = new VkFriends; $u_id = $vkf->clean_var($_POST["u1"]);//clean variables from POST $u_id = $vkf->clean_var($_POST["u2"]); if(($u_id!="")&&($u_id!="")){ echo "

"; $friends = $vkf->get_friends($u_id);//getting friends list from user with u_id $friends = $vkf->get_friends($u_id); if(($friends!="")&&($friends!="")){ $mutual = $vkf->mutual_friends($friends);//create new array from intersect arrays if($mutual!=""){ $users_info = $vkf->get_users_info($mutual);//getting info about users that are mutual $vkf->view_users_info($users_info);//view information about selected users }else{ print("
Привет, хабраюзер.
Однажды у меня возникла необходимость найти человека, зная его внешний вид и зная о его членстве в определенном клубе. Также я владел адресами(вконтакте) страниц двух других членов клуба. Почти наверняка искомый человек был у каждого из них в друзьях. Решить эту проблему можно было разными путями. В статье я напишу о том, как мной было реализовано решение с использованием vk.com API.
1.Задача
Сделать сервис, который будет находить всех общих друзей двух отдельно взятых пользователей, не требуя верификации и аккаунта в социальной сети для пользователей сервиса. Получить данные об общих друзьях:
  • фотография
Реализовать задание на базе API вконтакте. Написать отельный класс для этого.
2.Решение
2.1.Определяем необходимые методы API
Заходим в список методов API. И поискав, находим то, что нам нужно.

Для получения друзей пользователя есть метод friends.get .
friends.get - возвращает список идентификаторов друзей пользователя или расширенную информацию о друзьях пользователя (при использовании параметра fields).

И, что важно, в рамках решения поставленной задачи это открытый метод, не требующий access_token.

Обязательный параметр только один:

Используя данный метод, можно получить информацию обо всех друзьях каждого из двух наших множеств, но такой подход не будет оптимальным. Пользователь А может иметь 2000 людей в друзьях, пересекаться с друзьями пользователя В будут только 3 человека. В таком случае информация о 1997 пользователях будет нам ненужной, и ресурсы, затраченные на её получение, будут потрачены впустую.
Мы будем запрашивать исключительно идентификаторы пользователей, и получив нужные нам номера(которые принадлежат множеству А и В), уже по ним выбирать информацию.

Для получения информации о пользователе есть метод users.get .
users.get - Возвращает расширенную информацию о пользователях.

Данный метод также не нуждается в access_token, то есть идеально подходит для нашей задачи.


В user_ids мы передадим массив идентификаторов пользователей, которые встречаются в обоих множествах.
Мы хотим получить только аватар размером 100*100, для этого в параметре fields передадим значение photo_100.

2.2.Переходим к практической стороне
Я написал простой класс на php:

Class VkFriends { public function clean_var($var) { $var = strip_tags($var); $var = preg_replace("~\D+~", "", $var); $var = trim($var); return $var; } public function get_friends($u_id) { $friends = file_get_contents("https://api.vk.com/method/friends.get?user_id=".$u_id); $friends = json_decode($friends); if(!isset($friends->error)){ return $friends; }else{ return ""; } } public function mutual_friends($friends) { $mutual = array_intersect($friends->response, $friends->response); if(!empty($mutual)){ return $mutual; }else{ return ""; } } public function get_users_info($users) { $u_ids = implode(",",$users); $u_info = file_get_contents("https://api.vk.com/method/users.get?user_ids=".$u_ids."&fields=photo_100"); $u_info = json_decode($u_info); return $u_info; } public function view_user_info($u_info) { $uid = $u_info->uid; $first_name = $u_info->first_name; $last_name = $u_info->last_name; = $u_info->photo_100; print("

"); } public function view_users_info($users_info) { for($i=0;$iresponse);$i++){ $this->view_user_info($users_info->response[$i]); } } }

Теперь смотрим на наш класс в действии:

$vkf = new VkFriends; $u_id = $vkf->clean_var($_POST["u1"]);//clean variables from POST $u_id = $vkf->clean_var($_POST["u2"]); if(($u_id!="")&&($u_id!="")){ echo "

"; $friends = $vkf->get_friends($u_id);//getting friends list from user with u_id $friends = $vkf->get_friends($u_id); if(($friends!="")&&($friends!="")){ $mutual = $vkf->mutual_friends($friends);//create new array from intersect arrays if($mutual!=""){ $users_info = $vkf->get_users_info($mutual);//getting info about users that are mutual $vkf->view_users_info($users_info);//view information about selected users }else{ print("

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

На данный момент каждый может добавить себе в друзья до 10 тысяч других «обитателей» социальной сети, а, как свидетельствует статистика, у среднестатистического пользователя ресурса в друзьях содержится около 200-300 человек. Тем не менее, просматривая список своих друзей «ВКонтакте» можно неожиданно для себя обнаружить, что располагаются они в разном порядке и порой могут меняться местами. Почему так происходит и как формируется весь этот список?

Как было раньше

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

Как формируется список друзей сейчас

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

Однако есть из этого правила одно небольшое исключение: пользователи, которых вы не так давно добавили в список своих друзей, располагаются обычно на 5 или 6 месте списка для того, по словам разработчиков соцсети, чтобы вы не упустили их из виду.

Порядок расположения друзей, которые находятся на сайте

Теперь стоит упомянуть о том, как сортируются пользователи из списка друзей онлайн. Тут по большому счету точно такой же принцип: расположение друзей сходится с тем, что и в общей последовательности, правда показываются лишь те пользователи, которые онлайн. Если вы пользуетесь опциями «Коллеги», «Лучшие друзья» и им подобными, то распределение списков друзей в них также будет аналогичным.

Как располагается список друзей у других пользователей

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

Можно ли изменить порядок?

После того, как уже стало все понятно насчет сортировки друзей «ВКонтакте», можно поговорить о том, можно ли изменить данный порядок. К сожалению, разработчиками социальной сети данная функция не была предусмотрена, поэтому изменить порядок расположения друзей самостоятельно нельзя.

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

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

Как посмотреть возможных друзей ВКонтакте

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

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

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

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

Как определяются возможные друзья ВКонтакте

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

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

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

Шаги

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

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

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

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

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

    Говоря о ваших совместных встречах, не следует ждать того, что из пары пригласят только вас. Некоторые ваши друзья не захотят ставить перед собой непростой выбор кого приглашать, – вас или бывшего/бывшую. Вероятнее всего, они пригласят вас обоих с мыслью о том, что вы взрослые люди и сами разберетесь с ситуацией. В больших компаниях это вполне уместно, но в тесном кругу близких друзей это будет нело-о-о-вко . Избегайте таких ситуаций, напрямую задавая вопрос, будет ли на вечеринке ваш бывший/бывшая. Почти наверняка вам ответят честно. Не закатывайте истерики, заставляя приглашающего вас друга чувствовать себя виноватым. Просто выразите свои сожаления, если считаете, что на этой встрече вам обоим будет неловко: "А, ну ладно... Я, наверно, не пойду, это будет слишком тесная компания. Но ты не переживай, можно будет собраться в другой раз, когда людей будет больше, и мы сможем отвлечься". Улыбнитесь, будьте доброжелательны и поблагодарите человека за то, что он подумал о вас.

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

    • Вместо этого, спокойно и внушительно скажите что-нибудь подобное: "Знаете, ребята, во время расставания я злилась/злился, но теперь я чувствую сожаление, и мне грустно. За время отношений у нас с ним/ней было много хорошего. Несмотря на то, что теперь нужно двигаться дальше, я не жалею о времени, которое мы провели вместе. Если бы не ____(имя бывшего/бывшей), я бы никогда вас не встретил/встретила". После этого просто замолчите. Ваши друзья закивают в ответ и оценят ваши высокие моральные принципы.
  1. Позвольте времени позаботиться обо всем остальном. Расставание напоминает сломанную руку. Она ужасно болит, и вы мало что можете сделать после того, как наложили гипс, кроме единственного, – дать ей время. Все что вам остается – вытерпеть боль и справиться с изменениями, которые произошли в вашей жизни. Спустя время, если вы не будете критиковать вашего бывшего и не станете принимать участие в шутках над ним, ваши друзья поймут, что вы пережили это и двигаетесь дальше.

  • Со временем, ваша дружба укрепится в новых условиях. Друзья начнут воспринимать вас не как часть пары, а как отдельного человека. Лишь после этого вы можете посвящать их в ваши новые романтические отношения.
  • Вашим друзьям тоже нужно время. Они знали вас как часть пары, которую любили, и теперь им тоже нужно приспособиться к новым обстоятельствам. Они могут отпускать неловкие или даже злые замечания, потому что не знают, кого винить в произошедшем, и что делать. Ведите себя мягко по отношению к ним и имейте в виду, что они просто не понимают, как себя вести в сложившейся ситуации.
  • Посещая вечеринки или отправляясь на прогулку вместе с общими друзьями, не стесняйтесь спрашивать их о том, приглашен ли ваш бывший. Объясните друзьям, что вам нужно время и немного личного пространства, чтобы быть готовыми к более тесному контакту с бывшим, чем он будет на действительно многолюдных вечеринках.

Предупреждения

  • Может выясниться, что некоторые ваши "друзья" таковыми совершенно не являются. Опасайтесь шпионов, которые тайно наблюдают за вами, собирая информацию для вашего бывшего. Это предупреждение особенно актуально, если вы проходите через развод. И в этой ситуации вы будете как никогда рады тому, что не открыли своих новых симпатий.
  • Не спешите справляться с расставанием слишком хорошо или слишком рано. Помните о том, что ваши общие друзья питают теплые чувства и к вашему бывшему. Если им покажется, что вы легко выбросили его из своей жизни, будто он был чем-то ненужным (даже если это так), друзья решат, что вы поступаете холодно и бессердечно. Сопротивляйтесь искушению похвастаться новым симпатичным парнем (новой симпатичной девушкой), и вместо этого сосредоточьтесь на чувствах друзей .
  • Любые язвительные или агрессивные замечания в адрес вашего бывшего критически снижают ваши шансы сохранить дружбу с вашими общими друзьями.

Лучшие статьи по теме