<?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/"
	>

<channel>
	<title>Студия интернет-решений "Медвед"</title>
	<atom:link href="http://medved-ltd.ru/feed" rel="self" type="application/rss+xml" />
	<link>http://medved-ltd.ru</link>
	<description>Очередной блог на WordPress</description>
	<pubDate>Wed, 14 Oct 2009 19:00:32 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Spider bot на PHP</title>
		<link>http://medved-ltd.ru/posts/spider-bot-na-php/ </link>
		<comments>http://medved-ltd.ru/posts/spider-bot-na-php/ #comments</comments>
		<pubDate>Thu, 10 Sep 2009 04:32:21 +0000</pubDate>
		<dc:creator>Александр Губанов</dc:creator>
		
		<category><![CDATA[Обмен опытом]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[spider]]></category>

		<category><![CDATA[для веб-разработчиков]]></category>

		<guid isPermaLink="false">http://medved-ltd.ru/blog/?p=69</guid>
		<description><![CDATA[ Мы начали один проект, для которого необходимо постоянно собирать информацию из сети в автоматическом режиме, причем в большом количестве. Написал spider. В его основу был положен Zend Framework и небольшой, в процессе переработанный, скрипт Qu для работы с MySQL, придуманный мной еще при царе Горохе. К набору этих простых функций я привык и никак [...]<img border="0" width="1" height="1" alt="" style="display:none" src="http://test.blogcounter.ru/medved-ltd.ru/69/a/px.gif" />]]></description>
			<content:encoded><![CDATA[<p> Мы начали один проект, для которого необходимо постоянно собирать информацию из сети в автоматическом режиме, причем в большом количестве. Написал spider. В его основу был положен Zend Framework и небольшой, в процессе переработанный, скрипт Qu для работы с MySQL, придуманный мной еще при царе Горохе. К набору этих простых функций я привык и никак не смог с ними расстаться. Стиль кодирования и организации классов и файлов соответствует требованиям <a href="http://framework.zend.com/manual/en/coding-standard.coding-style.html">Zend Coding Style</a>.</p>
<h3>Консольное приложение</h3>
<p>Паук не имеет необходимости в веб-интерфейсе и по этому был написан в виде скрипта для консоли. PHP для выполнения консольных приложений подхватывает основной конфиг, но принудительно  переопределяет некоторые директивы, например можно не заботиться о max_execution_time. Так же доступны STDIN, STDOUT, STDERR константы. Подробнее об этом можно почитать в <a href="http://ru.php.net/manual/ru/features.commandline.php">соответствующем разделе документации</a>.</p>
<p>В процессе выяснилось, что паук выполняет много разных задач, и для этого необходимы параметры запуска. Параметры нужно применять без использования &laquo;-&raquo; перед названием, иначе php примет его за свой и не передаст скрипту. Я выбрал простую схему: &laquo;имя=значение [имя=значение]&raquo;. Ассоциативный массив параметров у меня формирует единственная глобальная функция options(), параметры извлекаются из также глобального массива $argv.</p>
<div class="codecolorer-container php vibrant" style="overflow:auto;white-space:nowrap;width:580px;height:300px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co4">/**<br />
&nbsp;* str 2 array &amp;amp; array 2 str (name=value name2=value2)<br />
&nbsp;*<br />
&nbsp;* @global array $argv<br />
&nbsp;* @param array|null $options<br />
&nbsp;* @return array|string options<br />
&nbsp;*/</span><br />
<span class="kw2">function</span> options<span class="br0">&#40;</span><span class="kw3">array</span> <span class="re0">$options</span> <span class="sy0">=</span> <span class="kw2">null</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">is_array</span><span class="br0">&#40;</span><span class="re0">$options</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$str</span> <span class="sy0">=</span> <span class="st_h">''</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$options</span> <span class="kw1">as</span> <span class="re0">$k</span><span class="sy0">=&amp;</span>gt<span class="sy0">;</span><span class="re0">$v</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$str</span> <span class="sy0">.=</span> <span class="kw3">trim</span><span class="br0">&#40;</span><span class="re0">$k</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="br0">&#40;</span><span class="kw3">trim</span><span class="br0">&#40;</span><span class="re0">$v</span><span class="br0">&#41;</span>?<span class="st_h">'='</span><span class="sy0">.</span><span class="kw3">trim</span><span class="br0">&#40;</span><span class="re0">$v</span><span class="br0">&#41;</span><span class="sy0">:</span><span class="st_h">''</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st_h">' '</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw3">trim</span><span class="br0">&#40;</span><span class="re0">$str</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <span class="kw3">global</span> <span class="re0">$argv</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="re0">$args</span> <span class="sy0">=</span> <span class="re0">$argv</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="re0">$options</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw3">unset</span><span class="br0">&#40;</span><span class="re0">$args</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$args</span> <span class="kw1">as</span> <span class="re0">$arg</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$a</span> <span class="sy0">=</span> <span class="kw3">explode</span><span class="br0">&#40;</span><span class="st_h">'='</span><span class="sy0">,</span> <span class="re0">$arg</span><span class="sy0">,</span> <span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$value</span> <span class="sy0">=</span> <span class="sy0">@</span><span class="kw3">trim</span><span class="br0">&#40;</span><span class="re0">$a</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> ? <span class="re0">$a</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">:</span> <span class="st_h">''</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$value</span> <span class="sy0">=</span> <span class="kw3">is_numeric</span><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span> ? <span class="br0">&#40;</span>int<span class="br0">&#41;</span><span class="re0">$value</span> <span class="sy0">:</span> <span class="re0">$value</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$options</span><span class="br0">&#91;</span><span class="kw3">strtolower</span><span class="br0">&#40;</span><span class="kw3">trim</span><span class="br0">&#40;</span><span class="re0">$a</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$value</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <span class="kw3">ksort</span><span class="br0">&#40;</span><span class="re0">$options</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$options</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p>Эта функция используется один раз и передает параметры в &laquo;фасад&raquo; приложения. Правда Facade недавно был переименован в Program, а теперь в Starter, это больше отражает характер его действий. В общем рефакторинг идёт практически постоянно.</p>
<h3>Неваляшка</h3>
<p>Сам скрипт временами может быть очень нестабильным, работа паука зависит от очень  многих факторов. От используемой базы данных, сервера, процессора, свободной памяти, сети, ошибок чужих и собственных.</p>
<p>Первая же задача по начальному сбору данных вскрыла все непредусмотренные узкие места. Паук падал по самым разным причинам. Упавшее приложение нужно как-то поднимать. Так как задач множество, поднимать нужно только то что упало. Поэтому и был переписан Facade в Starter. </p>
<p>Класс Starter отслеживает какие задачи запускаются и не даёт выполнять одинаковые задачи параллельно, а само главное, имеет механизм проверки и восстановления упавших задач, я их называю программами, т. к. задачами уже называются классы, реализующие обновление и сбор расширенных данных. </p>
<p>В крон был добавлен запуск паука в режиме проверки на каждые пятнадцать минут. В процессе проверки, он ищет активные процессы запущенных программ и восстанавливает их в случае отсутствия. Для проверки процесса в *nix  есть команда ps, в windows&nbsp;&mdash; qprocess. В свою очередь нужно запомнить свой процесс перед запуском программы используя функцию getmypid().</p>
<p>Таким образом, паук запускается из командной строки для выполнения всевозможных программ, а крон, через запуск паука с определнными параметрами, поднимает упавшие программы и запускает их с того места на котором они загнулись. Сейчас структура и базовый функционал даёт возможность писать любые долгоиграющие скрипты с восстановлением при любом крахе.</p>
<p>Для отслеживания хода обработки данных выполняется логирование всех этапов работы. Скрипт работает с текстами и потому важно правильно работать с памятью.  Для  контроля, в логах, в каждой строчке указывается количество задействованной памяти на момент после выполнения  операции. Очень удобно для анализа. Сегодня это позволила выявить где именно происходит утечка памяти в одной из задач.</p>
<p>Версия PHP 5.2.8 под FreeBSD, для консольного приложения в режиме CGI занимает примерно 25&minus;30 Мб, при аппетитах самого скрипта к памяти в 2&minus;3 Мб.</p>
<p>Продолжение следует...</p>
<hr />
<p><b>#</b> Комментариев на данный момент: <a href="http://medved-ltd.ru/posts/spider-bot-na-php/ #comments" title="Читать комментарии">0</a>. Вы можете <a href="http://medved-ltd.ru/posts/spider-bot-na-php/ #comments" title="Добавить комментарий">добавить комментарий</a>.<br /><small>Copyright &copy; <a href="http://medved-ltd.ru/">Medved Ltd</a>.</small></p>
<hr />
<p><img border="0" width="1" height="1" alt="" style="display:none" src="http://test.blogcounter.ru/medved-ltd.ru/69/f/px.gif" /><br />
]]></content:encoded>
			<wfw:commentRss>http://medved-ltd.ru/posts/spider-bot-na-php/ /feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP5 для профессионалов</title>
		<link>http://medved-ltd.ru/posts/php5-for-professional/ </link>
		<comments>http://medved-ltd.ru/posts/php5-for-professional/ #comments</comments>
		<pubDate>Mon, 09 Feb 2009 07:29:29 +0000</pubDate>
		<dc:creator>Александр Губанов</dc:creator>
		
		<category><![CDATA[Обмен опытом]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[для веб-разработчиков]]></category>

		<category><![CDATA[книги]]></category>

		<guid isPermaLink="false">http://medved-ltd.ru/blog/?p=62</guid>
		<description><![CDATA[  Эта книга знакомит нас с программированием на PHP &#171;по-взрослому&#187;. 
Самое главное, что в ней есть&#160;&#8212;  это введение в проектирование ООП приложений, знакомство с UML и шаблонами проектирования. Это очень важные вещи, без которых можно навечно похоронить себя в процедурном коде. 
Так же там можно найти примеры реализации Iterator, ArrayAccess и позднего инстанцирования, [...]<img border="0" width="1" height="1" alt="" style="display:none" src="http://test.blogcounter.ru/medved-ltd.ru/62/a/px.gif" />]]></description>
			<content:encoded><![CDATA[<p> <img class="alignleft size-full wp-image-63" src="http://medved-ltd.ru/blog/uploads/2009/02/php5_for_professionals.jpg" alt="" width="200" height="287" /> Эта книга знакомит нас с программированием на PHP &laquo;по-взрослому&raquo;. </p>
<p>Самое главное, что в ней есть&nbsp;&mdash;  это введение в проектирование ООП приложений, знакомство с UML и шаблонами проектирования. Это очень важные вещи, без которых можно навечно похоронить себя в процедурном коде. </p>
<p>Так же там можно найти примеры реализации Iterator, ArrayAccess и позднего инстанцирования, что приближает к нас пониманию более глубоких проблем и использованию различных трюков в программировании.</p>
<p>Твёрдая 4.</p>
<hr />
<p><b>#</b> Комментариев на данный момент: <a href="http://medved-ltd.ru/posts/php5-for-professional/ #comments" title="Читать комментарии">0</a>. Вы можете <a href="http://medved-ltd.ru/posts/php5-for-professional/ #comments" title="Добавить комментарий">добавить комментарий</a>.<br /><small>Copyright &copy; <a href="http://medved-ltd.ru/">Medved Ltd</a>.</small></p>
<hr />
<p><img border="0" width="1" height="1" alt="" style="display:none" src="http://test.blogcounter.ru/medved-ltd.ru/62/f/px.gif" /><br />
]]></content:encoded>
			<wfw:commentRss>http://medved-ltd.ru/posts/php5-for-professional/ /feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP5 Профессиональное программирование</title>
		<link>http://medved-ltd.ru/posts/php5-professionalnoe-programmirovanie/ </link>
		<comments>http://medved-ltd.ru/posts/php5-professionalnoe-programmirovanie/ #comments</comments>
		<pubDate>Mon, 09 Feb 2009 07:21:09 +0000</pubDate>
		<dc:creator>Александр Губанов</dc:creator>
		
		<category><![CDATA[Обмен опытом]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[для веб-разработчиков]]></category>

		<category><![CDATA[книги]]></category>

		<guid isPermaLink="false">http://medved-ltd.ru/blog/?p=66</guid>
		<description><![CDATA[  Если кратко, то замечательная книга на целых 704 страницы. 
А замечательна она тем, что с самого начала очень легко и доходчиво знакомит нас с ООП в пятой версии PHP. Затем имеется раздел об итераторах, шаблонах проектирования и рефлексии (отслеживание в процессе работы объектов, их свойств и типов). Далее стандартные темы: сессии, cookies, базы [...]<img border="0" width="1" height="1" alt="" style="display:none" src="http://test.blogcounter.ru/medved-ltd.ru/66/a/px.gif" />]]></description>
			<content:encoded><![CDATA[<p> <img class="alignleft size-full wp-image-67" src="http://medved-ltd.ru/blog/uploads/2009/02/php5_professional_programming.jpg" alt="" width="200" height="288" /> Если кратко, то замечательная книга на целых 704 страницы. </p>
<p>А замечательна она тем, что с самого начала очень легко и доходчиво знакомит нас с ООП в пятой версии PHP. Затем имеется раздел об итераторах, шаблонах проектирования и рефлексии (отслеживание в процессе работы объектов, их свойств и типов). Далее стандартные темы: сессии, cookies, базы данных. Немаловажный раздел об ошибках и исключениях поможет легко в этом разобраться.</p>
<p>Есть, как и везде, раздел об XML и расширениях PHP. Особое внимание уделяется PEAR: использованию компонентов, их написанию и опубликованию. Так же есть неплохой вводный материал о тестировании производительности и оптимизации кода. И ещё много интересных и познавательных разделов, которые не часто встретишь в других книгах, особенно вместе.</p>
<p>Книжка тянет на 5. Почему бы и нет.</p>
<hr />
<p><b>#</b> Комментариев на данный момент: <a href="http://medved-ltd.ru/posts/php5-professionalnoe-programmirovanie/ #comments" title="Читать комментарии">0</a>. Вы можете <a href="http://medved-ltd.ru/posts/php5-professionalnoe-programmirovanie/ #comments" title="Добавить комментарий">добавить комментарий</a>.<br /><small>Copyright &copy; <a href="http://medved-ltd.ru/">Medved Ltd</a>.</small></p>
<hr />
<p><img border="0" width="1" height="1" alt="" style="display:none" src="http://test.blogcounter.ru/medved-ltd.ru/66/f/px.gif" /><br />
]]></content:encoded>
			<wfw:commentRss>http://medved-ltd.ru/posts/php5-professionalnoe-programmirovanie/ /feed</wfw:commentRss>
		</item>
		<item>
		<title>&#171;Как сделать $1000 с блога за месяц!&#187;</title>
		<link>http://medved-ltd.ru/posts/kak-sdelat-1000-s-bloga-za-mesyac/ </link>
		<comments>http://medved-ltd.ru/posts/kak-sdelat-1000-s-bloga-za-mesyac/ #comments</comments>
		<pubDate>Mon, 09 Feb 2009 07:14:09 +0000</pubDate>
		<dc:creator>Алексей Панко</dc:creator>
		
		<category><![CDATA[Обмен опытом]]></category>

		<category><![CDATA[для блоггеров]]></category>

		<category><![CDATA[книги]]></category>

		<guid isPermaLink="false">http://medved-ltd.ru/blog/?p=74</guid>
		<description><![CDATA[ Недавно прочитал книгу известного блоггера Сергея Жуковского о том &#171;как сделать $1000 с блога за месяц&#187;. Книга, кстати, так и называется. Расскажу что понравилось, а что не очень.
Сразу хочу заметить, что книга не отвечает на поставленный в названии вопрос. После ее прочтения, в первый месяц заработать с блога 1000 у.е. вряд ли получится. Хотя, [...]<img border="0" width="1" height="1" alt="" style="display:none" src="http://test.blogcounter.ru/medved-ltd.ru/74/a/px.gif" />]]></description>
			<content:encoded><![CDATA[<p> Недавно прочитал книгу известного блоггера Сергея Жуковского о том &laquo;как сделать $1000 с блога за месяц&raquo;. Книга, кстати, так и называется. Расскажу что понравилось, а что не очень.</p>
<p>Сразу хочу заметить, что книга не отвечает на поставленный в названии вопрос. После ее прочтения, в первый месяц заработать с блога 1000 у.е. вряд ли получится. Хотя, как знать… Название&nbsp;&mdash; это скорее тонкий маркетинговый ход и самый мощный урок книги. Составляйте красочные заголовки и будет вам счастье.  </p>
<p><img src="http://medved-ltd.ru/blog/uploads/2009/02/kak-sdelat-s-bloga-1000.jpg" alt="kak-sdelat-s-bloga-1000" width="201" height="278" class="alignleft size-full wp-image-76" /></p>
<p>В целом, книга дает неплохую теоретическую базу для новичков, собирающихся в будущем зарабатывать деньги посредством блогов, но и не более. Она небольшая по объему, прочитать можно за пару часов&nbsp;&mdash; всего 97 страниц.</p>
<p>Если вы уже давно ведете блог и неплохо разбираетесь в тонкостях &laquo;блоговодства&raquo;, то скорее всего просто ознакомитесь с данной книгой методом &laquo;пролистывания&raquo; страниц и &laquo;прочитывания&raquo; заголовков (возможно даже некоторых абзацев). Нового для себя ничего точно не обнаружите. Даже можете обидеться на автора, ведь книга позиционируется как &laquo;практическое руководство&raquo;, но на деле ни на какие практические приемы и советы рассчитывать не приходится. </p>
<p>&laquo;Как сделать $1000 с блога за месяц!&raquo;&nbsp;&mdash; просто не плохо (но и не сказать, что очень хорошо) структурированный материал о том, как начать вести блог. Вот и все.</p>
<p>Есть &laquo;ляпусы&raquo;, куда же без них. Например, в разделе &laquo;Монетизация блога&raquo; Сергей советует продавать вам с блога свои услуги, но как быть, если вы не предлагаете никакие услуги вообще? Что же, тогда автор предлагает поставить на сайт систему SAPE или Яндекс.Директ. Да новичков в SAPE просто не пустят, они ведь только начинают вести блог, откуда у них PR и Тиц? Ну а Директ при таком раскладе 1000 вечно зеленых точно не подарит новичкам-блоггерам за красивые глаза.</p>
<p>Вывод простой. Книга для новичков. А сам Сергей молодец. Он продает заголовки, и причем продает весьма хорошо. Вот это и есть, наверное, единственный практический совет. Весьма действенный, между прочим.</p>
<hr />
<p><b>#</b> Комментариев на данный момент: <a href="http://medved-ltd.ru/posts/kak-sdelat-1000-s-bloga-za-mesyac/ #comments" title="Читать комментарии">0</a>. Вы можете <a href="http://medved-ltd.ru/posts/kak-sdelat-1000-s-bloga-za-mesyac/ #comments" title="Добавить комментарий">добавить комментарий</a>.<br /><small>Copyright &copy; <a href="http://medved-ltd.ru/">Medved Ltd</a>.</small></p>
<hr />
<p><img border="0" width="1" height="1" alt="" style="display:none" src="http://test.blogcounter.ru/medved-ltd.ru/74/f/px.gif" /><br />
]]></content:encoded>
			<wfw:commentRss>http://medved-ltd.ru/posts/kak-sdelat-1000-s-bloga-za-mesyac/ /feed</wfw:commentRss>
		</item>
		<item>
		<title>Миграция на Firefox</title>
		<link>http://medved-ltd.ru/posts/from-opera-to-firefox/ </link>
		<comments>http://medved-ltd.ru/posts/from-opera-to-firefox/ #comments</comments>
		<pubDate>Thu, 05 Feb 2009 12:15:15 +0000</pubDate>
		<dc:creator>Алексей Панко</dc:creator>
		
		<category><![CDATA[Разное]]></category>

		<category><![CDATA[софт]]></category>

		<guid isPermaLink="false">http://medved-ltd.ru/blog/?p=27</guid>
		<description><![CDATA[ История эта берет свои истоки еще в те стародавние времена, когда Гейтс занимался выпечкой IE5(или даже IE4&#160;&#8212; сейчас не вспомню), а его Microsoft поставлял свеженькие Windows+IE в наш захолустный городок. Помню у родителей дома стоял маленький беленький модемчик Acorp и мое путешествие по просторам Глобальной Сети вместе с Explorer&#39;ом было чем-то экстремальным и захватывающим... [...]<img border="0" width="1" height="1" alt="" style="display:none" src="http://test.blogcounter.ru/medved-ltd.ru/27/a/px.gif" />]]></description>
			<content:encoded><![CDATA[<p> История эта берет свои истоки еще в те стародавние времена, когда Гейтс занимался выпечкой IE5(или даже IE4&nbsp;&mdash; сейчас не вспомню), а его Microsoft поставлял свеженькие Windows+IE в наш захолустный городок. Помню у родителей дома стоял маленький беленький модемчик Acorp и мое путешествие по просторам Глобальной Сети вместе с Explorer&#39;ом было чем-то экстремальным и захватывающим... Но однажды я устал от моего неповоротливого проводника в неизведанный виртуальный мир, и тогда на смену синему катафалку IE пришел красный, как Феррари, скоростной браузер Opera.</p>
<p>Норвежский быстроход показался мне просто сказочной чудо-машиной. Красивый, удобный, приятный во всех отношениях браузер, а главное шустрый (намного быстрее &laquo;Ослика&raquo;), служил мне верой и правдой несколько лет. За это время я очень сильно к нему привык. Больше того, я стал почти фанатом Opera. Оставалось только купить норвежский красный шарфик и напялить вязаные носки с эмблемой компании.</p>
<p>Но видимо что-то в механизмах вселенной было нарушено, и так уж сложилось, что не суждено мне стать очередным сектантом норвежской Opera... мерзкий предатель, я понял, что стану сектантом Firefox.</p>
<p>Вся соль в том, что часто приходится сталкиваться с работой и функционалом других &laquo;web-бродилок&raquo;, тем более в мои обязанности еще и входит написание постов для соответсвующих блогов на эту тему. В основном пишу про <a href="http://firefox-world.ru/">Firefox</a> и недавно вышедший <a href="http://chrome-radar.ru/">Google Chrome</a>.</p>
<p>Chrome хорош. Не сильно функционален пока, но чертовски хорош. По тактильным ощущениям, он быстрее всех загружает страницы, быстрее отрабатывает различные скрипты и приложения. Есть несколько интересных фишек, которые пришлись сотрудникам офиса (и мне тоже) по душе. Например, возможность мгновенно создавать ярлыки страничек на рабочем столе.</p>
<p>Но, моим сознанием овладел все же не Chrome, в мой мозг прокрался Firefox.</p>
<p>Поглядывая на все вкусности, которые были не доступны для Opera, но были как само-собой разумеющееся для Firefox, я часто облизывался и вытирал слюни. :) Не поймите меня неправильно, мной просто овладевало желание опробовать подобные фишки и в Opera. Меня очаровали FoxTab, <a href="http://firefox-world.ru/2009/01/sitelauncher-plagin-dlya-bystrojj-navigacii-v-firefox/">SiteLauncher</a> и <a href="http://firefox-world.ru/2009/01/ubiquity-dlya-firefox-novyjj-sposob-vzaimodejjstviya-s-web-om/">Ubiquity (особенно Ubiquity)</a>, и другие удивительные полезности.</p>
<p>Я был почти мертв (ментально), когда не обнаружил аналогов файрфоксовских плагинов для моего любимого браузера. Обливаясь холодным потом, я про себя приговаривал &laquo;не может быть... этого не может быть&raquo;.</p>
<p>Пришлось смириться и начать миграцию на браузер, изобретенный компанией, эмблемой которой является голова динозавра. Что за несправделивый мир?!</p>
<p>Миграция, кстати, прошла успешно: закладки и настройки импортировались в Firefox без осложнений. Дополнительно были установлены некоторые полезные расширения и работа закипела.</p>
<p>Не знаю, что выйдет из данного эксперимента... но думаю с &laquo;Огнелисом&raquo; мы подружимся. :) А если, что не так, мы его Uninstall&#39;ом пытать будем. Загнется, так наш программист Александр сделает мне новый браузер, с неоновой подсветкой и супер-функцией для мгновенного перемещения по Сети с помощью силы мысли и взмахов бровей.</p>
<hr />
<p><b>#</b> Комментариев на данный момент: <a href="http://medved-ltd.ru/posts/from-opera-to-firefox/ #comments" title="Читать комментарии">0</a>. Вы можете <a href="http://medved-ltd.ru/posts/from-opera-to-firefox/ #comments" title="Добавить комментарий">добавить комментарий</a>.<br /><small>Copyright &copy; <a href="http://medved-ltd.ru/">Medved Ltd</a>.</small></p>
<hr />
<p><img border="0" width="1" height="1" alt="" style="display:none" src="http://test.blogcounter.ru/medved-ltd.ru/27/f/px.gif" /><br />
]]></content:encoded>
			<wfw:commentRss>http://medved-ltd.ru/posts/from-opera-to-firefox/ /feed</wfw:commentRss>
		</item>
		<item>
		<title>Выбор фреймворка для разработки</title>
		<link>http://medved-ltd.ru/posts/framework/ </link>
		<comments>http://medved-ltd.ru/posts/framework/ #comments</comments>
		<pubDate>Thu, 05 Feb 2009 12:05:12 +0000</pubDate>
		<dc:creator>Александр Губанов</dc:creator>
		
		<category><![CDATA[Обмен опытом]]></category>

		<category><![CDATA[framework]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[для веб-разработчиков]]></category>

		<category><![CDATA[становление студии]]></category>

		<guid isPermaLink="false">http://medved-ltd.ru/blog/?p=30</guid>
		<description><![CDATA[ Для первых проектов необходим был фреймворк, который:

можно было бы изучать по мере написания проекта и использования его компонентов;
был бы лёгким;
быстрым;
и гибким.

Сначала мы обратили внимание на Symfony. Как заявляют разработчики, уже тысячи программистов доверяют Symfony свои приложения. Честно говоря, у меня с самого начала было неприязненное отношение к этому фрэймворку. Я копался в нём пару [...]<img border="0" width="1" height="1" alt="" style="display:none" src="http://test.blogcounter.ru/medved-ltd.ru/30/a/px.gif" />]]></description>
			<content:encoded><![CDATA[<p> Для первых проектов необходим был фреймворк, который:</p>
<ol>
<li>можно было бы изучать по мере написания проекта и использования его компонентов;</li>
<li>был бы лёгким;</li>
<li>быстрым;</li>
<li>и гибким.</li>
</ol>
<p>Сначала мы обратили внимание на <a href="http://www.symfony-project.org/">Symfony</a>. Как заявляют разработчики, уже <q>тысячи программистов доверяют Symfony свои приложения</q>. Честно говоря, у меня с самого начала было неприязненное отношение к этому фрэймворку. Я копался в нём пару лет назад. Такие же чувства у меня были к <a href="http://rubyonrails.org/">Ruby on Rails</a>. Но на RoR, в отличии от Symfony,  я тогда все такие сделал небольшой проект. </p>
<p>В итоге на изучение Symfony, как я думаю, было потрачено недопустимо большое количество времени чтобы понять, что 1, 2 и 4 пункты к нему не относятся. Пункт 3 проверить не удалось, но и с ним скорее всего не на 100% хорошо. Нет у меня знакомых программистов, разрабатывающем на нем свои сайты, как нет и хороших доступных примеров сделанных на нем веб-проектов. </p>
<p>Следующее, на что мы обратили внимание был <a href="http://framework.zend.com/">Zend Framework</a>. Его и фрэймворком то назвать сложно, скорее это библиотека классов, реализующая множество задач, в том числе и привычные для многих фрэймворков (таких как <a href="http://codeigniter.com/">CodeIgnitor</a>, <a href="http://cakephp.org/">CakePHP </a>и т.д.) контроллеры и шаблонизатор. </p>
<p>Что мне очень понравилось Zend не требует, он предлагает. Например паук для сбора разных параметров  был написан с использованием всего нескольких классов, ненужные файлы я даже не стал копировать в проект. ZF предлагает свой <a href="http://framework.zend.com/manual/ru/coding-standard.coding-style.html">стиль кодирования</a>, который мало отличается от всех других стандартов, основные особенности в структуре классов, что очень даже хорошо. Всё можно настроить и использовать выборочно. В общем по всем пунктам Zend Framework показал себя замечательно.</p>
<p>Таким образом выбор был сделан в пользу ZF. Дальше решили не искать. Я лично о своём решении за полтора месяца интенсивной разработки еще ни разу не пожалел.</p>
<hr />
<p><b>#</b> Комментариев на данный момент: <a href="http://medved-ltd.ru/posts/framework/ #comments" title="Читать комментарии">0</a>. Вы можете <a href="http://medved-ltd.ru/posts/framework/ #comments" title="Добавить комментарий">добавить комментарий</a>.<br /><small>Copyright &copy; <a href="http://medved-ltd.ru/">Medved Ltd</a>.</small></p>
<hr />
<p><img border="0" width="1" height="1" alt="" style="display:none" src="http://test.blogcounter.ru/medved-ltd.ru/30/f/px.gif" /><br />
]]></content:encoded>
			<wfw:commentRss>http://medved-ltd.ru/posts/framework/ /feed</wfw:commentRss>
		</item>
		<item>
		<title>Всем привет!</title>
		<link>http://medved-ltd.ru/posts/privet/ </link>
		<comments>http://medved-ltd.ru/posts/privet/ #comments</comments>
		<pubDate>Thu, 05 Feb 2009 11:24:02 +0000</pubDate>
		<dc:creator>Алексей Панко</dc:creator>
		
		<category><![CDATA[Официальные новости]]></category>

		<category><![CDATA[запуск проектов]]></category>

		<guid isPermaLink="false">http://medved-ltd.ru/blog/?p=24</guid>
		<description><![CDATA[ Вот мы и открыли свой корпоративный блог. Здесь наши сотрудники будут делиться своими мыслями и мнениями о том, что происходит в студии и за ее пределами, и чем вообще они занимаются.
Но это не самое важное. Обратная связь с аудиторией&#160;&#8212; вот одна из главных задач, для решения которой мы собственно и создали блог. Нам важно [...]<img border="0" width="1" height="1" alt="" style="display:none" src="http://test.blogcounter.ru/medved-ltd.ru/24/a/px.gif" />]]></description>
			<content:encoded><![CDATA[<p> Вот мы и открыли свой корпоративный блог. Здесь наши сотрудники будут делиться своими мыслями и мнениями о том, что происходит в студии и за ее пределами, и чем вообще они занимаются.</p>
<p>Но это не самое важное. Обратная связь с аудиторией&nbsp;&mdash; вот одна из главных задач, для решения которой мы собственно и создали блог. Нам важно знать ваше мнение о наших проектах, о работе, планах и просто обо всем, что вам покажется интересным в нашей деятельности.</p>
<p>Ну и, конечно же, ответим на Ваши вопросы, выслушаем советы и предложения.</p>
<hr />
<p><b>#</b> Комментариев на данный момент: <a href="http://medved-ltd.ru/posts/privet/ #comments" title="Читать комментарии">0</a>. Вы можете <a href="http://medved-ltd.ru/posts/privet/ #comments" title="Добавить комментарий">добавить комментарий</a>.<br /><small>Copyright &copy; <a href="http://medved-ltd.ru/">Medved Ltd</a>.</small></p>
<hr />
<p><img border="0" width="1" height="1" alt="" style="display:none" src="http://test.blogcounter.ru/medved-ltd.ru/24/f/px.gif" /><br />
]]></content:encoded>
			<wfw:commentRss>http://medved-ltd.ru/posts/privet/ /feed</wfw:commentRss>
		</item>
	</channel>
</rss>
