Про Goolge AJAX API

Google AJAX API

Недавно открыл для себя Goolge AJAX API. Оказалось очень полезной штукой; например, можно легко и красиво построить список последних записей блога (смотрим в левый верхний угол), или встроить в страничку переводчик с поддержкой кучи языков. Еще большие чудеса можно вытворять с поиском в Google, в том числе и с поиском по картинкам. Но самое главное, что использование этого API практически не нагружает сервер, поскольку оно все построено на Javascript, выполняется на стороне клиента, а серверная часть скрипта выполняется где-то в Google. Это идеальное средство для украшательства страниц на не очень мощных и недорогих VDS.

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

Как вытащить домен из бана поисковой системы

Google Logo

Yahoo мои домены не убирал из выдачи ни разу, за что ему большое спасибо. Больше всего неприятностей доставлял бан доменов в Google и MSN.

Официальный способ разбанивания доменов в Google – это написать reinclusion request в Google Webmaster Tools. Этот способ реально работает, и он не самый быстрый. Гугловцы рассматривают эти заявки по нескольку месяцев, и результат не гарантирован. Вообще, очень плохо, что в своих хваленых инструментах для вебмастеров Google не показывает причину бана домена, что же именно привело его к блокированию; поэтому приходится придумывать самые разные причины, и описывать их в reinclusion request.

В начале 2007 года домен bloged.org оказался в бане Google и MSN. Я поменял контент, перенес домен к firstvds и решил на нем сделать блог. Идея оказалась удачной, MSN автоматически разбанил домен. А вот Google никак не отреагировал на смену контента, пришлось писать reinclusion request.

Прошло что-то около трех месяцев, гугл никак не хотел включать сайт в индекс. Тогда я написал о своей проблеме в Google Groups, и через 3 дня сайт начал индексироваться. В общем, у меня сложилось впечатление, что если написать о своей проблеме в Google Groups, то проблема решается намного быстрее.

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

Если написать письмо в гугл – они отвечают стандартной отпиской, с приблизительным текстом: “мы работаем с миллионами сайтов, и у нас нет возможности просмотреть каждый сайт отдельно”. Это означает, что ваше письмо ушло в /dev/null, толку от вашего сообщения нет вообще. Писать письма надо в Google Groups, только там люди из Google могут дать полуофициальный ответ.

Намного сложнее вытащить домен из бана MSN. Если причины, по которым банит Google, более-менее понятны, то причины Microsoft находятся вне пределов моего понимания. Несколько белоснежно-белых сайтов ушли в бан; а мой фид одной известной PPC находится в индексе – несмотря на запрет индексации через robots.txt.

Саппорт Live.com – это вообще отдельная песня. Я переписывался с ними 10 месяцев для того, чтобы вытащить один из своих доменов из бана.

Как я понял, у них там три уровня разборок с овнерами доменов. На первом уровне “специалисты” отвечают на сообщения клиентов, но в их компетенции я сомневаюсь. После того, как я написал тикет, горе-специалист с прикольным индейским именем долго отказывался передавать тикет тому, кто действительно может помочь – на том основании, что у меня для сайта не был создан robots.txt. 2 недели ушло на то, чтобы убедить саппорт в том, что отсутствие robots.txt не влияет на индексацию.

Дальше мой тикет передали в Microsoft Global Escalations, где чуть более компетентный сотрудник особо не напрягаясь меня вежливо послал ожидать окончания апдейта в их поисковой системе. Я на это дело повелся, ждал 4 месяца – разумеется, результат был нулевой.

Самый правильный способ вытаскивания домена из бана поисковой системы Live, это зарегистрироваться на их форуме для вебмастеров. Там есть адекватный человек, модератор, Brett Yount. Он один из немногих людей, который довольно быстро и точно могут сказать, забанен домен в MSN или нет; кроме того, он может подсказать, что делать дальше.

Brett Yount мне сообщил, что мой сайт был ошибочно определен как спам, и посоветовал написать тикет через Live Search Site Owner support form. И снова контакт с неадекватным специалистом из Microsoft, и снова передача тикета в Microsoft Global Escalations. Но на сей раз там попался вполне адекватный сотрудник, который передал мой тикет в Microsoft SPAM Team, где и разбанили мой домен.

Долго я этого ждал, но все таки смог победить эту тяжелую и неповоротливую бюрократическую машину в Microsoft, чего и вам желаю.

Опубликовано в рубриках: SEO

Как собрать ядро для OpenSuSe 11

The Linux Kernel
Ядро, которое идет вместе с дистрибутивом OpenSuSe 11, достаточно компактное и неплохо напичкано всякими примочками. Но если есть желание выжать из своей системы максимум возможностей, без пересборки ядра не обойтись.

Для начала надо установить пакет kernel-source через Yast. Исходники ядра лягут в свои директории, и создастся симлинк на эти исходники – /usr/src/linux.

После этого выполняем следующие команды:

cd /usr/src/linux
make mrproper

make mrproper создает такую же конфигурацию для компиляции ядра, которая сейчас используется в системе. Это очень удобно, из нее всего лишь надо будет выкинуть лишее или добавить желаемое.

make menuconfig

Это самый отвественный этап. Здесь выкидывается всякая ненужная хрень. Например, я собирал ядро для своего ноутбука. Там была масса всякой ненужной гадости, которая совершенно точно не пригодится на нем – поддержка RAID-массивов, виртуализация и многое другое. Если эти фичи поотключать, ядро становится меньше и соответственно, при использовании облегченного ядра остается больше ресурсов для других процессов. Здесь еще важно поменять название ядра. Если оно именовалось как default, то лучше его переименовать, например, в mykernel001. Потому что при выходе нового ядра kernel-default Yast просто-напросто перепишет облегченное ядро новой версией.

Дальше я делаю вот что:

make rpm

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

rpm -ivh kernel-2.6.25.160.1-2.i386.rpm
mkinitrd

После этого остается только поправить конфиг загрузчика (grub или lilo), чтобы была возможность выбрать версию ядра, с которой будет загружаться система. Сразу отказываться от старого проверенного ядра не стоит, вдруг при сборке ядра отключили что-то лишее и какое-нибудь устройство перестало работать. Поэтому не исключено, что ядро придется пересобирать несколько раз для того, чтобы достичь оптимальной производительности системы.

Опубликовано в рубриках: Linux

Золотое правило админа

Типичный Одмин
Если кто-то еще не знает, это правило звучит так:

Работает – не трожь!

Теперь собственно сама история. Когда-то у меня стояла OpenSUSE 10.3, в которой был Perl 5.8.8. С выходом OpenSUSE 11 я решил сделать апгрейд, который на первый взгляд прошел удачно. Все было хорошо, пока я не попробовал запустить несколько своих ботов.

Выяснилось, что в 11-й версии Perl проапгрейдился до версии 5.8.10, и основные модули по работе тоже подвергались апгрейду. Все товарищи, кто прямо или косвенно пользовался модулем HTTP::Message скорее всего в логах увидили нечто подобное:

HTTP::Message content not bytes

и после этого долго ломали голову над своим кодом. А на самом деле бага в коде была на стороне мантайнера HTTP::Message, версия libwww-perl-5.810 оказалась глючной до безобразия. И самое интересное, эта версия оказалась в дистрибутиве OpenSUSE 11, поэтому совсем безболезненно апгрейд не прошел.

Да, эта проблема решается апгрейдом libwww-perl до более свежей версии, что собственно я и сделал. Сейчас это libwww-perl-5.814, и пока багов в ней не заметил.

Вот и думай после этого, а нужен ли был апгрейд, если он принес столько геморроя?

PHP или Perl?

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

PHP более легкий, и изначально он заточен для того, чтобы отрисовывать динамически создаваемые веб-странички. Все остальное, что написано на php и запускается из командной строки или по крону, зачастую сделано нерационально.

Perl же изначально задуман для обработки текстовой информации. Сейчас это очень мощный язык программирования, с нормально реализованной многопоточностью. На нем тоже можно писать веб-приложения (и весьма успешно), но при прочих равных условиях на php это сделать проще.

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

Благодаря Comprehensive Perl Archive Network (CPAN) каждый разработчик может пользоваться уже готовыми решениями для многих случаев жизни.

Например, я уже забыл, когда извлекал линки из HTML-страниц с помощью регулярных выражений; для этих целей есть модуль HTML::LinkExtor. Понадобилось вытащить настройки из конфигурационного файла в XML? Раз плюнуть, пользуйтесь XML::Simple. Надо написать поискового бота? Тоже несложно, LWP::RobotUA в помощь.

Зачастую задача программиста на Perl в сводится к тому, чтобы собрать в кучу все необходимые уже готовые модули и подружить их со своим кодом; он экономит кучу времени, пользуясь результатами труда других разработчиков.

Но надо отдать должное php, синтаксис там интуитивно понятный в основной своей массе. Одни только специальные переменные Perl могут вызвать отвращение с первого взгляда на них. Ну разве можно новичку самому догадаться о том, что хранится в переменных $`, $&, $_ или $/ ? Без стакана и чтения документации разобраться сложно. А вот с документацией у Perl все в порядке, команда perldoc позволит быстро найти все, что надо.

Blogger на своем домене и настройки firewall

Платформа Blogger
Платформа Blogger умеет вести блоги не только на blogspot.com, но и на своих доменах. Публикация постов представляет собой заливку готовых html-файлов на хостинг с помощью FTP или SFTP. А чтобы отсечь любителей подбирать пароли FTP, Blogger опубликовал IP-адреса серверов, с которых он может проводить публикацию постов:

66.102.15.83
216.34.7.186
64.233.166.192-207
64.233.178.192-207

Т.е. достаточно в firewall.conf дописать всего 5 строчек, чтобы отсечь брутфорсеров паролей:

add allow tcp from 66.102.15.83 to me 21
add allow tcp from 216.34.7.186 to me 21
add allow tcp from 64.233.166.192/28 to me 21
add allow tcp from 64.233.178.192/28 to me 21
add reset tcp from any to me 21

Sysadmins day

Да прибудет с вами пиво в день системного администратора

Всех системных администраторов поздравляю с этим замечательным праздником. Традиционно желаю простого админского счастья – побольше денег и поменьше работы; адекватного начальства и грамотных пользователей; устойчивой работы сервисов и отсутствия проблем с железом.

Да прибудет с вами пиво!

Вышла 11 OpenSuSe

OpenSuSe Logo

19-го июня Novell официально анонсировала выход 11-й версии OpenSuSe. Список ее features доступен на на официальном сайте OpenSuSe, нет смысла детально их описывать здесь.

Ставить 64-битную версию OpenSuSe еще рано, поскольку возникнут проблемы с Java; в частности, с Java-плагином для браузера Firefox. Можно конечно извратиться, и поставить 32-битный Firefox с 32-битным Java-плагином на 64-битную ОС, но это скорее изврат, чем нормальное решение проблемы.

Проблемы с видеокартами ATI Radeon у 11-версии OpenSuSe к сожалению, сохранились. Как отметили на официальном сайте, The ATI drivers cannot be integrated into the openSUSE distribution due of the separate license agreement. Поэтому, если вы являетесь счастливым обладателем видеокарты ATI, вам придется драйвера ставить отдельно, процедура та же самая, что и для установки драйверов ATI для OpenSuSe 10.3.

32-битная 11-я сусе отлично работает с RAM больше 4 Гб, просто надо использовать версию ядра с PAE. В SuSe 10.3 версия ядра с поддержкой оперативки больше 4 Гб называлась bigsmp, но сейчас оно почему-то называется по-другому. Такое ядро позволяет системе видеть до 64 Гб RAM на 32-битной SuSe. Работает устойчиво, проблем не наблюдал. Устанавливается вообще без каких-либо сложностей через Yast.

И что больше всего порадовало, апгрейд системы с версии 10.3 до 11 прошел относительно безболезненно. При апгрейде автоматически отключились все старые репозитории (для версии 10.3), и вместо них были добавлены только основные репозитории для версии 11. Остальные важные репозитории (Packman, Linva, ATI) пришлось подключать вручную, впрочем, как и было в версии 10.3.

При смене версий SuSe слетели некоторые пакеты, например, драйвер fglrx для моей карты ATI Radeon X1650 Series, и mplayer. После ручного добавления репозиториев ATI и Packman и переустановки соответствующих пакетов, все восстановилось. Но все остальные жизненно необходимые вещи (модули Perl, Apache, Openssl, OpenVPN) прошли апгрейд без сбоев. Апгрейд системы займет значительно меньше времени, чем установка системы с нуля; и работает он отлично. И в отличие от Windows, OpenSuSe не меняет Master Boot Record при установке или апгрейде, если ей специально об этом не сказать.

Порадовал 3-й Firefox, который идет вместе с дистрибутивом OpenSuSe 11. Он действительно менее ресурсоемкий и быстрее выполняет javascript; и там наконец-то убрали раздражающие popup’ы менеджера паролей.

Вся процедура апгрейда системы до 11-й версии у меня заняла около полутора часов, из них около часа – сам апгрейд, и с полчаса – установка версии ядра с PAE и настройка 3D-режима видеокарты ATI.

Опубликовано в рубриках: Linux

И снова об Adwords

Ну что же, эксперимент с нацеливанием объявлений на места размещения продолжается.

Как я уже писал, для адвордс очень важен показатель качества страницы, известный нам как Quality Score. И если он не устраивает систему, показ объявлений прекращается, вынуждая тем самым или улучшать показатель качества страницы, или повышать цену за клик.

Но Quality Score считается только для объявлений, нацеленных на ключевые слова. Зная ключевые слова, система может определить, насколько целевая страница им соответствует. Поэтому есть смысл сделать несколько кампаний, нацеленных на места размещения вместо ключевых слов.

Еще один плюс в создании таких кампаний заключается в том, что конкурентам сложнее обнаружить ваши рекламные объявления. И действительно качественные landing pages они не смогут так просто скопировать и использовать в своих целях.

Два месяца я наблюдал за своими объявлениями. Проводил некоторые эксперименты, добавлял новые места размещения, менял цену за клик. И в результате пришел к выводу, что цена клика – это не единственный фактор, который решает, будет показываться объявление или нет.

Как оказалось, чем выше рейтинг кликов (CTR) ваших объявлений, тем чаще их показывает Adsense. Что в общем-то логично, для Adsense будет выгоднее показывать объявления тех рекламодателей, деньги которых скликивают эффективнее. Так что если CTR объявления выше среднего, есть смысл снизить цену за клик.