Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Какой сервер нужен для asp.net core?

Лучший ответ:
1 - все тайны тут https://docs.microsoft.com/ru-ru/aspnet/core/?view... (второй абзац)
2 - если хостить будет на винсервере - доступны все варианты, если на линукс - IIS не доступен
3 - даже mssql server доступен на линукс
4 - В сайт заходит в 50000 человек в день а это уже вопрос к железу, а еще он зависит от архитектуры самомго приложения, и от архитектуры базы. оценить железо без нагрузочного тестирования невозможно
5 - а вот что бы подробнее спрашивать скорее всего надо нанимать специалиста, это уже на площадки фриланса

Худший ответ:
asp.net core кроссплатформенный поэтому выбор ОС - это уже дело предпочтения. Хотя если ms sql server, то скорее это все же windows. asp.net core поддерживает ISS и Kestrel, однако у последнего достаточно ограниченные возможности, поэтому обычно если не хотят использовать ISS, то ставят NGINX и прописывают маршрут к Kestrel. 
Что касается железа, если сайт более менее оптимизирован, то ср. запрос выполняется примерно 100 мс и соответственно на одноядерной машине мы за минуту в ср. сможем обслужить 600 пользователей, если 2 ядра, то уже 1200. Поэтому Вам надо определиться с максимальной пиковой нагрузкой и рассчитать исходя из нее параметры процессора. Далее в asp.net CORE один запрос в ср. занимает 3 кБ памяти, соответственно, 1000 пользователей уже будут требовать порядка 1 МБ. Этот параметр также зависит от пиковой нагрузки.
* если вы будите использовать asp.net, то память под запрос будет порядка 20 кБ
Вопрос: Как принимать оплату на сайте через SMS?

Лучший ответ:
В Смс платежах огромные комиссии посредникам это норма. У всех в смс платежах так. Смиритесь

Худший ответ:
начните с https://smscoin.com/ru/, он понадежнее, потом найдете повыгоднее
Вопрос: Можно ли найти настоящего Team Lead Senior разработчика на удаленку?

Лучший ответ:
0. Все меняется и даже ТЛ может потерять работу
1. Найдите свои конкурентные преимущества для каждого конкретного кандидата
2. Окучивайте одновременно много людей, которые вам подходят. Те даже после отказа от вашего предложения пересекитеь и поговорите
3. Переберите на себя часть полномочий/задач/обязанностей - найти просто хорошего программера проще, чем синьйора + ТЛ
4. Ищите на вырост. Хороший мидл с качествами ТЛ со временем станет синьйором
5. Готовых рецептов нет

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

Лучший ответ:
Значит так, берем толстую тетрадь, ручку и пишем фразу "Статические методы не имеют отношения к ООП" до тех пор, пока не запомним это на всю жизнь.
Суть объектно ориентированного программирование, как понятно из названия, заключается в том, что должен существовать объект. Статика существует не в контексте объекта, а в контексте класса! Из этого вытекает то, что на протяжении всего жизненного цикла вашего кода будет существовать лишь одно глобальное состояние статических членов класса.
Использовать статику нужно в случае, если то, что вы ей описываете принадлежит всей группе объектов, а не одному. Например, у класса Human может быть статический метод numberOfLegs(), который возвращает количество ног у людей. Количество ног - это общее свойство для всех людей (Речь идет о здоровых людях). В данном случае можно было использовать константу класса, но это не так важно, ведь, по сути, константа - это тоже статический контекст. А вот имя - это уже свойство каждого отдельного человека. И очень важно чтобы статические методы не изменяли состояние системы в целом, не содержали побочных эффектов.
В статические методы можно выносить какую либо служебную логику. Например, метод перевода числа из арабской в римскую запись следует сделать статическим.Есть ли у статического варианта какие-то подводные камни
Большое количество. При чем, не таких уж и подводных. Из-за того, что статика глобальна, она плохо поддается тестированию, ее нельзя замокать. Глобальное состояние плохо поддается отладке. Отсутствует возможность подменить реализацию, так как это позволяют сделать объекты.

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

Лучший ответ:
Обязательно на JQ? Можно сделать на простом CSS..block {
 width: 100px;
 height: 100px;
 background: red;
 opacity: 0;
}

.block:hover {
 opacity: 1;
}
Или.block {
 width: 100px;
 height: 100px;
 background: red;
 display: none;
}

.block:hover {
 display: block;
}
Также можно добавить плавное появление..block {
 width: 100px;
 height: 100px;
 background: red;
 opacity: 0;
}

.block:hover {
 opacity: 1;
 transition: .3s;
}

Худший ответ:
На чистом JS:snippet
Тоже самое, но с jQuery: snippet
И просто на CSS:snippet
Вопрос: Как орфографически правильно вывести данный статус?

Лучший ответ:
/**
   * Склонение строки согласно переданному числу
   * titles example: ['рубль', 'рубля', 'рублей']
   *
   * @param $number
   * @param $titles
   * @param bool $returnNumber
   * @return string
   */
  public function declension($number, $titles, $returnNumber = false)
  {
    $cases = [2, 0, 1, 1, 1, 2];

    return ($returnNumber ? $number . ' ' : '') . $titles[($number % 100 > 4 && $number % 100 < 20) ? 2 : $cases[min($number % 10, 5)]];
  }

Худший ответ:
Использовать модули для интернационализации (i18n) и не мучиться.
https://github.com/czukowski/I18n_Plural и подобные.echo __('Hi My Age Is', 1, array(':age' => 1));
// Hello world, I\'m 1 year old
echo __('Hi My Age Is', 2, array(':age' => 2));
// Hello world, I\'m 2 years old
echo __('Hi My Age Is', 10, array(':age' => 10));
// Hello world, I\'m 10 years old

// Now suppose we've switched to another language

echo __('hello.myage', 1, array(':age' => 1));
// Привет мир, мне уже 1 год
echo __('hello.myage', 2, array(':age' => 2));
// Привет мир, мне уже 2 года
echo __('hello.myage', 10, array(':age' => 10));
// Привет мир, мне уже 10 лет
Вопрос: Как организовать два варианта подключения arduino к компьютеру?

Лучший ответ:
Можно, но сложно. Придется переписать стандартные библиотеки, добавив тот самый выбор, и дописать реализацию USB MasStorage.
Контроллер скорее всего будет Atmega32u4 - так как у него свой USB.

Худший ответ:
может быть использовать второй микроконтроллер как комутатор
для подключения к компьютеру или основного контроллера или карты
Вопрос: Удаление символов до определенного сочетания в ячейке таблицы Google Sheets/Excel?

Лучший ответ:
Не получается скриптами, попробуйте для начала формулами. Например,

=ARRAYFORMULA(REGEXEXTRACT(A2:A;".*?gclid=(.*)$"))



Пример скрипта. Переписывает данные в диапазоне

function run() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet()
    .getSheetByName('Решение (скриптами)');
  const range = sheet.getRange('A:A');
  const values = range.getValues();
  const data = values.map(row => {
    const [undefined, value] = String(row[0]).split('gclid=');
    return [value ?? ''];
  });
  range.setValues(data);
}

Таблица с примерами https://docs.google.com/spreadsheets/d/1Nll6tQ-I9a...

Худший ответ:
Не получается скриптами, попробуйте для начала формулами. Например,

=ARRAYFORMULA(REGEXEXTRACT(A2:A;".*?gclid=(.*)$"))



Пример скрипта. Переписывает данные в диапазоне

function run() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet()
    .getSheetByName('Решение (скриптами)');
  const range = sheet.getRange('A:A');
  const values = range.getValues();
  const data = values.map(row => {
    const [undefined, value] = String(row[0]).split('gclid=');
    return [value ?? ''];
  });
  range.setValues(data);
}

Таблица с примерами https://docs.google.com/spreadsheets/d/1Nll6tQ-I9a...
Вопрос: Как посмотреть все свои комментарии на Тостере?

Лучший ответ:
В гугле поиск по фразе, содержащейся в комментарии:site:toster.ru "фраза" "@dollar"

Худший ответ:
Теперь этот функционал появился: https://toster.ru/user/dollar/comments
Вопрос: Какие технологии использовать для реализации системы учета вроде самописной 1С для маленького магазина?

Лучший ответ:
С таким вопросом будете долго ждать толковых ответов... Ошибка №1 - зачем вы разместили свой вопрос в тегах ERP, 1С, SQL и CRM? Вы привлекаете ряд специалистов, которые только потеряют время. Или вступят в холивары с идеологическими  оппонентами... У вас чистый вопрос из раздела JAVA. ERP и CRM - хоть почитайте что это такое, а потом осознайте насколько глупо такое ставить в маленький магазин. SQL - у вас не из этой области проблематика, да и вообще кому как не вам знать, что в JAVA-решениях используется ORM-подход. 1С - вообще не в тему.Ошибка №2 - нет определенности в требованиях. Вместо "Самописка на 1С" можно было бы написать "Самописка на Делфях", "Самописка на PHP", "Самописка на Clipper"... От этого ничего не изменилось бы - никому ничего не понятно. Нужно перечислять функциональные требования к вашему будущему решению для вашего магазинчика - работа с кассовым аппаратом, работа с весами, работа со сканером штрихкодов, доступ к складским остаткам, использование дисконтных карт и расчеты с VIP-клиентами... Если бы указали конкретный список всего, что потребуется, то может кто-то и натолкнул бы в правильном направлении.
Как я понимаю - вы изучили основы JAVA по книжкам авторов Герберта Шилдта, Джошуа Блоха и Брюса Екеля, а теперь ищете проект для закрепления теории на практике. Послушайте, сходите на Гитхаб и Битбакет. Это два крупнейших репозиториев открытого кода и площадки по их доработке. Там вы найдете решения на языке JAVA для розничной торговле - что-то там будет уже завершено, а некоторые проекты с нетерпением ждут именно ваших комитов. Успехов!

Худший ответ:
Так и 1С и используйте. Напишите систему под специфику своего бизнеса. Контакты в профиле, можем обсудить, если интересно.
Вопрос: Django или Rails для мобильных приложений?

Лучший ответ:
Нет разницы.

Худший ответ:
По своему опыту скажу, RoR очень активно используется для разработки АПИ для мобильных клиентов. В последствии по мере роста проекта, некоторые части проекта могут выделяться в микросервисы например на go, elixir, nodejs.
Вопрос: Платные коннекты на UpWork -- это хорошо или плохо?

Лучший ответ:
80% их кассы это топ 20%  заказов по цене. А расходы у них линейны, отказавшийся от условно 80% бомжей они в 5 раз сократят свои расходы, тем самым увеличив прибыль.

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

Лучший ответ:
Как установить автоматическое подключение к сети интернет при запуске компьютера?Если задача исключительно в этом то просто кидаете в автозагрузку ярлык подключения с сохраненными параметрами, либо батник с rasdial.В идеале, необходимо, чтобы сеть подключалась при включении компьютера и до входа в учетную запись, как это происходит на моем домашнем ПКА вот это можно реализовать только с помощью роутера. Подключение как бы вы его не делали будет происходить после входа в учетную запись.
Хотя.. есть возможность сделать это используя некоторые костыли - https://geektimes.ru/post/178313/, но это сложно и не всегда надежно.Направьте, пожалуйста, на верный ход мысли, т.к. я не понимаю, почему по одному адресу подключение происходит само по себе, а по другому - нет. В одном случае подключение происходит на роутере и на компьютере соответственно доступ в интернет есть всегда.
В другом случае когда провод от провайдера воткнут прямо в компьютер подключение нужно устанавливать на компьютере, для этого нужно загрузить ОС и войти в учетную запись.

Худший ответ:
В реестр пропишите. Гуглить на тему rasdial
Вопрос: Как сделать формирование динамического PDF в NodeJS?

Лучший ответ:
pdfkit.org - библиотека для генерации
https://github.com/alvarcarto/url-to-pdf-api - конвертация url в pdf как микросервис

Худший ответ:
искать в npm по слову "pdf"
Вопрос: По какому принципу работает добавление нескольких классов для колонок? Почему их больше 12-ти?

Лучший ответ:
Посмотрите документацию по бутстрэпу, там ясно обозначено что xs md sm lg это классы для разной ширины дисплея. Соответственноclass="col-xs-12 col-md-8"
Буду формировать ширину блок в соответствии с текущей шириной экрана.
А такая конструкция сделает один блок шириной в 12 колонок, а второй блок под ним шириной в 6 колонок. <div class="col-xs-12">
  <div class="col-xs-6">

Худший ответ:
Смотри, xs - экстра маленькие устройства, sm - маленькие, md - средние, lg - большие, так вот когда ты задаешь md и xs - будет работать всегда md, до тех пор, пока размер экрана не станет экстра смол - 768 (вроде как в бутстрапе), получается, что в твоем примере<div class="col-xs-12 col-md-8">.col-xs-12 .col-md-8</div>
 <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
первый блок будет занимать 8 колонок, второй - 4 соответственно, как только размер экрана станет 768px - первый блок будет занимать всю ширину - 12 колонок, а второй будет снизу и занимать пол экрана - 6 колонок. Если по колонкам следующие блоки не помещаются в ряд из 12 - они переносятся на следующий и прижимаются к левой стороне, т.к. имеют float" left
p.s. если у тебя структура, как в примере ниже одинаковая, и ты хочешь чтобы на маленьких устройствах блок занимал всю ширину, col-xs-12 задавать не обязательно, получается так, ты до sm будет действовать правило col-sm-6, а после автомтически col-xs-12
для наглядности код:<div class="col-sm-6 portfolio__item">
...
</div>
<div class="col-sm-6 portfolio__item">
...
</div>
<div class="col-sm-6 portfolio__item">
...
</div>
<div class="col-sm-6 portfolio__item">
...
</div>
А выглядит это так:
На больших устройствах
На маленьких
Вопрос: В паскальABC работает, а в делфи 7 выходит ошибка. Как исправить?

Лучший ответ:
локальные переменные нельзя сразу инициализировать (можно, начиная с Delphi 10.3 Rio (инлайн переменные))
так как элементы массива не изменяются, то можно сделать константуconst arr: array[1..10] of string = ('А', 'У', 'О', 'Ы', 'И', 'Е', 'Ё', 'Я', 'Ю', 'Э');
P.S. а вообще да, лучше сделать, как SagePtr посоветовал

Худший ответ:
локальные переменные нельзя сразу инициализировать (можно, начиная с Delphi 10.3 Rio (инлайн переменные))
так как элементы массива не изменяются, то можно сделать константуconst arr: array[1..10] of string = ('А', 'У', 'О', 'Ы', 'И', 'Е', 'Ё', 'Я', 'Ю', 'Э');
P.S. а вообще да, лучше сделать, как SagePtr посоветовал
Вопрос: Разработка электронно-образовательной среды для суза?

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

Худший ответ:
со скачивания MOODLE
Вопрос: Как осуществить анализ схожести строк и проверить на плагиат?

Лучший ответ:
https://en.wikipedia.org/wiki/Category:String_simi...
chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-mat...
С плагиатом сложнее. Сравние должно идти уже по структуре и смысловому набору. 
Но грубое определение плагиата, где меняются слова и в предатотчном предложении его части, similarity measures тоже потянут.
Примитивное и наивное решение на питоне:def dice_coefficient(a, b):
    a_bigrams = set(a)
    b_bigrams = set(b)
    overlap = len(a_bigrams & b_bigrams)
    return overlap * 2.0/(len(a_bigrams) + len(b_bigrams))dice_coefficient("2","3")
=> 0.0
   dice_coefficient("2","23")
=> 0.6666666666666666
   dice_coefficient("Как осуществить анализ схожести строк и проверить на плагиат?","плагиат?")
=> 0.5454545454545454
   dice_coefficient("Как осуществить анализ схожести строк и проверить на плагиат?","плагиат dsfsf?")
=> 0.5405405405405406
   dice_coefficient("Как осуществить анализ схожести строк и проверить на плагиат?","плагиат dsfsf? fdedfdfdfgdgh")
=> 0.5
   dice_coefficient("Как осуществить анализ схожести строк и проверить на плагиат?","Как осуществить анализ схожести строк и проверить на плагиат?")
=> 1.0
   dice_coefficient("Как осуществить анализ схожести строк и проверить на плагиат?","Как осуществить?")
=> 0.8
   dice_coefficient("Как осуществить анализ схожести строк и проверить на плагиат","анализ схожести строк и проверить на плагиат?")
=> 0.9090909090909091
P.S.: Только в качестве примера и не рекомендации к использованию именно в таком виде.

Худший ответ:
Нечеткий поиск. Алгоритм шинглов.
Вопрос: Куда податься вчерашнему студенту-недопрограммисту, желающему попасть в геймдев?

Лучший ответ:
С творческой стороной у меня, в общем, неплохо, зато плохо с непосредственно программированием - увы, гуманитарий.Также знаю английский на уровне "смотреть ролики на ютубе в оригинале без субтитров" и "читать книги в оригинале с заглядыванием в словарь и гуглением выражений".
Unity3D учите по ОФИЦИАЛЬНЫМ видео-урокам и создаёте приложение (игру) для портфолио: пусть 2D, но красивую и с интересной игровой логикой. Кодить там много для Ваших игр не придётся - движок делает большинство операций сам. А вся разработка примитивных действий - визуальная. Параллельно, постепенно - учите C#.
Базовое обучение займёт около 3-4 недель (с учётом того, что Вы не знаете C#).
После создания игры - выкладываете в сторы (гугл-плей и т.д.), пишите резюме с линком на портфолио (в сторы) и ищите фулл-тайм по этому направлению.
Только после всего этого - Вы сможете сказать, что Вы представляете ценность как сотрудник для работодателя в гейм-деве.

Худший ответ:
Во-первых, все же кем Вы себя видете? Геймдиз, артовик, программист (хотя последнее вряд ли судя по тому, что вы пишете).
Если идти как артовик (художник, моделлер) - то искать позиции junior/стажера. Хотя, на самом деле, не видел еще 3D-шников, которых брали прямо совсем с нуля (без портфолио) на обучение. 
Артовику необходимо наличие художественного вкуса, а привить его человеку (тем более в зрелом возрасте) практически нереально - в этом плане, куда проще научиться программировать, имхо.
Тут лучше все же какое-то время работать на портфолио (моделить, рисовать), выкладывать это на AssetStore, например - и уже с этим идти куда-то устраиваться.
По геймдизайну у меня сложилось впечатление, что попасть туда крайне непросто. Если нет каких-то выпущенных инди-проектов, то нужны знакомые. Соответственно, либо ищите связи, либо делайте свои проекты и будет Вам релевантный опыт.
По пунктам еще пройдусь
1) На самом деле, большая часть игроделов СНГ заточена под мобилки и казуалки. 
2) Исходя из пункта 1, не вижу особого смысла пытать счастья за рубежом. Наберитесь опыта где-то поблизости.
3) Нет, Вас без опыта едва ли возьмут на удаленку, да и Вам в качестве первой работы это ни к чему.
4) Делать в любом случае. В конце концов, это же прокачка ваших скиллов, Вам это сторицей вернется.
5) Если вам нравится геймдев, то лучше попробовать и понять, что это не ваше, чем потом жалеть о том, что не попробовали
Вопрос: Как поймать определенный запрос в MySql?

Лучший ответ:
Сделать триггер на таблице на, например, BEFORE INSERT, записывать данные в другую таблицу, адрес хоста, запустившего запрос можно узнать так:SELECT substring_index(host,':',1) ip 
FROM information_schema.processlist 
WHERE id = connection_id();

Худший ответ:
2 варианта.
1. mytop(аналог show full processlist;)
Если запрос очень быстро обрабатывается,  можно включать перед запросом:mysql -p
SET global general_log = 1;
###выполняем запрос###
SET global general_log = 0;
Потом смотрим где у вас general log.
Например /var/lib/mysql/server.log
или может оказаться /var/log/mysql.log
Удачи! :)
Вопрос: Как можно оптимизировать данную программу?

Лучший ответ:
she won't accept the gift if there are no k consecutive candies of the same type
Для этого не обязательно сортировать весь список
Да и вместо Collections.frequency можно сразу при вводе считать каких сколько

Худший ответ:
Может быть так будет быстрее?LinkedList<Integer> sweets = new LinkedList<>();
    StringBuilder sb = new StringBuilder();
    AtomicBoolean hasMinAmount = new AtomicBoolean(false);
    sweets.stream()
            .collect(Collectors.toMap(Integer::intValue, integer -> 1, Math::addExact))
            .forEach((candyName, amount) -> {
              if (amount >= min) {
                hasMinAmount.set(true);
              }
              for (int i = 0; i < amount; i++) {
                sb.append(candyName + " ");
              }
            });
    if (hasMinAmount.get()) {
      System.out.print(sb);
    } else {
      System.out.println("Oh sh*t");
    }
Вопрос: Какая разница между файлом блокнота от Виндовс в формате «Юникод» и «Анси»?

Лучший ответ:
Как поменять уже подсказано ))Сильно будет отличаться файл "Юникод" от "Анси" в случае немецкого, в анси, будут утеряны умлауты, они доступны или в случае немецкой кодовой страницы для не-юникод программ (а это уже не ansi), или в юникоде, для всех других настроек локалей

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

Лучший ответ:
Использую решение от lingualeo 
https://chrome.google.com/webstore/detail/linguale...

Худший ответ:
Самое лучшее решение, которое я нашел это установить программу-оболочку для словарей GoldenDict. Его можно настроить таким образом, что он будет переводить любое выделенное слово из любого места. С браузера, с pdf, с Word и т.д. Словари для него нужно скачать отдельно (найти не проблема)
Вопрос: Как запустить Nodejs в фоне вместе с Nginx?

Лучший ответ:
Если фронтенд надо запускать при помощи nodejs сервера, да еще под sudo, то что-то пошло очень не так:)
Попробуйте pm2. 
Я успешно использовал supervisord. Еще говорят, что в дистрибутиве с systemd очень просто написать т.н. unit и он сам будет запускаться при старте и перезапускаться при падении.

Худший ответ:
sudo npm run build - билдит js файл который ты должен подключить к документу. тогда приложение будет работать без npm
отлаживать приложение надо через npm run start - тогда приложение будет работать только когда запущен npm, зато все внесенные изменения сразу же будут отображаться в live режиме.
Вопрос: Как поставить цель метрики на кнопки с одинаковым классом?

Лучший ответ:
$('body').on('click', '.button-submit', function () {
   // код
});

Худший ответ:
Попробуйте Гугл тег менеджер.
Вопрос: Как правильнее создать базу?

Лучший ответ:
Автор - поле в заметке, кому отправлено - многие-ко-многим если можно посылать нескольким пользователям. Можно дополнительно со статусом "новая", который сбрасывается, когда пользователь прочитает заметку. Тогда будет таблица связи (user_id, note_id, is_seen) с первичным ключом (user_id, note_id).

Худший ответ:
можете, попробовать многие ко многим. почему бы и нет?
У пользователя много заметок. У заметки много пользователей
получится табличка (Id | UserId | NoteId)
Но здесь не пнятно, кто, в итоге, владелец заметки
-------------------------------------------------------------------------------------------------------------------------
Удачнее будет, записи вида 
(Id | UserId | NoteId | RecieverId*)
тут понятно по Id строки из этой таблицы, кто с кем поделился какой записью. А раз можно идентифицировать конкретную запись и конкретных пользователей, вы можете, используя этот Id, задавать, например, права доступа для получателя заметки (чтение, редактирование, удаление, пересылка). Но это в другой табличке, типа 
(Id, ShareId, PermissionId)
*Id пользователя, с которым поделились заметкой
UPD: но я не до конца представляю, что можно будет делать в вашей соц сети, так что вариант может быть не до конца подходящим. Общая идея в том, что фиксировать, кто кому что передал. Мало ли, вдруг потом РосКомНадзор пресанет..)