<?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>Блог веб-программиста</title> <link>http://blog.bethrezen.ru</link> <description /> <lastBuildDate>Sat, 28 Apr 2012 08:43:45 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator> <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/PaisPorradaDeBethrezen" /><feedburner:info uri="paisporradadebethrezen" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Yii: CStatRelation и defaultScope у реляций</title><link>http://feedproxy.google.com/~r/PaisPorradaDeBethrezen/~3/7ljswzjvpNQ/yii-cstatrelation-i-defaultscope-u-relyacijj.html</link> <comments>http://blog.bethrezen.ru/2012/04/yii-cstatrelation-i-defaultscope-u-relyacijj.html#comments</comments> <pubDate>Sat, 28 Apr 2012 08:41:51 +0000</pubDate> <dc:creator>Bethrezen</dc:creator> <category><![CDATA[Code]]></category> <category><![CDATA[CStatRelation]]></category> <category><![CDATA[relations]]></category> <category><![CDATA[yii]]></category><guid isPermaLink="false">http://blog.bethrezen.ru/?p=306</guid> <description><![CDATA[Ночью столкнулся с внезапной проблемой в Yii Framework 1. Оказывается, статистические запросы через CStatRelation не поддерживает scopes в параметрах. Так что, если мы имеем defaultScope в нашем связанно элементе, то отменить его действие мы не сможем. Как повторить эту проблему. Допустим имеем класс RevisionsSets с таким вот определением реляций: /** * @return array relational rules. [...]]]></description> <content:encoded><![CDATA[<p>Ночью столкнулся с внезапной проблемой в Yii Framework 1.<br
/> Оказывается, статистические запросы через CStatRelation не поддерживает scopes в параметрах. Так что, если мы имеем defaultScope в нашем связанно элементе, то отменить его действие мы не сможем.</p><p>Как повторить эту проблему. Допустим имеем класс RevisionsSets с таким вот определением реляций:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;">        <span style="color: #009933; font-style: italic;">/**
	 * @return array relational rules.
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> relations<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
			<span style="color: #0000ff;">'pricesCount'</span><span style="color: #339933;">=&gt;</span>array<span style="color: #009900;">&#40;</span>
					<span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #990000;">STAT</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Revisions'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'revisionSetId'</span><span style="color: #339933;">,</span>
				<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></div></div><p>Ну и в самом классе Revisions имеем следующую группу условий по-умолчанию:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;">        <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> defaultScope<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$rev</span> <span style="color: #339933;">=</span> Config<span style="color: #339933;">::</span><span style="color: #004000;">model</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getConfigValue</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Shop&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;CurrentRevision&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">value</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$t</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getTableAlias</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">return</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
					<span style="color: #0000ff;">'condition'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$t</span>.revisionSetId=:rev&quot;</span><span style="color: #339933;">,</span>
					<span style="color: #0000ff;">'params'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'rev'</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$rev</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
				<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span></pre></div></div><p>Что же происходит при вызове <code>$revisionsSetModel-&gt;pricesCount</code>?<br
/> STAT-реляция забирает количество записей, но при этом применяет defaultScope от модели Revisions и в итоге для всех экземпляров RevisionsSets считается некорректное количество записей.<br
/> Исправить такое поведение можно было бы допливанием CStatRelation и реализацией там поддержки условий, как это например сделано в HAS_MANY, MANY_MANY, BELONGS_TO.</p><p>Но мне в голову пришел более быстрый вариант. Я создал класс RevisionsResetScope, который наследует Revisions и переопределяет defaultScope:</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>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> RevisionsResetScope <span style="color: #000000; font-weight: bold;">extends</span> Revisions <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> defaultScope<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">resetScope</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: #009900;">&#125;</span></pre></div></div><p>Этот класс и используем в реляции:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;">        <span style="color: #009933; font-style: italic;">/**
	 * @return array relational rules.
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> relations<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
			<span style="color: #0000ff;">'pricesCount'</span><span style="color: #339933;">=&gt;</span>array<span style="color: #009900;">&#40;</span>
					<span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #990000;">STAT</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'RevisionsResetScope'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'revisionSetId'</span><span style="color: #339933;">,</span>
				<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></div></div><p>Вот такой костыль. Кстати, на форуме Qiang Xue решил отказаться от статистических запросов и CStatRelation в Yii Framework 2. Будем надеяться, что разработчики предусмотрят достойную замену.</p> <img src="http://feeds.feedburner.com/~r/PaisPorradaDeBethrezen/~4/7ljswzjvpNQ" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://blog.bethrezen.ru/2012/04/yii-cstatrelation-i-defaultscope-u-relyacijj.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://blog.bethrezen.ru/2012/04/yii-cstatrelation-i-defaultscope-u-relyacijj.html</feedburner:origLink></item> <item><title>Бесконечная очередь и отказ от сообщений в RabbitMQ + Thumper + PHP AMPQlib</title><link>http://feedproxy.google.com/~r/PaisPorradaDeBethrezen/~3/PFhXY4yPuWA/beskonechnaya-ochered-i-otkaz-ot-soobshhenijj-v-rabbitmq-thumper-php-ampqlib.html</link> <comments>http://blog.bethrezen.ru/2011/08/beskonechnaya-ochered-i-otkaz-ot-soobshhenijj-v-rabbitmq-thumper-php-ampqlib.html#comments</comments> <pubDate>Sat, 27 Aug 2011 08:50:45 +0000</pubDate> <dc:creator>Bethrezen</dc:creator> <category><![CDATA[Code]]></category> <category><![CDATA[php]]></category> <category><![CDATA[phpampqlib]]></category> <category><![CDATA[rabbitmq]]></category> <category><![CDATA[thumper]]></category><guid isPermaLink="false">http://blog.bethrezen.ru/?p=299</guid> <description><![CDATA[По работе столкнулся с одной задачей и решил использовать сервер очереди сообщений RabbitMQ в связке с PHP 5.3 через PHP-ampqlib и библиотеку Thumper. Чтобы сделать Consumer(worker), который будет обрабатывать бесконечную очередь надо задать $consumer-&#62;consume(-1);. Тогда в цикле Thumper, где проверяется нужно ли нам выходить всё будет хорошо и наш обработчик будет работать вечно. Но появился ещё [...]]]></description> <content:encoded><![CDATA[<p>По работе столкнулся с одной задачей и решил использовать сервер очереди сообщений <a
href="http://www.rabbitmq.com/" rel="nofollow" target="_blank">RabbitMQ</a> в связке с PHP 5.3 через <a
href="https://github.com/tnc/php-amqplib" rel="nofollow" target="_blank">PHP-ampqlib</a> и библиотеку <a
href="https://github.com/videlalvaro/Thumper" rel="nofollow" target="_blank">Thumper</a>.</p><p>Чтобы сделать Consumer(worker), который будет обрабатывать бесконечную очередь надо задать $consumer-&gt;consume(-1);. Тогда в цикле Thumper, где проверяется нужно ли нам выходить всё будет хорошо и наш обработчик будет работать вечно.</p><p>Но появился ещё один интересный вопрос - что делать, если внутри функции обработки сообщения произошел Exception? Я решил, что тогда мы отказываемся от этого сообщение и оно идет к другому обработчику. Реализовывать это лучше расширением класса Consumer:</p><pre ">class MyConsumer extends Consumer {
	public function processMessage($msg) {
		try {
			parent::processMessage($msg);
		} catch (Exception $e) {
			echo "Message rejected due to exception.\n".$e-&gt;getMessage()."\n";
			$msg-&gt;delivery_info['channel']-&gt;basic_reject($msg-&gt;delivery_info['delivery_tag'],true);
			//throw $e;
		}
	}
}</pre><p>Соответственно ваш Consumer должен быть объектом класса MyConsumer.<br
/> Если же всё таки нужно кинуть этот Exception выше - убираем комментарий со строки throw $e;</p> <img src="http://feeds.feedburner.com/~r/PaisPorradaDeBethrezen/~4/PFhXY4yPuWA" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://blog.bethrezen.ru/2011/08/beskonechnaya-ochered-i-otkaz-ot-soobshhenijj-v-rabbitmq-thumper-php-ampqlib.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://blog.bethrezen.ru/2011/08/beskonechnaya-ochered-i-otkaz-ot-soobshhenijj-v-rabbitmq-thumper-php-ampqlib.html</feedburner:origLink></item> <item><title>Блог основателя SEO в Demis Group</title><link>http://feedproxy.google.com/~r/PaisPorradaDeBethrezen/~3/Qtl0lj1oY_Y/blog-osnovatelya-seo-v-demis-group.html</link> <comments>http://blog.bethrezen.ru/2011/07/blog-osnovatelya-seo-v-demis-group.html#comments</comments> <pubDate>Fri, 29 Jul 2011 11:44:07 +0000</pubDate> <dc:creator>Bethrezen</dc:creator> <category><![CDATA[Новости]]></category><guid isPermaLink="false">http://blog.bethrezen.ru/?p=296</guid> <description><![CDATA[Директор тамбовского подразделения Demis Group, один из основателей SEO в нашей компании наконец то начал приобщаться к общению в сети. Раньше просто совсем времени не было. Вот встречайте: Блог Скобеева Константина Twitter: @skobeeff]]></description> <content:encoded><![CDATA[<p>Директор тамбовского подразделения Demis Group, один из основателей SEO в нашей компании наконец то начал приобщаться к общению в сети. Раньше просто совсем времени не было.</p><p>Вот встречайте:</p><p><a
title="Блог Скобеева Константина" href="http://blog.skobeeff.ru">Блог Скобеева Константина</a></p><p>Twitter: @skobeeff</p> <img src="http://feeds.feedburner.com/~r/PaisPorradaDeBethrezen/~4/Qtl0lj1oY_Y" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://blog.bethrezen.ru/2011/07/blog-osnovatelya-seo-v-demis-group.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://blog.bethrezen.ru/2011/07/blog-osnovatelya-seo-v-demis-group.html</feedburner:origLink></item> <item><title>Скорость интернета</title><link>http://feedproxy.google.com/~r/PaisPorradaDeBethrezen/~3/euinhXwc8-U/skorost-interneta.html</link> <comments>http://blog.bethrezen.ru/2011/02/skorost-interneta.html#comments</comments> <pubDate>Fri, 11 Feb 2011 11:24:27 +0000</pubDate> <dc:creator>Bethrezen</dc:creator> <category><![CDATA[SEO]]></category> <category><![CDATA[эксперимент]]></category><guid isPermaLink="false">http://blog.bethrezen.ru/?p=290</guid> <description><![CDATA[Сделал я тут недавно один сервис. Сервис называется Скорость Интернета!. Предназначен для определения и измерения реальной скорости интернета. В принципе - это эксперимент и сайт делался за 30 минут. Взял CMS ModX Revolution. Прикрутил шаблон. Потом нагуглил бесплатный скрипт, вставил его на морду - всё, работает. Для привлечения поискового трафика написал две статьи под определенные [...]]]></description> <content:encoded><![CDATA[<p>Сделал я тут недавно один сервис.<br
/> <span
id="more-290"></span><br
/> Сервис называется <a
href="http://www.skorostinterneta.ru/">Скорость Интернета!</a>. Предназначен для определения и измерения реальной скорости интернета. В принципе - это эксперимент и сайт делался за 30 минут.<br
/> Взял CMS ModX Revolution. Прикрутил шаблон. Потом нагуглил бесплатный скрипт, вставил его на морду - всё, работает.<br
/> Для привлечения поискового трафика написал две статьи под определенные запросы. Ссылок на данный момент 15. Но тем не менее, сайт по основному запросу на 7-9 месте.<br
/> Траффик идет неплохой - сначала было по 300 уникальных посететителей в день, а 1 февраля было аж &gt; 1000! Видимо этот неожиданный рост связан с тем, что люди переходили на новые тарифные планы и хотели потестировать свою скорость.</p><p>Два дня назад сервер с этим сайтом вывалился в даун. Я ждал, ну мало ли само починится. Так нет, даже сам сайт хостера лежал.<br
/> Сегодня нашел админа в фейсбуке, зарегистрировался на этом сайте и написал ему, мол в чем дело. Кстати админ - еврей и фамилия у него Yablon <img
src='http://blog.bethrezen.ru/wp-includes/images/smilies/icon_biggrin.gif' alt="icon biggrin Скорость интернета" class='wp-smiley' title="Скорость интернета" /><br
/> На что он мне ответил:</p><blockquote><p>oh k i was had problem toi pay them for the servers... my credit card limited to 2k ILS and the bill was much more this why it was down</p></blockquote><p>Забавно получается. Я значит оплатил всё вовремя, а он тянул до последнего! Нехорошо!<br
/> Ну да ладно. Сервер заработал и на том спасибо.<br
/> Сейчас я этим постом тоже ставлю эксперимент.<br
/> Дело в том, что я решил на основе стандартных алгоритмов, доступных в сети алгоритмах посчитать ссылочную массу, которую передаст ссылка с этого поста.<br
/> Посмотрим, что из этого выйдет <img
src='http://blog.bethrezen.ru/wp-includes/images/smilies/icon_smile.gif' alt="icon smile Скорость интернета" class='wp-smiley' title="Скорость интернета" /></p> <img src="http://feeds.feedburner.com/~r/PaisPorradaDeBethrezen/~4/euinhXwc8-U" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://blog.bethrezen.ru/2011/02/skorost-interneta.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://blog.bethrezen.ru/2011/02/skorost-interneta.html</feedburner:origLink></item> <item><title>Запаковываем проект в один JAR для запуска на Hadoop</title><link>http://feedproxy.google.com/~r/PaisPorradaDeBethrezen/~3/B1MwxACKlSo/packing-java-project-into-one-jar-for-hadoop.html</link> <comments>http://blog.bethrezen.ru/2010/06/packing-java-project-into-one-jar-for-hadoop.html#comments</comments> <pubDate>Sat, 05 Jun 2010 08:12:36 +0000</pubDate> <dc:creator>Bethrezen</dc:creator> <category><![CDATA[Code]]></category> <category><![CDATA[ant]]></category> <category><![CDATA[hadoop]]></category> <category><![CDATA[jar]]></category> <category><![CDATA[java]]></category> <category><![CDATA[tips]]></category><guid isPermaLink="false">http://blog.bethrezen.ru/?p=276</guid> <description><![CDATA[Сегодня потребовалось запаковать проект на Java в один JAR файл. Нужно мне это для того, чтобы не мучиться с подключением сторонних jar и их дистрибьюции на кластер Hadoop Map Reduce. Да и к тому же, параметр -libjars из документации у меня почему то не работал. Проект мой компилируется через ant. Поэтому самым простым  решением для [...]]]></description> <content:encoded><![CDATA[<p>Сегодня потребовалось запаковать проект на Java в <strong>один JAR файл</strong>. Нужно мне это для того, чтобы не мучиться с подключением сторонних jar и их дистрибьюции на кластер <strong>Hadoop Map Reduce</strong>. Да и к тому же, параметр -libjars из документации у меня почему то не работал.</p><p><span
id="more-276"></span></p><p>Проект мой компилируется через ant. Поэтому самым простым  решением для этой задачи является модификация build.xml.</p><p>Открываем build.xml и прямо перед закрывающим тегом <code>&lt;/project&gt;</code> пишем:</p><p><code
lang="xml"><br
/> &lt;target name="package-for-store" depends="jar"&gt;<br
/> &lt;property name="store.jar.name" value="<em>YourProjectNameHere</em>"/&gt;</code></p><p><code
lang="xml">&lt;!-- don't edit below this line --&gt;</code></p><p><code
lang="xml">&lt;property name="store.dir" value="store"/&gt;<br
/> &lt;property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/&gt;</code></p><p><code
lang="xml"> </code></p><p><code
lang="xml">&lt;echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/&gt;</code></p><p><code
lang="xml">&lt;delete dir="${store.dir}"/&gt;<br
/> &lt;mkdir dir="${store.dir}"/&gt;</p><p>&lt;jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip"&gt;<br
/> &lt;zipgroupfileset dir="dist" includes="*.jar"/&gt;<br
/> &lt;zipgroupfileset dir="dist/lib" includes="*.jar"/&gt;</p><p>&lt;manifest&gt;<br
/> &lt;attribute name="Main-Class" value="${main.class}"/&gt;<br
/> &lt;/manifest&gt;<br
/> &lt;/jar&gt;</p><p>&lt;zip destfile="${store.jar}"&gt;<br
/> &lt;zipfileset src="${store.dir}/temp_final.jar"<br
/> excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/&gt;<br
/> &lt;/zip&gt;</p><p>&lt;delete file="${store.dir}/temp_final.jar"/&gt;</p><p></code></p><p><code
lang="xml"> &lt;/target&gt;<br
/> </code></p><p>В итоге при компиляции <strong>ant package-for-store</strong> у нас появится пакет YourProjectName.jar в папке store со всеми сторонними библиотеками. Такой способ напомнил мне статичную линковку в C++..</p><p>Всё, теперь мой JAVA проект спокойно запускается в Hadoop кластере. А теперь можно заняться и с<a
href="http://devgroup.ru/services/sozdanie-saitov.html">озданием сайтов</a> <img
src='http://blog.bethrezen.ru/wp-includes/images/smilies/icon_smile.gif' alt="icon smile Запаковываем проект в один JAR для запуска на Hadoop" class='wp-smiley' title="Запаковываем проект в один JAR для запуска на Hadoop" /></p> <img src="http://feeds.feedburner.com/~r/PaisPorradaDeBethrezen/~4/B1MwxACKlSo" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://blog.bethrezen.ru/2010/06/packing-java-project-into-one-jar-for-hadoop.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://blog.bethrezen.ru/2010/06/packing-java-project-into-one-jar-for-hadoop.html</feedburner:origLink></item> <item><title>Как получить MAC из busyBox</title><link>http://feedproxy.google.com/~r/PaisPorradaDeBethrezen/~3/JT1YjuSNGzk/kak-poluchit-mac-iz-busybox.html</link> <comments>http://blog.bethrezen.ru/2010/06/kak-poluchit-mac-iz-busybox.html#comments</comments> <pubDate>Fri, 04 Jun 2010 06:33:41 +0000</pubDate> <dc:creator>Bethrezen</dc:creator> <category><![CDATA[linux]]></category> <category><![CDATA[busybox]]></category><guid isPermaLink="false">http://blog.bethrezen.ru/?p=242</guid> <description><![CDATA[Сегодня потребовалось из busybox при установки Debian netsinst получить MAC-адрес сетевки. Это как оказалось можно сделать так: # ip l sh eth0 17: eth0: &#60;BROADCAST,MULTICAST,UP&#62; mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:c0:9f:55:6e:e5 brd ff:ff:ff:ff:ff:ff]]></description> <content:encoded><![CDATA[<p>Сегодня потребовалось из busybox при установки Debian netsinst получить MAC-адрес сетевки. Это как оказалось можно сделать так:</p><p><code># ip l sh eth0</code><br
/> <code>17: eth0: &lt;BROADCAST,MULTICAST,UP&gt; mtu 1500 qdisc pfifo_fast qlen 1000</code><br
/> <code>link/ether 00:c0:9f:55:6e:e5 brd ff:ff:ff:ff:ff:ff</code></p> <img src="http://feeds.feedburner.com/~r/PaisPorradaDeBethrezen/~4/JT1YjuSNGzk" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://blog.bethrezen.ru/2010/06/kak-poluchit-mac-iz-busybox.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://blog.bethrezen.ru/2010/06/kak-poluchit-mac-iz-busybox.html</feedburner:origLink></item> <item><title>Лечим Network is unreachable в Java на Debian/Ubuntu</title><link>http://feedproxy.google.com/~r/PaisPorradaDeBethrezen/~3/T6ZjgPxh0nU/network-unreachable-java-debian-ubuntu.html</link> <comments>http://blog.bethrezen.ru/2010/06/network-unreachable-java-debian-ubuntu.html#comments</comments> <pubDate>Fri, 04 Jun 2010 04:23:15 +0000</pubDate> <dc:creator>Bethrezen</dc:creator> <category><![CDATA[linux]]></category> <category><![CDATA[debian]]></category> <category><![CDATA[java]]></category> <category><![CDATA[sysctl]]></category> <category><![CDATA[ubuntu]]></category><guid isPermaLink="false">http://blog.bethrezen.ru/?p=269</guid> <description><![CDATA[Если у вас в Debian или Ubuntu не работают приложения, написанные на Java, ругаясь при этом как то так: 38 connect(22, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:72.5.124.95", &#38;sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28 6938 connect(22, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:72.5.124.95", &#38;sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 ENETUNREACH (Network is unreachable) Или вот так: Could not bind/listen. Network is unreachable. Лечится [...]]]></description> <content:encoded><![CDATA[<p>Если у вас в Debian или Ubuntu не работают приложения, написанные на <strong>Java</strong>, ругаясь при этом как то так:</p><p><code>38 connect(22, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:72.5.124.95", &amp;sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28<br
/> 6938 connect(22, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:72.5.124.95", &amp;sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 ENETUNREACH (Network is unreachable)<br
/> Или вот так: Could not bind/listen. Network is unreachable.<br
/> </code></p><p>Лечится это просто.</p><p>Редактируем файл <strong>/etc/sysctl.d/bindipv6only.conf</strong> и ставим там 0 вместо 1. Перегружаемся и всё работает! Проверено, у меня так hadoop, hbase не хотели запускаться.</p><p>Если хотите без перезагрузки, то можете ещё выполнить:</p><p><code><br
/> echo 0 &gt; /proc/sys/net/ipv6/bindv6only<br
/> sysctl net.ipv6.bindv6only=0<br
/> </code></p> <img src="http://feeds.feedburner.com/~r/PaisPorradaDeBethrezen/~4/T6ZjgPxh0nU" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://blog.bethrezen.ru/2010/06/network-unreachable-java-debian-ubuntu.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://blog.bethrezen.ru/2010/06/network-unreachable-java-debian-ubuntu.html</feedburner:origLink></item> <item><title>Список регионов яндекса</title><link>http://feedproxy.google.com/~r/PaisPorradaDeBethrezen/~3/jv3c3xCmNv0/spisok-regionov-yandeksa.html</link> <comments>http://blog.bethrezen.ru/2010/03/spisok-regionov-yandeksa.html#comments</comments> <pubDate>Sun, 28 Mar 2010 20:14:17 +0000</pubDate> <dc:creator>Bethrezen</dc:creator> <category><![CDATA[Free]]></category> <category><![CDATA[SEO]]></category> <category><![CDATA[yandex]]></category><guid isPermaLink="false">http://blog.bethrezen.ru/?p=260</guid> <description><![CDATA[Не для кого уже не секрет, что Яндекс умеет определять регион сайта. Делает он это автоматически по своим хитрым алгоритмам. С недавнего времени, каждый владелей сайта может сам задать регион сайта в Яндексе. Делается это через панель веб-мастера. А для сайтов в ЯК региональную пренадлежность определяют моедараторы Yandex Каталога. По умолчанию пользователь видит регион, в [...]]]></description> <content:encoded><![CDATA[<p>Не для кого уже не секрет, что Яндекс умеет определять регион сайта. Делает он это автоматически по своим хитрым алгоритмам. С недавнего времени, каждый владелей сайта может сам <strong>задать регион сайта в Яндексе</strong>. Делается это через панель веб-мастера. А для сайтов в ЯК региональную пренадлежность определяют моедараторы Yandex Каталога.<span
id="more-260"></span></p><p>По умолчанию пользователь видит регион, в котором он находится, что определяется по IP провайдера. За выдачу по региону отвечает одноименная настройка. Изменив её можно сразу же заметить разницу в выдаче по геозависимым запросам(например пицца, университет, такси). В адресной строке браузера можно заметить параметр <strong>lr=13</strong>, где 13 - это код региона в поисковике. Он то как раз и определяет нашу выдачу.</p><p>Так вот, к чему я это всё. Сегодня мне потребовался список регионов. Нашёл у Жилинского, но структура того списка мне не понравилась. Нашёл ещё один список на форуме Searchengines.ru. Тот тоже как то не так. Ну и решил я напарсить коды регионов с Яндекса. В итоге получилась таблица типа adjancy list(сопоставление предков и потомков через id -&gt; parent).</p><p>Короче говоря, вот вам возможность скачать <a
title="коды регионов яндекса" href="http://qoh.in/yandex-regions-dump.sql">список регионов яндекса</a> в виде MySQL дампа. Как это применять - уже ваш вопрос. За актуальность и достоверность не ручаюсь, но на первый взгляд вроде всё нормально.</p><p>BONUS: А вот как выглядит редактирование регионов в моей незарелизенной ещё пока что CMS-ке:</p><div
id="attachment_261" class="wp-caption alignnone" style="width: 310px"><a
href="http://blog.bethrezen.ru/wp-content/uploads/2010/03/regions.png"><img
class="size-medium wp-image-261" title="Yandex Regions Codes Admin" src="http://blog.bethrezen.ru/wp-content/uploads/2010/03/regions-300x240.png" alt="regions 300x240 Список регионов яндекса" width="300" height="240" /></a><p
class="wp-caption-text">Скриншот админки регионов по яндексу</p></div> <img src="http://feeds.feedburner.com/~r/PaisPorradaDeBethrezen/~4/jv3c3xCmNv0" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://blog.bethrezen.ru/2010/03/spisok-regionov-yandeksa.html/feed</wfw:commentRss> <slash:comments>1</slash:comments> <feedburner:origLink>http://blog.bethrezen.ru/2010/03/spisok-regionov-yandeksa.html</feedburner:origLink></item> <item><title>Ресайз PNG картинок c прозрачностью в Thunar</title><link>http://feedproxy.google.com/~r/PaisPorradaDeBethrezen/~3/VeviGU06NCQ/resizing-png-images-in-thunar-with-transparency.html</link> <comments>http://blog.bethrezen.ru/2010/01/resizing-png-images-in-thunar-with-transparency.html#comments</comments> <pubDate>Sat, 09 Jan 2010 21:11:50 +0000</pubDate> <dc:creator>Bethrezen</dc:creator> <category><![CDATA[linux]]></category> <category><![CDATA[bash]]></category> <category><![CDATA[png]]></category> <category><![CDATA[resize]]></category><guid isPermaLink="false">http://blog.bethrezen.ru/?p=253</guid> <description><![CDATA[Сегодня мне пришлось решить рутиную задачу - изменить размер PNG картинок не теряя при этом прозрачность. Искать какой либо софт было лень, поэтому решил написать bash скрипт, который всё сделает за меня. Идея позаимствована с Crunchbang linux wiki. Создаём папку ~/bin и там файлик resize.sh следующего содержимого: #! /bin/sh for file; do if &#91; ! [...]]]></description> <content:encoded><![CDATA[<p>Сегодня мне пришлось решить рутиную задачу - <strong>изменить размер PNG картинок</strong> не теряя при этом прозрачность. Искать какой либо софт было лень, поэтому решил написать bash скрипт, который всё сделает за меня.</p><p><span
id="more-253"></span></p><p>Идея позаимствована с Crunchbang linux wiki.</p><p>Создаём папку <code>~/bin</code> и там файлик <strong>resize.sh</strong> следующего содержимого:</p><div
class="wp_syntax"><div
class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#! /bin/sh</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #c20cb9; font-weight: bold;">file</span>; <span style="color: #000000; font-weight: bold;">do</span>
 <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-e</span> <span style="color: #007800;">$file</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
 <span style="color: #7a0874; font-weight: bold;">continue</span>
 <span style="color: #000000; font-weight: bold;">fi</span>
 <span style="color: #007800;">toname</span>=<span style="color: #ff0000;">&quot;./&quot;</span>$<span style="color: #7a0874; font-weight: bold;">&#40;</span> <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$file</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cut</span> <span style="color: #660033;">-f1</span> -d.<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #ff0000;">&quot;_&quot;</span><span style="color: #007800;">$1</span><span style="color: #ff0000;">&quot;.png&quot;</span>
 convert <span style="color: #660033;">-channel</span> A <span style="color: #660033;">-geometry</span> <span style="color: #007800;">$1</span>x<span style="color: #007800;">$1</span> <span style="color: #660033;">-quality</span> <span style="color: #000000;">100</span> <span style="color: #007800;">$file</span> <span style="color: #007800;">$toname</span>
<span style="color: #000000; font-weight: bold;">done</span></pre></div></div><p>Делаем его выполняемым (<code>chmod +x ~/bin/resize.sh</code>), добавляем в <strong>~/.bashrc</strong> <code>export PATH=$PATH;~/bin</code> чтобы мы могли вызывать это откуда нам вздумается и в терминале выполняем <code>source ~/.bashrc</code> чтобы наши изменения вступили в силу.</p><p>Теперь берём наш любимый файл-менеджер, например <strong>Thunar</strong>(стандартный в XFCE). Жмём правой кнопкой по картинкам, которые надо отресайзить, допустим до 32 пикселей, и "выбираем открыть  с помощью".<br
/> Там нам надо выбрать пункт "комманда" и вписать туда: "<code>resize.sh 32 %N</code>". не забудте снять галочку "Использовать эту программу для запуска файлов такого типа", а то Thunar будет <em>запускать ресайз PNG картинок</em>, вместо например просмоторщика картинок xfce.</p><p>Всё, теперь у нас появится файл вида <code>старый_файл_32.png</code>. Причем эта команда действует даже для несколько выбранных одновременно картинок. И никакой потери прозрачности PNG!</p><p>Для JPG надо в скрипте менять расширение и убирать <code>-channel A</code>, который отвечает собственно за transparency(прозрачность). Для GIF картинок его скорее всего надо будет оставить.</p><p>Вот так. Пользуйтесь на здоровье.</p> <img src="http://feeds.feedburner.com/~r/PaisPorradaDeBethrezen/~4/VeviGU06NCQ" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://blog.bethrezen.ru/2010/01/resizing-png-images-in-thunar-with-transparency.html/feed</wfw:commentRss> <slash:comments>1</slash:comments> <feedburner:origLink>http://blog.bethrezen.ru/2010/01/resizing-png-images-in-thunar-with-transparency.html</feedburner:origLink></item> <item><title>Перенос MySQL в другую папку/раздел на Debian/Ubuntu</title><link>http://feedproxy.google.com/~r/PaisPorradaDeBethrezen/~3/xY0sKgYe1cQ/perenos-mysql-v-druguyu-papku-razdel-na-debian-ubuntu.html</link> <comments>http://blog.bethrezen.ru/2009/12/perenos-mysql-v-druguyu-papku-razdel-na-debian-ubuntu.html#comments</comments> <pubDate>Sat, 19 Dec 2009 08:51:38 +0000</pubDate> <dc:creator>Bethrezen</dc:creator> <category><![CDATA[linux]]></category> <category><![CDATA[apparmor]]></category> <category><![CDATA[debian]]></category> <category><![CDATA[mysql]]></category> <category><![CDATA[ubuntu]]></category><guid isPermaLink="false">http://blog.bethrezen.ru/?p=244</guid> <description><![CDATA[Недавно мне пришлось переместить данные MySQL в другую папку(а точнее на другой раздел) на Debian Linux 5.0.3. Логично, что простым переносом файлов тут не отделаешься, надо что-то где-то прописать. По-умолчанию данные MySQL лежат в /var/lib/mysql. Мне захотелось, чтобы они были в /home/mysql. Переносим папку mysql куда нам нужно, затем лезем в конфиг MySQL (/etc/mysql/my.cnf). Там [...]]]></description> <content:encoded><![CDATA[<p>Недавно мне пришлось переместить данные MySQL в другую папку(а точнее на другой раздел) на <strong>Debian Linux 5.0.3</strong>.</p><p>Логично, что простым переносом файлов тут не отделаешься, надо что-то где-то прописать.</p><p>По-умолчанию данные MySQL лежат в <strong>/var/lib/mysql</strong>. Мне захотелось, чтобы они были в <strong>/home/mysql</strong>. Переносим папку mysql куда нам нужно, затем лезем в конфиг MySQL (<strong>/etc/mysql/my.cnf</strong>).</p><p>Там есть опция:</p><div
class="wp_syntax"><div
class="code"><pre class="ini" style="font-family:monospace;">datadir         <span style="color: #000066; font-weight:bold;">=</span> /var/lib/mysql</pre></div></div><p>Вот её мы заменяем на следующее:</p><div
class="wp_syntax"><div
class="code"><pre class="ini" style="font-family:monospace;">datadir         <span style="color: #000066; font-weight:bold;">=</span> /home/mysql</pre></div></div><p>Пробуем перезапустить наш MySQL сервер (/etc/init.d/mysql restart) и в итоге у нас ничего не запускается.</p><p>Смотрим tail /var/log/messages и видим приблизительно такое:</p><div
class="wp_syntax"><div
class="code"><pre class="abap" style="font-family:monospace;"> kernel<span style="color: #808080;">:</span> <span style="color: #808080;">&#91;</span> <span style="color: #3399ff;">2714.258037</span><span style="color: #808080;">&#93;</span> audit<span style="color: #808080;">&#40;</span><span style="color: #3399ff;">1227462526.718</span><span style="color: #808080;">:</span><span style="color: #3399ff;">13</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">:</span> <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">type</span><span style="color: #800080;">=</span><span style="color: #3399ff;">1503</span> operation<span style="color: #800080;">=</span><span style="color: #808080; font-style: italic;">&quot;inode_create&quot; requested_mask=&quot;w::&quot; denied_mask=&quot;w::&quot; name=&quot;/home/mysql/yii.test&quot; pid=19659 profile=&quot;/usr/sbin/mysqld&quot; namespace=&quot;default&quot;</span>
 kernel<span style="color: #808080;">:</span> <span style="color: #808080;">&#91;</span> <span style="color: #3399ff;">2714.310572</span><span style="color: #808080;">&#93;</span> audit<span style="color: #808080;">&#40;</span><span style="color: #3399ff;">1227462526.770</span><span style="color: #808080;">:</span><span style="color: #3399ff;">14</span><span style="color: #808080;">&#41;</span><span style="color: #808080;">:</span> <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">type</span><span style="color: #800080;">=</span><span style="color: #3399ff;">1503</span> operation<span style="color: #800080;">=</span><span style="color: #808080; font-style: italic;">&quot;inode_permission&quot; requested_mask=&quot;rw::&quot; denied_mask=&quot;rw::&quot; name=&quot;/home/mysql/ibdata1&quot; pid=19659 profile=&quot;/usr/sbin/mysqld&quot; namespace=&quot;default&quot;</span></pre></div></div><p>Это нам говорит о том, что политика <strong>AppArmor</strong> запрещает всякие манипуляции мусклу в новой папке. И это естественно, ведь AppArmor думает, что базы лежат всё там же, в /var/lib/mysql.</p><p>Значит надо переписать конфиг AppArmor. Открываем и редактируем <strong>/etc/apparmor.d/usr.sbin.mysqld</strong> . В нём меняем всё, где упоминается /var/lib/mysql на /home/mysql. Затем перезапускаем AppArmor и <strong>MySQL</strong>:</p><div
class="wp_syntax"><div
class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> service apparmor restart
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>mysql restart</pre></div></div><p>И у нас всё работает! Такая же схема для Ubuntu.</p> <img src="http://feeds.feedburner.com/~r/PaisPorradaDeBethrezen/~4/xY0sKgYe1cQ" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://blog.bethrezen.ru/2009/12/perenos-mysql-v-druguyu-papku-razdel-na-debian-ubuntu.html/feed</wfw:commentRss> <slash:comments>2</slash:comments> <feedburner:origLink>http://blog.bethrezen.ru/2009/12/perenos-mysql-v-druguyu-papku-razdel-na-debian-ubuntu.html</feedburner:origLink></item> </channel> </rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using apc
Page Caching using apc
Database Caching 19/78 queries in 0.042 seconds using apc

Served from: blog.bethrezen.ru @ 2012-04-28 12:44:12 -->

