<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Брёд &#187; BitTorrent</title>
	<atom:link href="http://blog.rostov114.net/tag/bittorrent/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.rostov114.net</link>
	<description></description>
	<lastBuildDate>Sat, 28 Apr 2012 08:35:48 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>$_GET и FastCGI</title>
		<link>http://blog.rostov114.net/programming/get-and-fastcgi.html</link>
		<comments>http://blog.rostov114.net/programming/get-and-fastcgi.html#comments</comments>
		<pubDate>Thu, 25 Mar 2010 23:54:24 +0000</pubDate>
		<dc:creator>rostov114</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[$_GET]]></category>
		<category><![CDATA[announce]]></category>
		<category><![CDATA[BitTorrent]]></category>
		<category><![CDATA[php-cgi]]></category>

		<guid isPermaLink="false">http://rostov114.net/?p=54</guid>
		<description><![CDATA[Сегодня решил решил запустить 2й анонсер который бы находился в Интернет и собирал статистику по интернет пользователям. Но столкнулся с проблемой что где то 20 &#8212; 30% моих торрентов обновились с ошибками в виде не правильного peer_id или info_hash. Обрыл &#8230; <a href="http://blog.rostov114.net/programming/get-and-fastcgi.html">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Сегодня решил решил запустить 2й анонсер который бы находился в Интернет и собирал статистику по интернет пользователям.</p>
<p>Но столкнулся  с проблемой что где то 20 &#8212; 30% моих торрентов обновились с ошибками в виде не правильного peer_id или info_hash.</p>
<p>Обрыл весь скрипт от начала до места где возникает ошибка, не нашел.</p>
<p>Плюнув на все написал функцию ( на основе старой из <a href="http://rostov114.net/%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5/16-%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-multi-scrape-%D0%B7%D0%B0%D1%81%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2/">Multi Scrape</a> ) которая убила 2х зайцев.</p>
<p>1. Исправила мою проблему.<br />
2. Если скрипту кто-то подумает передать массив он не обработается ( будет очень полезно начинающим программистам, когда их скрипт должен принимать только строковые параметры из $_GET ).</p>
<p>Сама функция</p>
<pre lang="php" line="1">function clean_string_get ()
{
    unset($_GET);

	$query = explode("&#038;", $_SERVER['QUERY_STRING']);

    foreach($query as $k)
    {
        list($key, $value) = explode('=', $k);

        $key   = str_replace('?', '', $key);
		$value = urldecode($value);

		if ($key != '' and $value !='')
		{
			$_GET[$key] = (string) $value;
		}
    }
}</pre>
<p>Замечу, что данная функция уначтожит стандартный массив $_GET и создаст свой, в котором <strong>все</strong> ключи строки (string).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rostov114.net/programming/get-and-fastcgi.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обработка Multi Scrape запросов</title>
		<link>http://blog.rostov114.net/programming/handling-multi-scrape-queries.html</link>
		<comments>http://blog.rostov114.net/programming/handling-multi-scrape-queries.html#comments</comments>
		<pubDate>Thu, 28 Jan 2010 02:26:59 +0000</pubDate>
		<dc:creator>rostov114</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[announce]]></category>
		<category><![CDATA[BitTorrent]]></category>
		<category><![CDATA[scrape]]></category>

		<guid isPermaLink="false">http://rostov114.net/?p=16</guid>
		<description><![CDATA[На этот раз мне захотелось еще раз вые выпиндриться, и сделать в своем scrape поддержку Multi Scrape запросов. Долгие пляски вокруг $_GET, фактически ничего не дали но зато дал плоды $_SERVER['QUERY_STRING']. Зацепившись за него минут за 15 накатал простенькую функцию &#8230; <a href="http://blog.rostov114.net/programming/handling-multi-scrape-queries.html">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>На этот раз мне захотелось еще раз <del datetime="2010-01-28T02:14:44+00:00">вые</del> выпиндриться, и сделать в своем scrape поддержку Multi Scrape запросов.<br />
Долгие пляски вокруг <strong>$_GET</strong>, фактически ничего не дали но зато дал плоды <strong>$_SERVER['QUERY_STRING']</strong>.<br />
Зацепившись за него минут за 15 накатал простенькую функцию которая выдает массив хеш-сумм переданные в URI. В случае если хотя бы одна хеш-сумма не будет равна 20 символам то функция завершиться с ошибкой <strong>Invalid info_hash</strong>.</p>
<p>Сама функция:</p>
<pre lang="php" line="1" escaped="false">function scrape_parse_query()
{
    $info_hash = array();
    $query     = $_SERVER['QUERY_STRING'];

    $query = explode("&#038;", $query);

    foreach($query as $k)
    {
        list($key, $value) = explode('=', $k);
        $key   = str_replace('?', '', $key);
	$value = urldecode($value);

        if($key == 'info_hash' &#038;&#038; strlen($value) == 20)
        {
		$info_hash[] = bin2hex($value);
        }
        else
        {
            if(strlen($value) != 20 and $key == 'info_hash')
            {
		msg_die('Invalid info_hash');
            }
        }
    }

    return $info_hash;
}</pre>
<p>На выходе у функции будет массив хеш-сумм (в BTIH).<br />
Что с данными хеш суммами делать, решайте сами.<br />
Кстати, чуть не забыл сказать, данная функция писалась под scrape на основе TorrentPier.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rostov114.net/programming/handling-multi-scrape-queries.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Из compact в обычный вид</title>
		<link>http://blog.rostov114.net/programming/from-the-compact-in-the-usual-form.html</link>
		<comments>http://blog.rostov114.net/programming/from-the-compact-in-the-usual-form.html#comments</comments>
		<pubDate>Wed, 27 Jan 2010 21:55:30 +0000</pubDate>
		<dc:creator>rostov114</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[announce]]></category>
		<category><![CDATA[BitTorrent]]></category>

		<guid isPermaLink="false">http://rostov114.net/?p=3</guid>
		<description><![CDATA[Недавно понадобилось протестировать собственный же анонсер, по всем критериям и один из них нормальная работа в compact режиме (т.е. пиров нам анонсер отдает в закодированном виде, что уменьшает в свою очередь трафик между сервером и клиентами). Для того чтобы прекратить &#8230; <a href="http://blog.rostov114.net/programming/from-the-compact-in-the-usual-form.html">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Недавно понадобилось протестировать собственный же анонсер, по всем критериям и один из них нормальная работа в compact режиме (т.е. пиров нам анонсер отдает в закодированном виде, что уменьшает в свою очередь трафик между сервером и клиентами).</p>
<p>Для того чтобы прекратить из compact в обычный вид написал функцию, которая до ужаса банальна, но работает:</p>
<pre lang="php" line="1" escaped="false">function peers_to_array($data)
{
	if (!is_array($data['peers']))
	{
		$new_peers = array();

		while (strlen($data['peers']) > 0)
		{
			list(, $ip)   = @unpack('N', substr($data['peers'], 0, 4));
			list(, $port) = @unpack('n', substr($data['peers'], 4, 6));

			$new_peers[] = array
			(
				'ip'   => long2ip($ip),
				'port' => $port
			);

			$data['peers'] = substr($data['peers'], 6);
		}

		$data['peers'] = $new_peers;
		unset($new_peers);
	}

	return $data;
}</pre>
<p> <img src='http://blog.rostov114.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Как ее использовать я думаю объяснять не нужно. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rostov114.net/programming/from-the-compact-in-the-usual-form.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

