На днях написал плагин для Wordpress, который автоматически по заданию (через определенное время) парсит вопросы-ответы Yahoo Answers и вставляет их как посты в Wordpress. Ответы записываются в комментарии.

В плагине можно добавлять задания с тремя главными параметрами: ключевое слово, стоп-слово и категория Yahoo Answers (всего их 443). Например, можно написать ключевое слово: Adobe, стоп-слово: Photoshop, категория: не выбрана. По этому заданию будет найден вопрос с ответами за последние 7 дней, в котором упоминается Adobe, но не упоминается Photoshop.

Или, другой вариант, Ключевое слово: пусто, стоп-слово: пусто, категория: Computers & Internet — будут парситься любые вопросы только из этой категории.

Посмотрим, как Гугл будет индексировать этот блог. Блог, а точнее сплог, как вы поняли, на английском.

Yahoo Answers APIЕсть такая замечательная штука у некоторых веб-сайтов, как API (из WiKi: Интерфейс прикладного программирования (Application Programming Interface, API [эй-пи-ай]; по-русски чаще произносят [апи?]) — набор готовых констант, структур и функций, используемых при программировании пользовательских приложений и обеспечивающих правильное взаимодействие между пользовательским приложением и операционной системой). Далее »

sitetools В этом посте хочу описать свой организационный процесс при создании сайтов, будь это какой-то большой проект, или просто блог.

Все сайты я создаю, отлаживаю, а также делаю дизайн для них сначала на локальном компьютере. Для этого использую бесплатную сборку Денвер, которая включает в себя веб-сервер Apache+SSL, PHP5 в виде модуля, MySQL5, phpMyAdmin и прочую мелочевку.

Домен покупаю сразу и делаю сайт уже привзяывая его к конкретному домену.

На отдельном диске я держу все свои проекты в отдельных папках. В каждой папке всегда создаю такие папки:

  • backup — здесь храню резервные копии сайта и базы данных
  • cms или исходники — здесь храню исходную CMS, например, Wordpress 2.7, а также всякие плагины, темы и прочую фигню
  • images — в этой папке создаю и храню все изображения для сайта. В основном эти изображения используются в дизайне сайта
  • описание — здесь создаю файл описание.txt, в котором пишу Название сайта, Описание, Краткое описание, Ключевые слова (через запятую и через пробел), Адрес сайта (типа http://site.ru), Емайл для связи, Адрес RSS фида (если таковой имеется. Все эти данные очень пригождаются при регистрации сайта в поисковиках и разных каталогах. Также в этой папке храню файлы с кодами счетичков статистики + пароли к ним.

Остальные папки делаю по мере надобности.

А как проходит этот процесс у Вас? ;)

Вы когда-нибудь делали сайт на 600 000+ страниц? А я сделал для раскрутки другого сайта. Посмотрим, что скажет Google на этот счет. Забанит или нет? И сколько страниц проиндексирует.

Подробности напишу позже, как только будут результаты.

Ах да, что такое сайт-хамелеон можете прочитать у Profit Hunter'a (мировой блоггер ;)

счетчик посетителейДля тех, кто не хочет видеть на своем сайте счетчики посетителей, я знаю 3 простых способа, как их сделать невидимыми. При этом никакого бана от поисковиков вы не получите.

ВНИМАНИЕ! Скрывать счетчики можно только после 2-3 дней после установки, т.к. некоторые из них проверяют модераторы.

Все три способа используют CSS. Предварительно заключите счетчики в теги

<div class='counters'> код счетчиков </div>

Назвать класс 'counters' можно по-другому.

В стилях CSS пишем:

Способ 1.

.counters
{
display: none;
}

Способ 2.

.counters
{
visibility: hidden;
}

Способ 3.

.counters
{
position: absolute;
left: -1000px;
}

Всё.

Мне не нравится, когда на сайте есть белые пятна в виде неправильно склоненных слов после чисел.

Например: У вас 1 комментариев. Или: С момента Вашего последнего визита прошло 23 дней.

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

Вот код:

//Возвращает правильное окончание слова для числа
function GetRightWord($num, $word)
{

 $kod = $num - floor($num/10)*10;
 $nums = " ".$num;
 $nums = substr($nums, strlen($nums)-2, 2);
 $num = intval($nums);

 if ($word == 'день')
 {
  if (($num < 11) || ($num > 20))
  {
  switch ($kod) {
  case 0:
  case 5:
  case 6:
  case 7:
  case 8:
  case 9: return 'дней'; break;
  case 1: return 'день'; break;
  case 2:
  case 3:
  case 4: return 'дня'; break; }  
  } else { return 'дней'; }
 }
 
 if ($word == 'лет')
 {
  if (($num < 11) || ($num > 20))
  {
  switch ($kod) {
  case 0:
  case 5:
  case 6:
  case 7:
  case 8:
  case 9: return 'лет'; break;
  case 1: return 'год'; break;
  case 2:
  case 3:
  case 4: return 'года'; break; }
  } else { return 'лет'; }
 }
}

Пример вызова:
echo «Вы заходили на сайт „.$days_count.“ „.GetRightWord ($days_count, 'день').“ назад»;

Начиная свой первый большой проект Лагерь, я впервые познакомился с технологией AJAX. Наверно, все знают, что передача данных через javascript происходит (по крайней мере, в моем опыте) в кодировке UTF-8. Чтобы нормально принять эти данные в своем скрипте (например, на PHP), нужно их конвертировать в Win-1251 (если только изначально вы не пишете весь сайт в UTF-8 и база данных у вас тоже в UTF-8).

Это легко делается командой iconv («UTF-8», «windows-1251», $данные);. Обратное конвертирование нужно сделать при передаче данных из скрипта (на PHP) в javascript.

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

И я его нашел.

Полазив по форумам и перебрав множество решений, отобрал одно стабильно работающее. Итак, вот краткий принцип передачи и приема данных с помощью AJAX:

1. Все данные (кроме цифр), передаваемые из javascript, нужно «экранировать» функцией escape. Например, escape ('данные для скрипта')
2. В принимающем скрипте (на PHP) эти данные нужно декодировать следующей функцией:

function unicodeUrlDecode($url, $encoding = "")
{
$encoding = 'CP1251';
preg_match_all('/%u([[:xdigit:]]{4})/', $url, $a);
foreach ($a[1] as $unicode)
{
$num = hexdec($unicode);
$str = '';// UTF-16(32) number to UTF-8 string
if ($num &lt; 0x80)
$str = chr($num);
else if ($num &lt; 0x800)
$str = chr(0xc0 | (($num &amp; 0x7c0) &gt;&gt; 6)) .
chr(0x80 | ($num &amp; 0x3f));
else if ($num &lt; 0x10000)
$str = chr(0xe0 | (($num &amp; 0xf000) &gt;&gt; 12)) .
chr(0x80 | (($num &amp; 0xfc0) &gt;&gt; 6)) .
chr(0x80 | ($num &amp; 0x3f));
else
$str = chr(0xf0 | (($num &amp; 0x1c0000) &gt;&gt; 18)) .
chr(0x80 | (($num &amp; 0x3f000) &gt;&gt; 12)) .
chr(0x80 | (($num &amp; 0xfc0) &gt;&gt; 6)) .
chr(0x80 | ($num &amp; 0x3f));

$str = iconv («UTF-8», «$encoding», $str);
$url = str_replace ('%u'.$unicode, $str, $url);
}

return urldecode ($url);
}

Если Вам эти данные нужно записать в базу данных, воспользуйтесь дополнительно такой функцией:

function prepare_message($message)
{
$message = trim($message);
$message = htmlspecialchars($message, ENT_QUOTES);
return $message;
}

3. Ответ скрипта нужно передавать, используя функцию ajaxout:

//Подготавливает строку для передачи браузеру
function ajaxout($content)
{
return unhtmlentities(htmlentities($content,0,"windows-1251"));
}function unhtmlentities ($string)
{
$trans_tbl = get_html_translation_table (HTML_ENTITIES);
$trans_tbl = array_flip ($trans_tbl);
return strtr ($string, $trans_tbl);
}

На этом всё.

Постовой:

Давно использую в своих сайтах небольшой скрипт combine.php. Он дает возможность легко подключать новые Javascript или CSS файлы к сайту, а также сжимать их в gzip и кэшировать.
Далее »

Для чего сжимать файлы, я надеюсь, понятно — чтобы сайт загружался быстрее + приведение кода в менее читабельный вид (чтобы не подсматривали :) . Для сжатия CSS и JS файлов в gzip я обычно использую сторонний скрипт combine.php (подробнее читайте в заметке 222).

Для сжатия я использую сервис JS Packer. Он прекрасно удаляет все комментарии из скрипта, а также может уменьшить имена переменных в функциях и, если хотите, закодировать скрипт. Однако учтите, кодирование скрипта приводит к замедлению его загрузки, т.к. браузеру приходится каждый раз декодировать скрипт.

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

Обычно я тестирую сжатые скрипты в Opere с включенной опцией «Открывать консоль с ошибками». Если какие-то ошибки в скрипте есть, то вы их там увидите. У меня, в силу недообразованности в Javascript кодинге, все время появлялись ошибки типа «Inline script compilation Error». Вся проблема заключалась в том, что JS Packer также удаляет все лишние пробелы и после закрытой скобки } или ) следом шла function или var. Так вот, после этих скобок нужно ставить точку с запятой ;. То же самое делать для каждой законченной строки. Естесственно, не надо ставить точку с запятой перед else, catch, а также другими ветвлениями, или если следом идет еще одна закрывающая скобка.

Всё.

Постовой:

Скриншот сайтаХочу с вами поделиться, как я реализовал на своем сайте Веб-критик создание превьюшек для добавляемых сайтов. Превьюшки также создаются на многих других сайтах, в том числе сайтах социальных закладок mister-wong.ru, toodoo.ru и других. Но разработчики этих сайтов не открывают способ, как они это делают. Поэтому пришлось думать самому.

Далее »


© 2007-2010 bLoggle.ru | На сайте АнтиГад.ру можно скачать антивирусы бесплатно