+0.01
Рейтинг
2.02
Сила

Максим

  • avatar Coxus
  • 2
Хостинг у меня от Hosting.nic.ru, тариф 301.
512 мега оперативки, псевдо VPS, 3 гига на винче.
При этом сайт падает уже при 300 униках в день.
Друпал — очень хорошая CMS. Без шуток. Можно собрать сайт любой направленности с любыми наворотами. Но его потребность в ресурсах — извините меня, выше крыши. Причем даже нанимались спецы для его оптимизации. Запросы кешируются. А сайт жрет памяти так, будто на него ходят 30.000 уников в день.

Я лучше заново сделаю все, но будучи уверенным, что проект будет стабильно и быстро работать.
  • avatar Coxus
  • 0
Не думаю, что это целесообразно.
Людей, СПЕЦИАЛЬНО старающихся заспамить блоги одним и тем же сообщением — по крайней мере на мою продолжительную бытность я не встречал. Если повторно и публикуют — то случайно.
Имхо, усложнять существующую проблему — это не ценить время, которое можно потратить на более полезные и необходимые функции.
  • avatar Coxus
  • 0
Правда мне кажется, эта фича будет лишней. И лишь займет ресурсы (как разработчиков, так и программные)
  • avatar Coxus
  • 0
Анализ уникальности поста реализован в www.newsgrabber.info
Я не программер к сожалению, в тонкостях не разбираюсь.
Но юзал эту приблуду — налету анализирует сграбленные публикации и отсеивает «похожие». В принципе у меня есть файлы этого пакета. Если разработчикам LS будет интересно, могу предоставить. Думаю авторы не будут сильно в обиде :)
Тем более, что newsgrabber работает только на подключенных к системе доменах.
  • avatar Coxus
  • 0
Вечером скину в личку доступ. Сейчас не у домашнего компа
  • avatar Coxus
  • 0
Друпал 5.10 щас стоит :)
  • avatar Coxus
  • 0
Анализ уникальности постинга?
  • avatar Coxus
  • 4
Яндекс предлагает проверять этим валидатором: www.feedvalidator.org

Сейчас посмотрел — фиды действительно не валидные. Надо править. Многие rss-трансляторы тоже отбраковывают инвалидные потоки.
  • avatar Coxus
  • 0
Сложный вопрос. Я задумывался об этом, однако ответа не нашел.
Я рассматриваю выдачу в поиске по блогам как дополнительный канал траффика помимо выдачи в обычном поиске.

Кроме того, в поиске по блогам ранжирование идет по умолчанию «по времени публикации», что логично, ибо блоговые записи быстро устаревают. Поэтому пингатор мегаважен.
А вот в обычном поиске по умолчанию вывод результатов идет по релятивантности. Так что нужно в обоих каналах выводиться :)
  • avatar Coxus
  • 3
Логичнее было бы прятать кнопку после нажатия и показывать ajax-блок вместо нее, что типа производится операция. Проблему решает в два счета. А делов — 5 строк кода.
  • avatar Coxus
  • 0
Да, есть подозрение, что могут не выдаваться из-за низкой частотности публикаций. Робот, типа, просто редко ходит. :)
По крайней мере это было бы логично со стороны разработчиков
  • avatar Coxus
  • 1
Должна вестись. Если этого не происходит — скорее всего из-за того, что владельцы сайтов на LS не удосуживаются добавить ленту записей в поисковик по блогам.

Я туда одно время забивал ленты даже простых форумов на Yabb — прекрасно Яндекс-роботы их кушают :)
  • avatar Coxus
  • 0

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

У меня есть исходник такого пингатора для друпала. Думаю адаптировать его не составит труда:


function yandex_blogs_help($section) {
  switch ($section) {
    case 'admin/modules#description':
      return t('Alerts blogs.Yandex.ru that your site\'s blogs have been updated.');
  }
}

/**
 * Implementation of hook_nodeapi().
 * будет дергаться ядром каждый раз, когда создается нода любого типа
 */
function yandex_blogs_nodeapi($node, $op, $teaser = NULL, $page = NULL) {

  global $base_url;

        switch($op) {
                case 'insert':
                case 'update':
                case 'delete':
//сработает при любом изменении статуса отображаемой ноды
                        if ($node->status==1)
//пингуем Яндекс   если задано — имя сайта, иначе заголовок ноды  
                                _yandex_blogs_doping($node->uid);
        }
}

//
function _yandex_blogs_doping($uid) {
        global $base_url;
        global $user;

        $account = user_load(array('uid' => $uid, 'status' => 1));
    /*
    // It sends not fully correct result: parameters appear in <string>..</string> tags
        $result = xmlrpc('http://drupal47/pings_test_ping',//'http://ping.blogs.yandex.ru/RPC2',
                                         'weblogUpdates.ping',
                                         t("%name", array('%name' => $account->name)),
                                         $base_url.'/'.pathauto_cleanstring($account->name).'/feed');
    */
    // So we need to use something simplier than code in xmlrpc_request()
    require_once './includes/xmlrpc.inc';
        $result=true;

        $req = '<?xml version="1.0"?>
<methodCall>
        <methodName>weblogUpdates.ping</methodName>
        <params>
                <param>
                        <value>'.t("%name", array('%name' => $account->name)).'</value>
                </param>
                <param>
                        <value>'.$base_url.'/'.pathauto_cleanstring($account->name).'/feed</value>
                </param>
        </params>
</methodCall>';

        $res = drupal_http_request('http://ping.blogs.yandex.ru/RPC2', array("Content-Type" => "text/xml"), 'POST', $req);
        //$res = drupal_http_request($base_url.'/pings_test_ping', array("Content-Type" => "text/xml"), 'POST', $req);

        if ($res->code != 200) {
                xmlrpc_error(-$res->code, $result->error);
                $result=false;
        }
        $message = xmlrpc_message($res->data);
        // Now parse what we've got back
        if (!xmlrpc_message_parse($message)) {
                // XML error
                xmlrpc_error(-32700, t('Parser error'));
                $result=false;
        }
        // Is the message a fault?
        if ($message->messagetype == 'fault') {
                xmlrpc_error($message->fault_code, $message->fault_string);
                $result=false;
        }
        // Message must be OK
        if($result==true)  {
                $result=$message->params[0];
                watchdog('Yandex ping', t('blogs.Yandex.ru ping accomplished'), WATCHDOG_WARNING);
        }

        if ($result === FALSE) {
                watchdog('Yandex ping', t('Ping blogs.Yandex.ru FAULT'), WATCHDOG_WARNING);
        }
}
 

формат строк между … — должен оставаться без изменений.
Роботу должно передаваться:

— Ник пользователя, создавшего новую публикацию
— Адрес RSS-ленты его личного блога