<?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>Perlover&#039;s Blog &#187; Советы</title>
	<atom:link href="http://blog.perlover.com/tag/hints/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.perlover.com</link>
	<description>Blog about Unix, Perl, Firefox, JavaScript and other internet technologies</description>
	<lastBuildDate>Fri, 20 Jan 2012 15:23:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Perl: DBI &amp; MySQL &#8212; авто реконнект (reconnect)</title>
		<link>http://blog.perlover.com/2011/12/27/dbd-dbi-mysql-auto-reconnect-init-commands/</link>
		<comments>http://blog.perlover.com/2011/12/27/dbd-dbi-mysql-auto-reconnect-init-commands/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 11:52:43 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[DBI]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Советы]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1491</guid>
		<description><![CDATA[Если вы программист на Perl и работаете с MySQL, то вот вам совет, как обеспечить коннект к серверу, и в тоже время, обеспечить себе легкую жизнь. Ведь если истечёт таймаут при работе с сервером, $dbh (database handle) будет не актуальным и выдаст ошибку. Особенно это актуально тогда, когда ваша программа работает с MySQL, и в [...]]]></description>
			<content:encoded><![CDATA[<p>Если вы программист на <strong>Perl</strong> и работаете с <strong>MySQL</strong>, то вот вам совет, как <strong>обеспечить коннект к серверу</strong>, и в тоже время, обеспечить себе <strong>легкую жизнь</strong>. Ведь если истечёт <strong>таймаут</strong> при работе с сервером, <strong>$dbh</strong> (database handle) <strong>будет не актуальным</strong> и выдаст ошибку. Особенно это актуально тогда, когда ваша программа работает с MySQL, и в то же время выполняет другие длительные операции, время которых может превысить таймаут-значение (connect timeout) MySQL. В такой ситуации ваш handle будет не актуальным.</p>
<p><strong>Решение есть</strong>. Но в то же время есть ещё одна тонкость. DBB::mysql драйвер имеет опцию автореконнекта (mysql_auto_reconnect) и будет следить за актальностью handle и при случае переконнектится. Но вот что делать с коммандами, которые иногда надо выполнить сразу после коннекта, например SET NAMES &#8216;utf8&#8242;;SET CHARACTER SET &#8216;utf8&#8242; ? И тут есть решение! Хотя найти его не всегда легко в интернет <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Вообщем, вот <strong>код для коннекта</strong> из под Perl к MySQL так, <strong>чтобы всё работало пучком</strong>:</p>
<pre class="brush: perl; title: ; notranslate">
$dbh = DBI-&gt;connect( &quot;dbi:mysql:database=database_name;mysql_client_found_rows=1;mysql_enable_utf8=1;mysql_socket=/socket_of_mysql&quot;, 'user', 'password',
    {
	RaiseError		=&gt; 1,
	AutoCommit		=&gt; 1,
	mysql_multi_statements	=&gt; 1,
	mysql_init_command	=&gt; q{SET NAMES 'utf8';SET CHARACTER SET 'utf8'}
    } ) or die &quot;Cannot connect&quot;;
$dbh-&gt;{mysql_auto_reconnect} = 1;
</pre>
<p>Код проверен мною и тщательно протестирован</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2011/12/27/dbd-dbi-mysql-auto-reconnect-init-commands/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Советы будущим митингующим, ну или чтобы вы знали, на что идете</title>
		<link>http://blog.perlover.com/2011/12/08/meeting-tips/</link>
		<comments>http://blog.perlover.com/2011/12/08/meeting-tips/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 13:26:26 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Напрягуха :(]]></category>
		<category><![CDATA[о жизни]]></category>
		<category><![CDATA[Советы]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1486</guid>
		<description><![CDATA[Полностью перепечатано с http://lady-spring.livejournal.com/75168.html Автор: lady_spring (на всякий случай, вдруг ЖЖ опять будет глючить) ВСЕМ МИТИНГУЮЩИМ Так. Вот сейчас очень серьезно. На митинг в субботу придет больше 22 000 человек. Скорее всего, гораздо больше. Слушайте внимательно. Уже сейчас некие люди нанимают провокаторов, которые будут провоцировать драки, кричать &#171;Революция&#187; и прочее. Я уверена, что ВСЕМ нам, [...]]]></description>
			<content:encoded><![CDATA[<h2>Полностью перепечатано с <a href="http://lady-spring.livejournal.com/75168.html">http://lady-spring.livejournal.com/75168.html</a></h2>
<h4>Автор: lady_spring</h4>
<h6>(на всякий случай, вдруг ЖЖ опять будет глючить)</h6>
<h2>ВСЕМ МИТИНГУЮЩИМ</h2>
<p>Так. Вот сейчас очень серьезно.</p>
<p>На митинг в субботу придет больше 22 000 человек. Скорее всего, гораздо больше.</p>
<p>Слушайте внимательно.<span id="more-1486"></span></p>
<p>Уже сейчас некие люди нанимают провокаторов, которые будут провоцировать драки, кричать &#171;Революция&#187; и прочее.<br />
Я уверена, что ВСЕМ нам, протестующим, нужны очень простые вещи: в первую очередь, честные выборы. Повторные. Мы их проведем, мы соберем наблюдателей. Мы добьемся регистрации партий &#8212; возможно, и сами ее создадим после 10-го.<br />
Кровопролитие никому не нужно, так?</p>
<p>Я знаю, что так. Поэтому:</p>
<p>1. Не ведитесь на провокации. Прежде чем кричать что-либо вместе с теми, кто стоит рядом, подумайте, разделяете ли вы эти взгляды. Если это призыв к насилию &#8212; молчите или кричите &#171;ФУ&#187;.<br />
Мы же не стадо.</p>
<p>2. Пожалуйста, будьте внимательны к тем, кто стоит рядом. Не толкайте людей, старайтесь не создавать давки. Если вы видите пожилых людей &#8212; старайтесь их пропускать. На митинге будут и беременные женщины, будьте аккуратны, прошу. Мы ВСЕМ покажем, что мы &#8212; культурные люди, мы уважаем друг друга.</p>
<p>3. Если даже вы услышите человека, который ЗА единую россию &#8212; вы можете посмеяться, можете поговорить с ним, переубеждать его, но не применяйте НИКАКОЙ силы. Ребята, наша сила уже в том, что нас много и мы за правду. Мы не хотим и не будем кого-то бить. Успокаивайте всех, кто агрессивен. УЛЫБАЙТЕСЬ ЛЮДЯМ.</p>
<p>4. Ведите себя в рамках закона. Если кто-то, даже со сцены, призовет рушить стены Кремля &#8212; кричите ФУ, не соглашайтесь. НЕ ИДИТЕ МАРШЕМ ПО ГОРОДУ. Я объясню, почему: идущую толпу разобьют на группы и затаскают в автозаки. Нас выставят отморозками и революционерами. Это НЕ ТАК, мы все знаем.</p>
<p>5. Очень важный пункт. Ребята, полиция действительно за нас. Вы знаете, на выборах на моем участке были прекрасные полицейские. Они ослушались комиссию и не удалили меня с участка как наблюдателя (я им объяснила, что удаление незаконно). Они смотрели на меня смущенно и стыдились того, что их заставляют делать.<br />
Ребята, если полиции скажут: мы теперь за народ, мы их защищаем, мы никого не бьем и не тесним &#8212; поверьте, они будут кричать от радости еще громче нас.<br />
У них дома жена и дети, им так же страшно, но они НЕ могут бросить все враз.<br />
Поэтому<br />
КАЖДОМУ полицейскому с человеческим лицом и человеческим поведением говорите СПАСИБО, говорите: мы понимаем, что это ваш долг, и мы надеемся сменить ваше начальство, чтобы вы перестали быть рабами.<br />
В Москву привозят чеченские полки. Этих ребят натаскали, чтобы ненавидеть нас, но если они не делают вам ничего плохого &#8212; улыбайтесь им, объясняйте, что мы никому не хотим зла.</p>
<p>6. Если вас задерживают &#8212; не сопротивляйтесь. Это почти всегда бесполезно, но усугубит ваше положение при аресте. Почитайте <a href="http://users.livejournal.com/_falkon_/514483.html">правовые советы митингующим.</a></p>
<p>Поймите одну простую вещь:<br />
Они не боятся отморозков, которые штурмуют Кремль. Потому что таких отморозков можно посадить за решетку и выставить себя правым.<br />
Они не боятся толпы быдла, на которую будет противно смотреть по ТВ. Потому что против нас после этого будут все простые люди.</p>
<p>Они БОЛЬШЕ ВСЕГО боятся, что на площадь выйдут культурные, умные, вежливые люди, которых ДОСТАЛО. И которые готовы к конкретным ПРАВОВЫМ действиям. Если мы требуем перевыборов &#8212; мы ПРАВЫ. Если мы требуем свержения Путина (КЕМ БЫ ОН НИ БЫЛ) &#8212; мы бездумные революционеры. Не ПРОТИВ чего-либо или кого-либо, а ЗА. В данном случае &#8212; ЗА перевыборы.</p>
<p>Если нам не позволят реализовать наше право на выбор, мы всегда успеем собраться ЕЩЕ, и мы будем уже менее миролюбивы.</p>
<p>ОБРАЩЕНИЕ К ОРГАНИЗАТОРАМ:<br />
Прошу вас понять, что с вами будет многотысячная толпа. И, как ни громко это звучит, судьба нашего народа В ВАШИХ РУКАХ. Тщательно продумайте все, что будете говорить на сцене. Не уставайте повторять людям: мы за МИРНОЕ решение проблемы, без крови.<br />
Я была в толпе &#8212; все вокруг меня точно так же хотели мира.<br />
Не допускайте на сцену провокаторов, которые будут кричать &#171;революция&#187;, &#171;долой власть&#187;. Это НЕ ТЕ лозунги, которые нам нужны.<br />
И самое главное: сделайте так, чтобы Первый канал и Россия НЕ СМОГЛИ ОСВЕТИТЬ ЭТО СОБЫТИЕ КАК МИТИНГ ОТМОРОЗКОВ.</p>
<p>Каждый из вас, организаторов и участников: сделайте так, чтобы у них не было НИ ОДНОГО КАДРА с провокациями и драками, с агрессивными лицами и агрессивными лозунгами.</p>
<p>Мы все злимся, нас всех, простите мой французский, ЗАЕБАЛО, но если мы устроим кровопролитие 10-го числа &#8212; это будет нашей самой большой ошибкой во всей нашей жизни. И весь наш протест будет бессмысленен. Нас объявят врагами российского народа, врагами их спокойствия, и тогда&#8230; Я боюсь, что гражданская война более чем реальна.</p>
<p>Давайте покажем им, что мы не ТОЛПА, мы ЛЮДИ, ГРАЖДАНЕ.</p>
<p>Прошу вас. Ради наших родителей, наших детей, нашего будущего.</p>
<p>Распространите как можно шире, это необходимо.</p>
<p>UPD Ребят, я не ожидала такого резонанса <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  И знаете, я предлагаю на митинге спеть&#8230; ГИМН. Я не знаю, придумаем ли мы его. или выберем. Давайте думать. Это будет впечатляюще красиво.<br />
Я горжусь вами, и ваши дети будут вами гордиться.</p>
<p>UPD2 Я вижу. Мне тоже не нравится Путин. Но мы не говорим &#171;Долой Путина как человека&#187;, мы говорим &#171;Долой премьер-министра, который позволяет такое&#187;. Если мы и будем кричать &#171;Долой Путина&#187; &#8212; поймите, что посыл именно таков.<br />
Мы не хотим его убить, Боже избавь. Если он виноват &#8212; мы будем его судить. И не так, как судит Басманный суд. Мы будем выслушивать все его доводы.<br />
Но если он виноват &#8212; мы не поступим, как Басманный суд, и не оправдаем виновного.</p>
<p>UPD3 Это снова я <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Перечитала наш текущий гимн. Давайте не будем придумывать ничего нового, а просто разучим полностью его текст к субботе? Кто бы ни писал текст, музыку &#8212; это сильно и красиво.</p>
<p>UPD4<em> Хочу добавить опрос: Как мы митингуем? &#171;Мирно и без провокаций&#187; или &#171;ответим силой на силу&#187;. Не получается. Проконсультируйте, плиз</em></p>
<p>UPD5 Очень правильное <a href="http://aneverchenko.livejournal.com/1242.html">обращение к националистам</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2011/12/08/meeting-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSH Telnet под Windows</title>
		<link>http://blog.perlover.com/2011/07/21/ssh-telnet-windows-putty-vs-shellguard/</link>
		<comments>http://blog.perlover.com/2011/07/21/ssh-telnet-windows-putty-vs-shellguard/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 16:20:34 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[OpenSSH]]></category>
		<category><![CDATA[PuTTY]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tabs]]></category>
		<category><![CDATA[Telnets]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[сисадминам]]></category>
		<category><![CDATA[Советы]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1340</guid>
		<description><![CDATA[Давно работаю под ShellGuard, но в последнее время стал искать замену (мало того что он платный и уже не поддерживаемый, дак еще и не работает с UTF-8). Перепробовал много telnet-ов, но остановился на проверенном и нормально работающем &#8212; PuTTY. Но вот есть у него довольно неприятная проблема. ShellGuard работает почти с теми же клавиами, что [...]]]></description>
			<content:encoded><![CDATA[<p>Давно <strong>работаю под ShellGuard</strong>, но в последнее время <strong>стал искать замену</strong> (мало того что он платный и уже не поддерживаемый, дак еще и не работает с UTF-8). Перепробовал много telnet-ов, но <strong>остановился на проверенном</strong> и нормально работающем &#8212; <strong><a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/" target="_blank">PuTTY</a></strong>. Но вот есть у него довольно <strong>неприятная проблема</strong>. ShellGuard работает почти с теми же клавиами, что привычные Unix терминалы &#8212; Alt + F1(F2, &#8230; F12) &#8212; переключает на нужные открытые консоли, а <strong>PuTTY работает всегда с одной консолью</strong> и для новой надо заново запускать новый процесс, а переключаться между ними не удобно &#8212; Alt+Tab &#8212; обычное переключение в Windows.</p>
<p>Долго искал &#8212; можно ли как-то приблизиться к сервису, близкому ShellGuard, и <strong>нашел максимально хорошее решение<span id="more-1340"></span></strong> &#8212; <strong><a href="http://puttycm.free.fr/cms/" target="_blank">PuTTY Connection Manager</a></strong>. Эта программа делает следующее &#8212; она запускает на каждую консоль новое окно PuTTY как процесс, но <strong>интегрирует их в одно Windows окно, делая вкладки (Tabs)</strong>, переключаться между которыми теперь можно через <strong>Ctrl + Tab</strong>. Работает очень хорошо, но все таки остался неприятный осадок &#8212; было бы замечательно, если бы порядок переключения делался в Most Recent порядке (между наиболее недавно использованными табами). Но этого нет. Еще хочется добавить из минусов &#8212; очень медленно развивается разработчиками. И хотя <a href="http://puttycm.free.fr/support/tracker/index.php?string=&amp;project=2&amp;type[]=2&amp;sev[]=&amp;pri[]=&amp;due[]=&amp;reported[]=&amp;cat[]=&amp;status[]=open&amp;percent[]=&amp;opened=&amp;dev=&amp;closed=&amp;duedatefrom=&amp;duedateto=&amp;changedfrom=&amp;changedto=&amp;openedfrom=&amp;openedto=&amp;closedfrom=&amp;closedto=&amp;do=index" target="_blank">можно запросить и проголосовать за какую либо новую фичу</a>, что-то мне подсказывает, увидеть ее потом можно через N-ое количество лет.</p>
<p>Кстати, <strong>как ShellGuard, так и PuTTY &#8212; работают с SSH ключами</strong>. <strong><span style="color: #ff0000;">Если вы не используете SSH ключи</span></strong> для авторизации (то есть работаете по старинке &#8212; вводя каждый раз пароль), то <strong><span style="color: #ff0000;">очень рекомендую это сделать</span></strong> &#8212; <strong><span style="color: #008000;">удобно, быстро и более безопасно!</span></strong> Конечно, сами ключи для авторизации необходимо защитить паролем, но его надо ввести один раз (для ShellGuard &#8212; только при первой сессии и для PuTTY вводится при запуске Pageant из состава PuTTY)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2011/07/21/ssh-telnet-windows-putty-vs-shellguard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perl &#8212; перекрестные ссылки и &#171;утечка памяти&#187;</title>
		<link>http://blog.perlover.com/2011/03/28/perl-memory-leak-weaken-cross-refs/</link>
		<comments>http://blog.perlover.com/2011/03/28/perl-memory-leak-weaken-cross-refs/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 10:21:03 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Examples]]></category>
		<category><![CDATA[Good Programming]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Советы]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1239</guid>
		<description><![CDATA[Недавно столкнулся с такой не очевидной проблемой, как &#171;утечка памяти&#187; там, где вроде бы ее не должно было быть. Маленькое вступление &#8212; perl имеет механизм чистки уже неиспользуемых переменных. Работает просто - новая переменная всегда имеет счетчик ссылок, равный единице. Этот счетчик увеличивается на единицу, как только вы ставите на ту переменную ссылку или где-то [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно столкнулся с такой не очевидной проблемой, как <strong>&#171;утечка памяти&#187;</strong> там, где вроде бы ее не должно было быть.</p>
<p><strong>Маленькое вступление</strong> &#8212; <strong>perl</strong> имеет механизм чистки уже неиспользуемых переменных. Работает просто <span id="more-1239"></span>- новая переменная всегда имеет счетчик ссылок, равный единице. Этот счетчик увеличивается на единицу, как только вы ставите на ту переменную ссылку или где-то используете эту переменую в функции, а саму функцию передаете куда либо еще &#8212; всё это отражается на счетчике. И пока этот счетчик не равен нулю &#8212; perl не освобождает память этой переменной. Счетчик также уменьшается на единицу, как только удаляется ссылка на переменную или, как во втором примере &#8212; удаляется ссылка на функцию, ее использующую, либо когда переменная становится не нужной после блока <em><strong>{}</strong></em>. Все это работает нормально, и сделано правильно, с точки зрения чистки памяти. Но бывают такие нюансы, о которых просто сходу не додумаешься &#8212; я баг искал несколько дней, и кое как нашел. Вообще, в большинстве случаев утечек памяти не будет &#8212; надо очень сильно постараться, чтобы они были, или писать программы в стиле 80-х годов, когда был Бейсик (perl позволяет писать в разных стилях) и о локальных переменных никто не думал.</p>
<p>Итак, рассмотрим несколько примеров, когда может быть утечка памяти, которую не так просто заметить:</p>
<pre class="brush: perl; title: ; notranslate">
{
 my $a = {};
 my $b = {};

 $a-&gt;{ref} = $b;
 $b-&gt;{ref} = $a;
}
</pre>
<p>Посмотрим, что здесь. Итак, <em><strong>$a</strong></em> &#8212; содержит ссылку на хеш-таблицу, <em><strong>$b</strong></em> &#8212; на другую. Все они &#8212; обернуты в блок. Казалось бы, <em><strong>$a</strong></em> &amp; <em><strong>$b</strong></em> должны освободить память после окончания блока, так как после блока видимость переменных пропадает и в таких случаях perl все очищает. Тем более, ссылки на хеш-таблицы мы никуда не передавали и не возвращали через <em><strong>return</strong></em>. Но все будет не так. <em><strong>$a-&gt;{ref}</strong></em> получает ссылку на <em><strong>$b</strong></em>. Если бы этим все и ограничилось &#8212; память бы освободилась. Но проблема в том, что <em><strong>$b-&gt;{ref}</strong></em> сохраняет ссылку на <em><strong>$a</strong></em>, которая имеет ссылку на <em><strong>$b</strong></em>. Это и есть ключевой момент! <strong><span style="color: #ff0000;">Когда две переменные, как либо связаны через ссылки друг на друга</span></strong> (либо прямые ссылки, либо через хеши, как тут, либо через ссылки на функции, их использующие) &#8212; <strong><span style="color: #ff0000;">очистки памяти не происходит</span></strong>. И все потому, что perl не освобождает <strong>$a</strong> потому, что <strong>$b</strong> имеет ссылку на неё (тут счетчик ссылок для хеша под $a равен 2 внутри блока, для хеша под $b также равен 2 внутри блока), а $a имеет ссылку на $b. Когда блок заканчивается, perl уменьшает счетчики ссылок у обоих, и если в обычной ситуации все свелость бы к тому, что в результате у всех наступило бы по &#171;нулям&#187;, то здесь у обоих счетчики ссылки так и остануться равными единицами. Выход &#8212; можно внутри блока в конце написать <strong>undef $b-&gt;{ref}</strong> (как бы разрубив гордиев узел), тем самым разрушим перекрестность ссылок.</p>
<p>Но есть пример и по интереснее, который приключился со мной. Он примерно, такой:</p>
<pre class="brush: perl; title: ; notranslate">
{
 my $ref = {};
 $ref-&gt;{func} = sub
  {
   ...
   $ref-&gt;{foo} = 2;
   ...
  }
}
</pre>
<p>Тут опять же &#8212; перекрестные ссылки, но более изощренно. <em><strong>$ref</strong></em> имеет в своем составе ссылку на функцию, например &#8212; callback по своей сути, а сам callback внутри себя использует <em><strong>$ref</strong></em> переменную. Выходит, что когда дело дойдет до чистки памяти &#8212; будет такая же ситуация &#8212; перекрестные ссылки и память не будет освобождена под $ref хеш, так и память переменных стека под sub {} (функции могут &#171;удерживать&#187; данные, которые им доступны из их &#171;контекста&#187; видимости и которые они используют). Как быть?</p>
<p>Второй пример решается одним способом, как ни странно (может есть и другой, с той же undef, но этот самый эффективный и &#171;правильный&#187;). Есть такой сервисный модуль &#8212; Scalar::Util с фунцией weaken. Код выше меняется на такой:</p>
<pre class="brush: perl; title: ; notranslate">
use Scalar::Util 'weaken';

{
 my $ref = {};
 weaken $ref;
 $ref-&gt;{func} = sub
  {
   ...
   $ref-&gt;{foo} = 2;
   ...
  }
}
</pre>
<p>Функция weaken управляет как раз тем счетчиком ссылок. Если говорить точно, то она перестает &#171;удерживать&#187; счетчик ссылок на тот объект, на который ссылается. А именно, в примере, <em><strong>$ref</strong></em> &#8212; удерживает без weaken счетчик на хеш &#8212; {}. После <em><strong>$ref = {}</strong></em> счетчик ссылок хеша равен двум &#8212; единице он был равен сразу после создания хеша, а затем еще увеличился на елиницу после присвоения $ref-у. Если мы используем <em><strong>weaken $ref</strong></em>, тогда после этого счетчик снова уменьшится на единицу для хеша, а внутри perl данных где-то в глубине это запомнится, и тогда в любой момент, как только perl очистит память под хеш (то есть когда счетчик ссылок станет нулевым), переменная <em><strong>$ref</strong></em> станет равной <em><strong>undef</strong></em>. Но, как правило, если правильно написать программу, возникновение значения undef для $ref нам не помешает. Тут главное, запомнить простое правило &#8212; <strong><span style="color: #ff0000;">если вы имеете ссылку на функцию, которая сама как либо использует ту переменную, которая ссылается на нее (прямо или опосредовано) &#8212; тут надо применять weaken, иначе будет утечка памяти!</span></strong> И это будет не вина perl, а ваша! Я в своей большой практике программирования на perl пока еще не сталкивался с утечкой памяти по вине perl &#8212; все было по вине программера, то есть меня <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2011/03/28/perl-memory-leak-weaken-cross-refs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Прикрутил AddThis и Twitter</title>
		<link>http://blog.perlover.com/2011/02/09/added-addthis-twitter/</link>
		<comments>http://blog.perlover.com/2011/02/09/added-addthis-twitter/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 12:39:44 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Расслабуха :)]]></category>
		<category><![CDATA[Addthis]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Советы]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1204</guid>
		<description><![CDATA[Прилепил на блог AddThis и Twitter. AddThis &#8212; штука для простого &#171;расшаривания&#187; страниц моего блога (то есть для тех, кто хочет поделиться УРЛ-ом моих страниц через какую либо социальную сеть, или даже просто добавить в закладки). Twitter &#8212; моя лента сообщений на Твиттере, которую веду уже несколько недель &#8212; в ней я буду пописывать то, [...]]]></description>
			<content:encoded><![CDATA[<p>Прилепил на блог <strong><a href="http://www.addthis.com/" target="_blank">AddThis</a></strong> и <strong><a href="http://twitter.com/perlover_here" target="_blank">Twitter</a></strong>. <strong>AddThis</strong> &#8212; штука для простого &#171;расшаривания&#187; страниц моего блога (то есть <strong>для тех, кто хочет поделиться УРЛ-ом моих страниц</strong> через какую либо социальную сеть, или даже просто добавить в закладки). <strong>Twitter</strong> &#8212; <strong>моя лента сообщений</strong> на Твиттере, которую веду уже несколько недель &#8212; в ней я буду пописывать то, что будет маловато для блога. <strong>Вы, имея Twitter</strong> аккаунт, <strong>можете оставлять отклики</strong> у себя, для самых интересных которых я сделаю ретвит <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Да, чуть не забыл! <strong>Заголовки новых статей блога транслируются в Twitter</strong> аккаунт. Поэтому, подписавшись на мой твитт (став фолловером), вы оперативно узнаете о чем-то новом у меня на блоге. Постараюсь скоро написать о Твиттере более подробно.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2011/02/09/added-addthis-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Флешки USB и NTFS</title>
		<link>http://blog.perlover.com/2011/02/04/usb-flash-cannot-format-ntfs/</link>
		<comments>http://blog.perlover.com/2011/02/04/usb-flash-cannot-format-ntfs/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 14:59:42 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Начинающим]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[Советы]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1185</guid>
		<description><![CDATA[Недавно обнаружил для себя открытие &#8212; оказывается, не так легко форматнуть флешку в NTFS из под Windows XP! Если вы попробуете через меню Exporer, то увидите только опции форматирования FAT32 и ExFAT. NTFS там не будет! Зачем нужна NTFS? Чтобы на нее можно было записать фильм, например в формате MKV, который более 4 Гб. На [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно <strong>обнаружил </strong>для себя открытие &#8212; оказывается,<strong> не так легко форматнуть флешку в NTFS</strong> из под Windows XP! <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Если вы попробуете через меню Exporer, то увидите только опции форматирования FAT32 и ExFAT. NTFS там не будет! <strong>Зачем нужна NTFS?</strong> Чтобы на нее можно было записать фильм, например в формате MKV, <strong>который более 4 Гб</strong>. На то она и <strong>FAT32</strong>, что может поддерживать размер файлов <strong>2<sup>32</sup> байт (4Гб)</strong>. Итак, как форматнуть?! Оказывается, все просто, но не очевидно! Windows не форматирует потому, что для флеш дисков (в драйверах) автоматически ставится опция &#171;не кешировать&#187;. <strong>Чтобы появилась NTFS</strong>, надо пойти на рабочий стол, в &#171;Мой компьютер&#187; через правую мышку выбрать &#171;Управление&#187;, там найти &#171;Диспетчер устройств&#187; -&gt; &#171;Дисковые устройства&#187;, там ищем нашу флешку, правая кнопка мыши и &#171;Свойства&#187;, а там ярлык &#171;Политика&#187;. <strong>Вместо &#171;Оптимизировать для быстрого удаления&#187; выбираем <span style="color: #008000;">&#171;Оптимизировать для выполнения&#187;</span></strong>. Жмем OK, и после мы можем форматировать в NTFS! Здесь <strong><a href="статья на английском с картинками" target="_blank">статья на английском с картинками</a></strong></p>
<p>Вот такая вот фигня с этими флешками&#8230;</p>
<p>P.S. Я не знаю, надо ли восстанавливать обратно свойства, но лучше, после форматирования, вернуть опцию обратно. Вдруг для новых флешек она будет включаться &#8212; лучше, чтобы все таки она стояла, иначе после записи на нее вытаскивать ее нельзя &#8212; часть данных потеряется.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2011/02/04/usb-flash-cannot-format-ntfs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>И снова о Samsung Galaxy S&#8230;</title>
		<link>http://blog.perlover.com/2011/01/21/about-samsung-galaxy-s/</link>
		<comments>http://blog.perlover.com/2011/01/21/about-samsung-galaxy-s/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 13:24:06 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[Мобильники]]></category>
		<category><![CDATA[Расслабуха :)]]></category>
		<category><![CDATA[3g]]></category>
		<category><![CDATA[Galaxy S]]></category>
		<category><![CDATA[gprs]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[phones]]></category>
		<category><![CDATA[мобильная связь]]></category>
		<category><![CDATA[о жизни]]></category>
		<category><![CDATA[Советы]]></category>
		<category><![CDATA[Сотовые телефоны]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1151</guid>
		<description><![CDATA[Юзаю этот телефон уже более двух месяцев. До этого, сколько бы я не пробовал всяких смартфонов, все они в итоге оказывались в шкафу и там оставались forever Я всегда был приверженцем, что телефон должен быть телефоном, и скрещивание его с компьютером не даст удобств пользователю. Всегда было проблемой для меня &#8212; где найти приложения для [...]]]></description>
			<content:encoded><![CDATA[<p>Юзаю <strong><a href="http://blog.perlover.com/2010/11/27/samsung-galaxy-s-gt-i9000/" target="_blank">этот телефон</a></strong> уже более двух месяцев. До этого, сколько бы я не пробовал всяких смартфонов, все они в итоге оказывались в шкафу и там оставались forever <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Я всегда был приверженцем, что телефон должен быть телефоном, и скрещивание его с компьютером не даст удобств пользователю. Всегда было проблемой для меня &#8212; где найти приложения для Symbian, или iPhone (там были какие то ограничения для русского народа в их маркете). И ниодин телефон не казался мне удобным в плане работы с нетелфонными функиями. Но теперь я понимаю, что Galaxy S &#8212; это то что мне надо! Не возникло единой мысли отказаться от этого аппарата! Вообщем, если вы еще думаете &#8212; <strong>берите Samsung Galaxy S</strong> &#8212; не пожалеете! <strong>Единственное</strong>, что <strong>мне не понравилось</strong>, дак это то, как там делается <strong>upgrade Android до 2.2</strong> &#8212; их программа Kies работает так, как ей вздумается &#8212; то она на одном компе даже не хотела запускаться, потом все таки я ее запустил на другом, проапгрейдил, но вот второй такой же аппарат она уже апгрейдить не захотела &#8212; Galaxy постоянно мигал экраном во время подсоединения его к компу, и драйвера никак не могли установится (хотя зачем им снова было ставиться, если я уже ставил их и работал с другим телефоном?!). Также, хочу хаметить, что скоро выйдет у них аппарат, лучший по характеристикам, чем Galaxy S &#8212; <strong><a href="http://ru.wikipedia.org/wiki/Nexus_S" target="_blank">Nexus S</a></strong>. Там будет новее Android (в Галакси &#8212; версия 2.1).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2011/01/21/about-samsung-galaxy-s/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Немного о цветах&#8230;</title>
		<link>http://blog.perlover.com/2011/01/18/about-colors/</link>
		<comments>http://blog.perlover.com/2011/01/18/about-colors/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 12:14:39 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Советы]]></category>
		<category><![CDATA[Это интересно]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1128</guid>
		<description><![CDATA[Нет, нет, это не о расстениях! Что-то захотелось мне написать немного о формировании цветов (о красках в нашем мире). Вдруг, кому нибудь будет интересно Например, почему смешав желтый и голубой цвет красок, получается зеленый, но почему, когда светят те же лампочки вместе рядом, получается почти белый? Чтобы понять это, для начала надо уяснить себе, что [...]]]></description>
			<content:encoded><![CDATA[<p>Нет, нет, это не о расстениях! <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Что-то захотелось мне написать немного <strong>о формировании цветов</strong> (о красках в нашем мире). Вдруг, кому нибудь будет интересно <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Например, почему смешав желтый и голубой цвет красок, получается зеленый, но почему, когда светят те же лампочки вместе рядом, получается почти белый? <span id="more-1128"></span>Чтобы понять это, для начала надо уяснить себе, что <strong>существуют две модели поведения света</strong> &#8212; <strong>отражение </strong>от поверхности <strong>и излучение</strong><strong> </strong>света. Краски &#8212; это отражение падающего света &#8212; там ничего не излучается, а лампочки, как в нашем мониторе, например &#8212; это излучение света, т.е. он не падал на поверхность, а сама поверхность его &#171;сгенерировала&#187;. Второе, что нам надо знать, чтобы понять поведение смешивания красок, это то, как формируется цвет. Чтобы легче это понимать, я например, представляю в уме круг, где по часовой стрелке идут три сектора &#8212; <strong><span style="color: #ff0000;">красный (Red)</span></strong>, <strong><span style="color: #008000;">зеленый (Green)</span></strong> и <strong><span style="color: #0000ff;">синий (Blue)</span></strong> (сокращенно &#8212; RGB). Тут главное запомнить, <strong>какие цвета идут между секторами</strong> (то есть какой цвет получается, если горят смежные лампочки круга) &#8212; <strong><span style="color: #ff0000;">красный</span></strong> + <strong><span style="color: #008000;">зеленый</span></strong> -&gt; <strong><span style="color: #cccc00;">желтый</span></strong>, <strong><span style="color: #339966;">зеленый</span></strong> + <strong><span style="color: #0000ff;">синий</span></strong> -&gt; <strong><span style="color: #00ccff;">голубой</span></strong>, а <strong><span style="color: #0000ff;">синий</span></strong> + <strong><span style="color: #ff0000;">красный</span></strong> -&gt; <strong><span style="color: #ff00ff;">вишневый</span></strong>, а если горят все лампочки трех цветов &#8212; белый. Примерно так. Итак, этот круг &#8212; представление модели излучения. Далее, я расскажу почему получается с красками иначе. Кстати, <strong>остальные цвета получаются</strong>, когда <strong>любые три лампочки &#8212; RGB &#8212; горят с &#171;разной силой&#187;</strong>. Например, серый &#8212; это не что иное, как белый, только с меньшей интенсивностью, а коричневый &#8212; это когда красная горит сильно, зеленая &#8212; чуть слабее, а синяя &#8212; еще слабее.</p>
<p>Сами <strong>краски ничего не излучают</strong>, а <strong>отражают только тот свет, который они не поглащают</strong>. И тут нам снова может помочь подель RGB. Давайте поразмышляем! <strong>Желтая краска</strong> &#8212; она отражает желтый, значит она <strong>отражает красную и зеленую волну</strong> (см. выше), а <strong>синию &#8212; поглощает</strong>. <strong>Голубая краска </strong>- <strong>отражает зеленую и синию волну</strong>, а <strong>красную поглощает</strong>. Что получается, когда мы смешиваем краски? Смесь начинает поглощать все волны, которые поглощались каждой краской в отдельности, а отражаются те волны, которые отражались в обоих красках! То есть, <strong>смешав желтую и синию</strong>, мы получаем цвет, <strong>который поглощает и красную и синию волну</strong>, но <strong>отражает ту волну, которая отражалась обоими &#8212; зеленую</strong>. Если же мы смешаем вместе с желтым и синим, например, еще и красную, мы получим &#171;грязный&#187; серый, или даже черный цвет, так как красная краска поглощает все волны, кроме красного, а в нашем примере красная волна поглощается всеми красками до этого. Не забывайте, что <strong>все эти примеры для &#171;идеальных цветов&#187;</strong>, в в нашей жизни нет ничего идеального <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Например, зеленая краска может быть светлозеленой, что значит &#8212; она отражает зеленой волны больше, но она и отражает и красную и синию в равной степени, только значительно меньше &#8212; именно за счет этого она и светлозеленая (светлозеленый: зеленый + белый, а белый &#8212; это когда в равной степени есть каждые три цвета &#8212; RGB). То есть, проделав все это с красками светлых тонов, вы будете получать немного другие оттенки (например, смешав светлые краски желтого, синиего и красного, вы получите не черный, серый цвет). <strong>Именно на основе отражений формируются цвета в книгах и журналах</strong> &#8212; там цетыре цвета: желтый,голубой, пурпурный (для простоты в примерах выше я использовал красный, но правильнее этот цвет) и черный. Черный в полиграфии используется для экономии трех других красок и просто для того, чтобы сделать цвет очень черным. А в <strong>наших мониторах используется модель излучения цвета</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2011/01/18/about-colors/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Web Search Pro и вставка терминов в URL поиска</title>
		<link>http://blog.perlover.com/2011/01/12/web-search-pro-put-term-in-url/</link>
		<comments>http://blog.perlover.com/2011/01/12/web-search-pro-put-term-in-url/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 12:54:51 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Add-ons]]></category>
		<category><![CDATA[CJ/TGP]]></category>
		<category><![CDATA[FireFox]]></category>
		<category><![CDATA[For AWMs]]></category>
		<category><![CDATA[Forms]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[Search Engines]]></category>
		<category><![CDATA[Автоматизация труда]]></category>
		<category><![CDATA[Поиск]]></category>
		<category><![CDATA[сисадминам]]></category>
		<category><![CDATA[Советы]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1111</guid>
		<description><![CDATA[Есть такой замечательный плагинчик под Firefox &#8212; Web Search Pro. Вкратце &#8212; это надстройка над всеми поисками, которыми вы захотите пользоваться. Разумеется, список составляется вами и вы сами определяете, какими поисковыми машинами (если точнее, всеми сайтами, где есть форма поиска, но для простоты далее &#8212; &#171;поисковики&#187;) вы будете пользоваться. Одна из классных особенностей &#8212; определить [...]]]></description>
			<content:encoded><![CDATA[<p>Есть такой замечательный плагинчик под Firefox &#8212; <strong><a href="https://addons.mozilla.org/ru/firefox/addon/552/" target="_blank">Web Search Pro</a></strong>. Вкратце &#8212; это надстройка над всеми поисками, которыми вы захотите пользоваться. Разумеется, список составляется вами и вы сами определяете, какими поисковыми машинами (если точнее, всеми сайтами, где есть форма поиска, но для простоты далее &#8212; &#171;поисковики&#187;) вы будете пользоваться. Одна из классных особенностей &#8212; определить список ваших поисковиков и засандалить их в &#171;экранную сетку&#187; &#8212; тогда, когда вы выделяете любое слово на вебстранице и начинаете его перетаскивать мышкой куда либо, появляется та самая &#171;сетка&#187;, и вы то слово просто перетаскиваете на ту ячейку, где хотите искать &#8212; и поиск автоматом запускается. Но вообще-то, я не об этом (подробнее &#8212; <a href="http://blog.perlover.com/2009/11/20/web-search-pro/" target="_blank">см. на моем блоге</a>) &#8212; это было вступление для тех, кто не знает этот плагин.</p>
<p><strong>А теперь о главном</strong> &#8212; <strong>как вставить нужный термин</strong> (далее term) поиска <strong>в URL</strong> поисковой машины <strong>туда, где вам надо</strong>.<span id="more-1111"></span> По умолчанию, когда вы используете поисковики, term вставляется в конец строки. Но не везде это удобно, а иногда просто и невозможно, чтобы это работало так, как надо вам. Дак вот, чтобы вставить term туда, куда надо, используйте псевдо-слово <em><strong>{searchTerms}</strong></em>, например, вам надо заместо УРЛа в Web Search Pro задать: <strong>http://www.robtex.com/ip/{searchTerms}.html</strong> (Robtex &#8212; поиск IP адреса и информации по нему), или, например: <strong>http://www.alexa.com/siteinfo/{searchTerms}#rank</strong> (выдача графика популярности сайта по Alexa). Тогда все будет работать как надо! <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2011/01/12/web-search-pro-put-term-in-url/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Samsung Galaxy S и скриншоты</title>
		<link>http://blog.perlover.com/2010/12/11/samsung-galaxy-s-screenshot/</link>
		<comments>http://blog.perlover.com/2010/12/11/samsung-galaxy-s-screenshot/#comments</comments>
		<pubDate>Sat, 11 Dec 2010 13:46:19 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Мобильники]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Galaxy S]]></category>
		<category><![CDATA[phones]]></category>
		<category><![CDATA[Советы]]></category>
		<category><![CDATA[Сотовые телефоны]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1098</guid>
		<description><![CDATA[Сегодня узнал, как все таки просто делать скриншоты (screenshots, или screencapture) в Galaxy S (i9000). Единственная поправка &#8212; у меня стоит Android 2.2, после обновления, поэтому, сказанное ниже, может оказаться, что будет работать только под этой версией. А может и нет. Попробуйте сами! Итак, чтобы сделать &#171;снимок&#187; экрана в любой программе и в любой момент, [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня узнал, как все таки <strong>просто делать скриншоты</strong> (screenshots, или screencapture) в Galaxy S (i9000). Единственная поправка &#8212; у меня стоит <strong>Android</strong> 2.2, после обновления, поэтому, сказанное ниже, может оказаться, что будет работать только под этой версией. А может и нет. Попробуйте сами!</p>
<p>Итак, чтобы сделать &#171;снимок&#187; экрана в любой программе и в любой момент, достаточно сделать следующее: <strong>нажать кнопку &#171;Back&#187;</strong>, не отпуская, <strong>выждать около секунды</strong>, и затем, также <strong>не отпуская Back, нажать кнопку &#171;Home&#187;</strong> (та что единственная реальная кнопка по середине). Если все успешно, вы услышите звук &#171;затвора&#187; фотоаппарата, а сами скриншоты найдете через приложение &#171;Мои файлы&#187; в корневом разделе <strong>в папке ScreenCapture</strong>. Обратите внимание, что сразу у вас это может не получиться. <strong>Главное</strong>, здесь <strong>определить</strong> для самого себя <strong>паузу</strong>, которую надо выдерживать между нажатием и удерживанием кнопки Back и нажатием Home &#8212; выдержите меньше &#8212; ничего не произойдет.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2010/12/11/samsung-galaxy-s-screenshot/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

