comments by Administrator

Главные вкладки

Сейчас SEO ссылку запостит и мы её удалим ;-)

Нет модераторов. См. тут.

Ок, давайте проведём эксперимент. Заберём на время модераторские права у всех и вернём elen elen, Deanna, tanechka.333, veranica.

Да вы уже 3 года как ник поменяли.

5
Ваша оценка: Нет

Видимо всё-таки славянка, а не Славянка. Судя по вашим комментариям, вы попали под раздачу, когда ответили ВБР, или как он там в то время назывался. Не связывайтесь с отбросами общества — и всё будет у вас хорошо. Логиньтесь как славянка, кто ж вам мешает-то.

4
Ваша оценка: Нет

1) А вы как определяете степень интересности дискуссий?

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

2) Почему вы решили, что на место "пауков" придут умные, интересные, вежливые юзеры?

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

2.77778
Ваша оценка: Нет

17-20 ноября 2017.

5
Ваша оценка: Нет Средняя: 5 (1 оценка)

Так можно ведь отменять свой голос. Кто-то отменил видно. А по поводу фальсификаций… ну кто будет этим заморачиваться? Только Глебов, но он уже даже не модератор.

3.4
Ваша оценка: Нет

Украина — это страна такая?

Да, виноват.

5
Ваша оценка: Нет

Вообще-то действительно нисколько. А от острой лучевой болезни погибло 134 человека. Детали, конечно, сложнее.

5
Ваша оценка: Нет

Ну хотя бы адрес и телефон можно было бы дать.

0
Голосов еще нет

ОП пишет через прокси на LeaseWeb, шифруется. Надеюсь, читатели у нас не глупые и на разводку не попадутся.

Да, мы тут уже написали.

Ну так вы батенька нам не послали необходимые данные.

0
Ваша оценка: Нет

Гусаров буду удалять с особой жестокостью. Михаил — молодец.

0
Голосов еще нет

Слушаюсь и повинуюсь, общественное мнение.

5
Ваша оценка: Нет

А ещё можно разрешить ссылки на картинки только через HTTPS. Заодно решится проблема со страшными сообщениями, что часть страницы не защищена от АНБ.

2.333335
Ваша оценка: Нет

Так это ж стрельбы по Сирии.

4
Ваша оценка: Нет Средняя: 4 (4 оценок)

Спамер. Удалили его уже.

Так он называется в Википедии.

1
Ваша оценка: Нет Средняя: 1 (1 оценка)

Brat и Irina Ka. видимо.

5
Ваша оценка: Нет

Вместо того, чтобы писать точки, напишите на webmaster@russian-belgium.be, чтобы вас добавили в раздел Няни. Нужно ваше фото, телефон, примерный адрес (хотя бы коммуна и почтовый иднекс) и пару слов о себе.

Поездку в Баден и Страсбург отменили.

0
Голосов еще нет

Так вы не проголосовали.

1
Ваша оценка: Нет Средняя: 1 (1 оценка)

Видно надо расширение поставить для пользовательских скриптов. Что-то вроде Tampermonkey.

0
Голосов еще нет
А можно в новом дизайне устроить так, чтобы юзернейм пользователя был привязан к контенту на уровне div class?

Можно написать пользовательский скрипт. У вас Google Chrome? Нажмите Ctrl-Shift-J, вставьте в появившуюся консоль вот эту строчку

jQuery('a[href=/user/10204]').parents('.comment').hide();

и все ваши комментарии исчезнут… до перезагрузки страницы.

0
Голосов еще нет

Хорошие идеи будем копировать. Ну вот например объявления с фоновыми картинками — это свежо, берём.

0
Голосов еще нет

надо учитывать, что сайт должен быть адаптивным

Вы на РвБ с планшета хоть раз зайдите, если уж с телефона не заходили.

0
Голосов еще нет

Это по нормальному информация для админов, зачем мне, пользователю, ее знать?

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

0
Голосов еще нет

Например, даже в приведенном макете нет в меню ссылки типа "Каталог предприятий", где вообще эта страница , где выводится лента этих предприятий? Ну понятно есть "Карта", переходишь на эту страницу видишь карту, а под ней пустота. Ну хотя бы пустили бы под ней материалы из Раздела (Тип материалов) этих самых предприятий!

Готово.

5
Ваша оценка: Нет Средняя: 5 (2 оценок)
1
Ваша оценка: Нет Средняя: 1 (1 оценка)

Гуглила-а-а? Вверху страницы огромными буквами написано Переводчики.

А у меня есть предложение к Администратору: опубликуйте алгоритм, а мы тут сообща попробуем довести его до кондиции.

Да пожалуста:

Делаем выборку данных


SELECT v1.uid uid1, v2.uid uid2, u1.name name1, u2.name name2,
  v2.entity_id entity_id, v1.value value1, v2.value value2
FROM votingapi_vote v1
JOIN (votingapi_vote v2, users u1, users u2)
 ON (v1.uid != v2.uid AND v1.entity_id=v2.entity_id
   AND v1.entity_type=v2.entity_type AND v1.uid=u1.uid AND v2.uid=u2.uid)
WHERE v1.uid < v2.uid AND v1.uid != 0 AND v2.uid != 0
ORDER BY v1.uid,v2.uid;


JOIN таблицы votingapi_vote на себя саму выбирает все пермутации пар пользователей, а условие v1.uid < v2.uid превращает пермутации в комбинации.

Условие v1.entity_id=v2.entity_id AND v1.entity_type=v2.entity_type позволяет выбрать голоса, которые пользователи отдали за одну и ту же тему или комментарий. Скажем, первая строчка в нашей выборке означает, что Administrator и Bob дали 100 очков одной и той же теме или одному и тому же комментарию.

Условие v1.uid != 0 AND v2.uid != 0 исключает анонимные комментарии.

В результате получаем таблицу из шести колонок:

uid1    uid2    name1    name2   value1  value2
1       2       Administrator   Bob     100     100
1       2       Administrator   Bob     20      20
1       2       Administrator   Bob     40      40
1       2       Administrator   Bob     100     100
1       2       Administrator   Bob     20      100
1       2       Administrator   Bob     100     100
1       2       Administrator   Bob     100     100
1       2       Administrator   Bob     100     100
1       2       Administrator   Bob     100     100
1       2       Administrator   Bob     80      80
1       2       Administrator   Bob     100     20
1       2       Administrator   Bob     20      20
1       2       Administrator   Bob     60      60
1       2       Administrator   Bob     100     100
1       2       Administrator   Bob     100     100


  1. В первой колонке — id первого пользователя, в данном случае это администратор (uid=1)
  2. во второй колонке — id второго пользователя
  3. в третьей колонке — имя первого пользователя
  4. в четвёртой колонке — имя второго пользователя
  5. в пятой колонке — голос первого пользователя
  6. в шестой колонке — голос второго пользователя


Рассчитываем корреляцию голосов


Рассчёт конечно можно написать на PHP, но зачем тогда придумали R?

Берём табличку, сгенерированную на предыдущем этапе из записываем её в файл in.tsv. Затем:

#!/usr/bin/env Rscript
d <- read.delim("../in.tsv")

unique1 <- unique(c(d$uid1, d$uid2))

for (id1 in unique1) {
  if (file.exists(as.character(id1))) {
    file.remove(as.character(id1))
  }
  temp1 <- d[d$uid1==id1 | d$uid2==id1, ]
  unique2 <- unique(c(temp1$uid1, temp1$uid2))
  unique2 <- unique2[!unique2 == id1] # remove id1
  for (id2 in unique2) {
    if (id1 < id2) {
      result <- temp1[temp1$uid1==id1 & temp1$uid2==id2, ]
      name <- as.character(result$name2[1])
    } else {
      result <- temp1[temp1$uid1==id2 & temp1$uid2==id1, ]
      name <- as.character(result$name1[1])
    }
    n = nrow(result)

    if (n > 7) {
      x <- result$value1
      y <- result$value2
      pvalue <- cor.test(x,y)$p.value
      if (is.finite(pvalue) && pvalue < 0.05) {
        correlation <- cor(x,y)
        cat(id2, name, n, correlation, pvalue, "\n", sep = "\t", file = paste(id1, sep = ""), append = T)
      }
    }
  }
}


Вся работа по расчёту корреляции делается функцией cor(x,y). Функция cor.test(x,y) рассчитывает метрики корреляции, в том числе её значимость (p-value). По умолчанию считается, что всё, что имеет p-value ≥ 0.05 недостаточно значимо, поэтому отбираем только результаты с p-value < 0.05 и записываем в файл с именем, равным uid первого пользователя.

Игра с id1, id2 и if-else нужна для того, чтобы выбрать все комбинации пар пользователей, вне зависимости от порядка.

Из таблицы сверху должен получиться файл с названием «1» и следующим содержимым:

2       Bob     15      0.6039604       0.01710946

  1. В первой колонке id второго пользователя
  2. во второй колонке имя второго пользователя (для того, чтобы можно было его сразу же показать на экране)
  3. в третьей колонке количество тем и комментариев, за которые проголосовали оба пользователя
  4. в четвёртой колонке — корреляция
  5. в пятой колонке — p-value


С обработкой данных мы закончили.

Показываем результаты


Я решил показать результаты в профиле пользователя, вот соответствующий хук:

/**
 * Hook into the user menu
 */
function mymodule_menu() {
  $items['user/%user/likeminded'] = array(
    'access callback' => TRUE,
    'access arguments' => array(1),
    'page callback' => 'mymodule_likeminded', // function defined below
    'page arguments' => array(1),
    'title' => 'Likeminded',
    'weight' => 5,
    'type' => MENU_LOCAL_TASK,
  );
  return $items;
}

Ну и самая длинная часть — вывод результатов.

/**
 * Display likeminded users
 */
function mymodule_likeminded($arg){
 
  if (is_object($arg) && !$arg->uid) {
    return;
  }
  # this is my path to the results, your path may be different
  $path =  drupal_get_path('module', 'mymodule') . '/pearsons/' . $arg->uid; 
  $lines = array();
  $min = 0; $max = 0;
 
  if ($handle = @fopen($path, 'r')) {
    while($line = fgets($handle)) {
      $line = explode("\t", $line);
      if ($line[2] >= $max) { $max = $line[2]; }
      if ($line[2] <  $min) { $min = $line[2]; }
      $lines[] = $line;
    } 
  }
  $output = ''; 
  // Likeminded
  $output .= '<h1>' .t('Likeminded') .'</h1>' ;
  $output .= '<div class="likeminded">';
  foreach($lines as &$line) {
    if ($line[3] > 0 ) {
      $size =mymodule_font_size($min, $max, $line[2]);
      $opacity = $line[3];
      $output .= "<span style="\"font-size:"" .="" $size="" "pt;opacity:"="" $opacity="" "\"="">";
      $output .= l($line[1], 'user/' . $line[0]);
      $output .= "</span>";
    } 
  }
  $output .= '</div>';
 
 
  // Adversaries
  $output .= '<h1>' .t('Adversaries') .'</h1>' ;
  $output .= '<div class="adversaries">';
  foreach($lines as &$line) {
    if ($line[3] < 0 ) {
      $size =mymodule_font_size($min, $max, $line[2]);
      $opacity = abs($line[3]);
      $output .= "<span style="\"font-size:"" .="" $size="" "pt;opacity:"="" $opacity="" "\"="">";
      $output .= l($line[1], 'user/' . $line[0]);
      $output .= "</span>";
    }
  }
  $output .= '</div>';
 
  return $output;
} 
 
/**
 * calculate the font size in proportion to the maximum and minimum of common votes
 */
function mymodule_font_size($min_count, $max_count, $cur_count,
  $min_font_size=11, $max_font_size=36) {
  if ($min_count == $max_count) # avoid DivideByZero exception
  {
    return $min_font_size;
  }
  return (
    ($max_font_size - $min_font_size)
    /
   ($max_count - $min_count)
   *
   ($cur_count - $min_count) + $min_font_size);
}

Тут всё просто. Чем больше шрифт — тем больше пользователи голосовали в одних и тех же темах. Чем ярче текст — тем больше корреляция. Если корреляция позитивная — то показываем пользователя в единомышленниках, иначе — в противниках.

5
Ваша оценка: Нет Средняя: 5 (3 оценок)

Не обязательно. У вас с пользователем Nevada много общих голосов, а у Nevada с пользователем LV в четыре раза больше общих голосов. Так что это нормально, что вы у него шрифтом поменьше.

0
Голосов еще нет

Упс,

В первой версии алгоритма поиска единомышленников и противников была ошибка. Пользователи, зарегистрированные раньше, не учитывались в рассчёте. Теперь всё ок.

0
Голосов еще нет

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

Это не так просто. К тому же, как заметил как-то Paolo_Cocoa, писать в темы больше чем на 50 комментариев становится сложнее, и это хорошо.

И еще: хотелось бы, чтобы на непрочитанное сообщение можно было попадать и из своего профиля.

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

А профиль пользователя ждут другие изменения. Например, выборка лучших и худших комментариев пользователя ;-)

0
Голосов еще нет

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

Частые посетители зачастую голосуют за или против других пользователей, а не по политике и по купле-продаже. Те, кто заходит пореже, голосуют за содержимое поста или за оформление текста.

Лучше мы сделаем автоматическую кластеризацию — украинцы, строители, родители и так далее.

Всех посчитаем.

5
Ваша оценка: Нет Средняя: 5 (3 оценок)

В последний раз.

5
Ваша оценка: Нет Средняя: 5 (3 оценок)

Возможно, это два разных человека.

5
Ваша оценка: Нет Средняя: 5 (3 оценок)

Так точно. Чем ярче цвет — тем более похожи у вас оценки. Чем больше шрифт — тем больше вы голосовали по одним и тем же темам и комментариям.

5
Ваша оценка: Нет Средняя: 5 (2 оценок)

Готово.

0
Ваша оценка: Нет

Умельцы — если бедные и неизвестные. Предприятия — если богатые и знаменитые.

0
Ваша оценка: Нет
0
Ваша оценка: Нет
Считаете ли Вы приемлемым держать в модераторах форума автора этих мыслей?

Ни одного правила ВБР этим высказыванием не нарушил. Читателей он не оскорбил, грубо и нецензурно не выразился. Некрасиво — да, но не нецензурно. Законов Бельгии тоже вроде не нарушал, Холокост не отрицал, к свержению конституционного стороя насильственным путём не призывал. Проблем не вижу.

Зал славы — начало списка, а позорный стол — конец того же самого списка, отсортированного по оценкам.

2
Ваша оценка: Нет Средняя: 2 (4 оценок)

Здравствуйте,

Мы создаём новый раздел в Каталоге предприятий и организаций — Няни. Мы вас туда запишем и отрекламируем совершенно бесплатно, но для этого нам нужно от вас получить:

1. название коммуны, где вы живёте
2. ваше имя
3. ваше фото
4. ваш номер телефона

Всё это не просто так. Название коммуны нужно для того, чтобы посетители могли искать нянь поблизости, имя и фото —чтобы было проще звонить незнакомому человеку — вся-таки, вам собираются доверить ребёнка. Ну и номер телефона — для связи.

Как напишете — так мы ваше объявление и опубликуем.

Пишите на webmaster@russian-belgium.be.

Спасибо, исправил.