<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RuSS Web Development</title>
	<atom:link href="http://rwdev.info/feed" rel="self" type="application/rss+xml" />
	<link>http://rwdev.info</link>
	<description>IT блог</description>
	<lastBuildDate>Sun, 07 Aug 2011 06:57:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>5 причин по которым стоит использовать Project manager software</title>
		<link>http://rwdev.info/freelance/5-prichin-po-kotorym-stoit-ispolzovat-project-manager-software</link>
		<comments>http://rwdev.info/freelance/5-prichin-po-kotorym-stoit-ispolzovat-project-manager-software#comments</comments>
		<pubDate>Sun, 07 Aug 2011 06:57:15 +0000</pubDate>
		<dc:creator>RuSS</dc:creator>
				<category><![CDATA[Freelance]]></category>

		<guid isPermaLink="false">http://rwdev.info/?p=29</guid>
		<description><![CDATA[Мне всегда было странно, почему заказчик, как лицо, которое заинтересовано в максимально эффективной работе, над его же проектом игнорит баг трекинг системы. Далеко не первый раз, взяв какой-нибудь проект на разработку в свое свободное от работы время, я хочу ввести в культуру общения между разработчиком и компанией, которая заказала проект, какую-нибудь систему, BaseCamp, RedMine, на [...]]]></description>
			<content:encoded><![CDATA[<p>Мне всегда было странно, почему заказчик, как лицо, которое заинтересовано в максимально эффективной работе, над его же проектом игнорит баг трекинг системы.</p>
<p>Далеко не первый раз, взяв какой-нибудь проект на разработку в свое свободное от работы время, я хочу ввести в культуру общения между разработчиком и компанией, которая заказала проект, какую-нибудь систему,<br />
BaseCamp, RedMine, на худой конец Mantis, но это на крайний случай.<br />
Понятное дело, что под мелкий проект нет смысла разворачивать ту или иную систему, можно обойтись каким-нибудь электронным документом, но ведь о мелких и нет речи.</p>
<p>Данная идея встречает различный спектр преград. Начиная от того, что не приходит письмо об регистрации на e-mail, заканчивая крылатым выражением &#8220;зачем нам играть в тудушки?&#8221;.</p>
<p>В первую очередь баг трекер &#8211; это великолепный ToDo лист, который отображает реальное положение дел (в том случае. если им активно пользуются, естественно).<br />
Так же это отличный показатель того на чем работа обычно быстро идет, на чем стопорится.</p>
<p>Некоторые люди (в том числе и я) на больших проектах используют баг трекер, чтобы &#8220;стучать&#8221; друг на друга. И даже не из-за конкуренции, хотя и она немаловажна, а больше для того, чтобы намекнуть вышестоящим о том, что товарищ ленится по тем или иным причинам и тормозит процесс. Согласитесь, что это значительно удобнее в моральном плане, нежели идти и жаловаться. Тут и совесть чиста и есть шанс, на то что ситуация изменится в лучшую сторону.</p>
<p>Итак, вот они 5 причин по которым следует пользоваться именно системой по ведению проекта:</p>
<ol>
<li>Вся документация, пароли и прочее хранятся в одном месте, вместо тучи файлов.</li>
<li>Баг трекер позволяет структурировать задачи по категориям и наглядно их отобразить, вместо того чтобы писать какие-то задачки на листочках и раздавать сотрудникам.</li>
<li>Нет необходимости тратить время на встречи и обсуждения текущих дел, сроков, так как достаточно проанализировать количество закрытых / открытых заданий, посмотреть на milestone.</li>
<li>Любые недовольства высказываются в комментарии, которые всегда (или практически) открыты.</li>
<li>Является отличным документом, который может встать на защиту Вашей правоты, а так же избавить от уймы рутинной работы.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://rwdev.info/freelance/5-prichin-po-kotorym-stoit-ispolzovat-project-manager-software/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL &#8211; ошибки</title>
		<link>http://rwdev.info/mikrobloging/mysql-oshibki</link>
		<comments>http://rwdev.info/mikrobloging/mysql-oshibki#comments</comments>
		<pubDate>Sat, 02 Jul 2011 19:49:02 +0000</pubDate>
		<dc:creator>RuSS</dc:creator>
				<category><![CDATA[Микроблогинг]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[ошибки]]></category>
		<category><![CDATA[решение]]></category>

		<guid isPermaLink="false">http://rwdev.info/?p=26</guid>
		<description><![CDATA[Столкнулся только что с забавной ошибкой mysql вот такого вида. 1142 &#8211; INSERT command denied to user &#8216;abc&#8217;@'host.com&#8217; for table &#8216;billing&#8217; в большинстве случаев стоит грешить не на хацкеров, а на место под БД, которое скорее всего закончилось и инсерты перестают проходить.]]></description>
			<content:encoded><![CDATA[<p>Столкнулся только что с забавной ошибкой mysql вот такого вида.</p>
<blockquote><p>1142 &#8211; INSERT command denied to user &#8216;abc&#8217;@'host.com&#8217; for table &#8216;billing&#8217;</p></blockquote>
<p>в большинстве случаев стоит грешить не на хацкеров, а на место под БД, которое скорее всего закончилось и инсерты перестают проходить. </p>
]]></content:encoded>
			<wfw:commentRss>http://rwdev.info/mikrobloging/mysql-oshibki/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Мультиязычность на CodeIgniter</title>
		<link>http://rwdev.info/codeigniter/multiyazychnost-na-codeigniter</link>
		<comments>http://rwdev.info/codeigniter/multiyazychnost-na-codeigniter#comments</comments>
		<pubDate>Sat, 02 Jul 2011 08:46:16 +0000</pubDate>
		<dc:creator>RuSS</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[динамическая подгрузка]]></category>
		<category><![CDATA[мультиязычность]]></category>
		<category><![CDATA[переопределение]]></category>
		<category><![CDATA[реализация]]></category>

		<guid isPermaLink="false">http://rwdev.info/?p=19</guid>
		<description><![CDATA[Существует ни один вариант реализации мультиязычности на сайте. Кто-то может реализовывать это через базу данных, кто-то через специализированные файы, кто-то просто через многомерные массивы. В CodeIgniter мультиязычность реализована довольно таки просто. В папки application/language создается папка с нужным языком (если их будет несколько), например russian и туда кладется php файл с массивом соответствий. Например вот [...]]]></description>
			<content:encoded><![CDATA[<p>Существует ни один вариант реализации мультиязычности на сайте.<br />
Кто-то может реализовывать это через базу данных, кто-то через специализированные файы, кто-то просто через многомерные массивы.</p>
<p>В CodeIgniter мультиязычность реализована довольно таки просто.<br />
В папки application/language создается папка с нужным языком (если их будет несколько), например russian и туда кладется php файл с массивом соответствий. Например вот так</p>
<p><a href="http://rwdev.info/wp-content/uploads/2011/07/codeigniter_language.jpg"><img class="alignnone size-medium wp-image-20" title="codeigniter_language" src="http://rwdev.info/wp-content/uploads/2011/07/codeigniter_language-300x213.jpg" alt="CodeIgniter language" width="300" height="213" /></a></p>
<p>Чтобы перевести ту или иную строку должна быть подгружена библиотека language и соответствующий массив с языковыми значениями. Чтобы не писать длинную строку вида <code>$this-&gt;lang-&gt;line('some_key')</code> я предпочитаю использовать функцию lang(); хэлпера language.</p>
<p>Теперь от теории к практике!<br />
Делая бэкенд веб-сайта BasaPress перед мной встала задача динамически менять язык при отправке того или иного письма.<br />
К моему удивлению действия в виде <code>$this->lang->load(<strong>filename</strong>, <strong>language</strong>);</code> перед тем как отработает шаблон письма ничего не давали.<br />
Погуглив немного можно наткнуться на всякие различные i18n модули, библиотеки и прочие фичи, которые расширяют функционал. Но загвоздка в том, что меня устраивает как работает CI, загвоздка лишь в том, что он не хочет подгружать язык в определенном участке кода.</p>
<p>Взглянув на метод load класса <strong>CI_Lang</strong> сразу становится ясно в чем дело</p>
<blockquote><p>
if (in_array($langfile, $this->is_loaded, TRUE))<br />
{<br />
return;<br />
}
</p></blockquote>
<p>т.е., к примеру если мы по умолчанию загрузили general_lang.php с английской версией, а потом где-то нам понадобилось перейти на general_lang.php с русской версией, наличие значения в переменной is_loaded не позволит осуществить подгрузку. Немного странно почему разработчики CI не учли этот момент. Ведь плодить файлы с разными именами, чтобы перевести одно и то же слово &#8211; это далеко не лучший вариант.</p>
<p>К счастью все правится довольно просто и быстро.<br />
В случае с <strong>CodeIgniter 2.0</strong> библиотека lang лежит в папке <strong>system/core</strong>. Нам необходимо переопределить метод load(). Для этого создадим файл в application/core <strong>MY_Lang.php</strong><br />
Далее, все что нужно &#8211; унаследовать класс CI_Lang</p>
<blockquote><p>
class MY_Lang extends CI_Lang<br />
{<br />
 &#8230;<br />
}
</p></blockquote>
<p>и скопировать внутрь полностью метод load().</p>
<p>После чего немного поправим код вот таким образом.</p>
<blockquote><p>
if (in_array($langfile, $this->is_loaded, TRUE) &#038;&#038; !$idiom)<br />
{<br />
return;<br />
}
</p></blockquote>
<p>Добавилась проверка на наличие языка в подгрузке, что теперь позволит спокойно использовать изменять язык в любом участке кода.</p>
<p>На этом пожалуй все, успехов! </p>
]]></content:encoded>
			<wfw:commentRss>http://rwdev.info/codeigniter/multiyazychnost-na-codeigniter/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Облако тегов на CodeIgniter</title>
		<link>http://rwdev.info/codeigniter/oblako-tegov-na-codeigniter</link>
		<comments>http://rwdev.info/codeigniter/oblako-tegov-na-codeigniter#comments</comments>
		<pubDate>Fri, 01 Jul 2011 18:34:45 +0000</pubDate>
		<dc:creator>RuSS</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[библиотека]]></category>

		<guid isPermaLink="false">http://rwdev.info/?p=4</guid>
		<description><![CDATA[Не так давно понадобилось приладить к одному веб-сайту категории в виде облака тегов. Поскольку функционала там всего ничего, а искать подобные примочки не в моем стиле, я решил написать небольшую библиотеку для CodeIgniter. Выкладываю на общий суд. Ничего особенного в запуске данной библиотеки нет. Копируем tagcloud.php в папку %APPLICATION_PATH%/libraries, подгружаем библиотеку $this-&#62;load-&#62;library(&#8216;tagcloud&#8217;); Далее, чтобы получить [...]]]></description>
			<content:encoded><![CDATA[<p>Не так давно понадобилось приладить к одному веб-сайту категории в виде облака тегов. Поскольку функционала там всего ничего, а искать подобные примочки не в моем стиле, я решил написать небольшую библиотеку для CodeIgniter.</p>
<p>Выкладываю на общий суд.</p>
<p>Ничего особенного в запуске данной библиотеки нет.<br />
Копируем tagcloud.php в папку %APPLICATION_PATH%/libraries, подгружаем библиотеку</p>
<blockquote><p>$this-&gt;load-&gt;library(&#8216;tagcloud&#8217;);</p></blockquote>
<p>Далее, чтобы получить облако тегов необходимо передать массив с title тега, его url и count (count &#8211; это количество фильмов с этой категорией, к примеру).</p>
<blockquote><p>$links = array(<br />
array(&#8216;title&#8217; =&gt; &#8216;Action&#8217;, &#8216;url&#8217; =&gt; &#8216;google.com&#8217;, &#8216;count&#8217; =&gt; 15),<br />
array(&#8216;title&#8217; =&gt; &#8216;Thriller&#8217;, &#8216;url&#8217; =&gt; &#8216;http://yandex.com&#8217;, &#8216;count&#8217; =&gt; 235),<br />
array(&#8216;title&#8217; =&gt; &#8216;Comedy&#8217;, &#8216;url&#8217; =&gt; &#8216;http://www.google.com&#8217;, &#8216;count&#8217; =&gt; 46),<br />
array(&#8216;title&#8217; =&gt; &#8216;Animation&#8217;, &#8216;url&#8217; =&gt; &#8216;animation&#8217;, &#8216;count&#8217; =&gt; 56),<br />
);</p>
<p>echo $this-&gt;tagcloud-&gt;getTagcloud($links);
</p></blockquote>
<p><em>Обращаю внимание, что url не содержащих http считается внутренним. т.е. sitename.com/google.com</em></p>
<p>По умолчанию шрифты варьируются от 9 до 18, но при помощи конфигов можно задать их как угодно. Так же для для линков можно прописать собственный класс (по умолчанию tagcloud)</p>
<blockquote><p>
$config = array(<br />
&#8216;min_size&#8217;	=> 12,<br />
&#8216;max_size&#8217;	=> 36,<br />
&#8216;class&#8217; => &#8216;mytagclass&#8217;<br />
);<br />
$this->tagcloud->initialize($config);
</p></blockquote>
<p>или же можно конфиг передать сразу при подгрузке библиотеки </p>
<blockquote><p>
$this->load->library(&#8216;tagcloud&#8217;, $config);
</p></blockquote>
<p><a href="/uploads/tagcloud.php_0.1.zip">Скачать библиотеку можно отсюда</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rwdev.info/codeigniter/oblako-tegov-na-codeigniter/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

