Упрощаем линк-билдинг

Попался мне на глаза скрипт, аналогов которого я в паблике не видел. А ниша-то свободна. Была. Уже занята. :)

Я говорю о blog harvester-е. Это скрипт, который облегчает нахождение и комментирование блогов.

Скрипт принимает на вход кейворд (или список кейвордов) и ищет страницы с формой комментария. Умеет распознавать популярные блог-движки и определять, стоит ли nofollow на исходящих линках (правда, не всегда). Определяет ништяки комментирующей страницы – количество исходящих ссылок, PR страницы, PR и CY домена. И – самое главное – в целом все сделано “не по ТЗ”, а так, чтобы удобно было пользоваться. Видно, что это продукт для внутреннего пользования. Хотя, конечно, есть места, где юзабилити можно поднять. Но автор, вроде, апдейтит скрипт регулярно.

В общем, прекрасное средство для получения тематических ссылок на свои ресурсы для тех, кто не хочет связываться с криминалом (я имею в виду ломы). А при желании и владении английским можете открывать свой dofollowit :)

Поподробнее – рекомендую изучить мануал.
Вот тут есть отзывы. “ёманарот ) я счастлив просто с этим соффтом )” от toptop – это многого стоит.

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

Рекомендую расчехлить wm и купить скрипт пока цена не поднялась.

ZennoPoster

Обзор ZennoPoster готов : http://4seo.biz/index.php?showtopic=1562

ZennoPoster

Неделю назад в рамках конкурса на 4seo.biz получил лицензию этой проги. И вот уже неделю не могу написать отчет. :) Совершенно не мой тип проги – программить нельзя, обмениваться данными по инету с другими скриптами нельзя, ад ручной работы, как я и думал. Но автор молодец, хоть сделал интерфейс, немного смягчаюший, а не усугубляющий этот ад.

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

Управление Internet Explorer из AutoHotKey

Перед самым новым годом вышла библиотека для скриптового языка AutoHotKey, при помощи которой можно управлять IE. Фактически, это бесплатная версия Xedant Human Emulator, правда, с урезанным функционалом.

Вообще, AutoHotKey – это тема. Полтора года назад оно у меня знатно зажигало на отдельном серваке под столом. Сейчас я перевел все на Xedant, в принципе, он уже дорос до нормальной работы, спасибо разработчикам.

Скачать и посмотреть примеры использования можно здесь: http://forum.script-coding.info/viewtopic.php?id=2635

Скрипт многопоточного скачивания страниц при помощи multi CURL

Начну, наверное, выкладывать куски полезного кода, вдруг кому-нибудь пригодятся.

Вот, например, реализация многопотокового скачивания страниц при помощи мультикурла:

class MCurl
{

var $timeout = 20; // максимальное время загрузки страницы в секундах
var $threads = 10; // количество потоков 

var $all_useragents = array(
"Opera/9.23 (Windows NT 5.1; U; ru)",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.4;MEGAUPLOAD 1.0",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; Alexa Toolbar; MEGAUPLOAD 2.0; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7;MEGAUPLOAD 1.0",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2; Maxthon)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2; Maxthon)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2; Maxthon)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Maxthon; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0; InfoPath.1)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2; Maxthon)",
"Opera/9.10 (Windows NT 5.1; U; ru)",
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1; aggregator:Tailrank; http://tailrank.com/robot) Gecko/20021130",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2; Maxthon)",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8",
"Opera/9.22 (Windows NT 6.0; U; ru)",
"Opera/9.22 (Windows NT 6.0; U; ru)",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRSPUTNIK 1, 8, 0, 17 HW; MRA 4.10 (build 01952); .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9"
);


function multiget($urls, &$result)
{
	$threads = $this->threads;
	$useragent = $this->all_useragents[array_rand($this->all_useragents)];
		
	$i = 0;
	for($i=0;$i<count($urls);$i=$i+$threads)
	{
		$urls_pack[] = array_slice($urls, $i, $threads);
	}
	foreach($urls_pack as $pack)
	{
		$mh = curl_multi_init(); unset($conn);
		foreach ($pack as $i => $url) 
		{
	    	$conn[$i]=curl_init(trim($url));
			curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER, 1);
			curl_setopt($conn[$i],CURLOPT_TIMEOUT, $this->timeout);
			curl_setopt($conn[$i],CURLOPT_USERAGENT, $useragent);
			curl_multi_add_handle ($mh,$conn[$i]);
		}
		do { $n=curl_multi_exec($mh,$active); usleep(100); } while ($active); 
		foreach ($pack as $i => $url) 
		{
      		$result[]=curl_multi_getcontent($conn[$i]);
      		curl_close($conn[$i]);
		}
curl_multi_close($mh);
	}
	
}
}

Собственно, самое интересное здесь – это функция multiget , которая принимает на вход масссив урлов, которые надо скачать и возвращает массив с контентом страниц (для экономии памяти, массив передается как ссылка в аргументе функции).

Формат использования:


$urls = array("http://site.com/page1.php","http://site.com/page2.php","http://site.com/page3.php");
$mcurl = new MCurl;
$mcurl->threads = 20;
$mcurl->timeout = 5; // нам нужна максимально быстрая скачка, пусть теряются медленные страницы
unset($results); // очищаем массив $results (если он использовался раньше где-то в коде)
$mcurl->multiget($urls, $results); 
// в массиве $results - контент страниц
 

Причем в $results[0] будет контент строго от $urls[0] и т.д.

MultiCURL – это не лучший способ многопоточного скачивания страниц, но зато он самый простой. Почему не лучший ? Потому что скачивание происходит пачками по threads урлов и время обработки каждой пачки равняется времени скачивания самого тормозного урла. Правильнее сделать на сокетах, но с ними слишком много мороки. В повседневной жизни вполне хватает мультикурла.

Taskbar Shuffler

Нашел недавно совершенно чумовую утилитку – Taskbar Shuffler. Расширяет функционал таскбара в винде. Позволяет мышкой таскать плашки с целью реорганизации, закрывать приложения по средней клавише мыши. В общем, как табы в браузере. Мастхэв однозначно.

Фришная, качать здесь – http://www.freewebs.com/nerdcave/taskbarshuffle.htm

Кстати, freewebs.com раньше неплохим фришником был, когда по ftp файлы заливать можно было..

Установка нужных прав рекурсивно на php

На форуме Фиесты увидел интересный код.
Вот он, слегка модернизированный:

function recurse_chmod($mypath,$rights,$uid="",$gid="")
{
    $d = opendir ($mypath) ;
    while(($file = readdir($d)) !== false)
    {
        if ($file != "." && $file != ".." && $file != $_SERVER['PHP_SELF'])
        {
            $typepath = $mypath . "/" . $file ;
            if (filetype ($typepath) == 'dir') {
                recurse_chmod ($typepath,$uid,$gid);
            }
            @chmod($typepath,$rights);
            if ($uid!="") @chown($typepath, $uid);
            if ($gid!="") @chgrp($typepath, $gid);
        }
    }
}

Функция по зананному пути меняет права, владельца и принадлежность к группе для всех файлов и подпапок и файлов в них.
Формат использования:

recurse_chmod("myfolder","0777");
recurse_chmod("myfolder","0755","admin","admin");
recurse_chmod("myfolder","0666","apache","nobody");

Улучшаем процент отказов на сайте

Один из косвенных факторов влияния на ранжирование сайтов в гугле – т.н. процент отказов, т.е. процент серферов, которые закрыли сайт, увидев его первую страницу. Один из способов уменьшить процент отказов – не дать серферу нажать кнопку Назад. Вот js-скрипт, который реализует данный функционал:


// Author: Jungle
// Homepage: http://seodiver.ru/2008/11/no-goback-javascript.html

function createCookie(name,value,days) {
 if (days) {
 	var date = new Date();
 	date.setTime(date.getTime()+(days*24*60*60*1000));
 	var expires = "; expires="+date.toGMTString();
 }
 else var expires = "";
 document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
 var nameEQ = name + "=";
 var ca = document.cookie.split(';');
 for(var i=0;i < ca.length;i++) {
 	var c = ca[i];
 	while (c.charAt(0)==' ') c = c.substring(1,c.length);
 	if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
 }
 return null;
}

function eraseCookie(name) {
 createCookie(name,"",-1);
}

var no_goback = readCookie('no_goback');

if (location.search == '?no_goback') {
    var form = document.createElement('form');
    form.setAttribute('action', document.referrer);
    document.body.appendChild(form)
    form.submit() // редиректим назад
} else if (!no_goback) {
    createCookie('no_goback', location.href);
var url = location.protocol + '//' + location.hostname +
        (location.port != 80 ? ':' + location.port : '') +
        location.pathname + '?no_goback';
    location.href = url; // редиректим включаем no goback
}

Написан Jungle по просьбе/наводке alexf , за что им огромное спасибо!

Поиск с русской морфологией средствами PHP

Случайно в форуме по code-igniter наткнулся на упоминание скрипта phpmorph, погуглил, нашел развернутую инструкцию:
http://notes.rudomilov.ru/2007/08/16/poisk-s-russkoy-morfologiey-sredstvami-php

Синхронизация двух MySQL таблиц

Интересный класс обнаружился на phpclasses.org: Synchronize DB.
Не знаю пока как он мне пригодится, но почему-то чувствую, что пригодится точно.

Структурирование знаний. Достойный аналог myBase.

Сейчас ставлю одном из компов дома сборку Vista Game Edition 5.1 – с целью посмотреть на Висту в динамике, можно ли на ней работать. Сборка очень хорошая, все просто летает, практически как на XP. Единственный косяк, который я заметил – под Вистой не идет myBase, в которой я храню разнообразную инфу по seo и программированию – куски кода, какие-то свои мысли, документацию к своим скриптам, tips&tricks, в общем, все, что мне могло бы понадобиться – все в одном месте, удобно бэкапить, ничего не теряется. Точнее, myBase работает, но почему-то не вставляется регистрационный код в соответствующую форму. А новая версия 5.2.2, которая поддерживает Висту, в варезном виде отсутствует. Ну нет и нет, подумал я, сейчас куплю.

И тут мне на глаза попадается ссылка на некую программу под названием Mars Notebook. Поставил я её, покрутил, и понял, что куплю я именно эту прогу, пусть и придется руками переносить данные из MyBase (на самом деле это практически плюс – заодно почищу базу от мертвых и старых записей). В плюсах – возможность работы с флэшки, симпатишный внешний вид (myBase был “привет Win 3.11 style”, это начало надоедать), более удобный поиск по всей базе, автопереход к разделу по вводу первых символов его названия, возможность установки alert-пароля, который уничтожает всю инфу при логине. Ну и стоимость – 10 баксов вместо 60. Так что рекомендую присмотреться.

UPD Я просмотрел – Mars Notebook бесплатен для русскоязычных пользователей. Но все равно, мне кажется, автор достоен donate в 10 баксов за свой труд. :)

Исходники MDS 1.92

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

Хочу сделать то, что надо бы было сделать пару месяцев назад. Выкладываю исходники MDS 1.92 с удаленным модулем проверки лицензии. Правьте, изменяйте как хотите, интегрируйте себе в систему.
Отныне 1.xx ветка приобретает статус free.

http://sfa-tm.ru/mds.1.92.sources.zip

Функции проверки поисковиков находятся в файле functions.php после коммента “SE PARSERS” (строка 1613).
Написано все в целом тяжеловесно – на этом скрипте я фактически изучил php. :) Сейчас многие вещи я бы сделал проще.

У кого есть акк на nulled – отметьтесь в соответствующем топике. Пусть народ свеженькое скачает. :)

Бэкап данных

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

Первое. Samlowry объявил конкурс на лучший метод бэкапа. Хорошее начинание – в выигрыше будут безусловно все, и авторы и участники. Мое мнение о том, как организовать бэкап данных на локальном компе при помощи фриварного софта можно прочитать здесь. У меня эта система работает больше года без нареканий.
Для бэкапа unix-сервера я использую модифицированный скрипт от Антона Угнича. Наверное, в ближайшее время напишу о нем поподробнее.

Второе. На небосклоне партнерок по продаже “антиспайварь”-софта зажглась даже не звезда, а сверхновая – Dogma Software. “Ху из мистер путин” – никто толком не знает, ребята совсем новые (например, саппорт, по всей видимости, не знает кто такой Darkover), но очень амбициозные. Непонятно, как это у них получается, но факт остается фактом – кило низкочастотного se-трафа получается 120-140 баксов. Если не брать нелегальную Италию, это пока рекорд. А почему – загадка. Промософт как у всех, ни за чем особенным не замечен. Биллинг как у всех. Так что или принципиальное отсутствие шейва (но тогда был бы моментальный ддос) или особые отношения с билингом или фотошоп. :) Выплат пока не было и будут ли они – это еще вопрос. Все льют, офигивают от статсов и боятся. Посмотрим, в начале июня интрига разрешится. Будет интересно.

Новая версия SimpleTDS

Некто sam_lopata выложил апдейт для бесплатной системы распределения трафа SimpleTDS. Апдейт исправляет самый злостный баг в скрипте – периодический сброс всех настроек аутов. Респект и уважуха человеку!

MSN воскресил оператор link:

Благую весть принес Hodinar – на live.com опять начали работать операторы link: и linkdomain: путем прибавления к ним спереди плюса (или символа %2B). Пока неофициально, но все же, работает.

Пользователи MDS могут стукнуться ко мне и скачать апдейт с новыми запросами и регулярками. Заодно в этом апдейте исправлены глюки Yahoo, теперь индексация и бэки должны показываться на всех хостах. Но, как говорил Рома Воронежский, “старые ошибки исправлены, старые добавлены” – пару дней назад перестал правильно работать скрипт определения PR, разбираться прямо сейчас нет времени, через пару дней починю. Заодно, по-видимому, MDS ждет реинкарнация в версии 2.0, полностью переписанной – в 1.х есть куски кода, который написан полтора года назад, когда я только начал изучать php. Оно, в принципе, хорошо работает, только ужасно избыточно и с трудом поддается апгрейду.

Next Page »