<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5223041025020492866</id><updated>2024-09-06T14:50:13.913+10:00</updated><category term="закладки"/><category term="php"/><category term="seo"/><category term="symfony"/><category term="css"/><category term="debian"/><category term="html"/><category term="linux"/><category term="umi"/><category term="bitrix"/><category term="cms"/><category term="css3"/><category term="doctrine"/><category term="hosting"/><category term="javascript"/><category term="simpletest"/><category term="sniplets"/><category term="unit-test"/><category term="web-design"/><category term="обзор"/><category term="alac"/><category term="billing"/><category term="blogger"/><category term="bot"/><category term="control panel"/><category term="cue"/><category term="cuetools"/><category term="flac"/><category term="fonts"/><category term="highlight"/><category term="http"/><category term="jquery"/><category term="less"/><category term="lighttpd"/><category term="lime"/><category term="linux. bash"/><category term="livejournal"/><category term="nginx"/><category term="parser"/><category term="python"/><category term="sfDoctrineGuardPluginsfDoctrineGuardPlugin"/><category term="tdd"/><category term="twill"/><category term="yml"/><category term="безопасность"/><title type='text'>codejutsu</title><subtitle type='html'>Блог о быдлокодинге, быдлоадминстве, быдлосео, короче быдло...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://codeninja.ru/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://codeninja.ru/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-3892079950403570384</id><published>2013-04-30T17:21:00.004+11:00</published><updated>2013-04-30T20:31:42.943+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="alac"/><category scheme="http://www.blogger.com/atom/ns#" term="cue"/><category scheme="http://www.blogger.com/atom/ns#" term="cuetools"/><category scheme="http://www.blogger.com/atom/ns#" term="flac"/><category scheme="http://www.blogger.com/atom/ns#" term="linux. bash"/><title type='text'>Конвертируем FLAC в ALAC в linux</title><content type='html'>&lt;br /&gt;
Для начала прочитаем cue и разобьем файлы на отдельные треки:&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;
shnsplit -f file.cue -t %n-%t -o flac file.flac
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Чтобы не потерять теги:
&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;
cuetag file.cue *.flac
&lt;/code&gt;&lt;/pre&gt;
Далее сконвертируем каждый отдельный трек из FLAC в ALAC&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;
avconv -i 01-file.flac -acode 01-file.m4a

&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Как видно все просто, даже проще чем этих ваших Windows и Mac-ах :)</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/3892079950403570384/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2013/04/flac-alac-linux.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/3892079950403570384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/3892079950403570384'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2013/04/flac-alac-linux.html' title='Конвертируем FLAC в ALAC в linux'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-7566300869742068907</id><published>2013-02-12T12:18:00.002+11:00</published><updated>2013-02-12T12:18:34.728+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bitrix"/><title type='text'>Правда о Bitrix</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwfkaLKZa2WV1L_AU9OMKFw4e9dMOKCt4MU4YZtgqk80Fe2OsD0E79VBQ5BFkqmVBA2TomSqK28hF6LvrG0-1iuwxmRC9Z5qYfaQKkswv2KkBy9JrFmrbl0FiLpPuHcbjCk24Axkis3Ro/s1600/1c-bitrix-logo-vert.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;124&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwfkaLKZa2WV1L_AU9OMKFw4e9dMOKCt4MU4YZtgqk80Fe2OsD0E79VBQ5BFkqmVBA2TomSqK28hF6LvrG0-1iuwxmRC9Z5qYfaQKkswv2KkBy9JrFmrbl0FiLpPuHcbjCk24Axkis3Ro/s200/1c-bitrix-logo-vert.gif&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Bitrix - это не CMS. Да, именно так. Чтобы вам не говорили маркетологи 1C. Битрикс - это не CMS, а CMF (Content Management Framework): не система управления сайтом, а конструктор для создания системы управления сайтом.&lt;br /&gt;
Сравнивать Bitrix с цмс типа joomla просто бессмысленно. Все равно, что сравнивать жигули с танком. &lt;br /&gt;
Давайте тогда оценивать его как CMF.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Если делая сайт на джумле или вородпрессе вам нет необходимости знать как там все устроенно внутри, то в случаи с битрикосом ва нужно всецело погружаться в быдло-код из которого целиком и полностью состоит Bitrix. и... о ужас!!! Вам придется писать точно такой же быдло-код.&lt;br /&gt;
&lt;br /&gt;
Как framework Bitrix весьма гавенный.&lt;br /&gt;
Нормальный фреймворк должен обязывать разработчиков использовать какой-то общий стандарт кодирования и оформления кода. В битриксе его просто нет, абсолютно не поятные названия переменных, кривые вызовы функций, куча маленьких файлов по которым нужно размазать html-шаблон. Да что там говорить, эти люди вообще кажется не знают зачем нужно отделять html-код от логики, и что такое MVC.&lt;br /&gt;
&lt;br /&gt;
Что там говрить если они до сих пор используют кодировку windows-1251 вместо православной utf-8.&lt;br /&gt;
Возьмем самый известный опенсурс CMF Drupal.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGPXKsVqJ1-6WpwAKdOgHXHV9MrobWJXWGLVp2Qj2M2M_khCTji8XzpO8zbqbbivHMgNhGp5P-GWbzgD68BA8aQSSgL6d5qf9UZCQXoDY4PRoVpB9qZQUCMfbqcsIRrtbRtK7WvgeO0xE/s1600/drupal-logo.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGPXKsVqJ1-6WpwAKdOgHXHV9MrobWJXWGLVp2Qj2M2M_khCTji8XzpO8zbqbbivHMgNhGp5P-GWbzgD68BA8aQSSgL6d5qf9UZCQXoDY4PRoVpB9qZQUCMfbqcsIRrtbRtK7WvgeO0xE/s200/drupal-logo.jpg&quot; width=&quot;174&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Он такой же старый как и Bitrix, но это не мешает ему иметь нормальные человеческие стандарты оформления кода. И человеческое соглашение по наименованиям переменных и функций.&lt;br /&gt;
Drupal и Bitrix создавались тогда, когда нормальной поддержки OOP в PHP просто не было. Но если Drupal развивается, то Bitrix просто обрастает костылями и гниет.&lt;br /&gt;
&lt;br /&gt;
Нужно отдать должное разработчикам битрикса, они написали очень много кода, в bitrix есть компоненты для выполнения почти любых задач. Битрикс это очень много кода, это огромный кусок кода, который уже начал гнить и разлогаться.&lt;br /&gt;
Единственный сопоб спасти Bitrix это выбрасть все и переписать его с самого начала. Но разработчии 1C посчитали что просто дешевле проще навешивать новый функционал поверх старого. Да и переписывать огромную кучу кода дорого. Потому битрикс в том виде в каком есть сейчас обречен.&lt;br /&gt;
Единственное за что можно похвалить битрикс так это за умение продавать свой продукт. Битрикс сегодня это лидер среди российским коммерческих CMS. Учитесь у Bitrix как нужно продавать свой продукт, но упаси вас бог брать с них пример в написание кода.&lt;br /&gt;
&lt;br /&gt;
Данная заметка — троллинг битриксоидов, не судите строго.</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/7566300869742068907/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2013/02/bitrix.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/7566300869742068907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/7566300869742068907'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2013/02/bitrix.html' title='Правда о Bitrix'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwfkaLKZa2WV1L_AU9OMKFw4e9dMOKCt4MU4YZtgqk80Fe2OsD0E79VBQ5BFkqmVBA2TomSqK28hF6LvrG0-1iuwxmRC9Z5qYfaQKkswv2KkBy9JrFmrbl0FiLpPuHcbjCk24Axkis3Ro/s72-c/1c-bitrix-logo-vert.gif" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-5184827784340835730</id><published>2011-10-18T13:02:00.002+11:00</published><updated>2013-02-12T12:09:15.155+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="lime"/><category scheme="http://www.blogger.com/atom/ns#" term="simpletest"/><category scheme="http://www.blogger.com/atom/ns#" term="symfony"/><category scheme="http://www.blogger.com/atom/ns#" term="unit-test"/><title type='text'>Как подружить SimpleTest и lime</title><content type='html'>Штатный симфонивский unit-testing framework &lt;i&gt;lime&lt;/i&gt;, конечно, имеет свои преимущества, но для сложных юнит-тестов он не годится ввиду своей простоты.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV571fa4KqEmu2HZufBqz5w0e8Pd3kRvl2cUO8UynTZfISYep9C1huKJbmlsntWMb4psnZJZ1a5Si_vgOylNSXNwB4GdGDgFzYob1MHR-TBjN4Vun7iU4p8NBdfjXXe0UswdPjRVkpvjI/s1600/lime.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;277&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV571fa4KqEmu2HZufBqz5w0e8Pd3kRvl2cUO8UynTZfISYep9C1huKJbmlsntWMb4psnZJZ1a5Si_vgOylNSXNwB4GdGDgFzYob1MHR-TBjN4Vun7iU4p8NBdfjXXe0UswdPjRVkpvjI/s320/lime.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Если нужно протестировать, что-то сложное, то тут лучше подходит какой-нибудь более xUnit фреймворк, например &lt;i&gt;SimpleTest&lt;/i&gt; или &lt;i&gt;PHPUni&lt;/i&gt;t. Я использую SimpleTest (так исторически сложилось). Он работает замечательно, но есть одна проблема. Он не дружит с командой:&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;./symfony test:unit &lt;/code&gt;
&lt;/pre&gt;которая запускает все тесты разом.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Очевидным способом решения может быть отказа от данной команды вообще и использование TestSuite для запуска всех тестов.&lt;br /&gt;
Так все у меня и работало, пока не начали возникать неуловимые плавающие баги.&lt;br /&gt;
Поэтому был выбран второй способ: &lt;b&gt;подружить SimpleTest и lime&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Изучение, кода &lt;i&gt;lime&lt;/i&gt; дало понять, что при запуске пресловутой команды «&lt;i&gt;test:unit&lt;/i&gt;», для каждого теста делается следующее:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Создается временный php файл с хитрым содержанием.&lt;/li&gt;
&lt;li&gt;При помощи passthru запускается временный файл, который запускает тест и сохраняет результат его работы (сериализоаванный массив) в другой временный файл.&lt;/li&gt;
&lt;li&gt;Читается фаил с результатами работы теста.&lt;/li&gt;
&lt;li&gt;Удаляются все созданные временные файлы.&lt;/li&gt;
&lt;li&gt;Вывод результатов&lt;/li&gt;
&lt;/ul&gt;Самая сложность заключается в сериализованном массиве, который выдает класс lime_test. Чтобы все это работало, мы должны заставить &lt;i&gt;SimpleTest&lt;/i&gt; записать результат своей работы в массив правильного формата и передать &lt;i&gt;lime&lt;/i&gt;. &lt;br /&gt;
Получилось примерно следующее:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;php&quot;&gt;
// делаем защищенную переменную открытой для записи из вне
class public_morozov_lime_test extends lime_test
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static function setResultArray($array)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parent::$all_results = $array;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}

class LimeReporter extends TextReporter
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected $lime_test;

&amp;nbsp;&amp;nbsp;&amp;nbsp; public function __construct()
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;lime_test = new lime_test();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return parent::__construct();
&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp; function paintFooter($test_name) {

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // делаем статиску для лайма
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $lime_result = public_morozov_lime_test::to_array();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $lime_result[count($lime_result) - 1][&#39;stats&#39;][&#39;plan&#39;] = $this-&amp;gt;getPassCount() + $this-&amp;gt;getFailCount();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $lime_result[count($lime_result) - 1][&#39;stats&#39;][&#39;total&#39;] = $this-&amp;gt;getPassCount() + $this-&amp;gt;getFailCount();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $lime_result[count($lime_result) - 1][&#39;stats&#39;][&#39;failed&#39;] = $this-&amp;gt;makeLimeArray($this-&amp;gt;getFailCount());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $lime_result[count($lime_result) - 1][&#39;stats&#39;][&#39;passed&#39;] = $this-&amp;gt;makeLimeArray($this-&amp;gt;getPassCount());

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public_morozov_lime_test::setResultArray($lime_result);


&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function makeLimeArray($count)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $result = array();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for ($i = 1; $i &amp;lt;= $count; ++$i) $result[] = $i;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $result;
&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;/code&gt;
&lt;/pre&gt;&lt;br /&gt;
Вызывается в тесте примерно так:&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;php&quot;&gt;
// код теста
.....
// вызов нашего теста
$test = new SomethingTest();
$test-&amp;gt;run(new LimeReporter());

&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
В чем соль? При помощи анти-паттерна «&lt;a href=&quot;http://ru.wikipedia.org/wiki/%D0%90%D0%BD%D1%82%D0%B8%D0%BF%D0%B0%D1%82%D1%82%D0%B5%D1%80%D0%BD#.D0.A8.D1.83.D1.82.D0.BE.D1.87.D0.BD.D1.8B.D0.B5_.D0.B0.D0.BD.D1.82.D0.B8-.D0.BF.D0.B0.D1.82.D1.82.D0.B5.D1.80.D0.BD.D1.8B&quot;&gt;Паблик Морозов&lt;/a&gt;», мы «ломаем» &lt;i&gt;lime_test&lt;/i&gt;, передавая результаты работа тестов на &lt;i&gt;SimpleTest&lt;/i&gt; в &lt;i&gt;lime&lt;/i&gt;. Как говорится в каждой шутке, есть доля правды.</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/5184827784340835730/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2011/10/simpletest-lime.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/5184827784340835730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/5184827784340835730'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2011/10/simpletest-lime.html' title='Как подружить SimpleTest и lime'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV571fa4KqEmu2HZufBqz5w0e8Pd3kRvl2cUO8UynTZfISYep9C1huKJbmlsntWMb4psnZJZ1a5Si_vgOylNSXNwB4GdGDgFzYob1MHR-TBjN4Vun7iU4p8NBdfjXXe0UswdPjRVkpvjI/s72-c/lime.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-1851423239353171162</id><published>2011-05-04T14:09:00.001+11:00</published><updated>2011-05-04T14:10:35.398+11:00</updated><title type='text'>Userator накрутка поведенческих факторов</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://userator.ru/?par=7860&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT2ym6Jz5IIzQMhd8KfGXHuau9xK5t1WrLWjBS-omAZp8UKGZywGeghgLHkgwDkqlJxMO9YbbfCPN_qf4Lzvc76fPPScxJKzw0vjqnFjy1Mnld33PO7bPJBwqdBhvr9BSFvt6lxDNe6JY/s1600/logo.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Сервис накручивает поведенческие факторы Яндекса, Гугла и Рамблера. Собираюсь проверить его эффективность, на примере гугла. Хотя, идеально чистый эксперимент не получится.&lt;br /&gt;
Если все правда, то сервис должен дать быстрый рост позиций в поисковике. Поживем увидим.&lt;br /&gt;
Это пост не рекламный, но однако вот моя &lt;a target=&quot;_blank&quot; href=&quot;http://userator.ru/?par=7860&quot;&gt;реферальная ссылка&lt;/a&gt;, если кто-то тоже хочет попробовать :)&lt;br /&gt;
О результатах отпишусь.</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/1851423239353171162/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2011/05/userator.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/1851423239353171162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/1851423239353171162'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2011/05/userator.html' title='Userator накрутка поведенческих факторов'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiT2ym6Jz5IIzQMhd8KfGXHuau9xK5t1WrLWjBS-omAZp8UKGZywGeghgLHkgwDkqlJxMO9YbbfCPN_qf4Lzvc76fPPScxJKzw0vjqnFjy1Mnld33PO7bPJBwqdBhvr9BSFvt6lxDNe6JY/s72-c/logo.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-8284093426865369256</id><published>2011-04-22T12:54:00.001+11:00</published><updated>2011-04-22T12:55:39.965+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="закладки"/><title type='text'>Сервисы web 2.0 комментариев</title><content type='html'>Хотите прикрутить комменты к своему сайту? Не проблема. Вот сервисы, которые помогут вам сделать это:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;DISQUS Comments &lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://disqus.com/&quot;&gt;http://disqus.com/&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMBwaVGPrD1DvNFzqKsqRudGiWE4-YiV43BQyNIup985xjatscl-PvS141SHNCYvkzqAciTw4JNJ-DgTttrUPXacgqG4kQHWkmajopt_BBArcTn2vVMR1zBBbGoOxtzFvDFQ1AL-fHjGY/s1600/DISQUS+Comments+%7C+Powering+Discussion+on+the+Web_1280213488819.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMBwaVGPrD1DvNFzqKsqRudGiWE4-YiV43BQyNIup985xjatscl-PvS141SHNCYvkzqAciTw4JNJ-DgTttrUPXacgqG4kQHWkmajopt_BBArcTn2vVMR1zBBbGoOxtzFvDFQ1AL-fHjGY/s320/DISQUS+Comments+%7C+Powering+Discussion+on+the+Web_1280213488819.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;IntenseDebate&amp;nbsp;&lt;/b&gt; &lt;br /&gt;
&lt;a href=&quot;http://intensedebate.com/&quot;&gt;http://intensedebate.com/&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0tCe7oU3zrcvQEuOv1yUqpFSyh4TyfXmT0oeed6z2wqCewX6xgprAnGK1WUgO23xa1eplg77ycSwC2u-G4LtdoU6DrF1xu5A0OSM2kVyd1QbwElPxq0rXDW_Qg0uTYO6KurQYHOZWZeE/s1600/IntenseDebate+comments+enhance+and+encourage+conversation+on+your+blog+or+website_1280213976489.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0tCe7oU3zrcvQEuOv1yUqpFSyh4TyfXmT0oeed6z2wqCewX6xgprAnGK1WUgO23xa1eplg77ycSwC2u-G4LtdoU6DrF1xu5A0OSM2kVyd1QbwElPxq0rXDW_Qg0uTYO6KurQYHOZWZeE/s320/IntenseDebate+comments+enhance+and+encourage+conversation+on+your+blog+or+website_1280213976489.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Instacomment&lt;/b&gt;&amp;nbsp; &lt;br /&gt;
&lt;a href=&quot;http://www.instacomment.com/&quot;&gt;http://www.instacomment.com/&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn9qYoDAWM9fFf31wC8LxGS4pPp-fj2Tl8RPlfUTZ3d1jeMWg4pfHl3gnUwglEx_g5DifP8r7ZFAEOdOBkNpIx50pTSzmQafdZqaI87ejoJoPW-sXMo5Vj7wiSxmusJP8rPXacCnUw6gM/s1600/Instacomment+-+Add+a+Free+Instant+Comment+System+to+Any+Website+-+Free+Comment+Service_1280213693220.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn9qYoDAWM9fFf31wC8LxGS4pPp-fj2Tl8RPlfUTZ3d1jeMWg4pfHl3gnUwglEx_g5DifP8r7ZFAEOdOBkNpIx50pTSzmQafdZqaI87ejoJoPW-sXMo5Vj7wiSxmusJP8rPXacCnUw6gM/s320/Instacomment+-+Add+a+Free+Instant+Comment+System+to+Any+Website+-+Free+Comment+Service_1280213693220.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Также свои виджеты комментариев предлагают:&lt;br /&gt;
&lt;b&gt;Google&lt;/b&gt; &lt;a href=&quot;http://www.google.com/friendconnect/&quot;&gt;http://www.google.com/friendconnect/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Facebook&lt;/b&gt; &lt;a href=&quot;http://developers.facebook.com/docs/reference/plugins/comments&quot;&gt;http://developers.facebook.com/docs/reference/plugins/comments&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;vKontakte&lt;/b&gt; &lt;a href=&quot;http://vkontakte.ru/developers.php?p=Comments&quot;&gt;http://vkontakte.ru/developers.php?p=Comments&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
Короче есть куда разгуляться.&lt;br /&gt;
&lt;br /&gt;
Специализированные сервисы обладают более широкими возможностями, в том числе и по настройке внешнего вида. Также полезными могут быть: импорт/экспорт комментариев в популярные CMS, антиспам, модерация и платные плюшки. Эти сервисы не привязывают вас к &quot;большому брату&quot; в отличии от виджетов от Вконтакта.&lt;br /&gt;
С другой стороны, виджет вконтакта или фейсбука позволяет вам привлечь посетителей именно из этих сети. Короче, выбор за вами.</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/8284093426865369256/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2011/04/web-20.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/8284093426865369256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/8284093426865369256'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2011/04/web-20.html' title='Сервисы web 2.0 комментариев'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMBwaVGPrD1DvNFzqKsqRudGiWE4-YiV43BQyNIup985xjatscl-PvS141SHNCYvkzqAciTw4JNJ-DgTttrUPXacgqG4kQHWkmajopt_BBArcTn2vVMR1zBBbGoOxtzFvDFQ1AL-fHjGY/s72-c/DISQUS+Comments+%7C+Powering+Discussion+on+the+Web_1280213488819.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-5371992712829114035</id><published>2011-03-07T17:30:00.002+10:00</published><updated>2011-03-09T10:52:43.224+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="lighttpd"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="nginx"/><title type='text'>nginx vs lighttpd как реверс прокси</title><content type='html'>И так, после попытки настроить &lt;b&gt;nginx&lt;/b&gt; и &lt;b&gt;lighttpd&lt;/b&gt; (лайти) в качестве реверс прокси для ускорения apache могу сказать. Что прославленный lighttpd совершенно для этого не годится. Нет. В нем конечно есть эта возможность, но nginx его тут таки сделал.&lt;br /&gt;
&lt;br /&gt;
А все дело в чем? Плагин mod_proxy для лайти не передает апачу заголовок Host, соответственно он не может подгрузить правильный виртуальный хост. Если у вас на сервере один сайт, то все нормально. Можно открывать для каждого сайта свой порт или делать отдельный ip-адрес. Оно вам надо?&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы в лайти все работало, как надо официальная wiki предлагает сделать патч &lt;a href=&quot;http://redmine.lighttpd.net/wiki/1/Docs:ModProxy&quot;&gt;http://redmine.lighttpd.net/wiki/1/Docs:ModProxy&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Короче я не стал мучатся с многообещающим лайти и заюзал старый добрый nginx.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
server {

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listen&amp;nbsp;&amp;nbsp; 80; ## listen for ipv4
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listen&amp;nbsp;&amp;nbsp; [::]:80 default ipv6only=on; ## listen for ipv6

&amp;nbsp;&amp;nbsp;&amp;nbsp;     server_name&amp;nbsp; _;
&amp;nbsp;&amp;nbsp;&amp;nbsp;     server_name_in_redirect&amp;nbsp; off;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; access_log&amp;nbsp; /var/log/nginx/proxy.access.log;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location / {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; access_log&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; off;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_pass http://127.0.0.1:8080;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_set_header X-Real-IP&amp;nbsp; $remote_addr;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_set_header Host $host;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}
&lt;/code&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/5371992712829114035/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2011/03/nginx-vs-lighttpd.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/5371992712829114035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/5371992712829114035'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2011/03/nginx-vs-lighttpd.html' title='nginx vs lighttpd как реверс прокси'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-1046330741296407737</id><published>2010-10-14T16:58:00.007+11:00</published><updated>2011-04-21T11:41:10.940+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bot"/><category scheme="http://www.blogger.com/atom/ns#" term="http"/><category scheme="http://www.blogger.com/atom/ns#" term="livejournal"/><category scheme="http://www.blogger.com/atom/ns#" term="parser"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="twill"/><title type='text'>Пишем &quot;бота&quot; для livejournal на twill</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;99&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz19BWHgqf-TLyNzhR3h0Wb6mEfCOAx_zLsRaA2d5Np8nT_iGV7joxGqMidFPLLZ4iwp3IU9ePaLei9y4h2UBL-8hQeSInbHW6JadOxQHr5NWabKH9V0tyaeFUMYnLmRPw8-U5K7blJjU/s200/Untitled-1.png&quot; width=&quot;200&quot; /&gt;&lt;/div&gt;&lt;br /&gt;
Пожалуй, редкий программист никогда не задумывался о написании ботов и парсеров сайтов. Что неудивительно. В сети есть множество сайтов с кучей полезного контента, который хочется утащить или нужные сервисы, которыми хочется воспользоваться в автоматическом режиме, а кому-то не дает покоя слава google.&lt;br /&gt;
&lt;br /&gt;
Зачастую, боты пишут с нуля на php, python и других языках высокого уровня. Программисты вручную формируют HTTP запросы, читают cookie, парсят регулярками страницы, чтобы найти ссылки, веб-формы и т. п. Но зачем?&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Ведь любой бот по сути делает тоже что и браузер. Зачем каждый раз писать браузер? Вот было бы неплохо получить в свое распоряжение эмулятор браузера.&lt;br /&gt;
&lt;br /&gt;
В &lt;a href=&quot;http://code-jutsu.blogspot.com/search/label/symfony&quot;&gt;symfony&lt;/a&gt; есть класс &lt;a href=&quot;http://www.symfony-project.org/api/1_4/sfBrowser&quot;&gt;sfBrowser&lt;/a&gt;  эмулирующий браузер, который удобно использовать для функционального  тестирования symfony-приложений. Но речь сейчас не о нем, а питоновской  программке twill. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;twill&lt;/b&gt;.&lt;br /&gt;
Сайт: &lt;a href=&quot;http://twill.idyll.org/&quot;&gt;http://twill.idyll.org/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Twill - это библиотека на python, и также интерпретатор языка, который позволяет ходить по сайтам, парзить веб-формы, принимать/отправлять cookies. В общем то что нам нужно.&lt;br /&gt;
&lt;br /&gt;
С его помощью можно писать функциональные тесты, ботов и проводить стресс-тестирование по заданному сценарию.&lt;br /&gt;
&lt;br /&gt;
Короче, поехали:&lt;br /&gt;
&lt;br /&gt;
Сейчас я напишу скрипт позволяющий управлять livejournal из консоли. (На самом деле я просто хотел автоматизировать добавление пользователей в друзья, для раскрутки своего блога)&lt;br /&gt;
&lt;br /&gt;
Ставим twill:&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;aptitude install python-twill&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Интерпретатор twill запускается так.&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;twill-sh&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Создаем файл jj_login.twill (он будет выполнять авторизацию на livejournal)&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;python&quot;&gt;
# ставим юзер агент как у нашего любимого браузера
agent &quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)&quot;
# идем на сайт
go http://www.livejournal.com/
# форма авторизации имеет номер 1. по нему и будем обращаться (чтобы это узнать есть команда showforms)
# теперь заполним ее
# спрашиваем логин и пароль
getinput &quot;login: &quot;
# вставляем логин введенный с клавиатуры
formvalue 1 user __input__
# спрашиваем пароль
getpassword &quot;password: &quot;
formvalue 1 password __password__
# ставим галочку &quot;запомнить&quot;
formvalue 1 remember_me 1
# сабмитим форму (жмем кнопку &quot;вход&quot;)
# тут передается не номер формы, а имя кнопки
submit _submit
# сохраняем куки в файл
save_cookies jj_cookies.txt
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Запускаем скрипт так:&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;
twill-sh jj_login.twill
&lt;/code&gt;&lt;/pre&gt;Скрипт спросит нас логин и пароль, зайдет на сайт и сохранит cookie в файл jj_cookies.txt, чтобы другой скрипт смог работать уже без авторизации.&lt;br /&gt;
&lt;br /&gt;
Далее самое главное: файл jj_command_execute.twill&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;python&quot;&gt;
agent &quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)&quot;
# загружаем куки из файла
load_cookies jj_cookies.txt
# теперь идем в консоль
go http://www.livejournal.com/admin/console/
# спрашиваем команду у пользователя
getinput &quot;command: &quot;
# заполняем форму
formvalue 1 commands __input__
# нажимаем кнопку
submit 3
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Запускаем:&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;
twill-sh jj_command_execute.twill
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Чтобы добавить пользователя pupkin в друзья, нужно ввести команду: &lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;friend add pupkin&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
или сразу из консоли:&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;bash&quot;&gt;
echo &quot;friend add pupkin&quot; | twill-sh jj_command_execute.twill
&lt;/code&gt;&lt;/pre&gt;Список команд тут: &lt;a href=&quot;http://www.livejournal.com/admin/console/reference.bml&quot;&gt;http://www.livejournal.com/admin/console/reference.bml&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
У скрипта есть недостаток: за раз можно передавать только 1 команду, так как в twill нету многострочного ввода. Это поправимо, если использовать twill из python или написать для него расширение.&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Эта статья была опубликована в песочнице хабра, надо признаться инвайта так и не получил. Зато ее успели утащить всякие сайты...&lt;/i&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/1046330741296407737/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/10/web-twill.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/1046330741296407737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/1046330741296407737'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/10/web-twill.html' title='Пишем &quot;бота&quot; для livejournal на twill'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz19BWHgqf-TLyNzhR3h0Wb6mEfCOAx_zLsRaA2d5Np8nT_iGV7joxGqMidFPLLZ4iwp3IU9ePaLei9y4h2UBL-8hQeSInbHW6JadOxQHr5NWabKH9V0tyaeFUMYnLmRPw8-U5K7blJjU/s72-c/Untitled-1.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-7371717778058795082</id><published>2010-10-12T12:08:00.000+11:00</published><updated>2010-10-12T12:08:50.992+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="blogger"/><category scheme="http://www.blogger.com/atom/ns#" term="highlight"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><title type='text'>highlight.js подсветка кода в блоге</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5PLPBqLzDTf09HoMplPaSbsY83u3sLu37gJ_j1FLqj2lPUmJWxSK8_t0WrFMTkQZ31oUKeNZLK7O7PpVGdGw_QDu7zpd7tjR-tNqq_1zCqM1YnqIzcYQv0Ac6zp9Jm0bV4oWapk5yPus/s1600/highlight_.png&quot; /&gt;&lt;/div&gt;В программерских блогах без сомнения нужна подсветка синтаксиса. Blogger, конечно, хороший сервис, но этой возможности там нет. Как же сделать подсветку синтаксиса? &lt;br /&gt;
&lt;br /&gt;
Предлагаю реализовать ее с помощью библиотеки &lt;b&gt;highlight.js&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://softwaremaniacs.org/soft/highlight/&quot;&gt;http://softwaremaniacs.org/soft/highlight/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Почему именно &lt;b&gt;highlight.js&lt;/b&gt;? Потому что ее разместил Яндекс на своем хостинге &lt;a href=&quot;http://api.yandex.ru/jslibs/libs.xml#highlightjs&quot;&gt;http://api.yandex.ru/jslibs/libs.xml#highlightjs&lt;/a&gt; и нам не нужно думать, где хранить файлы библиотеки.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Что бы подключить &lt;b&gt;highlight.js&lt;/b&gt; нужно вставить небольшой код в html.&lt;br /&gt;
Для blogger это так: Заходим в &quot;Дизайн&quot;-&amp;gt;&quot;Изменить HTML&quot; между тегами &amp;lt;head&amp;gt; вставляем код:&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;
&amp;lt;!-- подсветка синтаксиса --&amp;gt;
&amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://yandex.st/highlightjs/5.12/highlight.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;link rel=&quot;stylesheet&quot; href=&quot;http://yandex.st/highlightjs/5.12/styles/default.min.css&quot; /&amp;gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
hljs.initHighlightingOnLoad();
&amp;lt;/script&amp;gt;
&amp;lt;!-- /подсветка синтаксиса --&amp;gt;
&lt;/code&gt;
&lt;/pre&gt;Код требующий подсветки выделяем тегами:&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;...&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt; 
&lt;/code&gt;
&lt;/pre&gt;Язык вашего кода библиотека попытается определить самостоятельно.&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;
&amp;lt;pre&amp;gt;&amp;lt;code class=&quot;html&quot;&amp;gt;...&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt; 
&lt;/code&gt;
&lt;/pre&gt;Можно подправить некоторые стили под ваш дизайн. Я например сделал:&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;css&quot;&gt;
pre code { overflow: auto; } 
&lt;/code&gt;&lt;/pre&gt;Чтобы длинный код не распирал страницу.&lt;br /&gt;
&lt;br /&gt;
Источник: &lt;a href=&quot;http://softwaremaniacs.org/soft/highlight/description/&quot;&gt;http://softwaremaniacs.org/soft/highlight/description/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/7371717778058795082/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/10/highlightjs.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/7371717778058795082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/7371717778058795082'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/10/highlightjs.html' title='highlight.js подсветка кода в блоге'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5PLPBqLzDTf09HoMplPaSbsY83u3sLu37gJ_j1FLqj2lPUmJWxSK8_t0WrFMTkQZ31oUKeNZLK7O7PpVGdGw_QDu7zpd7tjR-tNqq_1zCqM1YnqIzcYQv0Ac6zp9Jm0bV4oWapk5yPus/s72-c/highlight_.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-7915806373734935034</id><published>2010-09-21T12:52:00.001+11:00</published><updated>2010-09-21T15:51:01.479+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="безопасность"/><title type='text'>Кибератака на Россию</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.runewsweek.ru/sites/default/files/infografika_0.jpg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.runewsweek.ru/sites/default/files/preview.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Некий американский эксперт в области информационной безопасности Чарльз Миллер, разработал план кибератаки на Россию.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Кликаем на картинку, чтобы увеличить или &lt;a href=&quot;http://www.runewsweek.ru/sites/default/files/infografika_0.jpg&quot;&gt;http://www.runewsweek.ru/sites/default/files/infografika_0.jpg&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Этот эксперт работавший ранее в АНБ, предрекает страшные последствия сей атаки: отключение электричества, нарушения работы гражданский и военных служб и так далее.&lt;br /&gt;
&lt;br /&gt;
Причем атака на Россию по его мнению стоит дешевле, чем атака на США и ЕЭС. (откуда цифры?)&lt;br /&gt;
В общем, правительства всех стран должны испугаться и приготовить чемодан денег для горе эксперта, дабы он научил их уму-разуму.&lt;br /&gt;
&lt;br /&gt;
Страшные последствия для России, они только в голове у Чарльза Миллера, а в реальности все будет так:&lt;br /&gt;
&lt;i&gt;хакеры США, после 2-х лет напряженной и кропотливой рабы, начинают свою кибер-атаку, и вдруг обнаруживают, что российские гос. учреждения даже не имеют интернета.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Источник: &lt;a href=&quot;http://www.runewsweek.ru/article/v-mire/24631-kak-sozdat-kiberarmiyu-i-atakovat-rossiyu&quot;&gt;http://www.runewsweek.ru/article/v-mire/24631-kak-sozdat-kiberarmiyu-i-atakovat-rossiyu&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/7915806373734935034/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/09/blog-post.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/7915806373734935034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/7915806373734935034'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/09/blog-post.html' title='Кибератака на Россию'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-5113656305686533687</id><published>2010-09-15T12:44:00.001+11:00</published><updated>2010-09-15T12:45:22.266+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="css3"/><category scheme="http://www.blogger.com/atom/ns#" term="html"/><category scheme="http://www.blogger.com/atom/ns#" term="закладки"/><title type='text'>CSS3 онлайн инструменты</title><content type='html'>Пора уже вовсю осваивать новые возможности &lt;b&gt;CSS3&lt;/b&gt;. Пока еще новые функции поддерживаются не полностью и не всеми браузерами, потому для разных браузеров код может отличаться. (как всегда)&lt;br /&gt;
Лучше понять CSS v3 нам помогут полезные on-line инструменты:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;CSS3 Generator&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE-el9ez2Bwq8lGx03E9lMnjuk5d-746N7Vv2wFBLNXuOalw-t-p9_Q9FVQkjfFu_upbz1W6txDb2a_UIVSKKHC1eGl-M8W1MQMn-5SqzjQxGu8Uih3JjVXlkDWVRwAJaSgojrZkISBQQ/s1600/CSS3+Generator_1282020791948.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE-el9ez2Bwq8lGx03E9lMnjuk5d-746N7Vv2wFBLNXuOalw-t-p9_Q9FVQkjfFu_upbz1W6txDb2a_UIVSKKHC1eGl-M8W1MQMn-5SqzjQxGu8Uih3JjVXlkDWVRwAJaSgojrZkISBQQ/s320/CSS3+Generator_1282020791948.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;http://css3generator.com/&quot;&gt;http://css3generator.com/&lt;/a&gt;&lt;br /&gt;
Отличный сервис, который обязательно должен быть в ваших закладках. Позволяет экспериментировать со многими свойствами CSS3. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;CSS3 Please &lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSCzPItKMA2owOxzTpQfIA0IXo-3LEwczNzW8wmMhQl4ihj1gr0Sw6IHI2ZESD8AMF5n9sAud-a3VTM5rWZdffWQELj6cc36FFUOFT0b_2FgWSMdZ9zuDUiv12Y8MncAMsPsape1A7huE/s1600/CSS3+Please%21+The+Cross-Browser+CSS3+Rule+Generator_1282020492071.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSCzPItKMA2owOxzTpQfIA0IXo-3LEwczNzW8wmMhQl4ihj1gr0Sw6IHI2ZESD8AMF5n9sAud-a3VTM5rWZdffWQELj6cc36FFUOFT0b_2FgWSMdZ9zuDUiv12Y8MncAMsPsape1A7huE/s320/CSS3+Please%21+The+Cross-Browser+CSS3+Rule+Generator_1282020492071.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;http://css3please.com/&quot;&gt;http://css3please.com/&lt;/a&gt;&lt;br /&gt;
Позволяет играться с тенями, шрифтами, бордерами и градиентами.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;b&gt;Button Maker&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjitcUy6ms2e5zH3QR6RkU5xdRRCYx3sWCCKU8m4lXGkD62RRKr6SsGDoesPeOfyxeJX5LDWf0fYDS91TmuIsGQ-_QEYnDpL6mKByEep7RQotX9FnAoXprgfXhnMR-3Tes0-NxJFJVxnpM/s1600/Button+Maker_1284513478144.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjitcUy6ms2e5zH3QR6RkU5xdRRCYx3sWCCKU8m4lXGkD62RRKr6SsGDoesPeOfyxeJX5LDWf0fYDS91TmuIsGQ-_QEYnDpL6mKByEep7RQotX9FnAoXprgfXhnMR-3Tes0-NxJFJVxnpM/s320/Button+Maker_1284513478144.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;http://css-tricks.com/examples/ButtonMaker/&quot;&gt;http://css-tricks.com/examples/ButtonMaker/&lt;/a&gt;&lt;br /&gt;
Великолепный инструмент от css-трюкачей для создания красивых css3-кнопок.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;CSS3 Gradient Generator&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRqik34oDrdP4wguh-I1SbHGHGYwyUXGccjwNMff0oku3wj4pgQqpUTmjtt2eOIWiN7b8wCx2IZXDs41RQuW-NSnCBgkduVk0y37qvK8M3dwKdwdmjfbi6v8KsbsSOkof7DT6HhKgfxO8/s1600/CSS3+Gradient+Generator_1282020575599.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRqik34oDrdP4wguh-I1SbHGHGYwyUXGccjwNMff0oku3wj4pgQqpUTmjtt2eOIWiN7b8wCx2IZXDs41RQuW-NSnCBgkduVk0y37qvK8M3dwKdwdmjfbi6v8KsbsSOkof7DT6HhKgfxO8/s320/CSS3+Gradient+Generator_1282020575599.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://gradients.glrzad.com/&quot;&gt;http://gradients.glrzad.com/&lt;/a&gt;&lt;br /&gt;
Визуальный генератор кода градиентов для firefox и браузеров на движке webkit.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;CSS gradient generator&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm2pBPv51lDIVLJLuXO1WvyFgYndUDJfe22DHJiploCvQcZB5wmrF5RfkbK_pn3p7y5BkHW7ZwLL9e5D4OIE9Lx96skweYRW9bwsP21PCiewtbCJqK5aUhzo-3TJ9V91OCHMsE6bUw-i8/s1600/Display-inline.fr+-+CSS+gradient+generator_1282020694168.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm2pBPv51lDIVLJLuXO1WvyFgYndUDJfe22DHJiploCvQcZB5wmrF5RfkbK_pn3p7y5BkHW7ZwLL9e5D4OIE9Lx96skweYRW9bwsP21PCiewtbCJqK5aUhzo-3TJ9V91OCHMsE6bUw-i8/s320/Display-inline.fr+-+CSS+gradient+generator_1282020694168.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.display-inline.fr/projects/css-gradient/&quot;&gt;http://www.display-inline.fr/projects/css-gradient/&lt;/a&gt;&lt;br /&gt;
Еще один генератор градиентов. В отличии от предыдущего, позволяет генерировать код для Opera и Internet Exploer.</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/5113656305686533687/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/09/css3-online-tools.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/5113656305686533687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/5113656305686533687'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/09/css3-online-tools.html' title='CSS3 онлайн инструменты'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE-el9ez2Bwq8lGx03E9lMnjuk5d-746N7Vv2wFBLNXuOalw-t-p9_Q9FVQkjfFu_upbz1W6txDb2a_UIVSKKHC1eGl-M8W1MQMn-5SqzjQxGu8Uih3JjVXlkDWVRwAJaSgojrZkISBQQ/s72-c/CSS3+Generator_1282020791948.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-4587795462179319448</id><published>2010-09-06T12:59:00.002+11:00</published><updated>2010-09-06T13:01:57.559+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="закладки"/><title type='text'>Подборка сервисов для организации обратной связи с пользователями.</title><content type='html'>Часто владельцы веб-сайтов хотят получать отзывы от посетителей, чтобы знать какие функции действительно востребованы пользователями. &lt;br /&gt;
Представляю вашему внимаю подборку сервисов для организации обратной связи с пользователями.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Google Moderator&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvw84xPGFXb-vL8S-Fsj2pAonrgu5xalzIXGQG8MDe6Y_WY3fl9f0CYxUzqYFor9VoN_TMKUjE3pacD5TtYNvtxXEglDOLqw3AjuQzhMFD-2iLWHLeVL-fC3WZc_HKwvnBwRSYX8hyrB8/s1600/moderator_logo.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvw84xPGFXb-vL8S-Fsj2pAonrgu5xalzIXGQG8MDe6Y_WY3fl9f0CYxUzqYFor9VoN_TMKUjE3pacD5TtYNvtxXEglDOLqw3AjuQzhMFD-2iLWHLeVL-fC3WZc_HKwvnBwRSYX8hyrB8/s320/moderator_logo.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.google.com/moderator/&quot;&gt;http://www.google.com/moderator/&lt;/a&gt;&lt;br /&gt;
Самый просто сервис от интернет гиганта. Полностью бесплатен, не совсем удобный, но это компенсируется русскоязычным интерфейсом. Пользователи могут оставлять свои идеи и предложения, а также голосовать за понравившиеся.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Reformal&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYEymlu-4eINmqTxCsBZMv00KMbM0ZC2_v6WmS1FrMsDm6zUtw2eVzlh9whmK5F98GUL1AMOiEZ4F-4Qu5ii6TGvCdCXw6qTiIvPAgH71VMQDQr46ETk1aE93zHq5xXcaeKfmLwznxpWk/s1600/site_logo1.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYEymlu-4eINmqTxCsBZMv00KMbM0ZC2_v6WmS1FrMsDm6zUtw2eVzlh9whmK5F98GUL1AMOiEZ4F-4Qu5ii6TGvCdCXw6qTiIvPAgH71VMQDQr46ETk1aE93zHq5xXcaeKfmLwznxpWk/s320/site_logo1.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;http://reformal.ru/&quot;&gt;http://reformal.ru/&lt;/a&gt;&lt;br /&gt;
Пожалуй единственный подобный сервис от российских разработчиков. Это главное его преимущество. Язык интерфейса русский. Отличный, качественный сервис, практически не уступает своим заграничным конкурентам. В принципе на этом можно было бы и остановиться, но...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Далее пойдут западные коммерческие сервсисы. Особо много комментировать их не  буду. Скажу только, что они богаты возможностями даже в бесплатном  варианте. Из минусов отсутствие русской локализации. (Надеюсь в скором будущем она появится)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;CrowdSound&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif6GOBQ9gLom7pKDJbDjiYk_k5NkUVAwEtAzcLbLFwBSwmWQvlYCl2rZ6apy0KD2GrEBEY-fsR012NO8avpQSBt6MgRzUna4Ks9EeR1fjHZCRm7vEAMKmtvytXa_542qv5-iETtABbMl8/s1600/scalr.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif6GOBQ9gLom7pKDJbDjiYk_k5NkUVAwEtAzcLbLFwBSwmWQvlYCl2rZ6apy0KD2GrEBEY-fsR012NO8avpQSBt6MgRzUna4Ks9EeR1fjHZCRm7vEAMKmtvytXa_542qv5-iETtABbMl8/s320/scalr.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;http://crowdsound.com/&quot;&gt;http://crowdsound.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;IdeaScale&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYhExaxopTyH-3PTqxDphMuFPXmAxrFcPSfbcZAXSmGnjO5su38esffdLZOJJiQlgq_Y4V4z3Rp8s99lKw3nyn2cehvt0C9OXVre-bVMHsHT7DOUONT9YkLgtROCxmwFhDuPnucf54Nfo/s1600/ideascale.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYhExaxopTyH-3PTqxDphMuFPXmAxrFcPSfbcZAXSmGnjO5su38esffdLZOJJiQlgq_Y4V4z3Rp8s99lKw3nyn2cehvt0C9OXVre-bVMHsHT7DOUONT9YkLgtROCxmwFhDuPnucf54Nfo/s320/ideascale.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://ideascale.com/&quot;&gt;http://ideascale.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Uservoice&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqlpOkOcff7m2Ab9nRCMFLGFX4ewZRMfwC9OIB_qj6P1nvvYm2KazEGUSeDyngDIwik6SF0DPtlrXtlYgwGQeonv_SrTY8d-YxAbkPlP2tdu9SjnpDXwDUgQD6TIpv5TUwZZZheEx1ETk/s1600/bg_logo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqlpOkOcff7m2Ab9nRCMFLGFX4ewZRMfwC9OIB_qj6P1nvvYm2KazEGUSeDyngDIwik6SF0DPtlrXtlYgwGQeonv_SrTY8d-YxAbkPlP2tdu9SjnpDXwDUgQD6TIpv5TUwZZZheEx1ETk/s320/bg_logo.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;http://uservoice.com/&quot;&gt;http://uservoice.com/&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;BetaEasy&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzE2Py1GINsJdkQkhb4hUr_7_oSNMsck9n9EkrWHPcYunobxZn3z_VDMNerrEuqwNJo97yZ1VKoEKEumGMTL2buiftfgrPk8FyKUBwtr5gI7vN9-_ZfgTBULxFEAH9_bt6j9siwJuFFPA/s1600/betaeasy_logo.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzE2Py1GINsJdkQkhb4hUr_7_oSNMsck9n9EkrWHPcYunobxZn3z_VDMNerrEuqwNJo97yZ1VKoEKEumGMTL2buiftfgrPk8FyKUBwtr5gI7vN9-_ZfgTBULxFEAH9_bt6j9siwJuFFPA/s320/betaeasy_logo.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.betaeasy.com/&quot;&gt;http://www.betaeasy.com/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/4587795462179319448/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/09/feedback-services.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/4587795462179319448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/4587795462179319448'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/09/feedback-services.html' title='Подборка сервисов для организации обратной связи с пользователями.'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvw84xPGFXb-vL8S-Fsj2pAonrgu5xalzIXGQG8MDe6Y_WY3fl9f0CYxUzqYFor9VoN_TMKUjE3pacD5TtYNvtxXEglDOLqw3AjuQzhMFD-2iLWHLeVL-fC3WZc_HKwvnBwRSYX8hyrB8/s72-c/moderator_logo.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-7348716982646135005</id><published>2010-09-03T13:53:00.003+11:00</published><updated>2010-09-03T13:57:19.684+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="html"/><title type='text'>HTML5 шаблоны для верстки</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdgNnWG9wxs67UKD-KeoBBX8S5N2vvap0en_OJBJyWnpGHTuhP70p8n-4lzdYh65s45yOgnSwJ9pPjImFYmWXYjbvhEvd2wJFCgQVCU4fP3JbX2j2SjoVz-T5rQK_E9NEMJhGc1_xKC0I/s320/513636061_98d07f7966.jpg&quot; /&gt;&lt;/div&gt;Для тех кто хочет верстать на HTML5, но не знает с чего начать. Представляю вашему вниманию парочку html5 шаблонов. Это не шаблоны дизайна, а простые заготовки с минимальной разметкой и css правилами.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://html5boilerplate.com/&quot;&gt;http://html5boilerplate.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://html5reset.org/&quot;&gt;http://html5reset.org/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
и в дополнение еще один шаблон-фреймворк &lt;a href=&quot;http://html5boilerplate.com/&quot;&gt;http://html5boilerplate.com/&lt;/a&gt; (правда не html5).&lt;br /&gt;
Framework для чесальщиков-верстальщиков. =) Готовый css, javascript и т. п.</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/7348716982646135005/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/09/html5-templates.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/7348716982646135005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/7348716982646135005'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/09/html5-templates.html' title='HTML5 шаблоны для верстки'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdgNnWG9wxs67UKD-KeoBBX8S5N2vvap0en_OJBJyWnpGHTuhP70p8n-4lzdYh65s45yOgnSwJ9pPjImFYmWXYjbvhEvd2wJFCgQVCU4fP3JbX2j2SjoVz-T5rQK_E9NEMJhGc1_xKC0I/s72-c/513636061_98d07f7966.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-6573075227775735198</id><published>2010-08-19T13:02:00.002+11:00</published><updated>2012-01-21T14:08:45.185+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debian"/><category scheme="http://www.blogger.com/atom/ns#" term="hosting"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>ispCP Omega бесплатная панель управления хостингом</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsYJHYJ7keiVaGvxVEhG-BlLoy1qqTekz8k5O69qGXarDkUSvQDZRzAeQqrlXUOOXp2FhwrNHqIjCElr-NhzMY-quCwe_afu3G6T2hL5US8P5uTojcCJ3DS694L6oPmSTp1HPn9fdV1Fw/s1600/ispcp-box.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsYJHYJ7keiVaGvxVEhG-BlLoy1qqTekz8k5O69qGXarDkUSvQDZRzAeQqrlXUOOXp2FhwrNHqIjCElr-NhzMY-quCwe_afu3G6T2hL5US8P5uTojcCJ3DS694L6oPmSTp1HPn9fdV1Fw/s200/ispcp-box.png&quot; width=&quot;152&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Название: &lt;b&gt;ispCP Omega&lt;/b&gt;&lt;br /&gt;
Сайт:&amp;nbsp; &lt;a href=&quot;http://isp-control.net/&quot;&gt;http://isp-control.net/&lt;/a&gt;&lt;br /&gt;
Лицензия: GPL v2 &lt;br /&gt;
Форк VHCS&lt;br /&gt;
&lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;&lt;br /&gt;
Уже делал ранее краткий обзор существующих &lt;a href=&quot;http://www.blogger.com/2010/05/free-hosting-panels.html&quot;&gt;бесплатных панелей управления хостингом&lt;/a&gt;. ispCP Omega рассмотрю более подробно.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Начну с интерфейса. Он показался мне довольно простым и вменяемым.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrWVQuj4Rpq2OMUzeNKlddMB3VIJtEoGf95qMHN6c18zj7GvWlQl9gPb2-hwRcjTF-NZeH_fk8fZPiuzbbNRfTSFmNIR8hQX25zIbT-sQwnzZJ2bJ-74u7PCfRKK5jHD7EO8UD8tGL210/s1600/ispCP+-+AdminMain+Index_1277692559108.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrWVQuj4Rpq2OMUzeNKlddMB3VIJtEoGf95qMHN6c18zj7GvWlQl9gPb2-hwRcjTF-NZeH_fk8fZPiuzbbNRfTSFmNIR8hQX25zIbT-sQwnzZJ2bJ-74u7PCfRKK5jHD7EO8UD8tGL210/s320/ispCP+-+AdminMain+Index_1277692559108.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;ispCP Omega&lt;/b&gt; может быть достойным конкурентом платных панелей. На официальном сайте есть wiki с хорошей документацией. Установка не вызвала никаких проблем. Все делал по мануалу от разработчиков.&lt;br /&gt;
&lt;br /&gt;
В отличие от некоторых коммерческих панелей, она не ставит на сервер собственное программное обеспечение, а использует уже имеющееся в репозитариях. Это значит, что обновление ПО сервера происходит штатными средствами вашего дистрибутива.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijFKs3gujCft_kifZZ3I_jzcKdB45Xom3-oul9on00Bgpxn95zpgzMNjKAJTUdeN954iCREY_YtxerqiTqv7qIwwTShUwJDfknH_ENb5TxRFo2y66pvC1-43h0MOc8jpHrkBOguYXYlDE/s1600/ispCP+-+AdminManage+Users_1277693082689.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijFKs3gujCft_kifZZ3I_jzcKdB45Xom3-oul9on00Bgpxn95zpgzMNjKAJTUdeN954iCREY_YtxerqiTqv7qIwwTShUwJDfknH_ENb5TxRFo2y66pvC1-43h0MOc8jpHrkBOguYXYlDE/s320/ispCP+-+AdminManage+Users_1277693082689.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i&gt;Из возможностей:&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
квоты на дисковое пространство и трафик, поддержка ресселелеров, встроенные средства для техподдержки пользователей, управление доменами, ftp-аккаунтами, резервное копирование данных.&lt;br /&gt;
&lt;br /&gt;
Понравился способ настройки веб сервера:&lt;br /&gt;
php настроен через &lt;b&gt;fastcgi&lt;/b&gt; и &lt;b&gt;suexec&lt;/b&gt;. Такая конфигурация позволяет изолировать сайты друг от друга: PHP скрипты каждого сайта выполняются под своим пользователем, каждый пользователь может иметь свои специфичные настройки php.ini (немного параноидальные с точки зрения безопасности, но это только плюс)&lt;br /&gt;
&lt;br /&gt;
Конечно наличие ispCP Omega не дает права администратору иметь кривые руки, скорей всего вы захотите самостоятельно покопаться в конфигах, омега&amp;nbsp; не создаст вам тут никаких проблем.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Вердикт:&lt;/b&gt;&amp;nbsp; ispCP Omega вполне подходит для большинства задач стоящих перед web-хостером и может подойти для создания не сложных хостинг решений для маленьких компаний и облегчения жизни администратора веб-сервера.</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/6573075227775735198/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/08/ispcp-omega.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/6573075227775735198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/6573075227775735198'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/08/ispcp-omega.html' title='ispCP Omega бесплатная панель управления хостингом'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsYJHYJ7keiVaGvxVEhG-BlLoy1qqTekz8k5O69qGXarDkUSvQDZRzAeQqrlXUOOXp2FhwrNHqIjCElr-NhzMY-quCwe_afu3G6T2hL5US8P5uTojcCJ3DS694L6oPmSTp1HPn9fdV1Fw/s72-c/ispcp-box.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-2870109024780382038</id><published>2010-08-17T11:33:00.000+11:00</published><updated>2010-08-17T11:33:01.376+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="seo"/><title type='text'>SEO инфографика</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.datadial.net/blog_content/uploads/2010/04/SEO-Infographic1.jpg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOwysrP6uTO0nO3BxOwGH0h2lPWcfZL9jjDR9UOzpvfK48mQK6dpNhMz3zXithP3O9Ojy6ff-vUDgaLRbuQdmr33iyJxyFAVr4uZWrjmaf8nWAGcF_vjKS7qt4X1YyrnUeGtedwbqSNEE/s320/SEO-Infographic1.jpg+%28%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5+%C2%ABJPEG%C2%BB,+1200x4920+%D0%BF%D0%B8%D0%BA%D1%81%D0%B5%D0%BB%D0%BE%D0%B2%29_1282004836141.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Красивая памятка для сеошников.</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/2870109024780382038/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/08/seo.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/2870109024780382038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/2870109024780382038'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/08/seo.html' title='SEO инфографика'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOwysrP6uTO0nO3BxOwGH0h2lPWcfZL9jjDR9UOzpvfK48mQK6dpNhMz3zXithP3O9Ojy6ff-vUDgaLRbuQdmr33iyJxyFAVr4uZWrjmaf8nWAGcF_vjKS7qt4X1YyrnUeGtedwbqSNEE/s72-c/SEO-Infographic1.jpg+%28%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5+%C2%ABJPEG%C2%BB,+1200x4920+%D0%BF%D0%B8%D0%BA%D1%81%D0%B5%D0%BB%D0%BE%D0%B2%29_1282004836141.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-6042766250354432974</id><published>2010-08-09T11:43:00.000+11:00</published><updated>2010-08-09T11:43:48.246+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="seo"/><category scheme="http://www.blogger.com/atom/ns#" term="закладки"/><title type='text'>Google Alerts</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1VXqHkO_J7Wy9w1panBPZPe18EVdW1JcyKE6ghXjrWCdBaeEaESbbEIoYrpyhDIldafcrUgRErjwL_n9PZVfELv6z1QaYxOBCehYJ2vEWtbNH73jQqQJq19gbQhQc9A-VxLGb-O0G4mo/s320/alerts_logo_beta.gif&quot; /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Гугл не перестает нас радовать новыми сервисами. &lt;b&gt;Google Alerts&lt;/b&gt; простой сервис, который следит за обновлениями в поиске по выбранным ключевым словам и шлет уведомления при появлении новых результатов поиска.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Сервис будет полезен сеошникам, интернет маркетологам и не только.&lt;/div&gt;&lt;a href=&quot;http://www.google.com/alerts&quot;&gt;http://www.google.com/alerts&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/6042766250354432974/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/08/google-alerts.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/6042766250354432974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/6042766250354432974'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/08/google-alerts.html' title='Google Alerts'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1VXqHkO_J7Wy9w1panBPZPe18EVdW1JcyKE6ghXjrWCdBaeEaESbbEIoYrpyhDIldafcrUgRErjwL_n9PZVfELv6z1QaYxOBCehYJ2vEWtbNH73jQqQJq19gbQhQc9A-VxLGb-O0G4mo/s72-c/alerts_logo_beta.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-3157807227830133362</id><published>2010-08-03T12:28:00.030+11:00</published><updated>2010-09-22T11:52:46.995+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="umi"/><title type='text'>Обход проверки лицензионного ключа UMI.CMS</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4bUlLgeSCyrxMvY6wp6Ju7ENQ9v0imx4RC2PgQWIiuqTT_yngPyOv87poX0HVCRhc6uDnzRjmdEOYyfHKYaUhmVXFdYH76oxFnfZDfJPsC8EN8sfV8ZeepxdcoV9jwOYovKPJvx8OjbY/s1600/%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0:+%D0%9D%D0%B5%D0%B2%D0%B5%D1%80%D0%BD%D1%8B%D0%B9+%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9+%D0%BA%D0%BB%D1%8E%D1%87_1280798193112.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4bUlLgeSCyrxMvY6wp6Ju7ENQ9v0imx4RC2PgQWIiuqTT_yngPyOv87poX0HVCRhc6uDnzRjmdEOYyfHKYaUhmVXFdYH76oxFnfZDfJPsC8EN8sfV8ZeepxdcoV9jwOYovKPJvx8OjbY/s320/%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0:+%D0%9D%D0%B5%D0%B2%D0%B5%D1%80%D0%BD%D1%8B%D0%B9+%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9+%D0%BA%D0%BB%D1%8E%D1%87_1280798193112.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Вот так всегда. Переносишь umi.cms на локалхост, чтобы исправить баг или поэкспериментировать, а оно тебя спрашивает какой-то лицензионный ключ.&lt;br /&gt;
&lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Чтобы umi навсегда забыла про лицензионный ключ, нужно, вначале перед ее запуском сделать:&lt;br /&gt;
&lt;blockquote style=&quot;display: none;&quot;&gt;define(&#39;CRON&#39;, true);&lt;/blockquote&gt;&lt;br /&gt;
&lt;i&gt;Удалено в связи с жалобой в гугл.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Это код можно прописать, например, в самое начало index.php &lt;br /&gt;
&lt;br /&gt;
А все это происходит в связи с багом, при котором umi думает, что запущена из крона (cron.php) и не проверяет лицензионный ключ, если определена нужная константа.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Разумеется, все это я написал в образовательных целях. Не используйте данную фичу, чтобы нанести вред планете.</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/3157807227830133362/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/08/hack-umicms.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/3157807227830133362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/3157807227830133362'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/08/hack-umicms.html' title='Обход проверки лицензионного ключа UMI.CMS'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4bUlLgeSCyrxMvY6wp6Ju7ENQ9v0imx4RC2PgQWIiuqTT_yngPyOv87poX0HVCRhc6uDnzRjmdEOYyfHKYaUhmVXFdYH76oxFnfZDfJPsC8EN8sfV8ZeepxdcoV9jwOYovKPJvx8OjbY/s72-c/%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0:+%D0%9D%D0%B5%D0%B2%D0%B5%D1%80%D0%BD%D1%8B%D0%B9+%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9+%D0%BA%D0%BB%D1%8E%D1%87_1280798193112.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-8182893203327629315</id><published>2010-07-30T11:21:00.002+11:00</published><updated>2010-07-30T11:27:38.773+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="закладки"/><title type='text'>Небольшая подборка интересных ссылок</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4Od_ts4WNaaSf091E9te44b8JeEj4aujD1Thap3tzP-YzMc-2jEYsBA8OF0s0rrwiApU6O_TVu9D3w0PgWM27iN5ntod_E1Znk_Xn95sF8RWy5j5v4KWSUTD3LzH833ZN-Bm0ZNoHK7A/s320/scriptsrc-logo.png&quot; /&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://scriptsrc.net/&quot;&gt;http://scriptsrc.net/&lt;/a&gt;&lt;br /&gt;
Ссылки на javascript фреймверки. Выберите framework и одним нажатием мыши получите код для вставки последней версии библиотеки на сайт. Все фреймворки хостятся на google так, что со скоростью загрузки проблем не будет.&lt;br /&gt;
&lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;65&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm-2Zs5H40WliYM4s4O6U9mIPYJZ3LDlBykqzDhAcDoUfVKquuyK31xLmvZ0_QfFpcilfKN_JLvC3TbXD9SQn2C3mHKLazJntLUodR5mHxocN8cAbvEX_KZduVs6763_MWm84_A_TKWsY/s200/logo.png&quot; width=&quot;200&quot; /&gt;&lt;/div&gt;&lt;a href=&quot;http://alloy.liferay.com/&quot;&gt;http://alloy.liferay.com/&lt;/a&gt;&lt;br /&gt;
CSS и javascript фреймворк для создания пользовательских интерфейсов. Поддержка HTML5, CSS3.&lt;br /&gt;
&lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDfAujl5A-Vy4DHLqex2pr3umcOsLihPs7aB3yj9T8umTbMhINeWvfzmo7L_IQgKm4CkTIAWesLEJIt77qDS_HMIGLPT3f_138vtTRhky9IzQ9NP5OGZdfYbyZF6CHxF2QJAwltVZxeqw/s1600/PrimerCSS_1280448577897.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;144&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDfAujl5A-Vy4DHLqex2pr3umcOsLihPs7aB3yj9T8umTbMhINeWvfzmo7L_IQgKm4CkTIAWesLEJIt77qDS_HMIGLPT3f_138vtTRhky9IzQ9NP5OGZdfYbyZF6CHxF2QJAwltVZxeqw/s200/PrimerCSS_1280448577897.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://www.primercss.com/&quot;&gt;http://www.primercss.com/&lt;/a&gt;&lt;br /&gt;
Занятная он-лайн утилита, позволяет генерировать CSS из HTML-кода.</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/8182893203327629315/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/07/blog-post_30.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/8182893203327629315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/8182893203327629315'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/07/blog-post_30.html' title='Небольшая подборка интересных ссылок'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4Od_ts4WNaaSf091E9te44b8JeEj4aujD1Thap3tzP-YzMc-2jEYsBA8OF0s0rrwiApU6O_TVu9D3w0PgWM27iN5ntod_E1Znk_Xn95sF8RWy5j5v4KWSUTD3LzH833ZN-Bm0ZNoHK7A/s72-c/scriptsrc-logo.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-3488647027366500787</id><published>2010-07-27T12:06:00.000+11:00</published><updated>2010-07-27T12:06:59.710+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="web-design"/><category scheme="http://www.blogger.com/atom/ns#" term="закладки"/><title type='text'>Инструменты для выбора цветов</title><content type='html'>Несколько интересных он-лайн инструментов для подбора цветов.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Py_CFxkPymoiaYwvR18-IM6Aam2eCbsaLtxcunuj6EnsVyCf5v9KOdba6XqNk-XC-oFH1im0L18bYH1VXTXbIV0cstej78UbLo2F9II03ifq_LvF7Vsl8eKDjLkRERV7c3PEsba43S4/s1600/%23ff9000+on+0to255_1277941941965.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;127&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Py_CFxkPymoiaYwvR18-IM6Aam2eCbsaLtxcunuj6EnsVyCf5v9KOdba6XqNk-XC-oFH1im0L18bYH1VXTXbIV0cstej78UbLo2F9II03ifq_LvF7Vsl8eKDjLkRERV7c3PEsba43S4/s200/%23ff9000+on+0to255_1277941941965.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://0to255.com/&quot;&gt;http://0to255.com/&lt;/a&gt;&lt;br /&gt;
Позволяет подобрать различные варианты одного цвета. &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhht7H12DkLX2oTigR4dDEL92GipMppqiZhawL7eBkdpkzPRPpPj4PBy_nlyPyOvH_6TUyepCtQkoZ3wa4wTFw_coaGkbi0mV2Y5n9lPvL-mTa14m_41OZaKiKkG4Sa5zTeBlnHzAZSVZI/s1600/ColoRotate:+Colors+come+to+life+in+3D._1277942124642.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;181&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhht7H12DkLX2oTigR4dDEL92GipMppqiZhawL7eBkdpkzPRPpPj4PBy_nlyPyOvH_6TUyepCtQkoZ3wa4wTFw_coaGkbi0mV2Y5n9lPvL-mTa14m_41OZaKiKkG4Sa5zTeBlnHzAZSVZI/s200/ColoRotate:+Colors+come+to+life+in+3D._1277942124642.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://www.colorotate.org/&quot;&gt;http://www.colorotate.org/&lt;/a&gt;&lt;br /&gt;
Мощный инструмент для подбора цветовых схем. Поможет подобрать нужное сочетании цветов. Созданную палитру можно&amp;nbsp; экспортировать в photoshop. &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3V1xBboLLaxViKoiQ1IvYWcjfCwAC_rDcFEeJuBn3tEFlmFLpqVQ_EA0vb8I5xiw-jj20gZsH_wpZvC2IRANR_4KyoQCmNXuXNc1GKDYs8lwJPR7MpK76tLdXmUBHpD3S76wScD5LSAU/s1600/kuler.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;148&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3V1xBboLLaxViKoiQ1IvYWcjfCwAC_rDcFEeJuBn3tEFlmFLpqVQ_EA0vb8I5xiw-jj20gZsH_wpZvC2IRANR_4KyoQCmNXuXNc1GKDYs8lwJPR7MpK76tLdXmUBHpD3S76wScD5LSAU/s200/kuler.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://kuler.adobe.com/&quot;&gt;http://kuler.adobe.com/&lt;/a&gt;&lt;br /&gt;
И напоследок, кулер от адоба поможет вам подобрать палитру.</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/3488647027366500787/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/07/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/3488647027366500787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/3488647027366500787'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/07/blog-post.html' title='Инструменты для выбора цветов'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Py_CFxkPymoiaYwvR18-IM6Aam2eCbsaLtxcunuj6EnsVyCf5v9KOdba6XqNk-XC-oFH1im0L18bYH1VXTXbIV0cstej78UbLo2F9II03ifq_LvF7Vsl8eKDjLkRERV7c3PEsba43S4/s72-c/%23ff9000+on+0to255_1277941941965.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-2932547681797820873</id><published>2010-07-26T16:27:00.000+11:00</published><updated>2010-07-26T16:27:19.254+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cms"/><title type='text'>SilverStripe подающая надежды CMS</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsxLei3-vUOaIVkRDVyLQtrmPNIqasjljvR4WnE4xB7L4JOAt_UWdrBUyw9tfGJs-aBluCfqPrUwWmcPRr89ZEeSxKihPg4SNUcpXJY6wC9KNc4P-rheEMWnwyK1DUVzpwrdcWIu8Pam4/s1600/silverstripe_logo.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsxLei3-vUOaIVkRDVyLQtrmPNIqasjljvR4WnE4xB7L4JOAt_UWdrBUyw9tfGJs-aBluCfqPrUwWmcPRr89ZEeSxKihPg4SNUcpXJY6wC9KNc4P-rheEMWnwyK1DUVzpwrdcWIu8Pam4/s200/silverstripe_logo.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Название: &lt;b&gt;SilverStripe&lt;/b&gt;&lt;br /&gt;
Сайт: &lt;a href=&quot;http://silverstripe.org/&quot;&gt;http://silverstripe.org/&lt;/a&gt;&lt;br /&gt;
Лицензия: BSD &lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Хочу рассказать про эту CMS. &lt;b&gt;SilverStripe&lt;/b&gt; - бесплатная CMS и CMF с открытым кодом.&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Упор в &lt;b&gt;SilverStripe&lt;/b&gt; сделан на дизайн, простоту и удобство использования. Красивая и удобная админка позволяет наполнять контентом сайт даже людям не искушенным в программировании. Контент формирует собой древовидную структуру, которая затем отображается в меню сайта. &lt;/div&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Древовидная структура контента удобна и понятна, хотя конечно не такая гибкая, как таксономия Drupal, но в данном случаи это скорее плюс.&lt;/div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEBshDvj1LQtVatJwiiRlaTXkK_aZOBb7lc4-yKrnXE6GGAbjJ3mRZTpdFUoeIzD6JG9ZNpfahgXfaz4VukjHjtvGDZ1qlNLHYz15gkS9iFxirKzDfPGYrPxAVBx8XMvaZ2qtZhAewVac/s1600/SilverStripe+CMS+%7C+Pages_1277702900363.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEBshDvj1LQtVatJwiiRlaTXkK_aZOBb7lc4-yKrnXE6GGAbjJ3mRZTpdFUoeIzD6JG9ZNpfahgXfaz4VukjHjtvGDZ1qlNLHYz15gkS9iFxirKzDfPGYrPxAVBx8XMvaZ2qtZhAewVac/s320/SilverStripe+CMS+%7C+Pages_1277702900363.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Дизайнерам и просто пользователям понравится оформление и удобство интерфейса.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Разработчики найдут полноценный framework с шаблонизатором, ORM,&amp;nbsp; MVC и конечно гибкую настраиваемую CMS. Система расширяема благодаря модульной структуре. Пока сторонних модулей не так много, как скажем&amp;nbsp; для Joomla или Drupal, но самые необходимые есть.&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Особо стоит отметить встроенные в &lt;b&gt;SilverStripe&lt;/b&gt; возможности по создания произвольных типов данных. Разработчик может создавать различные типы контента с произвольными полями. Причем под каждый тип контент отводится своя табличка в структуре БД. Типы контента (таблицы в базе данных) могут быть связаны с другими типами контента. Таким образом получается полноценная реляционная БД, которая уже имеет красивый и удобный интерфейс для добавления и редактирования данных.&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;
По-моему стоит обратить внимание.</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/2932547681797820873/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/07/silverstripe-cms.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/2932547681797820873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/2932547681797820873'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/07/silverstripe-cms.html' title='SilverStripe подающая надежды CMS'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsxLei3-vUOaIVkRDVyLQtrmPNIqasjljvR4WnE4xB7L4JOAt_UWdrBUyw9tfGJs-aBluCfqPrUwWmcPRr89ZEeSxKihPg4SNUcpXJY6wC9KNc4P-rheEMWnwyK1DUVzpwrdcWIu8Pam4/s72-c/silverstripe_logo.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-6589070988081064904</id><published>2010-07-09T11:38:00.004+11:00</published><updated>2010-09-26T14:21:31.766+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bitrix"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>Bitrix - чудо российского CMS-строения</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcmZgi6MZ0NIeWhgFPSztSn04uuQ5m-Ez890E35Zg3tPLDrrxSqyPYkv2TD8vpkKPspvLFq4pjICUtPx2LkkJduHCckymESfr_2fmWYYyXxdljk2FwnCjhchcecZNv_a0jVk0-Jedw1g4/s320/bitrix_troll.gif&quot; /&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Не думал, что когда-то снова столкнуть с &lt;i&gt;bitrix&lt;/i&gt;. Однако это случилось.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Делался сайт, и вот, когда пришло время залить его на боевой хост, оказалось, что он не хочет там работать. Мало того что это тварь, битрикс, жрет до хрена ресурсов, так под нее еще и нужно делать особые настройки сервера.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Сайт попал ко мне, когда опытный битриксоид не смог его развернуть на хосте. Да... похоже эта чудо-CMS останавливает программистов в развитии где-то на уровне индуса быдло-кодера, которые, похоже и создали эту цмс.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;i&gt;Сайт тупо выдавал белую страницу и все. &lt;/i&gt;Логи были девственно чисты. Казалось, что, просто, где-то в горе костылей именуемой bitirx, тупо вызывается функция exit.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;После пары часов пляски с бубном, вокруг конфигов сервера, меня осенило: &quot;&lt;i&gt;а что если проблема не в настройках сервера, а в самом битриксе?&lt;/i&gt;&quot;. Странно, что не подумал об этом раньше... Ответ же так очевиден.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Взял старый битрикс, которые остался от одного давнишнего проекта.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Залил его на хост заместо того что был там.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;и,.. о чудо! сайт заработал!!!&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Правда отвалились все шаблоны, и начались присущие bitrix чудеса с кодировкой. (эти твари до сих пор используют win-1251)&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Вернул все обратно. Начал последовательно менять файлы нового битрикса на файлы старого, пока сайт не заработал. Таким образом установил, что проблема была в модуле под многозначительным названием &lt;b&gt;main&lt;/b&gt;. Дальше копать не стал, ибо сайт работал.&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Вывод:&lt;/b&gt; в наших супер-мега раскрученных коммерческих ЦМС существуют ошибки не совместимые с жизнью. Выходит, стабильность, безопасность и надежность bitrix это что-то вроде предвыборных обещаний наших политиков.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/6589070988081064904/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/07/bitrix-fucking-shit.html#comment-form' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/6589070988081064904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/6589070988081064904'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/07/bitrix-fucking-shit.html' title='Bitrix - чудо российского CMS-строения'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcmZgi6MZ0NIeWhgFPSztSn04uuQ5m-Ez890E35Zg3tPLDrrxSqyPYkv2TD8vpkKPspvLFq4pjICUtPx2LkkJduHCckymESfr_2fmWYYyXxdljk2FwnCjhchcecZNv_a0jVk0-Jedw1g4/s72-c/bitrix_troll.gif" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-7745503949865151086</id><published>2010-06-30T15:57:00.004+11:00</published><updated>2010-10-12T11:37:06.617+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="seo"/><title type='text'>SEO: Борьба с дубликатами контента или canonical tag</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyeevmuFcqE0e3la_pwrWT3XycTSd0-jo1y0PW_JYWFcL5ZrW2C_PAwYrgj6gPp1jMGRA-Ix1wxSvz82nN-f9gsSDkXfPOoGtwiN3BY5JREApL3tUo6uEWTR5Hn4wlRb1O1wFfCdQqMdo/s1600/kerlow07_matrixRevolutions1.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;135&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyeevmuFcqE0e3la_pwrWT3XycTSd0-jo1y0PW_JYWFcL5ZrW2C_PAwYrgj6gPp1jMGRA-Ix1wxSvz82nN-f9gsSDkXfPOoGtwiN3BY5JREApL3tUo6uEWTR5Hn4wlRb1O1wFfCdQqMdo/s200/kerlow07_matrixRevolutions1.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;В SEO дубликаты контента - это зло, их надо всячески избегать. Поисковики типа гугла любят уникальный контент. &lt;br /&gt;
Часто бывает такая ситуация, что один и тот же контент находится по разным url-адресам одного и того же сайта. Особенности движка, плохо продуманная навигация, ветер в головах контент менеджеров. Причин может быть масса.&lt;br /&gt;
Из нескольких одинаковых страниц, какую именно выберет поисковый робот?&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Чтобы облегчить себе и другим жизнь, ведущие западные поисковики (яндекс опять в пролете) предлагают ссылаться на предпочтительную &quot;страницу-первоисточник&quot; при помощи canonical-тега.&lt;br /&gt;
&lt;br /&gt;
Делается это так: &lt;br /&gt;
&lt;pre class=&quot;html&quot;&gt;&lt;code&gt;&amp;lt;link href=&quot;http://code-jutsu.blogspot.com/2010/06/seo-canonical-tag.html&quot; rel=&quot;canonical&quot;&amp;gt;&amp;lt;/link&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;Что нам это дает?&lt;/b&gt;&lt;br /&gt;
Позволяет поисковику выбрать правильную версию документа в случаи если один и тот же контент находится по разным url. Например: &quot;версия для печати&quot;, id сессии в url, и просто дубликаты.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Подробнее:&lt;/i&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.google.com/support/webmasters/bin/answer.py?answer=139394&quot;&gt;http://www.google.com/support/webmasters/bin/answer.py?answer=139394&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html&quot;&gt;http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html&lt;/a&gt;&lt;br /&gt;
Пример использования рекомендованный гуглом: &lt;a href=&quot;http://www.wikia.com/Wikia&quot;&gt;http://www.wikia.com/Wikia&lt;/a&gt; (смотрим html код сайта)</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/7745503949865151086/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/06/seo-canonical-tag.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/7745503949865151086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/7745503949865151086'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/06/seo-canonical-tag.html' title='SEO: Борьба с дубликатами контента или canonical tag'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyeevmuFcqE0e3la_pwrWT3XycTSd0-jo1y0PW_JYWFcL5ZrW2C_PAwYrgj6gPp1jMGRA-Ix1wxSvz82nN-f9gsSDkXfPOoGtwiN3BY5JREApL3tUo6uEWTR5Hn4wlRb1O1wFfCdQqMdo/s72-c/kerlow07_matrixRevolutions1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-811461864285127474</id><published>2010-06-28T11:05:00.000+11:00</published><updated>2010-06-28T11:05:07.619+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="less"/><category scheme="http://www.blogger.com/atom/ns#" term="symfony"/><title type='text'>LESS продвинутый CSS</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://lesscss.org/&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3mZaDGKcGmxIaH5gBRxpkXr7IZ7-EAWzfWQiC8omuAFApA2fuAz4MB5mpd3ojnYMbY1kahlPc1JjyFkiXsWe6fc19pyElGXUsnUn7zJ7V_Doh7jeMHIWMuE8gUEn83nladwdjVBay0x4/s320/logo.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Очень занятная штука, позволяет использовать в CSS переменные, наследование и прочие вкусности. &lt;br /&gt;
&lt;br /&gt;
LESS не просто расширяет синтаксис CSS, он позволяет свести к минимуму дублирование кода, что так необходимо любому верстальщику, которого задолбали постоянные &lt;i&gt;Ctrl-C&lt;/i&gt; и &lt;i&gt;Ctrl-V&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;/i&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Сайт: &lt;a href=&quot;http://lesscss.org/&quot;&gt;http://lesscss.org/&lt;/a&gt;&lt;br /&gt;
Как его использовать?&lt;br /&gt;
Во-первых для symfony есть плагин &lt;a href=&quot;http://www.symfony-project.org/plugins/sfLESSPlugin&quot;&gt;http://www.symfony-project.org/plugins/sfLESSPlugin&lt;/a&gt;&lt;br /&gt;
Во-вторых есть less.js. Да да именно яваскрипт, волшебным образом преобразует less код в готовый css.&lt;br /&gt;
&lt;a href=&quot;http://github.com/cloudhead/less.js&quot;&gt;http://github.com/cloudhead/less.js&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/811461864285127474/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/06/less-css.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/811461864285127474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/811461864285127474'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/06/less-css.html' title='LESS продвинутый CSS'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3mZaDGKcGmxIaH5gBRxpkXr7IZ7-EAWzfWQiC8omuAFApA2fuAz4MB5mpd3ojnYMbY1kahlPc1JjyFkiXsWe6fc19pyElGXUsnUn7zJ7V_Doh7jeMHIWMuE8gUEn83nladwdjVBay0x4/s72-c/logo.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-7926135347858449228</id><published>2010-06-27T20:47:00.000+11:00</published><updated>2010-06-27T20:47:32.816+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><category scheme="http://www.blogger.com/atom/ns#" term="закладки"/><title type='text'>JQueryPlugins</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifbkNiz7tKYozxxi503Wh7c4jGhkIZ9YoaW6Tx0R4-y-PIMvqt4X25myZtUzsAVs9i9dDgViIic5TY1qGUxCYBBmYuXu562CsmoRughCaZA0srFb9KIYuRwpJqEgUdl6AW1H4tDSDyW2A/s320/logo.jpg&quot; /&gt;&lt;/div&gt;&lt;br /&gt;
Хороший каталог плагинов к JQuery. Добавляем в закладки.&lt;br /&gt;
&lt;a href=&quot;http://www.jqueryplugins.com/&quot;&gt;http://www.jqueryplugins.com/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/7926135347858449228/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/06/jqueryplugins.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/7926135347858449228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/7926135347858449228'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/06/jqueryplugins.html' title='JQueryPlugins'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifbkNiz7tKYozxxi503Wh7c4jGhkIZ9YoaW6Tx0R4-y-PIMvqt4X25myZtUzsAVs9i9dDgViIic5TY1qGUxCYBBmYuXu562CsmoRughCaZA0srFb9KIYuRwpJqEgUdl6AW1H4tDSDyW2A/s72-c/logo.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-8731100046181213584</id><published>2010-06-21T13:43:00.000+11:00</published><updated>2010-06-21T14:05:07.290+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="doctrine"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="sfDoctrineGuardPluginsfDoctrineGuardPlugin"/><category scheme="http://www.blogger.com/atom/ns#" term="sniplets"/><category scheme="http://www.blogger.com/atom/ns#" term="symfony"/><category scheme="http://www.blogger.com/atom/ns#" term="yml"/><title type='text'>sfDoctrineGuardPlugin свои поля в таблице пользователей</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;54&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN4kXL8ZgjUwhBFLqba8Pv6KC9FLTUgNJO8ovlOuRjCyOH_a0svByA_r2GDE-c7yXrAb9WXLOG9A3oB4LYZlMERK66teeM3YPa0k68WwOwGO02_qI7Gq2efyYuEL4k7Y8zWNNbYWelGHU/s200/tumblr_kyh4r7WwrI1qzmw0z.gif&quot; width=&quot;200&quot; /&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;sfDoctrineGuardPlugin&lt;/b&gt; - это плагин который реализует функционал авторизации и аутентификация пользователей. &lt;br /&gt;
Самый главный вопрос, который возникает у всех, кто пользуется этим плагином: &quot;как дополнить схему юзеров своими полями?&quot; Например, добавить телефон пользователя и т. п.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Создатели плагина предлагают решать проблему через отдельную табличку профилей пользователей.&lt;br /&gt;
&lt;pre&gt;sfGuardUserProfile:
  tableName: user_profiles
  columns:
    id:
      type: integer(4)
      primary: true
      autoincrement: true
    user_id:
      type: integer(4)
      notnull: true
    email:
      type: string(80)
      notnull: true
      email: true
    fullname: # ФИО
      type: string(80)
      notnull: true
    tel: # моб. телефон
      type: string(80)
      notnull: false
  relations:
    User:
      class: sfGuardUser
      foreign: id
      local: user_id
      type: one
      onDelete: cascade
      foreignType: one
      foreignAlias: Profile
  indexes:
    email:
      fields: [email]
      type: unique
&lt;/pre&gt;т. е. создается еще один класс sfGuardUserProfile, который связан с основным классом sfGuardUser.&lt;br /&gt;
Вызывается оно так:&lt;br /&gt;
&lt;pre&gt;$profile = $user-&amp;gt;getProfile();
&lt;/pre&gt;&lt;br /&gt;
Иногда это не всегда удобно. Что делать если мы хотим расширить sfGuardUser напрямую? Редактировать код плагина sfDoctrineGuardPlugin не самое лучшее решение. Выход есть.&lt;br /&gt;
Не все знают, что если в /config/doctrine/schema.yml прописать так&lt;br /&gt;
&lt;pre&gt;sfGuardUser: # расширем класс пользователя доп полями
  columns:
    customer_id:
      type: integer(4)
      notnull: false
  relations:
    Customer:
      local: customer_id
      foreign: id
      class: Customer
    BookmarkList:
      local: id
      foreign: user_id
      class: Bookmark
  indexes:
    customer:
      fields: [customer_id]
      sorting: ASC
&lt;/pre&gt;то класс (табличку в бд) sfGuardUser будет расширен дополнительным полями и связями. В нашем случаи добавится поле &quot;customer_id&quot; и связи на соответствующие классы.&lt;br /&gt;
Удачи.</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/8731100046181213584/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/06/sfdoctrineguardplugin-custom-schema.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/8731100046181213584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/8731100046181213584'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/06/sfdoctrineguardplugin-custom-schema.html' title='sfDoctrineGuardPlugin свои поля в таблице пользователей'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN4kXL8ZgjUwhBFLqba8Pv6KC9FLTUgNJO8ovlOuRjCyOH_a0svByA_r2GDE-c7yXrAb9WXLOG9A3oB4LYZlMERK66teeM3YPa0k68WwOwGO02_qI7Gq2efyYuEL4k7Y8zWNNbYWelGHU/s72-c/tumblr_kyh4r7WwrI1qzmw0z.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5223041025020492866.post-7714103095036059901</id><published>2010-06-17T17:31:00.002+11:00</published><updated>2010-10-12T12:15:47.358+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="umi"/><title type='text'>UMI используем doSelection</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLubdOGPpmPLDf57J4cU-cm71d1DVEfU-fjUbog5g-9nDOIfDyg0df1rHl8IZZNAR-oyuS0erlTCy9Nva7zEDtBFDBCucK7aCIUJfHtRpZt13PupOTSk1GMWoHWgR5qiFrBKyMWpPzxnY/s320/logo.jpg&quot; /&gt;&lt;/div&gt;&lt;br /&gt;
Есть в UMI CMS такая штука, как &lt;b&gt;doSelection&lt;/b&gt;. Она позволяет делать произвольные выборки из базы umi.&lt;br /&gt;
В качестве примера покажу, как вывести объекты каталога в случайном порядке. В моем примере это будут случайные &quot;места отдыха&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Создаем файл запроса &lt;i&gt;usels/rand_places.xml&lt;/i&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;xml&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;selection&amp;gt;
  &amp;lt;target expected-result=&quot;pages&quot;&amp;gt;
    &amp;lt;type id=&quot;772&quot; /&amp;gt;
    &amp;lt;category depth=&quot;10&quot;&amp;gt;/places/&amp;lt;/category&amp;gt;
  &amp;lt;/target&amp;gt;
  &amp;lt;sort&amp;gt;rand()&amp;lt;/sort&amp;gt;
  &amp;lt;limit page=&quot;0&quot;&amp;gt;{1}&amp;lt;/limit&amp;gt;
&amp;lt;/selection&amp;gt;
&lt;/code&gt;
&lt;/pre&gt;Данный запрос делает выборку из раздела сайта &lt;i&gt;http://site/places/&lt;/i&gt; с глубиной вложенности 10, всех объектов типа 772. Данные сортируем в случайном порядке, количество выводимых элементов передается в первом параметре.&lt;br /&gt;
Полное описание формата &lt;i&gt;usel&lt;/i&gt; можно найти тут &lt;a href=&quot;http://help-dev.umi-cms.ru/chapter.XSLTTemplates.usel.html&quot;&gt;http://help-dev.umi-cms.ru/chapter.XSLTTemplates.usel.html&lt;/a&gt;&lt;br /&gt;
Далее пишем шаблон: &lt;i&gt;tpls/data/usel/rand_places.tpl &lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;php&quot;&gt;&amp;lt;?php
$FORMS = Array();

$FORMS[&#39;elements_block&#39;] = &amp;lt;&amp;lt;&amp;lt;END
&amp;lt;div class=&quot;catalog_block&quot;&amp;gt;

%items%

&amp;lt;/div&amp;gt;
END;

$FORMS[&#39;elements_block_line&#39;] = &amp;lt;&amp;lt;&amp;lt;END
&amp;lt;div&amp;gt;&amp;lt;a href=&quot;%link%&quot;&amp;gt;%name%&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div&amp;gt;%anons%&amp;lt;/div&amp;gt;

   
END;

?&amp;gt;
&lt;/code&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;a href=&quot;http://help-dev.umi-cms.ru/data.doSelection.html&quot;&gt;http://help-dev.umi-cms.ru/data.doSelection.html&lt;/a&gt; &lt;br /&gt;
и вызываем макрос так:&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;%data doSelection(&#39;rand_places&#39;, &#39;rand_places&#39;, 3)%&lt;/code&gt;&lt;/pre&gt;rand_places - это имена наших файлов: шаблона и выборки usel (у меня они называются одинаково) &lt;br /&gt;
3 - это параметр №1, который у нас означает количество выводимых элементов.&lt;br /&gt;
&lt;br /&gt;
Как видим, разрабатывать под юми стало значительно легче, но не все так хорошо работает как хотелось бы (в лучших традициях юми :)). Функция бажная, есть некоторые ограничения, например нельзя делать выборку по владельцу объекта.&lt;br /&gt;
Вот если бы разработчики UMI сами бы пользовались своим usel и стандартизировали бы шаблоны вывода всех макросов через него... эх.. мечты мечты...</content><link rel='replies' type='application/atom+xml' href='http://codeninja.ru/feeds/7714103095036059901/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://codeninja.ru/2010/06/umi-doselection.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/7714103095036059901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5223041025020492866/posts/default/7714103095036059901'/><link rel='alternate' type='text/html' href='http://codeninja.ru/2010/06/umi-doselection.html' title='UMI используем doSelection'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLubdOGPpmPLDf57J4cU-cm71d1DVEfU-fjUbog5g-9nDOIfDyg0df1rHl8IZZNAR-oyuS0erlTCy9Nva7zEDtBFDBCucK7aCIUJfHtRpZt13PupOTSk1GMWoHWgR5qiFrBKyMWpPzxnY/s72-c/logo.jpg" height="72" width="72"/><thr:total>2</thr:total></entry></feed>