<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Блог mr.The</title>
	
	<link>http://mrthe.name</link>
	<description>C php и печеньками.</description>
	<lastBuildDate>Sun, 29 Jan 2012 18:45:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/mrthe" /><feedburner:info uri="mrthe" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Взлом расширений chrome</title>
		<link>http://feedproxy.google.com/~r/mrthe/~3/WS3tab1sLNo/</link>
		<comments>http://mrthe.name/2012/01/crack-chrome-extensions/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 18:21:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Уязвимости]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[браузеры]]></category>
		<category><![CDATA[патч]]></category>
		<category><![CDATA[решения]]></category>

		<guid isPermaLink="false">http://mrthe.name/?p=656</guid>
		<description><![CDATA[Понадобилось сделать скриншот содержимого браузера. Делать это через принтскрин не самый оптимальный выбор, учитывая сколько у Chrome(Chromium) расширений. Было найдено отличное расширение Explain and Send Screenshots. . Оно минималистично, удобно, да ещё и может отправить скриншот на imgur или другой замечательный хосниг картинок, что является огромным плюсом. Но есть у него один минус: расширение добавляет [...]]]></description>
			<content:encoded><![CDATA[<p>Понадобилось сделать скриншот содержимого браузера. Делать это через принтскрин не самый оптимальный выбор, учитывая сколько у Chrome(Chromium) расширений.<br />
Было найдено отличное расширение <a rel="nofollow" href="https://chrome.google.com/webstore/detail/mdddabjhelpilpnpgondfmehhcplpiin/details">Explain and Send Screenshots</a>.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Оно минималистично, удобно, да ещё и может отправить скриншот на imgur или другой замечательный хосниг картинок, что является огромным плюсом.<br />
Но есть у него один минус: расширение добавляет на картинку своё название и ссылку на страницу на которой мы делаем сриншот:<br />
<img src="http://i.imgur.com/7iBjR.png" alt="Не нужные надписи" /><br />
И если название ещё можно пережить, то ссылка обычно не нужна вообще. К тому же, если делаешь скриншот небольшого куска текста, то эти надписи мешают его читать.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Само приложение просит доната хотя бы в 1$. Не много, но проблема в том, что после удаления и повторной установки приложение снова просит донат, а это уже как-то обидно.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Рассмотрим способ взлома и получения всех функций на примере этого расширения:<br />
<span id="more-656"></span></p>
<p>1) Сначала, нужно найти где находится приложение:<br />
В каталоге приложений ссылка выглядит как </p>
<blockquote><p>https://chrome.google.com/webstore/detail/<strong>mdddabjhelpilpnpgondfmehhcplpiin</strong>/details</p></blockquote>
<p>где <strong>mdddabjhelpilpnpgondfmehhcplpiin</strong> &#8211; уникальный id. Он-то нам и нужен.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Итого, приложение находится:</p>
<blockquote><p><strong>Linux</strong>:<br />
/home/YourUserName/.config/chromium/Default/Extensions/mdddabjhelpilpnpgondfmehhcplpiin</p>
<p><strong>Mac</strong>:<br />
/Users/YourUserName/Library/Application Support/Google/Chrome/Default/Extensions/mdddabjhelpilpnpgondfmehhcplpiin</p>
<p><strong>Windows 7</strong>:<br />
C:\Users\YourUserName\AppData\Local\Google\Chrome\User Data\Default\Extensions\mdddabjhelpilpnpgondfmehhcplpiin</p>
<p><strong>Windows XP</strong>:<br />
C:\Documents and Settings\YourUserName\Local Settings\Application Data\Google\Chrome\User Data\Default\mdddabjhelpilpnpgondfmehhcplpiin</p></blockquote>
<p>В этой папке, обычно, есть подпапка с именем версии или чем-то подобным. В ней уже лежит само приложение, которое представляет из себя набор обычных js\html\css файлов.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Стоит туда зайти и в глаза тут же бросается файл с именем &laquo;donate.html&raquo;.</p>
<p>В нём находится вот такой таймер:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">		setInterval<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>			
			<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>location.<span style="color: #660066;">href</span>.<span style="color: #660066;">match</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/paypalInline=fail|paypalInline=success/</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #003366; font-weight: bold;">var</span> success <span style="color: #339933;">=</span> location.<span style="color: #660066;">href</span>.<span style="color: #660066;">match</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;success&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>				
				history.<span style="color: #660066;">replaceState</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'After paypayInline'</span><span style="color: #339933;">,</span> location.<span style="color: #660066;">href</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/#.*/</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;#paypayInline=acknowledged&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>dg <span style="color: #339933;">&amp;&amp;</span> dg.<span style="color: #660066;">isOpen</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					dg.<span style="color: #660066;">closeFlow</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>success<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					showSuccessfulPayment<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					sendGA<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'_trackEvent'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;paypal&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;success&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
					$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#paymentFailure&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span>chrome.<span style="color: #660066;">i18n</span>.<span style="color: #660066;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;failureWithPayPalPurchase&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">slideDown</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;slow&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">delay</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">6000</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">slideUp</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;slow&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					sendGA<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'_trackEvent'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;paypal&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;cancel?&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>В котором видно код, который срабатывает при успешной оплате пейпалом:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">showSuccessfulPayment<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
sendGA<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'_trackEvent'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;paypal&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;success&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Остаётся вставить его в любое понравившееся место, например чуть выше есть функция setPayPayInlineParam, которая срабатывает при клике на кнопку оплаты через пейпал. В самое её начало вставим наш код активации:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">showSuccessfulPayment<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
sendGA<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'_trackEvent'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;paypal&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;success&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span></pre></div></div>

<p>Остаётся сохранить файл, перезапустить браузер и нажать на эту самую кнопку в приложени. Вуаля, получаем сообщение об успешном донате и видим, что теперь можно отлючить добавление этих надписей:<br />
<img src="http://i.imgur.com/26eFI.png" alt="Отличный результат" /><br />
Метод не универсальный, но общий алгоритм ясен: найти методы вызывающиеся при успешной оплате и вызвать их.<br />
<span style="color: #dddddd;">.</span><br />
Напоминаю, что всё описанное выше применимо только после оплаты всех возможностей приложения, так как нужно поддерживать автора, но нет смысла отвлекать его от работы, если мы всего-лишь переустановили браузер и приложение &laquo;забыло&raquo; что было оплачено.<br />
<span style="color: #dddddd;">.</span></p>
<img src="http://feeds.feedburner.com/~r/mrthe/~4/WS3tab1sLNo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrthe.name/2012/01/crack-chrome-extensions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://mrthe.name/2012/01/crack-chrome-extensions/</feedburner:origLink></item>
		<item>
		<title>Получение песен из вконтакте по списку</title>
		<link>http://feedproxy.google.com/~r/mrthe/~3/SH9C5pN6VGI/</link>
		<comments>http://mrthe.name/2011/09/vk-music-extractor/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 18:37:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[вконтакте]]></category>
		<category><![CDATA[консоль]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://mrthe.name/?p=640</guid>
		<description><![CDATA[Что-то забросил я бложек. Надо исправлять. . Понадобилось мне скачать музыку по большому списку. Так как список очень разносортный, скачивать можно только по одной песне. Естественно, делать это вручную мне никак не улыбалось. Готовых утилит для этого я не нашел, поэтому пришлось изобретать свой велосипед.. . Выбор на источник музыки тут же пал на ВКонтакте. [...]]]></description>
			<content:encoded><![CDATA[<p>Что-то забросил я бложек. Надо исправлять.<br />
<span style="color: #dddddd;">.</span><br /> <br />
Понадобилось мне скачать музыку по большому списку. Так как список очень разносортный, скачивать можно только по одной песне. Естественно, делать это вручную мне никак не улыбалось. Готовых утилит для этого я не нашел, поэтому пришлось изобретать свой велосипед..<br />
<span style="color: #dddddd;">.</span><br /> <br />
Выбор на источник музыки тут же пал на ВКонтакте. Где ещё можно найти столько музыки да ещё и бесплатно?<br />
<span style="color: #dddddd;">.</span><br /> <br />
Тут же был написан небольшой скрипт на php, который вытягивает ссылки на треки и аккуратно кладёт их в файл, из которого их можно скачать любым удобным даунлоад менеджером.<br />
<span id="more-640"></span><br />
<span style="color: #dddddd;">.</span><br /> <br />
Из важных возможностей скрипта &#8211; <strong>проверка битрейта без скачивания всего файла</strong> &#8211; для проверки хватает 3-х килобайт. Сделанна весьма костыльно(я постараюсь посветить ей отдельный пост) но работает быстро и без зависимостей от всяких тяжелых библиотек.<br />
<span style="color: #dddddd;">.</span><br /> <br />
Должен заметить, что скрипт консольный рассчитан на работу под линуксом, поэтому проверьте все пути и тд.<br />
<span style="color: #dddddd;">.</span><br /> <br />
Описание команд:</p>
<blockquote><p>Vkontakte Song Extractor<br />
By mr.The</p>
<p>Usage: php script.php -l login -p pass -l songlist<br />
-l vk.com login<br />
-p vk.com pass<br />
-s song list(file)<br />
-b minimal bitrate. Default: 128<br />
-o outfile(with links). Default: ./out.txt<br />
-t temp directory. Default: /tmp/</p>
<p>Example:<br />
php script.php -l login@some.site -p coolpassword -l songs.txt -b 320 -o out.txt -t ./</p></blockquote>
<p><span style="color: #dddddd;">.</span><br /> <br />
Итак, <a href="http://mrthe.name/trash/vk_music_extractor.zip">скачать Vk Music Extractor</a>.<br />
<span style="color: #dddddd;">.</span><br /> <br />
Так как скрипт писал для себя &#8211; думаю там полно недоработок и багов. О них можно сообщать прямо в комментариях.<br />
<span style="color: #dddddd;">.</span> </p>
<img src="http://feeds.feedburner.com/~r/mrthe/~4/SH9C5pN6VGI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrthe.name/2011/09/vk-music-extractor/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://mrthe.name/2011/09/vk-music-extractor/</feedburner:origLink></item>
		<item>
		<title>Ограничение количества замен str_replace</title>
		<link>http://feedproxy.google.com/~r/mrthe/~3/M6gWKLU-zTI/</link>
		<comments>http://mrthe.name/2011/01/ogranichenie-kolichestva-zamen-str_replace/#comments</comments>
		<pubDate>Sat, 08 Jan 2011 19:39:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[решения]]></category>

		<guid isPermaLink="false">http://mrthe.name/?p=625</guid>
		<description><![CDATA[Давно я не писал про php. . Так вот. Понадобилось мне ограничить количество замен производимых функцией str_replace. . Тут же была найдена функция preg_replace поддерживающая нужную функциональность, но она дико тормозила, выедала кучу памяти, короче &#8211; не подходила. . Немного погуглив я вернулся к документации и в комментариях обнуружил нужный мне велосипед: &#60;?php function getSingleReplaceCombinations&#40;$replace, [...]]]></description>
			<content:encoded><![CDATA[<p>Давно я не писал про php. </p>
<p><span style="color: #dddddd;">.</span></p>
<p>Так вот. Понадобилось мне ограничить количество замен производимых функцией <a href="http://ua2.php.net/manual/en/function.str-replace.php" rel="nofollow">str_replace</a>.</p>
<p><span style="color: #dddddd;">.</span></p>
<p> Тут же была найдена функция <a href="http://ua2.php.net/manual/en/function.preg-replace.php"  rel="nofollow">preg_replace</a> поддерживающая нужную функциональность, но она дико тормозила, выедала кучу памяти, короче &#8211; не подходила.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Немного погуглив я вернулся к документации и в комментариях <a href="http://ua2.php.net/manual/en/function.str-replace.php#97904" rel="nofollow">обнуружил</a> нужный мне велосипед:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">function</span> getSingleReplaceCombinations<span style="color: #009900;">&#40;</span><span style="color: #000088;">$replace</span><span style="color: #339933;">,</span> <span style="color: #000088;">$with</span><span style="color: #339933;">,</span> <span style="color: #000088;">$inHaystack</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$splits</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$replace</span><span style="color: #339933;">,</span> <span style="color: #000088;">$inHaystack</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #000088;">$ix</span> <span style="color: #339933;">=</span> <span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$splits</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$ix</span><span style="color: #339933;">;</span> <span style="color: #339933;">++</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$previous</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_slice</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$splits</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$next</span>     <span style="color: #339933;">=</span> <span style="color: #990000;">array_slice</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$splits</span><span style="color: #339933;">,</span> <span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000088;">$combine</span>  <span style="color: #339933;">=</span> <span style="color: #990000;">array_pop</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$previous</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$with</span> <span style="color: #339933;">.</span> <span style="color: #990000;">array_shift</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$next</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$replace</span><span style="color: #339933;">,</span> <span style="color: #990000;">array_merge</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$previous</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$combine</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$next</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$result</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span>getSingleReplaceCombinations<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;a&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;x&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;aba&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// result as mentioned above</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>На выходе функция отдаёт массив со всеми возможными заменами.<br />
Но, мне ведь нужна только одна замена, это решилось добавлением break в конце цикла:<br />
<span id="more-625"></span></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> getSingleReplaceCombination<span style="color: #009900;">&#40;</span><span style="color: #000088;">$replace</span><span style="color: #339933;">,</span> <span style="color: #000088;">$with</span><span style="color: #339933;">,</span> <span style="color: #000088;">$inHaystack</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$splits</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$replace</span><span style="color: #339933;">,</span> <span style="color: #000088;">$inHaystack</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #000088;">$ix</span> <span style="color: #339933;">=</span> <span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$splits</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$ix</span><span style="color: #339933;">;</span> <span style="color: #339933;">++</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$previous</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_slice</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$splits</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$next</span>     <span style="color: #339933;">=</span> <span style="color: #990000;">array_slice</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$splits</span><span style="color: #339933;">,</span> <span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000088;">$combine</span>  <span style="color: #339933;">=</span> <span style="color: #990000;">array_pop</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$previous</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$with</span> <span style="color: #339933;">.</span> <span style="color: #990000;">array_shift</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$next</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$replace</span><span style="color: #339933;">,</span> <span style="color: #990000;">array_merge</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$previous</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$combine</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$next</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//remove this, for multiple replaces</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Так же, я завернул return в implode, что бы на выходе была строка, а не массив.</p>
<img src="http://feeds.feedburner.com/~r/mrthe/~4/M6gWKLU-zTI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrthe.name/2011/01/ogranichenie-kolichestva-zamen-str_replace/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://mrthe.name/2011/01/ogranichenie-kolichestva-zamen-str_replace/</feedburner:origLink></item>
		<item>
		<title>WordPress 404 и неправильный REQUEST_URI</title>
		<link>http://feedproxy.google.com/~r/mrthe/~3/G7RdbN_2L38/</link>
		<comments>http://mrthe.name/2011/01/wordpress-404-and-wrong-request_uri/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 10:31:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[nix]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://mrthe.name/?p=611</guid>
		<description><![CDATA[Неожиданная проблема возникла при переезде на другой хостинг. WordPress после включения ЧПУ(permalinks) показывал только 404-ю ошибку, причём, даже на главной. За неделю были выкурены все конфиги апача и php, но решение найдено не было и пришлось шаг за шагом разбирать что же там делает вордпресс, и почему отдаёт ошибку. . В итоге, зацепился за то, [...]]]></description>
			<content:encoded><![CDATA[<p>Неожиданная проблема возникла при переезде на другой хостинг.<br />
WordPress после включения ЧПУ(permalinks) показывал только 404-ю ошибку, причём, даже на главной.</p>
<p>За неделю были выкурены все конфиги апача и php, но решение найдено не было и пришлось шаг за шагом разбирать что же там делает вордпресс, и почему отдаёт ошибку.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>В итоге, зацепился за то, что параметры home и siteurl после установки нового вордпресса выглядят так: &laquo;http://site.ruhttp://site.ru&raquo;, когда должны быть &laquo;http://site.ru&raquo;.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Ещё немого поисков, и оказывается, что за формирование этого параметра отвечает функция &laquo;<strong>wp_guess_url()</strong>&laquo;, которая находится в файле &laquo;<em>wp-includes/functions.php</em>&laquo;.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Самая интересная строка в ней:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'|/wp-admin/.*|i'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #000088;">$schema</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_HOST'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Собственно, всё отлично и должно работать. Но посмотрев что возвращает каждый из параметров оказалось, что <strong>REQUEST_URI</strong> отдаёт полный путь вместе с доменом, т.е. выглядит примерно так: &laquo;http://site.ru/some_path&raquo;, когда в <a href="http://php.net/manual/en/reserved.variables.server.php">документации написанно</a>, что должен быть путь без домена: &laquo;/some_path&raquo;!</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Желания искать причину бага уже не было(да и гугл выдаёт всего пару случаев, без решения) был быстро написан простой костыль, состоящий из двух файлов: .htaccess и req_url.php.<br />
<strong>.htaccess</strong>:</p>
<blockquote><p>php_value auto_prepend_file /full/path/req_url.php</p></blockquote>
<p><span style="color: #dddddd;">.</span></p>
<p><strong>req_url.php</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_HOST&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;https://&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;HTTP_HOST&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REQUEST_URI'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Здесь в htaccess указанно правило, которое обязывает в начале всех скриптов запускать req_url.php, в котором, в свою очередь, написан простой фикс серверной переменной.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Оба эти файла находятся в корне папки с сайтами, дабы на всех сайтах всё отлично работало.</p>
<p><span style="color: #dddddd;">.</span></p>
<img src="http://feeds.feedburner.com/~r/mrthe/~4/G7RdbN_2L38" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrthe.name/2011/01/wordpress-404-and-wrong-request_uri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://mrthe.name/2011/01/wordpress-404-and-wrong-request_uri/</feedburner:origLink></item>
		<item>
		<title>Кэширование DNS в Ubuntu</title>
		<link>http://feedproxy.google.com/~r/mrthe/~3/z4WjZO6tCEA/</link>
		<comments>http://mrthe.name/2010/10/dns-cache-ubuntu/#comments</comments>
		<pubDate>Sun, 03 Oct 2010 13:21:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[решения]]></category>

		<guid isPermaLink="false">http://mrthe.name/?p=595</guid>
		<description><![CDATA[Не так давно я узнал, что в Ubuntu нет встроенного кэширования dns запросов. А у меня, хоть и достаточно быстрый интернет и хорошие пинги до dns серверов, но терять от 50 до 1000мс на запрос как-то не хочется. . Для огранизации dns кэширования будем использовать dnsmasq. . Устанавливаем: sudo apt-get install dnsmasq Далее, нужно открыть [...]]]></description>
			<content:encoded><![CDATA[<p>Не так давно я узнал, что в Ubuntu нет встроенного <em>кэширования dns</em> запросов. А у меня, хоть и достаточно быстрый интернет и хорошие пинги до dns серверов, но терять от 50 до 1000мс на запрос как-то не хочется.<br />
<span style="color: #dddddd;">.</span></p>
<p>Для <em>огранизации dns кэширования</em> будем использовать <strong>dnsmasq</strong>.<br />
<span style="color: #dddddd;">.</span></p>
<p><span id="more-595"></span><br />
Устанавливаем:</p>
<blockquote><p>sudo apt-get install dnsmasq</p></blockquote>
<p>Далее, нужно открыть конфиг</p>
<blockquote><p>sudo gedit /etc/dnsmasq.conf</p></blockquote>
<p>И добавить в него строку, вида</p>
<blockquote><p>listen-address=127.0.0.1</p></blockquote>
<p>Теперь нужно добавить в систему новый dns сервер.<br />
Открываем /etc/resolv.conf и добавляем в начало эту строку:</p>
<blockquote><p>nameserver 127.0.0.1</p></blockquote>
<p>Так же, это можно сделать из GUI сетевых настроек.</p>
<p>Остаётся только перезагрузить network-manager:</p>
<blockquote><p>sudo /etc/init.d/network-manager restart</p></blockquote>
<p>И проверить работу нашего dns. Выглядеть это должно примерно так:</p>
<blockquote><p>$ dig mrthe.name | grep &laquo;Query time&raquo;<br />
;; Query time: <strong>130 msec</strong><br />
$ dig mrthe.name | grep &laquo;Query time&raquo;<br />
;; Query time: <strong>0 msec</strong><br />
$ dig mrthe.name | grep &laquo;Query time&raquo;<br />
;; Query time: <strong>0 msec</strong></p></blockquote>
<p>Как видно, экономия 130мс на каждом запросе, что в сумме даёт неплохой прирост к скорости.<br />
<span style="color: #dddddd;">.</span></p>
<img src="http://feeds.feedburner.com/~r/mrthe/~4/z4WjZO6tCEA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrthe.name/2010/10/dns-cache-ubuntu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://mrthe.name/2010/10/dns-cache-ubuntu/</feedburner:origLink></item>
		<item>
		<title>md5 CUDA брутфорс для ubuntu</title>
		<link>http://feedproxy.google.com/~r/mrthe/~3/e2rbtNiepFE/</link>
		<comments>http://mrthe.name/2010/08/md5-cuda-brutfors-dlya-ubuntu/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 15:25:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[md5]]></category>

		<guid isPermaLink="false">http://mrthe.name/?p=576</guid>
		<description><![CDATA[Решил я тут, что зря мой железный друг простаивает по ночам. Раздача торрентов это отлично, но процессор то простаивает.. . Нагружать его будет брутом md5. Но, так как, сам по себе процессор &#8211; большой скорости не даст, брутить будем на nVidia видеокарте с поддержкой CUDA. . Устанавливается всё банальным запуском бинарников с оф. сайта. Неплохой [...]]]></description>
			<content:encoded><![CDATA[<p>Решил я тут, что зря мой железный друг простаивает по ночам. Раздача торрентов это отлично, но процессор то простаивает..<br />
<span style="color: #dddddd;">.</span></p>
<p>Нагружать его будет брутом md5. Но, так как, сам по себе процессор &#8211; большой скорости не даст, брутить будем на nVidia видеокарте с поддержкой CUDA.<br />
<span style="color: #dddddd;">.</span></p>
<p>Устанавливается всё банальным запуском бинарников с оф. сайта. Неплохой мануал можно найти здесь &#8211;<br />
<a href="http://www.cs.virginia.edu/~csadmin/wiki/index.php/CUDA_Support" rel="nofollow">http://www.cs.virginia.edu/~csadmin/wiki/index.php/CUDA_Support</a> (англ.)<br />
<span style="color: #dddddd;">.</span></p>
<p>Тут у меня возникла только 1 проблема:</p>
<blockquote><p>error while loading shared libraries: libcudart.so.2: cannot open shared object file: No such file or directory</p></blockquote>
<p>Решение хоть и описано, по ссылке выше, но оно не совсем подходит, так как файла  <strong>libcudart.so.2</strong> банально нет. Что бы починить, добавляем в ~/.profile следующие строки:</p>
<blockquote><p>LD_LIBRARY_PATH=&raquo;/usr/lib:/usr/openwin/lib:/usr/dt/lib:/X11.6/lib:/X11.5/lib:/uva/lib:/gnu/lib:/usr/local/cuda/lib&raquo;<br />
export LD_LIBRARY_PATH
</p></blockquote>
<p>Далее перелогинимся в системе и выполним команду:</p>
<blockquote><p>
$ sudo cp /usr/local/cuda/lib/libcudart.so.3 /usr/local/cuda/lib/libcudart.so.2
</p></blockquote>
<p>Для <em>x64 Ubuntu Linux</em>, выполним ещё одну:</p>
<blockquote><p>$ sudo cp /usr/local/cuda/lib64/libcudart.so.3 /usr/local/cuda/lib64/libcudart.so.2</p></blockquote>
<p><span style="color: #dddddd;">.</span></p>
<p>Теперь, перейдём собственно к бруту.<br />
<span id="more-576"></span></p>
<p><span style="color: #dddddd;">.</span></p>
<p>Гугл помог найти не так много подходящего софта. Выделю 2:<br />
1) <a href="http://bvernoux.free.fr/md5/index.php">MD5 GPU Crack</a><br />
2) <a href="http://hashcat.net/oclhashcat/">oclHashcat</a><br />
<span style="color: #dddddd;">.</span></p>
<p>И если первый ориентирован исключительно под CUDA, то второй поддерживает ещё и ATI  5xxx видеокарты.<br />
<span style="color: #dddddd;">.</span></p>
<p>Запустив <strong>MD5 GPU Crack</strong> с параметром -b можно увидеть встроенный бенчмарк. Результат &#8211; 50-60 миллионов хешей в секунду.<br />
<span style="color: #dddddd;">.</span></p>
<p>Запустив example.sh из набора <strong>oclHashcat</strong> и нажав &laquo;s&raquo; на клавиатуре видно 70-80 миллионов. При этом, это не потолок, можно почитать файл docs/performance.txt и узнать, как поднять скорость ещё на 5-10 миллионов. Но тогда все ресурсы уходят на брут, и его даже остановить становится сложно, не говоря уже о том, что бы читать параллельно свежие новости в rss. Хотя, это сложно даже в нормальном режиме.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Да, ещё есть <strong>CUDA-Multiforcer</strong>, но, если верить таблице сравнений, на оф. сайте oclHashcat, то CUDA-Multiforcer можно даже не пробовать. Я, собственно, и не стал, меня пока устраивают эти показатели.<br />
<span style="color: #dddddd;">.</span></p>
<p>И напоследок, моё железо:<br />
AMD Athlon(tm) 64 X2 Dual Core Processor 4000+<br />
GeForce 9500 GT<br />
3 GB RAM.<br />
<span style="color: #dddddd;">.</span></p>
<img src="http://feeds.feedburner.com/~r/mrthe/~4/e2rbtNiepFE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrthe.name/2010/08/md5-cuda-brutfors-dlya-ubuntu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://mrthe.name/2010/08/md5-cuda-brutfors-dlya-ubuntu/</feedburner:origLink></item>
		<item>
		<title>Ошибка Google Chrome и Chromium</title>
		<link>http://feedproxy.google.com/~r/mrthe/~3/YbUYslOqzD0/</link>
		<comments>http://mrthe.name/2010/07/oshibka-google-chrome-i-chromium/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 18:16:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[браузеры]]></category>

		<guid isPermaLink="false">http://mrthe.name/?p=556</guid>
		<description><![CDATA[Сегодня словил ошибку с chromium: Не удалось корректно загрузить ваш профиль. Некоторые функции могут быть недоступными. Убедитесь, что ваш профиль существует и что вы имеете разрешение на его чтение и запись. И всё бы ничего, но перестало работать автозаполнение и прочие удовольствия. . И так, решение: . В Chromium требуется удалить из папки ~/.config/chromium/Default все [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня словил ошибку с chromium:</p>
<blockquote><p>Не удалось корректно загрузить ваш профиль.</p>
<p>Некоторые функции могут быть недоступными. Убедитесь, что ваш профиль существует и что вы имеете разрешение на его чтение и запись.</p></blockquote>
<p>И всё бы ничего, но <em>перестало работать автозаполнение</em> и прочие удовольствия.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>И так, решение:<br />
<span id="more-556"></span></p>
<p><span style="color: #dddddd;">.</span></p>
<p>В <em><strong>Chromium</strong></em> требуется удалить из папки <strong>~/.config/chromium/Default</strong> все файлы в имени которых есть слова &laquo;history&raquo; и &laquo;Thumbnails&raquo;. У меня таких файлов вышло аж 700mb. </p>
<p><span style="color: #dddddd;">.</span></p>
<p>После чего можно смело запускать хромиум. </p>
<p><span style="color: #dddddd;">.</span></p>
<p>Если это не помогло, то переименуем папку &laquo;<strong>~/.config/chromium/</strong>&laquo;, например в &laquo;~/.config/chromium<b>_</b>&laquo;, запустим хромиум, он автоматически создаст новую. И в неё уже переносим файлы ../Default/Login Data, ../Default/Login Data и прочие подобные, из старой папки. </p>
<p><span style="color: #dddddd;">.</span></p>
<p><span style="color: #dddddd;">.</span></p>
<p>Для <strong><em>Google Chrome</em></strong> всё точно так же, только папка находится по адресу <strong>~/.config/google-chrome</strong>.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Ну, а так как, <s>виндузятники</s>^W пользователи windows тоже могут наблюдать такую ошибку, папку им стоит искать примерно по этому адресу &laquo;<strong>C:\Documents and Settings\Администратор\Local Settings\Application Data\Google</strong>&laquo;.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Кроме того, я тут нашел отличные <a href="http://chodex.ru/kohana-3-modules/">модули для php-фреймворка Kohana 3</a>. </p>
<img src="http://feeds.feedburner.com/~r/mrthe/~4/YbUYslOqzD0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrthe.name/2010/07/oshibka-google-chrome-i-chromium/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://mrthe.name/2010/07/oshibka-google-chrome-i-chromium/</feedburner:origLink></item>
		<item>
		<title>Накрутка тайм-бонусов RuTracker</title>
		<link>http://feedproxy.google.com/~r/mrthe/~3/NhcjKLTbJ1M/</link>
		<comments>http://mrthe.name/2010/06/nakrutka-tajm-bonusov-rutracker/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 10:29:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Алгоритмы]]></category>
		<category><![CDATA[Уязвимости]]></category>
		<category><![CDATA[torrent]]></category>
		<category><![CDATA[накрутка]]></category>
		<category><![CDATA[решения]]></category>

		<guid isPermaLink="false">http://mrthe.name/?p=541</guid>
		<description><![CDATA[Давненьно я не писал, надо исправлять. . Раз уж я написал несколько постов про обход учёта скачанного, и другие патчи uTorrent&#8217;a и libtorrent&#8217;a стоит написать и про такую штуку, недавно введённую на RuTracker (бывший TorrentsRu) как тайм-бонусы. . Подробнее про них можно почитать на самом рутрекере &#8211; http://rutracker.org/forum/viewtopic.php?t=2879173. . Приведу цитату оттуда: Система работает очень [...]]]></description>
			<content:encoded><![CDATA[<p>Давненьно я не писал, надо исправлять.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Раз уж я написал несколько постов про <a href="http://mrthe.name/2009/10/utorrent-patch/">обход учёта скачанного</a>, и другие <a href="http://mrthe.name/2009/11/utorrent-dht-patch/">патчи uTorrent&#8217;a</a> и <a href="http://mrthe.name/2010/04/libtorrent-path/">libtorrent&#8217;a</a> стоит написать и про такую штуку, недавно введённую на RuTracker (бывший TorrentsRu) как тайм-бонусы.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Подробнее про них можно почитать на самом рутрекере &#8211; <a href="http://rutracker.org/forum/viewtopic.php?t=2879173" rel="nofollow">http://rutracker.org/forum/viewtopic.php?t=2879173</a>.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Приведу цитату оттуда:</p>
<blockquote><p>Система работает очень просто &#8211; за 3 непрерывных часа сидирования одной раздачи вам начисляется 1 таймбонус (ТБ).<br />
За 6 часов &#8211; 2, за сутки &#8211; 8. <strong>На разных раздачах таймбонусы подсчитываются независимо и складываются</strong>. Таким образом чем больше раздач у вас запущено на компьютере &#8211; тем больше вы зарабатываете таймбонусов (точнее, зарабатывает ваш компьютер пока вы спите ).</p></blockquote>
<p><span style="color: #dddddd;">.</span></p>
<p>Как видно, всё предельно просто &#8211; достаточно иметь много раздач. У тех, кто уже давно использует торрент это не проблема, у них всегда запущенно порядка 50 разнообразных раздач. А вот всем остальным &#8211; не хочется качать гигабайты файлов. </p>
<p><span style="color: #dddddd;">.</span></p>
<p>И это решается предельно просто.<br />
<span id="more-541"></span><br />
Зададим поиск по трекеру примерно по таким параметрам:<br />
<a href="http://mrthe.name/wp-content/uploads/2010/09/90254-92201035327pm.png"><img src="http://mrthe.name/wp-content/uploads/2010/09/90254-92201035327pm.png" alt="RuTracker поиск" /></a><br />
В результате, вы увидете множество файлов размером от нескольких байт до нескольких килобайт. Их и качаем и загоняем в любой торрент-клиент. Например у меня около 50 штук. Но никто вас не ограничивает, правила трекера вы не нарушаете ни коем образом, вы действительно стоите на раздаче этих файлов.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>В результате, через несколько дней будет примерно такой результат:<br />
<a href="http://mrthe.name/wp-content/uploads/2010/06/1275597250.jpg"><img src="http://mrthe.name/wp-content/uploads/2010/06/1275597250.jpg" alt="RuTracker статистика" /></a></p>
<p><span style="color: #dddddd;">.</span></p>
<p>Для справки &#8211; после введения этой системы у меня было ~100 тайм бонусов.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Вот собственно и всё. Ещё раз напоминаю &#8211; от каждого по способностям, каждому по потребностям, раздавайте хотя бы в половину канала!</p>
<p><span style="color: #dddddd;">.</span></p>
<img src="http://feeds.feedburner.com/~r/mrthe/~4/NhcjKLTbJ1M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrthe.name/2010/06/nakrutka-tajm-bonusov-rutracker/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://mrthe.name/2010/06/nakrutka-tajm-bonusov-rutracker/</feedburner:origLink></item>
		<item>
		<title>Патчим libtorrent!</title>
		<link>http://feedproxy.google.com/~r/mrthe/~3/MwBUKSFvbaM/</link>
		<comments>http://mrthe.name/2010/04/libtorrent-path/#comments</comments>
		<pubDate>Sat, 17 Apr 2010 12:55:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[torrent]]></category>
		<category><![CDATA[патч]]></category>

		<guid isPermaLink="false">http://mrthe.name/?p=525</guid>
		<description><![CDATA[В связи с переходом на линукс, встала проблема о использовании торрентов. И не просто использовании, а что бы как и раньше &#8211; не думать о рейтинге. Благо, тут всё opensource и всё намного проще чем в случае с uTorrent. . В качестве клиента я выбрал Deluge. Он лёгкий, достаточно быстрый и часто обновляется. Написан на [...]]]></description>
			<content:encoded><![CDATA[<p>В связи с переходом на линукс, встала проблема о использовании торрентов. И не просто использовании, а что бы как и раньше &#8211; не думать о рейтинге. Благо, тут всё opensource и всё намного проще чем в случае с <em>uTorrent</em>. </p>
<p><span style="color: #dddddd;">.</span></p>
<p>В качестве клиента я выбрал <strong>Deluge</strong>. Он лёгкий, достаточно быстрый и часто обновляется. Написан на питоне и использует <strong>libtorrent</strong>. </p>
<p><span style="color: #dddddd;">.</span></p>
<p>Так как патч будет для <strong>libtorrent</strong>, то он будет работать для всех клиентов, использующих эту либу.<br />
И так, приступим.<br />
<span id="more-525"></span></p>
<p><span style="color: #dddddd;">.</span></p>
<p>Скачиваем свежий <a href="http://code.google.com/p/libtorrent/downloads/list">libtorrent-rasterbar</a>, распаковываем в любую удобную папку.</p>
<p>Теперь, нужно найти в каком файле передаётся информация на трекер. Выполним поиск по содержимому файлов:</p>
<blockquote><p>find  -type f -exec grep -il &laquo;downloaded&raquo; {} ;</p></blockquote>
<p>На выходе будет достаточно большой список файлов. Опытным путём, установлено, что нужные файлы:</p>
<blockquote><p>./src/http_tracker_connection.cpp<br />
./src/udp_tracker_connection.cpp</p></blockquote>
<p>Их-то и предстоит патчить.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Как видно из названия, первый файл &#8211; для http соединений, а второй &#8211; для udp. Второй случай, конечно, много реже, но его так же не мешает пропатчить.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Теперь по порядку:</p>
<p><span style="color: #dddddd;">.</span></p>
<p><strong>http_tracker_connection.cpp</strong><br />
Находим строку в которой есть &laquo;downloaded&raquo;. У меня сразу был найдена нужная строка, выглядит примерно так:</p>
<blockquote><p>			snprintf(str, sizeof(str), &laquo;&#038;peer_id=%s&#038;port=%d&#038;uploaded=%&raquo;PRId64<br />
				&laquo;&#038;<strong>downloaded</strong>=%&raquo;PRId64&#8243;&#038;<strong>left</strong>=%&raquo;PRId64&#8243;&#038;corrupt=%&raquo;PRId64&#8243;&#038;compact=1&#8243;<br />
				&laquo;&#038;numwant=%d&#038;key=%x&#038;no_peer_id=1&#8243;<br />
				, escape_string((const char*)&#038;tracker_req().pid[0], 20).c_str()<br />
				, tracker_req().listen_port<br />
				, stats ? tracker_req().uploaded : 0<br />
				, stats ? tracker_req().downloaded : 0<br />
				, stats ? tracker_req().left : 0<br />
				, stats ? tracker_req().corrupt : 0<br />
				, tracker_req().num_want<br />
				, tracker_req().key);<br />
			url += str;</p></blockquote>
<p>Здесь нас интересуют параметры downloaded и left.<br />
Теперь просто заменим строки</p>
<blockquote><p>				, stats ? tracker_req().downloaded : 0<br />
				, stats ? tracker_req().left : 0</p></blockquote>
<p>на</p>
<blockquote><p>				, 0<br />
				, 0 </p></blockquote>
<p>Тут, конечно, можно добавить деление реально скачанного, например, на 5. Что бы уменьшить риск бана, но это уже по вкусу.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Далее, <strong>udp_tracker_connection.cpp</strong>:<br />
Находим строки вида</p>
<blockquote><p>		detail::write_int64(stats ? req.downloaded : 0, out); // downloaded<br />
		detail::write_int64(stats ? req.left : 0, out); // left</p></blockquote>
<p>И по аналогии с http версией заменяем их на </p>
<blockquote><p>		detail::write_int64(0, out); // downloaded<br />
		detail::write_int64(0, out); // left</p></blockquote>
<p>Вот собственно и всё. Осталось скомпилировать и установить libtorrent:</p>
<blockquote><p>./configure &#038;&#038; make &#038;&#038; make install</p></blockquote>
<p>В случае с ubuntu, не забывайте о <strong>sudo</strong>.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Надо сказать, собирается он довольно долго. На моём Athlon X2 2.1 Ghz и 3GB озу это заняло около 15-ти минут. </p>
<p><span style="color: #dddddd;">.</span></p>
<p>Да, всё описанное действительно для версии 0.15.0. Например в 0.14.9 строки выглядят немного по другому, хотя найти их не составляет труда.</p>
<img src="http://feeds.feedburner.com/~r/mrthe/~4/MwBUKSFvbaM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrthe.name/2010/04/libtorrent-path/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		<feedburner:origLink>http://mrthe.name/2010/04/libtorrent-path/</feedburner:origLink></item>
		<item>
		<title>Проблема с MPD</title>
		<link>http://feedproxy.google.com/~r/mrthe/~3/XW7VhOdgKBg/</link>
		<comments>http://mrthe.name/2010/04/problema-s-mpd/#comments</comments>
		<pubDate>Sun, 04 Apr 2010 15:03:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[mpd]]></category>
		<category><![CDATA[решения]]></category>

		<guid isPermaLink="false">http://mrthe.name/?p=516</guid>
		<description><![CDATA[Есть такая замечательная штука &#8211; MPD. Википедия заверяет, что Music Player Daemon (MPD) — музыкальный проигрыватель с клиент-серверной архитектурой, который читает музыку из указанного каталога, а при помощи клиента можно управлять воспроизведением, то есть MPD разрешает удаленный доступ к воспроизведению музыкальных файлов другому (удаленному) компьютеру и управлять сервером (демоном) можно с любой машины из сети, [...]]]></description>
			<content:encoded><![CDATA[<p>Есть такая замечательная штука &#8211; MPD.<br />
Википедия <a href="http://ru.wikipedia.org/wiki/Music_Player_Daemon">заверяет</a>, что</p>
<blockquote><p>Music Player Daemon (MPD) — музыкальный проигрыватель с клиент-серверной архитектурой, который читает музыку из указанного каталога, а при помощи клиента можно управлять воспроизведением, то есть MPD разрешает удаленный доступ к воспроизведению музыкальных файлов другому (удаленному) компьютеру и управлять сервером (демоном) можно с любой машины из сети, но слушать музыку можно и на своём компьютере, если программу клиент для MPD настроить на воспроизведение через свой локальный хост (localhost)</p></blockquote>
<p>Так, вот, захотелось мне управлять музыкой, играющей на хороших колонках десктопа, с ноутбука.</p>
<p><span id="more-516"></span></p>
<p><span style="color: #dddddd;">.</span></p>
<p>Нет ничего проще, выполняем</p>
<blockquote><p>sudo apt-get install mpd</p></blockquote>
<p>на десктопе(сервере), по надобности правим конфиг ( <strong>/etc/mpd.conf</strong> ) под себя и запускаем демон:</p>
<blockquote><p>sudo /etc/init.d/mpd start</p></blockquote>
<p><span style="color: #dddddd;">.</span></p>
<p>На ноутбуке(клиенте) выполняем</p>
<blockquote><p>sudo apt-get install gmpc</p></blockquote>
<p>Gmpc &#8211; это клиент для MPD, запускаем его, по подсказкам настраиваем, обновляем базу, и всё, кажется, уже работает..</p>
<p><span style="color: #dddddd;">.</span></p>
<p>В моём случае &#8211; не работала регулировка громкости звука. Не то что бы критично, но не удобно.<br />
Ошибка была примерно такая:</p>
<blockquote><p><strong>error: ACK [52@0] {setvol} problems setting volume</strong></p></blockquote>
<p>Решается правкой конфига ( <strong>/etc/mpd.conf</strong> ).<br />
Открываем его, находим что-то похожее на</p>
<blockquote><p>audio_output {<br />
type &laquo;alsa&raquo;<br />
name &laquo;My ALSA Output&raquo;<br />
}</p></blockquote>
<p>И заменяем это на</p>
<blockquote><p>audio_output {<br />
type &laquo;pulse&raquo;<br />
name &laquo;My MPD PulseAudio Output&raquo;<br />
}</p></blockquote>
<p>Сохраняем конфиг, перезапускаем  MPD</p>
<blockquote><p>sudo /etc/init.d/mpd restart</p></blockquote>
<p>Вот и всё. </p>
<p><span style="color: #dddddd;">.</span></p>
<img src="http://feeds.feedburner.com/~r/mrthe/~4/XW7VhOdgKBg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrthe.name/2010/04/problema-s-mpd/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://mrthe.name/2010/04/problema-s-mpd/</feedburner:origLink></item>
		<item>
		<title>Синхронизация с помощью DropBox</title>
		<link>http://feedproxy.google.com/~r/mrthe/~3/lzkWJFVIDiI/</link>
		<comments>http://mrthe.name/2010/04/sinxronizaciya-s-pomoshhyu-dropbox/#comments</comments>
		<pubDate>Sat, 03 Apr 2010 14:13:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[dropbox]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[решения]]></category>

		<guid isPermaLink="false">http://mrthe.name/?p=492</guid>
		<description><![CDATA[Итак, после длительного отсутствия я снова с вами! У меня много новостей, но об этом позже, а сейчас &#8211; о синхронизации между двумя и более компьютерами с помощью DropBox. . C приобретением ноутбука, мне понадобилось синхронизировать его с декстопом. Не долго думая, я обратился к помощи DropBox. Итак, синхронизация с помощью DropBox на примере настроек [...]]]></description>
			<content:encoded><![CDATA[<p>Итак, после длительного отсутствия я снова с вами!<br />
У меня много новостей, но об этом позже, а сейчас &#8211; о синхронизации между двумя и более компьютерами с помощью <a rel="nofollow" href="https://www.dropbox.com/referrals/NTM2NjIwMTY5"><strong>DropBox</strong></a>.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>C приобретением ноутбука, мне понадобилось синхронизировать его с декстопом. Не долго думая, я обратился к помощи <em>DropBox</em>.<br />
Итак, синхронизация с помощью DropBox на примере настроек и истории <strong>qutIm</strong>.</p>
<p><span id="more-492"></span></p>
<p><span style="color: #dddddd;">.</span></p>
<p>Для начала обратимся к официальной вики qutIm, что бы узнать, где он хранит настройки.<br />
Тут всё просто, все настройки хранятся вот тут:</p>
<blockquote><p>~/.config/qutim</p></blockquote>
<p>Далее, создаём в папке дропбокса (к слову, устанавливается он в пару кликов, и всё интуитивно понятно) подпапку, например</p>
<blockquote><p>~/Dropbox/Private/qutim</p></blockquote>
<p>В которую полностью переносим содержимое папки с настройками (~/.config/qutim).</p>
<p>Ждём, пока все файлы закачаются на сервер, и смело удаляем папку <strong>~/.config/qutim</strong>.</p>
<p>А на её месте создаём ссылку вот такой командой:</p>
<blockquote><p>ln -s ~/Dropbox/Private/qutim ~/.config/qutim</p></blockquote>
<p>Аналогичную ссылку создаём на другом компьютере, с которым требуется синхронизация.<br />
<span style="color: #dddddd;">.</span></p>
<p>Вот собственно и всё, теперь вся история и все настройки qutim будут синхронизироваться с помощью DropBox.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>Аналогично можно поступить с любыми файлами, настройками и тп.<br />
<span style="color: #dddddd;">.</span></p>
<p>Ах да, дропбокс недавно увеличил максимальный лимит бесплатного места аж до <strong>10 GB</strong>!. Добавляется место с помощью рефералов зарегистрированных по вашей ссылке.<br />
Если у вас нет аккаунта дропбокс &#8211; зарегистрируйтесь по моей ссылке &#8211; <a rel="nofollow" href="https://www.dropbox.com/referrals/NTM2NjIwMTY5"><strong>https://www.dropbox.com/referrals/NTM2NjIwMTY5</strong></a>. Вам всё-равно, а мне приятно)<br />
<span style="color: #dddddd;">.</span></p>
<p>А ещё, товарищ <strong>Tirador</strong> <a href="http://tirador.ru/page/kak-nakrutit-referallov-v-dropbox-i-poluchit-10-gb-besplatno">написал в своём блоге о способе накрутки этого дела (перейти)</a>, за что ему большое спасибо.<br />
<span style="color: #dddddd;">.</span><br />
PS.  В <em>windows</em> всё примерно так же, вот подробное описание &#8211; <a href="http://winter-mute.habrahabr.ru/blog/89864/">http://winter-mute.habrahabr.ru/blog/89864/</a></p>
<img src="http://feeds.feedburner.com/~r/mrthe/~4/lzkWJFVIDiI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrthe.name/2010/04/sinxronizaciya-s-pomoshhyu-dropbox/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://mrthe.name/2010/04/sinxronizaciya-s-pomoshhyu-dropbox/</feedburner:origLink></item>
		<item>
		<title>Перенос настроек браузера</title>
		<link>http://feedproxy.google.com/~r/mrthe/~3/S2fmxS6Z-SM/</link>
		<comments>http://mrthe.name/2010/02/perenos-nastroek-brauzera/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 15:41:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мигрируем на Ubuntu!]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[браузеры]]></category>

		<guid isPermaLink="false">http://mrthe.name/?p=479</guid>
		<description><![CDATA[Так, ubuntu мы поставили, любимый браузер, думаю, тоже, благо мануалов в гугле хватает. Осталось перенести настройки. Некоторые браузеры позволяют экспортировать настройки, с ними проще, а для остального,универсальный алгоритм действий: В ubuntu создать в браузере пару случайных настроек, сохранить их, и выйти из браузера. Перейти в /home/USERNAME, где USERNAME &#8211; ваше имя в системе. Либо просто [...]]]></description>
			<content:encoded><![CDATA[<p>Так, ubuntu мы поставили, любимый браузер, думаю, тоже, благо мануалов в гугле хватает. Осталось <strong>перенести настройки</strong>. Некоторые браузеры позволяют экспортировать настройки, с ними проще, а для остального,универсальный <em>алгоритм действий</em>:</p>
<ol>
<li>В ubuntu создать в браузере пару случайных настроек, сохранить их, и выйти из браузера.</li>
<li>Перейти в <em>/home/USERNAME</em>, где USERNAME &#8211; ваше имя в системе. Либо просто &laquo;<em><strong>cd ~</strong></em>&raquo; в консоли.</li>
<li>Выполнить команду &laquo;<strong>ls -A</strong>&laquo;, которая выведет список всех, в том числе скрытых, каталогов.</li>
<p><span id="more-479"></span></p>
<li>Найти каталог носящий имя\похожий на название вашего браузера, перейти в него, и посмотреть какие там файлы. Если их слишком много &#8211; можно погуглить, что бы узнать что нужно, либо просто перейти в следующему пункту)</li>
<li>В windows(можно и в ubuntu, если она увидела виндовые разделы и смортировала их) перейти в папки <em>c:/Documents and Settings/Администратор/<strong>Local Setting</strong></em><strong>s</strong> и <em>c:/Documents and Settings/Администратор/<strong>Application Data. </strong><span style="font-style: normal;">Где,</span><span> <span>Администратор -</span><span style="font-style: normal;"> ваше имя в системе. Там нужно найти папки, которые носят название вашего браузера\компании изготовителя и соответствующие файлы в них, всё как в п.4.</span></span></em></li>
<li><em><span><span style="font-style: normal;">Теперь, копируем нужные файлы из виндовых папок &#8211; в убунту. Либо просто перенесите все файлы, что бы было максимально похоже на то, что было.</span></span></em></li>
<li>Всё)</li>
</ol>
<p><span style="color: #dddddd;">.</span></p>
<p>Вот такими не сложными действиями можно перенести настройки любого современного браузера. Проверенно на <strong>Opera</strong>. Разве что плагины и виджеты могут не заработать, а всё остальное, вполне замечательно перенеслось.</p>
<p><span style="color: #dddddd;">.</span></p>
<p>ps. internet explorer &#8211; не браузер, и не пытайтесь меня в этом убедить. И не задавайте вопросы по его переносу, вы же не вырывайте себе зубы через ухо или глазницу?</p>
<img src="http://feeds.feedburner.com/~r/mrthe/~4/S2fmxS6Z-SM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrthe.name/2010/02/perenos-nastroek-brauzera/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://mrthe.name/2010/02/perenos-nastroek-brauzera/</feedburner:origLink></item>
		<item>
		<title>Мигрируем на Ubuntu!</title>
		<link>http://feedproxy.google.com/~r/mrthe/~3/_LaVIMmNxLM/</link>
		<comments>http://mrthe.name/2010/02/perehod-na-ubuntu/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 12:46:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Мигрируем на Ubuntu!]]></category>

		<guid isPermaLink="false">http://mrthe.name/?p=462</guid>
		<description><![CDATA[Всем привет, давненько я ничего не писал. А всё по тому, что по мимо сессии, я решил окончательно и бесповоротно переехать c Windows XP (x32) на Ubuntu 9.10 (x64). . В связи в этим переездом, у меня появилась новая рубрика &#171;Мигрируем на Ubuntu!&#171;, в которой я постараюсь описать все тонкости и проблемы, которые возникли при [...]]]></description>
			<content:encoded><![CDATA[<p>Всем привет, давненько я ничего не писал. А всё по тому, что по мимо сессии, я решил окончательно и бесповоротно переехать c Windows XP (x32) на Ubuntu 9.10 (x64).<br />
<span style="color: #dddddd;">.</span></p>
<p>В связи в этим переездом, у меня появилась новая рубрика &laquo;<strong><a href="http://mrthe.name/category/migriruem-na-ubuntu/" target="_blank">Мигрируем на Ubuntu!</a></strong>&laquo;, в которой я постараюсь описать все тонкости и проблемы, которые возникли при переезде.<br />
<span style="color: #dddddd;">.</span><br />
И кроме него, была создана отдельная <a title="ubuntu" href="http://mrthe.name/migriruem-na-ubuntu/" target="_blank">страница-карта</a>, где можно посмотреть список всех постов данного раздела.</p>
<p><a href="http://mrthe.name/migriruem-na-ubuntu/">http://mrthe.name/migriruem-na-ubuntu/</a><br />
<span style="color: #dddddd;">.</span></p>
<p>Сразу стоит заметить, что переезд проходит легко и непринуждённо, в начале самая большая сложность &#8211; правильно разбить диски, и не потерять данные. Что бы лишний раз не волноваться, я использовал <strong>Partition magic</strong>(так же, можно использовать <strong>Acronis</strong>). Нам потребуется как минимум 2 раздела, а лучше три:</p>
<ol>
<li>Корневой раздел &laquo;<strong>/</strong>&laquo;. Тут собственно хранится вся система и тд и тп. Размер большой, что бы не возникло проблем с установкой множества пакетов и прочего.</li>
<li>Не обязательно, но желательно сделать отдельный раздел для настроек и файлов пользователей &laquo;<strong>/home</strong>&laquo;. Размер по усмотрению, файлы настроек много не занимают, но все закачки и тп желательно хранить именно в /home.</li>
<li><strong>swap</strong> (аналог файла подкачки в Windows). Размер по усморению, у меня с 3-мя гигабайтами ОЗУ, своп почти не используется, я ещё не видел, что бы он был занят больше, чем на 100 мб.</li>
</ol>
<p><span style="color: #dddddd;">.</span></p>
<p>Про файловые системы слишком много рассказывать, поэтому создайте эти разделы как пустые, а установщик убунты уже подскажет какую фс выбрать. Например я использую <strong>Ext4</strong>.<br />
<span style="color: #dddddd;">.</span><br />
Да, и перед тем, как скачивать дистрибутив, убедитесь, что вы выбрали свой тип процессора. А если ваш процессор поддерживает x64 архитектуру, то советую использовать именно такую версию убунты. Проблем с этим я ещё не встретил, разве что некоторый закрытый софт не всегда имеет x64 билды.<br />
<span style="color: #dddddd;">.</span><br />
На этом вступительный пост закончу, и напомню: используйте гугл, или, на крайний случай &#8211; яндекс. Там есть ответы на 90% вопросов. </p>
<img src="http://feeds.feedburner.com/~r/mrthe/~4/_LaVIMmNxLM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrthe.name/2010/02/perehod-na-ubuntu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://mrthe.name/2010/02/perehod-na-ubuntu/</feedburner:origLink></item>
		<item>
		<title>Учись работать – Ассоциации</title>
		<link>http://feedproxy.google.com/~r/mrthe/~3/1ZvFdTBM1Pw/</link>
		<comments>http://mrthe.name/2010/01/uchis-rabotat-associacii/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 15:45:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[etc]]></category>
		<category><![CDATA[решения]]></category>
		<category><![CDATA[учись работать]]></category>

		<guid isPermaLink="false">http://mrthe.name/?p=448</guid>
		<description><![CDATA[Вот такой внезапный пост в моём блоге. Итак, как начать работать, когда ничего не хочется? Или как побороть лень? . У всех бывает ситуация, когда есть много работы, интересной работы. А работать нет ну никакого настроения!.. Аналогично бывает ситуация, когда в порыве рабочего настроения не замечаешь течения времени и выполняешь недельную норму за день. . [...]]]></description>
			<content:encoded><![CDATA[<p>Вот такой внезапный пост в моём блоге. Итак, <strong>как начать работать, когда ничего не хочется?</strong> Или <strong>как побороть лень?</strong><br />
<span style="color: #dddddd;">.</span></p>
<p>У всех бывает ситуация, когда есть много работы, интересной работы. А работать нет ну никакого настроения!..<br />
Аналогично бывает ситуация, когда в порыве рабочего настроения не замечаешь течения времени и выполняешь недельную норму за день.<br />
<span style="color: #dddddd;">.</span></p>
<p>Так вот, есть такая штука, как <strong>ассоциативное мышление</strong>. Или просто <em>ассоциации</em>. Так давайте ассоциируем работу с чем-то ещё? Например, с музыкой, обстановкой, запахом.. Это реально работает и помогает!<br />
<span style="color: #dddddd;">.</span></p>
<p>Конкретный пример:<br />
Одно время я постоянно слушал хардстайл (<em>hardstyle</em> &#8211; стиль музыки) и соответственно работал слушая его.<br />
Прошло около полугода, я уже слушаю другую музыку, и вот, опять появилась интересная работа, а настроения нет. Сижу пялюсь в монитор, от скуки разбираю завалы на харде. Нахожу txt с ссылками на онлайн-радио. Включаю первую попавшуюся &#8211; там оказывается тот самый хардстайл. И тут как волной накатило желание работать, и всё задуманное было сделано за пару вечеров.<br />
<span style="color: #dddddd;">.</span></p>
<p>Аналогично после длительного коворкинга, у меня появилась ассоциация работы и <em>кофе со сгущёнкой</em>.<br />
<span style="color: #dddddd;">.</span></p>
<p><strong>Вывод</strong>: в порывах рабочего настроения старайтесь слушать один стиль музыки, пить один напиток, сидеть в одной позе.. Да мало-ли можно придумать вещей, с которыми будет ассоциироваться работа! </p>
<img src="http://feeds.feedburner.com/~r/mrthe/~4/1ZvFdTBM1Pw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrthe.name/2010/01/uchis-rabotat-associacii/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://mrthe.name/2010/01/uchis-rabotat-associacii/</feedburner:origLink></item>
		<item>
		<title>WideCap</title>
		<link>http://feedproxy.google.com/~r/mrthe/~3/EeiaLLZ1aHA/</link>
		<comments>http://mrthe.name/2010/01/widecap/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 23:17:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[etc]]></category>
		<category><![CDATA[socks]]></category>
		<category><![CDATA[WideCap]]></category>
		<category><![CDATA[видео]]></category>

		<guid isPermaLink="false">http://mrthe.name/?p=437</guid>
		<description><![CDATA[Периодически мне задают вопросы про анонимность. Всем советую соксы (пост) и WideCap. А вот как им пользоваться, понимают не все.. А мне как-то не весело рассказывать каждому одно и тоже. Поэтому, я снял простое видео. Итак, скачиваем и устанавливаем WideCap(тут проблем не должно быть), запускаем его, и смотрим видео (обязательно смотреть в HD(высоком разрешении)!): Так [...]]]></description>
			<content:encoded><![CDATA[<p>Периодически мне задают вопросы про анонимность. Всем советую <a href="http://mrthe.name/socks/">соксы</a> (<a href="http://mrthe.name/2009/12/free-socks-proxy/">пост</a>) и <a rel="nofollow" href="http://widecap.ru/download/">WideCap</a>. А вот как им пользоваться, понимают не все.. А мне как-то не весело рассказывать каждому одно и тоже. Поэтому, я снял простое видео.<br />
Итак, скачиваем и устанавливаем <a rel="nofollow" href="http://widecap.ru/download/">WideCap</a>(тут проблем не должно быть), запускаем его, и смотрим видео (обязательно смотреть в HD(высоком разрешении)!):<br />
<object width="400" height="344" data="http://www.youtube.com/v/q22Rl_JGBy8&amp;hl=ru_RU&amp;fs=1&amp;" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/q22Rl_JGBy8&amp;hl=ru_RU&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /></object></p>
<p>Так же, видео можно скачать по ссылке <a href="http://dl.dropbox.com/u/3662016/mrthe.name/WideCapVideo.rar" rel="nofollow">http://dl.dropbox.com/u/3662016/mrthe.name/WideCapVideo.rar</a>. </p>
<p><span id="more-437"></span><br />
Кеи: <strong>видео WideCap</strong>, <em>неработает WideCap,</em> <em>соксификация</em>, безопасность, <strong>анонимность</strong>, использовать сокс, <strong>socks</strong><br />
<span id="b6cbd27dc3ee6c8032940df6ddf0d8b6"></span></p>
<img src="http://feeds.feedburner.com/~r/mrthe/~4/EeiaLLZ1aHA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://mrthe.name/2010/01/widecap/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://mrthe.name/2010/01/widecap/</feedburner:origLink></item>
	</channel>
</rss><!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->

