Рабочие будни

Архивы

Мобильный на bu96.ru . ЭНЕРГО АВАНГАРД - Спектрометр. . План корпоративных мероприятий. Заказать организация праздников. Консалтинговая компания.  

Archive for the ‘Опыт’ Category

Сегодня Яндекс вычудил

Среда, января 14, 2009

Подарок был преподнесен пользователям, которые в свою очередь начали давить на мозг админов. Со слов пользователей при первом же поисковом запросе, сайт банился баннерорезкой.

То же самое произошло и со мной сегодня. Были обращения пользователей, что яндекс не открывается. Что характерно жалоб то не было до этого. Отложив данную проблему на потом, потому как есть более глобальные проблемы, нежели не открытие одной из многих поисковых систем. И вот уже под вечер, разобравшись с основной работой, решил взглянуть, что же там такое происходит. Пошел по пути пользователя и обнаружил что, проблем то нет. Но дыма без огня не бывает, полез изучать логи и обнаружил интересную штуку. Буквально сегодня в строке запроса яндекса добавилась новая строка stparhome=banner. И уже под вечер эта строка из запроса заменилась на stparhome=byes.

Фраза banner естественно попала под действие баннерорезки. Каким местом думал яндекс при добавлении этой фразы? Небось опомнились когда количество поисковых запросов упало на неопределенный процент?

Использование Google Translate API в PHP

Вторник, января 13, 2009

У Google реализовано множество различных API. Я предлагаю ознакомиться с сервисом перевода. Ниже в примере будет показано, как легко перевести исходную фразу с одного языка в другой используя PHP и Google Translate API.

Запросы к Google Translate API это HTTP запросы, а ответ возвращается в формате JSON.
Пример:

< ? function translate($s_text, $s_lang, $d_lang){
$url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&amp;q=".urlencode($s_text)."&amp;langpair=".urlencode($s_lang.'|'.$d_lang);

$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_REFERER, "http://gritsinger.com");
$b = curl_exec($c);
curl_close($c);
$json = json_decode($b, true);
if ($json['responseStatus'] != 200)return false;
return $json['responseData']['translatedText'];
}
print(translate('hello world, this example, easy translate', 'en', 'ru')); ?>

Направление перевода легко меняется заменой en и ru в последней строке. Как вариант использование для  автоперевода иностранных блогов. А вы что скажете? Куда можно пристроить автоматический корявый перевод?

Little Spam Filter

Понедельник, декабря 15, 2008

Написал для WordPress маленький спам фильтр. Работает только при наличии на сайте кода Google Analitics. Google Analitics создаёт кукесы у пользователя, а плагин проверят их наличие. Если кукесы от Google Analitics обнаружены то комментатор считается человеком, если нет то спамом. Спам, сразу метится как спам. Распознаёт 100%, если у комментатора не отключен javascript, поддержка кукесов и сайт Google Analitics не блокируется.
И так, тестируем...
Little Spam Filter (77)

Мой выбор Feedreader

Среда, декабря 3, 2008

Было время когда я пользовался Оперой для чтения RSS каналов. Всё устраивало, пока количество каналов не увеличилось на столько, что в Опере стало невозможно работать. Невозможно работать – это постоянные тормоза в процессе работы (она фоном пытается прочитать каналы, и отодвигает сёрфинг на второй план), при запуске Оперы, при выключении Оперы.

Пришлось переходить на Google Reader (далее GR). Опять же поработав с GR несколько месяцев, у меня очередная Опера перестала отображать новости из него. Сначала подумал, что меня тупо заблокировал GR за слишком большое количество новостей, но открыв GR в IE я был удивлён тем, что всё на месте и никто никого не блокировал.

Принял решение пересесть с Оперы на Firefox (далее FF). И знаете, я ничуть не жалею. Весь функционал Оперы компенсируется массой плагинов для FF. Теперь меня всё устраивало, кроме того, что не имея доступа к сети я не могу воспользоваться теми RSS данными на которые я подписан и которые я уже прочитал. Бывает что требуется что то найти в этом потоке информации. Попробовав несколько RSS читалок, остановился на Feedreader (далее FR).

В GR сделал экспорт RSS лент в OPML формат, а в FR импортировал его же. Теперь мои подписки хранятся локально, и в любой момент я могу их прочитать или перечитать. Приятно неожиданностью было обнаружить в FR возможность создания «умной новостной ленты». Она позволяет группировать новости по нужным вам ключевым словам. Например, можно отобрать новости с фразой «LINUX» с разных RSS каналов в отдельную группу и с легкостью читать ту тематику, которая в интересна вам в данный момент, не говоря уже о том, что просто прочитать все новости одной тематики.

Мониторинг множества RSS каналов на предмет новых новостей естественно отнимает ресурсы ПК и генерирует трафик, но ведь ни что не мешает нам оформить подписки в GR и читать их через FR уже на ПК, а далее группировать по нужным критериям.

Такой вот нехитрый метод чтения RSS каналов я выбрал.

Поднимаем простой DNS сервер

Понедельник, ноября 24, 2008

Чуть ли не каждый 3-й приход с поисковиков на мой блог с запросом «DNS казахтелеком». Проблемы с DNS серверами у мегалайна реально существуют. Часть проблем из-за того, что сам DNS глючит, часть из-за внешних модемов, которые пытаются переслать запрос на DNS сервер мегалайна и не дожидаясь от него ответа выдают Non-existent domain.
Дабы поставить точку в этом деле и прекратить мучения, рекомендую поднять DNS сервер у себя на компьютере и забыть про эти проблемы.
Советы будут для пользователей Windows, для unix like систем можно поставить любой доступный сервер, благо их там немало.
Стандартный Windows DNS сервер поставляется только в комплекте с серверными версиями ОС. Нам же не имеет смысла ставить серверную ОС ради такого функционала. Бегло погуглив был найден бесплатный TreeWalk DNS. Взять его можно тут http://ntcanuck.com/downloads.htm
Как пишет автор, вы нуждаетесь в TreeWalk DNS если:

  • Ваши DNS-сервера тупят или не работают
  • Хотите правильное разрешение (резольвинг) веб-сайтов
  • Хотите посмотреть или отладить DNS маршрутизацию
  • Хотите выборочно сконфигурировать DNS настройки и сервера
  • Хотите быстрее повторить посещение сайта через кэш
  • И т.д.

Х.м. прям какой то рекламный пост вышел, в общем системные требования на сайте автора.
Всё что от вас требуется это скачать, установить и перезагрузить компьютер. Те, кто не желает перегружаться может запустить сервис twdns руками. DNS адрес на сетевых картах он меняет на себя автоматически.
Больше вы не зависите от провайдерских DNS серверов, данный сервер обращается напрямую к корневым серверам DNS и находит нужные вам адреса. Единственный недостаток это чуть большее количество трафика при определении адресов, но это ни что по сравнению с тем когда оно вообще не работает.

UPD Hoster.kz советует попробовать следующие DNS сервера:
Зарубежные: ns-kz.ripe.net,auth00.ns.uu.net
Российские: ns.ru.net — 193.124.22.65, ns.spb.su — 193.124.83.69
Казахстанские: ns.nursat.net, ns.nic.kz, ns.ricc.kz

Плагин расстановки мягких переносов

Вторник, ноября 18, 2008

Написал плагин расстановки мягких переносов в словах для WordPress. Ну как написал, взял код Насибуллина Рината (hyphen_words.php) и оформил в виде плагина. Да простит меня автор. Результат работы можете наблюдать у меня в блоге. Отработку видно при text-align:justify. Хотя некоторые и против применения justify.
Интересно как он повлияет на уникальность не уникального контента.

Perenoska (2.54 KB)

Лечим связку WordPress&Godaddy&отправка почты

Понедельник, ноября 17, 2008

Все правки делались в class-phpmailer.php
Не люблю я править код WordPress, но если уже ничего не помогает, то приходится вмешиваться. Для начала обязательно указать ваш реально существующий ящик в переменную
var $Sender = «blablabla@bla.com»;

Нужно это для хитро настроенных почтовых серверов получателей, которые проверяют существует ли отправитель на самом деле. Типа защита от спама. Если не указать отправителя, то при отправке письма сервер хостера сам подставит какой ему вздумается ящик и сервер получателя такое письмо не пропустит. Пример адреса если мы его не задаём: Return-Path:val34334@p3slh209.shr.phx3.secureserver.net. Естественно такого почтового адреса не существует.

Далее обнаружен глюк у хостинга godaddy.com
В соответствии с RFC 2822 WordPress разбивает тему письма на фрагменты не превышающие 78байт. Но опытным путём выяснилось, что если фрагментов больше чем 1, то godaddy делает вид что письмо ушло, а сам его херит в неизвестном направлении.
Для этого пришлось обрезать сообщение subject до длины, не превышающей 1 фрагмента. Тупо 35байт указал наугад. Да тема теперь не всегда информативна, но что делать, лучше пусть так чем никак. Для обрезания темы опять же вставляем следующий код чуть выше функции function EncodeHeader:

function truncate_bytes($string, $len) {
if (strlen($string) <= $len) {
return $string;
}
if ((ord($string[$len]) < 0×80) || (ord($string[$len]) >= 0xC0)) {
return substr($string, 0, $len);
}
while (--$len >= 0 &amp;&amp; ord($string[$len]) >= 0×80 &amp;&amp; ord($string[$len]) < 0xC0) {};
return substr($string, 0, $len);
}

//Далее находим строчку:
$x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
//И вставляем перед ней:
$str = $this->truncate_bytes($str, 35);

На этом всё.