<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>Веб-разработка</title> 
        <link>http://dayte2.com/</link> 
        <description>Веб-разработка</description>

<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Shamansblog" /><feedburner:info uri="shamansblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/</creativeCommons:license><feedburner:emailServiceId>Shamansblog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FShamansblog" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FShamansblog" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FShamansblog" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/Shamansblog" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FShamansblog" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FShamansblog" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FShamansblog" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
    <title><![CDATA[Как передавать параметры GET в модулях MODx?]]></title> 
	<guid isPermaLink="false">http://dayte2.com/modx-get-post-links</guid>
	<pubDate>Thu, 15 Mar 2012 17:43:51 +0400</pubDate>
    <link>http://feedproxy.google.com/~r/Shamansblog/~3/zv4AiGrbPE8/modx-get-post-links</link> 
    <description>
        <![CDATA[<img class="intropic" alt="MODx логотип" src="http://dayte2.com/img/modx-logo.png">
<p>Все кто пытался писать модули для MODx знают что передача параметров через хитро сформированные ссылки, то есть, методом GET затруднена. В этом посте я расскажу как именно и расскажу как я решил эту проблему для себя.</p><h2>В чем проблема с передачей методом GET в MODx?</h2>

<p>Сразу оговорюсь&nbsp;&mdash; проблема касается админки. Потому что она построена на фреймах (я говорю о MODX Evolution). Вы не видите адрес фрейма, поэтому не знаете что адрес любого модуля выглядит примерно так:</p>

<pre><code>
/manager/index.php?a=112&id=1
</code></pre>

<p>Где id&nbsp;&mdash; это id модуля.</p>

<p>Предположим, мы сделали в своем модуле ссылку вида:</p>

<pre><code>
&lt;a 
					href="http://dayte2.com?action=purpurpur&tits=gtfo"&gt;Клик&lt;/a&gt;
</code></pre>

<p>Если на нее нажать она вызовет скрипт index.php с потерянными параметрами a и id:</p>

<pre><code>
/manager/index.php?action=purpurpur&tits=gtfo
</code></pre>

<p>И, следовательно, параметры модулю переданы не будут, а пользователь получит перезагрузку админки модэкса. Такая вот проблема.</p>

<h2>Как передавать данные методом GET?</h2>

<p>Ну первое что приходит в голову&nbsp;&mdash; просто дописывать каждой ссылке параметры id и a. Но это надо не забывать об этом и забыть о портабельности. Ведь если у вас это модуль номер 2, то на соседнем сайте&nbsp;&mdash; номер 6. Для портабельности нужно парсить номер модуля и подставлять его как переменную шаблона и оооо, столько геморроя! Я отказался от этого метода.</p>

<p>Я подумал что слишком много возни с тасканием параметров GET с собой. И вспомнил о том, что параметры GET сохраняются при передаче данных методом POST!</p>

<p>В большинстве случаев нам не важно как именно были переданы данные. Тем более что нет ничего такого в GET, чего бы не мог POST. Так что я решил передавать все данные методом POST.</p>

<p>Но как? Это ведь надо все делать формами и ссылками! Еще больший геморрой? А вот и нет. Я нашел способ делать обычные ссылки, которые отправляют данные методом POST. Военная хитрость!</p>

<h2>Волшебные ссылки, отправляющие данные методом POST</h2>

<p>Конечно, сама по себе ссылка не может отправлять данные постом. Но событие нажатия на ссылку можно легко отследить яваскриптом! Яваскриптом же можно определить куда должен быть соверешен переход и какие параметры должны передаться. Яваскриптом же можно сконструировать форму для передачи тех же самых данных методом пост. И одной командой ее отправить!</p>

<p>Итак, ловим значение, делаем форму, наполняем полями с такими же парами имя-значение, отправляем форму.</p>

<p>Это я делал при помощи jQuery и вот что у меня получилось.</p>

<pre><code>
$(function()	{
	$('.link').live('click',function()	{	//для всех ссылок.Даже для генерируемых скриптом или появившихся позже
		var href = $(this).attr('href');	//куда хотим идти?
		href = href.replace(/^[.\/?]+/,'');	//удаляем ненужные символы в начале
		var arr = href.split(/&/);	//разбиваем на пары ключ=значение
		var data=new Object();		//здесь будут данные
		//формируем объект данных
		$(arr).each(function()	{
			var d = this.toString().split('=');
			data[d[0]] = d[1];
		});
		//id форме нужен чтобы можно было ее отправить
		var form_id = 'get-post-form';
		var form = '&lt;form method="post" id="'+form_id+'"&gt;';
		//создаем скрытые поля формы
		for(name in data)	{
			var v = data[name];
			form += '&lt;input type="hidden" name="'+name+'" value="'+v+'"/&gt;';
		}
		form += '&lt;/form&gt;';
		//вставляем форму в конец страницы
		$('body').append(form);
		//отправляем
		$('#'+form_id).submit();
		//предотвращаем переход по ссылке
		return false;
	});
});
</code></pre>

<p>Это решение подразумевает что в href ссылок вы не будете использовать абсолютные пути, а будете использовать только пути таких видов:</p>

<pre><code>
?action=show_tits
.?action=show_tits
./?action=show_tits
</code></pre>

<p>Это решение я опробовал у себя и уже использую в одном своем модуле. Буду использовать и в последующих, ибо удобно. Велкам!</p>]]>
    </description>
    <dc:creator><![CDATA[ifman]]></dc:creator>
    
        <category><![CDATA[JavaScript]]></category>
    
        <category><![CDATA[MODx]]></category>
    
        <category><![CDATA[полезности]]></category>
    
<feedburner:origLink>http://dayte2.com/modx-get-post-links</feedburner:origLink></item>

<item>
    <title><![CDATA[Идея: Облако тегов на сайте без теговой навигации]]></title> 
	<guid isPermaLink="false">http://dayte2.com/search-tag-navigation</guid>
	<pubDate>Tue, 06 Sep 2011 12:47:44 +0400</pubDate>
    <link>http://feedproxy.google.com/~r/Shamansblog/~3/KlaCEEKu9Ao/search-tag-navigation</link> 
    <description>
        <![CDATA[<p>Есть у меня один заказчик, он захотел на главной странице видеть облако тегов. Чтобы было красиво и чтобы крутилось и вообще, создавало вау-эффект. Я у него спросил&nbsp;&mdash; он будет задавать теги для каждой страницы? Он сказал что нет, не будет, но хочет чтобы работало.
</p>
<p>Казалось бы, это парадоксальное требование&nbsp;&mdash; облако тегов, но без использования тегов на сайте. Но все оказалось просто и красиво.</p><p>Я подумал, что теги в данном случае&nbsp;&mdash; это просто "темы". Когда пользователь тыкает на тег на главной странице&nbsp;&mdash; он хочет увидеть страницы на заданную тему. А это мало чем отличается от поиска.</p>

<p>Поэтому все что я сделал&nbsp;&mdash; это задал заранее несколько поисковых фраз. То есть облако тегов состояло из ключевых слов, тем, которые характеризуют сайт заказчика. При этом, ссылка с каждого этого слова вела на поиск по этому слову (благо, он осуществляется через GET).</p>

<p>У такого решения есть плюсы и минусы. Плюсы в том, что пользователю не надо вести систему тегов, запоминать какие теги у него в системе, решать задачу релевантности текста тегу и так далее. Он просто пишет текст. Если в тексте встрчеается ключевое слово&nbsp;&mdash; он уже получает тег. Какбы автоматически. Это очень удобно и расширяемо для администратора сайта. И совсем не пыльно для разработчика. А пользователю, в конечном итоге, все равно как оно реализовано&nbsp;&mdash; он получает нужные результаты.</p>

<p>Недостаток у этого решения тоже есть. Например, если слово встречается в статье один раз и вскользь&nbsp;&mdash; статья уже попадет под этот тег. То есть, достаточно употребить ключевое словосочетание, пусть даже речь вообще не о нем, чтобы эта статья находилась. Это, конечно, может испортить удобство работы. Но при правильно заданных ключевых словах этот минус нивелируется.</p>

<p>К тому же, никто не запрещает сделать, например, ключевые слова одни, а поиск&nbsp;&mdash; по другим.</p>

<p>Допустим, у нас сайт про пластиковые окна. Разумеется там чуть не в каждой статье будет упоминаться ПВХ. В облаке тегов целесообразно показывать именно ПВХ. Но если искать по этому слову, то будет находиться слишком много мусорных статей, не про это. Эту проблему можно решить задав поиск более жестко. То есть, в облаке отображается "ПВХ", а поиск идет по "окно ПВХ особенность" или типа того. Более конкретный запрос, отдающий более точную выдачу.</p>

<p>Вот такой лайфхак. Мне понравилось, кстати и я теперь думаю&nbsp;&mdash; может реализовать нечто подобное и на своем сайте тоже. Потому что удобно, черт возьми. Не надо думать о тегах&nbsp;&mdash; они сами там как-то варятся, а ты можешь добавлять и удалять их просто добавляя и удаляя их из списка тегов.</p>

<p>Если есть сайт, где 100 статей и администратору вздумается придумать новый тег, то ему придется пробежаться по 100 статьям и добавить этот тег ко всем, где он будет к месту. В случае с тегами-поисковыми запросами этого делать не надо. Просто добавил в список тегов и все&nbsp;&mdash; уже работает.</p>]]>
    </description>
    <dc:creator><![CDATA[ifman]]></dc:creator>
    
        <category><![CDATA[разработка]]></category>
    
        <category><![CDATA[разное]]></category>
    
<feedburner:origLink>http://dayte2.com/search-tag-navigation</feedburner:origLink></item>

<item>
    <title><![CDATA[Greasemonkey скрипт для скачивания музыки из Вконтакте]]></title> 
	<guid isPermaLink="false">http://dayte2.com/vkontakte-get-music-greasemonkey</guid>
	<pubDate>Tue, 23 Aug 2011 11:59:31 +0400</pubDate>
    <link>http://feedproxy.google.com/~r/Shamansblog/~3/d6zK5THCM7Y/vkontakte-get-music-greasemonkey</link> 
    <description>
        <![CDATA[<img style="width:100px;" src="http://dayte2.com/img/greasemonkey/greasemonkey.png" alt="Greasemonkey скрипт для скачивания музыки вконтакте" class="intropic">

<p>Привет. Давно я не появлялся, соскучились?:) Сегодня дам всем желающим скачать скрипт для скачивания музыки из вконтакте бесплатно. Идея скрипта родилась совершенно внезапно.</p>

<p>Мы сидели с девушкой и слушали музыку на вконтакте. Интернет работал нестабильно, поэтому мы захотели скачивать музыку на комп и слушать с него. Вспомнили что раньше был такой скрипт, который дорисовывал кнопочки "Save" ко всем трекам. Но потом он перестал работать, потому что изменился дизайн и вообще много чего изменилось на вконтакте.
</p><p>
Не долго думая, я наваял первую версию greasemonkey скрипта, который выполнял ту же задачу.</p><h2>Скрипт скачивания музыки с вконтакте</h2>

<p>Выглядит это дело после причесываний и применения моих дизайнерских талантов так:</p>

<p><img src="http://dayte2.com/img/vk-get/vk-get.jpg" alt="Скрипт скачивания музыки из вконтакте" class="fcenter"/></p>

<p>Видим две составляющие. Во-первых, ссылки "DL" у каждой мелодии на странице. Если кликнуть по этой ссылке&nbsp;&mdash; браузер либо откроет музыкальный плеер и начнет играть мелодию, либо начнет скачивать файл. Если ваш браузер открывает медиа-плеер, а вам надо скачать&nbsp;&mdash; просто нажмите на эту ссылку правой кнопкой и нажмите "Сохранить объект как...".</p>

<p>Эти ссылки появляются сразу при заходе на страницу аудио, но срабатывают не всегда. Это потому что у вконтакта туча всего подгружается аяксом и за всем не уследишь. Поэтому эти ссылки появляются сами только при первом заходе на страницу. При переходах по разделам или в другие пункты меню ссылки могут не появляться. И тут вступает в дело второй элемент.</p>

<p>Второй элемент&nbsp;&mdash; это иконка ноты, появившаяся в шапке сайта. Если нажать на нее&nbsp;&mdash; появляются ссылки "DL" если их раньше не было. Это все ее функции, собственно.</p>

<p><a href="http://dayte2.com/files/vk-get.zip" title="Скачать greasemonkey скрипт для скачивания музыки с вконтакте">Скачать скрипт для скачивания музыки вконтакте</a></p>

<h2>Как установить скрипт</h2>

<p>Установка простая, но скрипт требует наличия <a href="http://dayte2.com/go/www.greasespot.net">плагина Greasemonkey</a>. Если он у вас уже есть&nbsp;&mdash; все отлично. Просто перетащите скрипт на окно браузера и подтвердите установку. Если грисманки у вас нет&nbsp;&mdash; установите. Это полезная штука.</p>

<p>После установки он сразу начнет работать.</p>

<h2>Как работает скрипт</h2>

<p>Для любознательных я опишу как скрипт устроен и работает. Ведь у меня тут блог про веб-разработку;) Кстати, я уже писал про <a href="http://dayte2.com/greasemonkey-printdirect-userscript">greasemonkey-скрипты</a> на этом блоге и давал один, которым пользуюсь до сих пор весьма успешно. Это <a href="http://dayte2.com/greacemonkey-noindex-nofollow-script">скрипт выделения nofollow и noindex ссылок</a>.</p>

<p>А сейчас поговорим про этот. Для начала, вот код.</p>

<pre><code>
// ==UserScript==
// @name           vk-get
// @namespace      http://vkontakte.ru
// @description    4&gt;102;O5B AAK;:C "A:0G0BL" 25745 345 5ABL 0C48&gt;70?8AL
// @include        http://vkontakte.ru/*
// @require        http://yandex.st/jquery/1.6.1/jquery.min.js
// ==/UserScript==
if(unsafeWindow.console){
   var GMlog = unsafeWindow.console.log;
}

unsafeWindow.detect_audio = detect_audio;


function detect_audio()	{
	$('.ifman_dl_link').remove();
	$('input[id*=audio_info]').each(function()	{
		var val = $(this).attr('value');
		var arr = val.split(',');
		var mp3 = arr[0];
		var html = '&lt;a href="'+mp3+'" class="ifman_dl_link"&gt;DL&lt;/a&gt;';
		$(this).after(html);
	});
}
function true_load()	{
	if($('ifman_tone').attr('rel')!='loaded')	{
		var btn = '&lt;div id="ifman_tone" rel="loaded" style="background-image:url(http://vkontakte.ru/images/icons/audio_iconset.gif);
                height:11px;width:11px;background-position:bottom;position:absolute; top:15px; left:50%;cursor:pointer;"
                title="Показать ссылки для скачивания аудио" onclick="detect_audio()"&gt;&lt;/div&gt;';
		$('#top_links').before(btn);	
	}
}
true_load();
</code></pre>

<p>Расскажу сначала идею. Ссылки для прослушивания файлов вконтакте доступны каждому залогиненому пользователю. Беда в том, что они зависят от сессий. То есть, пока сессия есть&nbsp;&mdash; ссылка работает и может быть открыта даже другим пользователем. Как сессия разрушается (пользователь выходит)&nbsp;&mdash; ссылка перестает работать. В этом одна из трудностей использования вконтакта в качестве медиа-сервера на своем сайте. А что, удобно было бы&nbsp;&mdash; музыка лежит там, ссылки получаешь, встраиваешь в свой сайт и играешь на нем. Ан нет.</p>

<p>Но мы-то выполняем JS будучи залогинеными! Так что ссылки у нас всегда есть. Осталось только найти их в коде и нарисовать ссылки на них в явном виде.</p>

<p>Трудности возникают из-за того, что вконтакт очень много чего грузит и обновляет аяксом. Поэтому ссылки могут пропадать или даже не рисоваться вообще. Чтобы обойти это можно пытаться ловить события окна, но проще сделать кнопку, которая делает означенное выше действие (поиск и отображение ссылок на музыку) по требованию. В конце концов, не всегда и не всем нужно видеть ссылки на скачивание, они довольно спецэфично выглядят.</p>

<p>Теперь по коду. Главная строчка в шапке greasemonkey&nbsp;&mdash; require. Она подключает jquery из репозитория Яндекса.</p>

<p>Дальше идет создание функции отладки GMlog. Если доступен объект console&nbsp;&mdash; его функция log становится доступна внутри GM-скрипта под именем GMlog. Эта функция просто выводит в консоль файрбага какие-то данные.</p>

<p>Дальше мы регистрируем функцию определения ссылок и рисования их в объекте окна, а не в локальном пространстве имен GM-скрипта.</p>

<p>А дальше мы определяем две функции. Одна&nbsp;&mdash; собственно нахождение музыки и отображение ссылок на скачивание. Вторая&nbsp;&mdash; рисование иконки в виде ноты.</p>

<p>Функция detect_audio делает следующее:</p>
<ol>
<li>Находит и удаляет ссылки на скачивание музыки, если уже такие есть. Это нужно чтобы ссылки не плодились при повторном нажатии на кнопку.</li>
<li>Ищет все input, где id начинается с "audio_info" и перебирает их.</li>
<li>Для каждого такого элемента ищется значение атрибута value. Оно содержит ссылку на файл и какое-то число через запятую.</li>
<li>Поэтому мы разбиваем эту строку по запятой</li>
<li>И берем только первую часть.</li>
<li>Дальше формируем html-код ссылки, которую будем отображать.</li>
<li>И вставляем ее сразу после найденного input.</li>
</ol>

<p>В общем, ничего сложного. Самый инетересный момент&nbsp;&mdash; это нахождение input с id, начинающимися с сaudio_info.</p>

<p>Функция true_load вообще не обязательна и сделана для красоты. Она делает вообще простую вещь. Если иконка еще не отображается&nbsp;&mdash; генерируется html-код этой иконки и вставляется в код страницы.</p>

<p>Два тонких момента. Первое&nbsp;&mdash; отображается ссылка или нет я определяю пытаясь найти значение ее атрибута. Естественно, этот атрибут включен в генерируемый код самой кнопки.</p>

<p>Второй момент&nbsp;&mdash; сама иконка. Я решил использовать иконку самого вконтакта. Но оказалось, что она является частью спрайта из двух иконок&nbsp;&mdash; знака плюс и ноты. Это был мой первый опыт работы со спрайтами) Ничего сложного на самом деле. Берем иконку, ставим ее в фон div-а и при помощи background-position добиваемся ее отображения.</p>

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

<p>Буду благодарен, если вы будете использовать этот скрипт и оставите свои отзывы и пожелания ниже. На вопросы тоже постараюсь ответить как можно оперативней. Еще, конечно, буду благодарен если поделитесь ссылкой на этот пост с друзьями вконтакте. Ну и подписывайтесь, не стесняйтесь, мне нравится писать GM-скрипты и я намерен раздавать их бесплатно. Не пропустите!</p>]]>
    </description>
    <dc:creator><![CDATA[ifman]]></dc:creator>
    
        <category><![CDATA[JavaScript]]></category>
    
        <category><![CDATA[разработка]]></category>
    
        <category><![CDATA[полезности]]></category>
    
<feedburner:origLink>http://dayte2.com/vkontakte-get-music-greasemonkey</feedburner:origLink></item>

<item>
    <title><![CDATA[Результаты проведенного конкурса на блоге фаната футболок]]></title> 
	<guid isPermaLink="false">http://dayte2.com/contest-results</guid>
	<pubDate>Tue, 09 Aug 2011 12:17:43 +0400</pubDate>
    <link>http://feedproxy.google.com/~r/Shamansblog/~3/Bghf-dumdnc/contest-results</link> 
    <description>
        <![CDATA[<img class="intropic" alt="фанат футболок конкурс" src="http://dayte2.com/img/tshirt-fan/logo-green.png">

<p>Как я и <a href="http://dayte2.com/start-tshirt-contest">обещал</a>&nbsp;&mdash; отчитываюсь о ходе и результатах конкурса, проведенного на моем сайте <a href="http://dayte2.com/go/tshirt-fan.ru">"Фанат футболок"</a>.</p>

<p>Расскажу о проведении, моих ошибках и результатах.</p><h2>Вводные данные</h2>

<p>Конкурс проходил с 8 по 24 июля. Суть конкурса проста&nbsp;&mdash; нужно придумать надпись для футболки и получить за нее максимум голосов. Призы денежные в размере 700, 350 и 150 рублей за первые три места. Варианты предлагаются в комментариях к странице конкурса и переносятся в голосование вручную.</p>

<p>Задача конкурса&nbsp;&mdash; привлечь аудиторию и трафик на мой новый проект, дать ему жизнь и, возможно, получить несколько ссылок с блогов и социальных сетей. Конечно, ссылки с соцсетей&nbsp;&mdash; дело спецэффическое, но не стоит его недооценивать. По ним не ходят боты, но ходят люди.</p>

<p>Тонкости реализации и подготовительная работа описаны в моем <a href="http://dayte2.com/start-tshirt-contest">предыдущем посте</a> на эту тему.</p>

<h2>Проведение конкурса</h2>

<p>Проведение было ленивым, потому что это первый мой конкурс и я хотел просто приглядеться, научиться и понять как это работает. Поэтому я не стал очень уж широко пиарить его и ограничился всего несколькими объявлениями в разных социальных сетях и на этом блоге. Как я покажу ниже, даже такая незначительная работа дала интересный результат.</p>

<p>Так как я мог работать с вконтакте (а комментарии были на этом движке) только из дома, то пользователи испытывали некий дискомфорт в плане скорости добавления их варианта в голосовалку. Зато многие оставили ссылки в своих аккаунтах на конкурсы, чем вызвали приток трафика.</p>

<p>Модуль голосований для MODx EasyPoll оказался глючным и неудобным. Пару раз он вообще отказывался отображать варианты голосований и результаты в тихоря, то есть, не выводя абсолютно никаких сообщений об ошибках. Предполагаю, что это связано с его заточкой под мультиязычность. Один раз я его починил, но когда он слетел уже в конце конкурса&nbsp;&mdash; плюнул. Не буду с ним связываться больше. Кажется, гораздо проще и правильней было делать голосование на движке вконтакте.</p>

<p>Как я и предполагал, ручное добавление вариантов голосования было неудобным и утомительным. Для следующего конкурса надо придумать автоматический вариант, либо сделать так, чтобы это не было так нудно.</p>

<p>Страницу конкурса я нашпиговал социальными кнопками как утку. Но это не давало эффекта, но портило внешний вид. Поэтому я убрал их и оставил обычный набор кнопок. Этого было достаточно.</p>

<p>В итоге два из трех победителей захотели получить свои призы деньгами. И только победитель, занявший первое место, захотел получить товары из принтдиректа. Я заказал на его адрес посылку, ее судьба мне неизвестна, но предполагаю, что она все еще в пути.</p>

<p>Внимание, рекламная пауза и слово спонсору. На сайте xtouch.ru вы можете <a href="http://www.xtouch.ru/" title="скачать игры на телефон бесплатно samsung gt-s5230">скачать игры на телефон бесплатно samsung gt-s5230</a> и не только на него. Можно скачать, например, на пацанскую нокию или другую модель самсунга. Нет, честно!:)</p>

<h2>Результаты</h2>

<p>Результаты неоднозначны. Для начала, покажу статистику посещений.</p>

<p><img src="http://dayte2.com/img/contest-results/visit.png" alt="статистика посещений во время проведения конкурса" class="fcenter"/></p>

<p>Как видно, она просто-таки взорвалась. С посещаемости в 10 человек в день я резко перепрыгнул в категорию посещаемости 100&nbsp;&mdash; 200 человек в день. Впечатляет. Ну лично меня&nbsp;&mdash; да, потому что, повторюсь, рекламы практически не было.</p>

<p>Теперь немного интересней&nbsp;&mdash; структура этих посещений.</p>

<p><img src="http://dayte2.com/img/contest-results/structure.png" alt="структура посещений во время проведения конкурса" class="fcenter"/></p>

<p>Видно действие рекламы. Первый пик приходится на переходы по ссылкам на сайтах. Затем доля этих переходов планомерно снижается, но взрывается количество прямых заходов. Люди ставят закладки на страницу конкурса и следят за ним. Характерный маленький пик под конец&nbsp;&mdash; это время результатов. Видно что многие поняли что не победят и даже не стали проверять.</p>

<p>Посмотрим теперь откуда трафик.</p>

<p><img src="http://dayte2.com/img/contest-results/sources.png" alt="источники трафика" class="fcenter"/></p>

<p>Первое, лидирующее место, как я и думал, занял вконтакт. Это очень крутой источник трафика, если им заниматься вплотную. Я оставил всего пару-тройку объявлений в группах и у себя на стене и вот результат. Конечно, тут еще нужно учитывать вирусные переходы. Люди оставляли комментарии у меня на сайте, они появлялись в их лентах новостей, по ним кликали их друзья. Кроме того, участники конкурсов просили проголосовать за них.</p>

<p>Важным источником трафика оказался сайт с обзорами конкурсов&nbsp;&mdash; ikonact.ru. Я, если честно, скептически отнесся к такого рода сайтам, но, видимо, зря. Потому что много посетителей было с него и подобных. Например, с prizolov.name, о котором я вообще узнал только во время проведения конкурса. Оказывается, есть специальные сайты, мониторящие твиттер и блогосферу на тему конкурсов. И с них идет неплохой траф.</p>

<p>На первый взгляд, весь трафик хороший. Количество заходов большое, отказов мало, время на сайте значительное. Но на самом деле, это иллюзия. Посмотрим на карту переходов.</p>

<p><img src="http://dayte2.com/img/contest-results/map1.png" alt="карта переходов по сайту" class="fcenter"/></p>

<p>Видно что со многих источников толстые и тонкие потоки трафика идут на одну страницу&nbsp;&mdash; страницу конкурса. А с нее выходит поток только в одном направлении, на еще одну страницу. Этот переход и дает низкий показатель отказов. Что же это за страница, кто-то уже догадался? Правильно, это страница с результатами голосования.</p>

<p><img src="http://dayte2.com/img/contest-results/map2.png" alt="карта переходов по сайту" class="fcenter"/></p>

<p>Это печалька, конечно. То есть, трафик на блоге на момент проведения конкурса был, но ни во что не конвертировался. Люди практически не смотрели сам блог и не кликали по ссылкам, они смотрели только на голосовалку и ни на что больше.</p>

<p>Конкурс, не смотря на приток трафика, не дал мне конверсии почти полностью. Была совершена всего пара продаж и они не окупили и половины расходов на проведение. Я был к этому готов, но все же, немного обидно:) К тому же, вполне возможно, что продажи были совершены не участникам конкурса, а посетителям, пришедшим с поисковых систем. Кстати, проведение конкурса никак не повлияло на набор ключевиков, по которым заходили юзеры.</p>

<p>Можно видеть по графику, что посещаемость с поиска несколько улучшилась после конкурса. Тут трудно сказать что повлияло. Может просто увеличение срока жизни сайта, улучшение индексации, внутренняя перелинковка (новые посты писались и снабжались ссылками на другие страницы). А может и поведенческий фактор сыграл роль. Ведь было большое количество заходов, да с социалок, да тематических, да с низкими отказами. Но тут трудно сказать.</p>

<h2>Заметки на будущее</h2>

<p>Во-первых, надо делать удобней для себя и пользователей. А именно&nbsp;&mdash; автоматизировать, либо разгружать поток. В данном случае, я специально сделал простое задание чтобы спровоцировать на участие в конкурсе максимальное количество участников. Придумать текст и написать его в комментарии&nbsp;&mdash; просто. Но если надо уменьшить и проредить поток, то можно попросить, скажем, прислать фото. Такой поток удобней обрабатывать, к тому же, он даст халявный контент для постов.</p>

<p>Еще нужно перед началом каждого конкурса работать над конверсией. То есть, либо в условия конкурса включать конверсию, либо делать ее очень вероятной. Например, в данном случае, надо было сделать набор ярких привлекательных тизеров на популярные темы в сайдбарах. Естественно, для этого надо сначала изучить какие темы популярны. Но век живи, век учись, как говорится. В следующий раз буду умней.</p>

<p>Такие дела.</p>]]>
    </description>
    <dc:creator><![CDATA[ifman]]></dc:creator>
    
        <category><![CDATA[интернет]]></category>
    
        <category><![CDATA[SEO]]></category>
    
<feedburner:origLink>http://dayte2.com/contest-results</feedburner:origLink></item>

<item>
    <title><![CDATA[Пакетная конвертация doc в pdf]]></title> 
	<guid isPermaLink="false">http://dayte2.com/packet-pdf-converter-pdfcreator</guid>
	<pubDate>Tue, 26 Jul 2011 16:42:15 +0400</pubDate>
    <link>http://feedproxy.google.com/~r/Shamansblog/~3/SyTcjLwHOoA/packet-pdf-converter-pdfcreator</link> 
    <description>
        <![CDATA[<img src="http://dayte2.com/img/pdfcreator/logo.png" alt="PDFcreator пакетная конвертация в pdf" class="intropic"/>
<p>Ох как я долго искал нормальный инструмент для того, чтобы перевести много файлов формата doc в pdf. Дело в том, что pdf-принтеров просто куча. Платные, бесплатные, условно бесплатные, с установкой, без, с качеством печати хуже или лучше. Но программ, которые умеют схватить пачку файлов и выдать пачку их же, но в pdf не так уж много.
</p>
<p>И вот наконец&nbsp;&mdash; нашел!</p><p>Представляю вашему вниманию программу PDFCreator. Вот такое вот оригинальное название, да. Это, по сути, простой pdf принтер. Но у него есть особая приблуда&nbsp;&mdash; он умеет, хоть и окольным путем, конвертировать много файлов.</p>

<p>Вообще, пакетные конвертаторы мне попадались. Они обычно платные и предлагают триальную версию. Ага, пробовал. Не зря же триал. Некоторые из них распечатывали мне полную хрень, убивали бордеры на таблицах, смещали элементы и не распечатывали почему-то некоторые картинки. Другие печатали нормально, но в низ каждой страницы впихивали свою рекламу. Ее, конечно, можно убрать, купив программу, но от этого останавливает одно (кроме трудности оплаты)&nbsp;&mdash; один файл из двух страниц у меня конвертился около 10 минут! Реально! Я чуть было не подумал что программа зависла. Но нет, файлы-таки родились.</p>

<p>В общем, PDFCreator лишен этих недостатков. Печать документа происходит довольно быстро. Качественно. Бордеры не пропадают, картинки тоже. Ничего не шевелится никуда. Все классно. Рекламы нет. И еще бонус&nbsp;&mdash; эта программа абсолютно бесплатна! Да еще и с открытым кодом. Это просто праздник какой-то!</p>

<h2>Как конвертировать много документов в pdf в пакетном режиме</h2>

<p>Итак, как пользоваться программой? Сначала ее нужно установить, разумеется. Потом запускаем PDFCreator.</p>

<p><img src="http://dayte2.com/img/pdfcreator/pdfcreator1.png" alt="PDFCreator окно пакетного принтера" class="fcenter"/></p>

<p>Это не что иное, как очередь печати принтера pdf. Прежде всего, нам надо сделать так, чтобы при добавлении в очередь файлов, он пока не пытался их печатать, пока мы не настроим все. Поэтому лезем в меню "Принтер" и жмем "Остановить". Должна появиться галочка нпротив этого пункта.</p>

<p><img src="http://dayte2.com/img/pdfcreator/pdfcreator2.png" alt="PDFCreator пакетная конвертация" class="fcenter"/></p>

<p>Теперь добавим файлы. Можно воспользоваться кнопкой "Добавить" в панели, но я просто выделил все нужные файлы и перетащил их на окно PDFCreator.</p>

<p>Дальше происходит магия. PDFCreator спрашивает можно ли назначить себя принтером по-умолчанию. Нужно ответить "да". Не бойтесь, это временно и нужно как раз для автоматизации. Затем он начинает открывать файлы один за одним и нажимать "Печать" для каждого. Так как он является принтером по-умолчанию, все эти файлы появляются в очереди на печать. Конечно, выглядит это не очень. В моем случае мелькали окошки Word. Но оно того стоит. В общем, ждем.</p>

<p>Когда все документы появятся в очереди на печать&nbsp;&mdash; самое время настроить экспорт в pdf. Для этого заходим в меню "Настройки" и настраиваем. Важно залезть во вкладку "Автосохранение" и настроить ее. В этом случае, PDFCreator не будет спрашивать у вас куда сохранять и как обозвать каждый новый конвертированный файл. Чтобы файлы на выходе назывались так же, как оригиналы, но с другим расширением&nbsp;&mdash; нужно указать в поле "Имя файла" шаблон &lt;Title&gt;.</p>

<p><img src="http://dayte2.com/img/pdfcreator/pdfcreator3.png" alt="PDFCreator настройка пакетной конвертации" class="fcenter"/></p>

<p>Все! Теперь все готово. Отпускаем нашу лошадку. Идем в "Принтер" и снова нажимаем "Остановить". Пааааехало! Наши файлы один за одним поступают на печать этому pdf-принтеру и он выплевывает их в заданное место уже в нужном формате. Файлы на выходе хорошего качества, нормального размера и без рекламы.</p>

<p>У меня было 296 файлов в формате .doc. PDFCreator пакетно конвертировал эти doc в pdf примерно за три часа, отъедая 50% ЦП. По-моему, это вполне приемлемый результат.</p>

<p>Для того чтобы не потерять эту замечательную программу, я залил текущую версию к себе. Вы можете <a href="http://dayte2.com/files/soft/PDFCreator.zip">скачать</a> версию, актуальную на момент написания поста здесь, либо <a href="http://dayte2.com/go/www.pdfforge.org/">пройти на сайт программы</a> и скачать последнюю версию.</p>

<p>Если я этим постом сэкономил вам несколько миллионов часов монотонной работы&nbsp;&mdash; можете отблагодарить меня всякими приятностями вроде твитов, плюсиков или хотя бы в комментариях:)</p>]]>
    </description>
    <dc:creator><![CDATA[ifman]]></dc:creator>
    
        <category><![CDATA[софт]]></category>
    
        <category><![CDATA[полезности]]></category>
    
<feedburner:origLink>http://dayte2.com/packet-pdf-converter-pdfcreator</feedburner:origLink></item>

<item>
    <title><![CDATA[Делаем классную ленту изображений с автопрокруткой]]></title> 
	<guid isPermaLink="false">http://dayte2.com/jcarousellite</guid>
	<pubDate>Mon, 25 Jul 2011 15:02:22 +0400</pubDate>
    <link>http://feedproxy.google.com/~r/Shamansblog/~3/pevSNlg-uwg/jcarousellite</link> 
    <description>
        <![CDATA[<p>Сегодня хочу рассказать как сделать эффектную самопрокручивающуюся ленту изображений. Она выглядит как баннеры с автосменой. Может, вы захотите разместить таким образом ссылки на спецпредложения в магазине или ссылки на последние посты? Как бы то ни было, я научу как это делать. Это очень легко.</p>

<p>Здесь должен быть JavaScript.<p><p>Чтобы посмотреть JavaScript в действии - <a href="http://dayte2.com/jcarousellite?nojs">перейдите пожалуйста к этой статье на сайте</a>.</p>
<p>Здесь должен быть JavaScript.<p><p>Чтобы посмотреть JavaScript в действии - <a href="http://dayte2.com/jcarousellite?nojs">перейдите пожалуйста к этой статье на сайте</a>.</p>
<div class="fcenter mycarousel">
	<ul>
		<li><img src="http://dayte2.com/img/sample/palm-s.png" alt="пальма"/></li>
		<li><img src="http://dayte2.com/img/sample/malinka-s.png" alt="малина"/></li>
		<li><img src="http://dayte2.com/img/sample/blue-sea-s.png" alt="Морько"/></li>
		<li><img src="http://dayte2.com/img/sample/4cherries-s.png" alt="Вишенки"/></li>
		<li><img src="http://dayte2.com/img/sample/palm-s.png" alt="пальма"/></li>
		<li><img src="http://dayte2.com/img/sample/malinka-s.png" alt="малина"/></li>
		<li><img src="http://dayte2.com/img/sample/blue-sea-s.png" alt="Морько"/></li>
		<li><img src="http://dayte2.com/img/sample/4cherries-s.png" alt="Вишенки"/></li>
	</ul>
</div><h2>Что нам понадобится</h2>
<ul>
    <li>jQuery</li>
    <li>jcarousel lite</li>
    <li>Изображения</li>
</ul>

<p>И все. <a href="http://dayte2.com/what-is-jquery">Где взять jQuery</a> я думаю, все знают. А <a href="http://dayte2.com/go/www.gmarwaha.com/jquery/jcarousellite/">jcarousel Lite</a> я нагуглил за вас. Я долго искал плагин, который позволит мне быстро и без проблем, без гигантских объемов кода и хитрых премудростей сделать такой простой эффект. И я нашел его и очень рад этому. Фактически, этот пост я пишу еще и для себя, как закладку, чтобы заглянуть сюда когда в следующий раз потребуется сделать галерею изображений с автоскроллом.</p>

<h2>Пишем html для ленты изображений</h2>

<p>Тут классика. Используем список ul и оборачиваем его в div. На этот див мы будем натравливать плагин, так что ему нужен идентификатор. В моем случае это класс.</p>

<pre><code>
&lt;div class="mycarousel"&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;img src="http://dayte2.com/img/sample/palm-s.png" alt="пальма"/&gt;&lt;/li&gt;
		&lt;li&gt;&lt;img src="http://dayte2.com/img/sample/malinka-s.png" alt="малина"/&gt;&lt;/li&gt;
		&lt;li&gt;&lt;img src="http://dayte2.com/img/sample/blue-sea-s.png" alt="Морько"/&gt;&lt;/li&gt;
		&lt;li&gt;&lt;img src="http://dayte2.com/img/sample/4cherries-s.png" alt="Вишенки"/&gt;&lt;/li&gt;
		&lt;li&gt;&lt;img src="http://dayte2.com/img/sample/palm-s.png" alt="пальма"/&gt;&lt;/li&gt;
		&lt;li&gt;&lt;img src="http://dayte2.com/img/sample/malinka-s.png" alt="малина"/&gt;&lt;/li&gt;
		&lt;li&gt;&lt;img src="http://dayte2.com/img/sample/blue-sea-s.png" alt="Морько"/&gt;&lt;/li&gt;
		&lt;li&gt;&lt;img src="http://dayte2.com/img/sample/4cherries-s.png" alt="Вишенки"/&gt;&lt;/li&gt;
	&lt;/ul&gt;
&lt;/div&gt;
</code></pre>

<p>Важно чтобы изображения были одного размера. Иначе будет смотреться не так эффектно. Поэтому придется напрячься и обработать их.</p>

<h2>Готовим JavaScript для карусели изображений</h2>

<p>Нужно подключить jQuery. Как это сделать, думаю, все знают. А еще нужно подключить библиотеку jcarousel Lite. Она все и делает.</p>

<p>После загрузки страницы, нужно натравить плагин на нашу ленту изображений и произойдет чудо!</p>

<pre><code>
&lt;script type='text/javascript' &gt;
$(function()    {
    $(".mycarousel").jCarouselLite({
		auto: 2000,
		speed: 1000,
		circular: true,
		visible: 4
    });
});
&lt;/script&gt;
</code></pre>

<p>Это все! Реально. Больше ничего не нужно. Не нужно подключать и настраивать темы. Не нужно делать какие-то контролы и писать дополнительный код. У вас есть стандартный код списка изображений и единственный вызов плагина с параметрами. Это так, как должно быть. Я в восторге, если честно.</p>

<p>О возможных параметрах и их значениях можно прочитать в оригинале на <a href="http://dayte2.com/go/www.gmarwaha.com/jquery/jcarousellite/#doc">страничке плагина</a>. Ну а я вкратце переведу вам что зачем.</p>

<h2>Возможные параметры галереи</h2>

<p><b>btnPrev</b> - идентификатор, определяющий кнопку "Назад". Это нужно если вы делаете управление прокруткой с помощью кнопок.</p>
<p><b>btnNext</b> - идентификатор для кнопки "Вперед".</p>
<p><b>btnGo</b> - вы можете сделать переход по номерам элементов. При клике на какой-то элемент, карусель должна быть проскроллена на определенный итем. Подробнее написано в документации.</p>
<p><b>mouseWheel</b> - true/false значение, определяющее будет ли карусель прокручиваться от скролла мышки. Требует плагин mousewheel.</p>
<p><b>auto</b> - true/false значение, определяющее будет ли лента крутиться сама.</p>
<p><b>speed</b> - скорость прокрутки в милисекундах.</p>
<p><b>easing</b> - эффект прокрутки. Можно сделать эффект подпрыгивания. Требует плагина easing.</p>
<p><b>vertical</b> - может нужно, чтобы картинки крутились вертикально?</p>
<p><b>circular</b> - будет ли лента останавливаться по достижении последней картинки или будет крутиться по кругу?</p>
<p><b>visible</b> - сколько элементов видно</p>
<p><b>start</b> - с какого элемента начинать</p>
<p><b>scroll</b> - по сколько элементов прокручивается</p>
<p><b>beforeStart</b> - callBack функция, вызывающаяся до начала анимации</p>
<p><b>afterEnd</b> - callBack функция, вызывающаяся в конце анимации</p>

<p>Такие дела. Пользуйтесь!</p>

<p>А я закончил конкурс на <a href="http://tshirt-fan.ru/">блоге фаната футболок</a> и скоро напишу о нем отчет. </p>]]>
    </description>
    <dc:creator><![CDATA[ifman]]></dc:creator>
    
        <category><![CDATA[html]]></category>
    
        <category><![CDATA[JavaScript]]></category>
    
        <category><![CDATA[разработка]]></category>
    
<feedburner:origLink>http://dayte2.com/jcarousellite</feedburner:origLink></item>

<item>
    <title><![CDATA[Как отлавливать и исправлять ошибки в MODx]]></title> 
	<guid isPermaLink="false">http://dayte2.com/mox-catching-errors-by-self</guid>
	<pubDate>Mon, 18 Jul 2011 12:30:15 +0400</pubDate>
    <link>http://feedproxy.google.com/~r/Shamansblog/~3/eZuA_tNajkI/mox-catching-errors-by-self</link> 
    <description>
        <![CDATA[<img src="http://dayte2.com/img/modx-logo.png" alt="MODx логотип" class="intropic"/>
<p>Столкнулся сегодня с ошибкой в MODx, которая вызывала у меня удивление. Я просто нажал "удалить все, помеченное на удаление" в мэнеджере сайта и получил ошибку.</p>

<blockquote>A possible CSRF attempt was detected. No referer was provided by the server.</blockquote>

<p>Как исправить ее и другие неизвестные ошибки&nbsp;&mdash; расскажу в этом посте. Надо сказать, что предложенные методы частично переносимы и на другие CMS и скрипты.</p><p>Все оказалось ровно также просто, как и странно. Непонятно почему, но MODx решил изменить свои настройки выполняя это простое действие, которое раньше происходило без сбоев.</p>

<p>Итак, что нужно делать.</p>

<ul>
    <li>Зайти в phpMyAdmin в базу данных, где хранятся данные вашего сайта.</li>
    <li>Найти таблицу "modx_system_settings". Если вы выбирали другой префикс, то она будет выглядеть так: "ПРЕФИКС_system_settings".</li>
    <li>Нажимаем кнопку "Обзор"</li>
    <li>Листаем примерно на третью страницу</li>
    <li>Находим поле "validate_referer". Если оно установлено в 1&nbsp;&mdash; меняем на 0.</li>
    <li>Сохраняем, проверяем.</li>
</ul>

<p>Должно получиться.</p>

<h2>Как включить отображение ошибок в MODx</h2>

<p>Если ваш сайт поломался и вы не понимаете в чем дело&nbsp;&mdash; нужно продиагностировать его. Нужно понять что не так прежде чем пытаться чинить. PHP и MODx имеют механизмы отлавливания и отображения ошибок, но эти механизмы в MODx по-умолчанию отключены. Чтобы включить их, нужно сделать ряд действий.</p>

<p>Если вы разрабатываете свой сниппет, вам достаточно включить две строки в любом месте (лучше в начале) сниппета.</p>

<pre><code>
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
</code></pre>

<p>Эти две строки с большой долей вероятности включат отображение всех ошибок и предупреждений, которые найдет php.</p>

<p>Если вы просто пользователь сайта&nbsp;&mdash; создайте новый сниппет. Назовите его, например, 'Debug', заполните его вышеописанными строками кода и включите в шаблон страницы или любой чанк, участвующий в ее формировании:</p>

<pre><code>
[[Debug]]
</code></pre>

<p>Таким образом вы включите отображение ошибок там, где вызывается этот сниппет.</p>

<p>Зачастую включение этих строк в скрипт выводит сообщение:</p>

<pre><code>
Parse error: syntax error, unexpected ')' in /path2site/assets/plugins/phx/phx.parser.class.inc.php(220) : eval()'d code on line 1
Parse error: syntax error, unexpected ')' in path2site/assets/plugins/phx/phx.parser.class.inc.php(226) : eval()'d code on line 1
</code></pre>

<p>Не пугайтесь. Эта ошибка phx. Она, кажется, никак не влияет на работу сайта и самого phx, так что можно не обращать на нее внимания.</p>

<p>Но вот если вы увидели другие ошибки&nbsp;&mdash; это уже тревожный знак. Для начала попробуйте загуглить точный текст ошибки (поиск в кавычках). Разумеется, не надо включать в поисковую фразу то, что уникально для вашего сайта. Например, путь к файлу на сервере. Включайте только значимый текст. Например "Parse error: syntax error, unexpected ')' in". Этого будет достаточно чтобы найти много материалов для изучения.</p>

<p>Вообще, я говорили и говорю что когда сталкиваешься с чем-то неизвестным, главное что нужно&nbsp;&mdash; это получить информацию. На основе информации всегда можно либо найти проблему, либо найти еще информации. При нахождении проблемы остается только найти оптимальный способ ее решения.</p>

<p>Всегда нужно помнить что с огромной долей вероятности ваша проблема уже была у кого-то и он ее решил. И это есть в сети. Пусть не на русском, на английском, но почти всегда ответ есть. Например, способ решения задачи из начала поста я нашел на буржуинском сообществе MODx, на форуме. Это была чуть ли не первая ссылка в гугле.</p>

<p>Поэтому когда у вас что-то не работает&nbsp;&mdash; не бойтесь, ищите, узнавайте, разбирайтесь. Конечно, стоит поостеречься вслепую вносить какие-то изменения в вашу систему, если не понимаете что эти изменения делают. Так можно не только починить сайт, но и доломать его окончательно так, что проще будет новый сделать. Вдруг вам какой-нибудь шутник подскажет скрипт для удаления всех данных? Или, хуже, для отправки логина-пароля администратора ему на e-mail? Так что будьте внимательны и не доверяйте всему, что пишут <del>на заборе</del> в интернете.</p>

<h2>Самостоятельное решение проблем или использование знаний специалистов?</h2>

<p>Когда вы сталкиваетесь с проблемой, у вас есть два выхода&nbsp;&mdash; взять на себя ответственность по исправлению ошибки, либо попросить кого-то, кто опытней (предполагается), сделать все за вас. В менеджменте это называется "делегировать". Люблю это слово:)</p>

<p>Понятно, что если вы делаете сами, вы делаете долго, без гарантии исправления и можете сделать не вполне верно. Коряво, то есть. Но с другой стороны, если вы самостоятельно решаете проблему, вы получаете много печенек. Вы получаете ценный опыт, вы лучше разбираетесь в собственной системе. Вы получаете знания, которые можно использовать при исправлении другой, может, совсем иной ошибки на другом сайте в следующей жизни. И главное&nbsp;&mdash; вы получаете удовольствие от того, что сами сусами.</p>

<p>С другой стороны, исправление проблемы профессионалом будет стоить вам денег, но проблема будет исправлена быстро и, скорее всего, качественно. Конечно, гарантии вам никто не даст, но на то они и узкие специалисты чтобы уметь что-то лучше, чем специалисты другой области или широкого профиля.</p>

<p>При выборе метода я бы ориентировался на срочность. Если у вас интернет магазин и вы теряете прибыль&nbsp;&mdash; исправлять ошибку нужно срочно. Не жалко заплатить эксперту, чтобы тот быстро все поправил. Потом можно доплатить чтобы объяснил что именно он сделал и где была проблема. Так вы сэкономите время и получите часть плюшек от варианта "сделай сам".</p>

<p>С другой стороны, если на том же интернет магазине не работает вывод баннеров&nbsp;&mdash; это не критично и можно поковырять самостоятельно.</p>

<p>Вообще, самостоятельная деятельность&nbsp;&mdash; это хорошо. Я больше предпочитаю так. Хотя, конечно не во всех областях. Например чтобы создать 3D-модель нужного качества мне потребуется, скажем, месяц, а спецу&nbsp;&mdash; день. Разница?:) Хотя, например, узнать <a href="http://dmitriydenisov.com/seo/prodvizhenie-sajta.html" title="как самостоятельно продвигать сайт">как самостоятельно продвигать сайт</a> ничего не стоит. Материалов в сети много и они в последнее время, приемлемого качества. Достаточного для того, чтобы сделать не так уж плохо. А до специалиста, при желании, докачаться можно за несколько месяцев. Не такая уж мудреная область.</p>

<p>Хватит разглагольствовать, пора закругляться. Планирую написать в ближайшее время пост про vCard и как его сделать на своем сайте на MODx&nbsp;&mdash; <a href="http://dayte2.com/go/feeds.feedburner.com/Shamansblog">не пропустите</a>. Кроме того, если у вас ошибка и вам нужен эксперт чтобы ее исправить - смело <a href="http://dayte2.com/go/ifman.ru/#message">обращайтесь ко мне</a>. Могу помочь советом или делом. Деньги возьму не всегда, зависит от количества работы:)</p>]]>
    </description>
    <dc:creator><![CDATA[ifman]]></dc:creator>
    
        <category><![CDATA[MODx]]></category>
    
        <category><![CDATA[php]]></category>
    
<feedburner:origLink>http://dayte2.com/mox-catching-errors-by-self</feedburner:origLink></item>

    </channel>
</rss>

