<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>JQuery, PHP, и ZendFW... Искусство современной веб-разработки</title><link>http://www.kachayev.ru</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/kachayev" /><description>Искусство совеременной веб-разработки и создания Интернет-проектов</description><language>en</language><image><link>http://www.kachayev.ru</link><url>http://www.kachayev.ru/wp-content/plugins/maxblogpress-favicon/icons/favicon-28.ico</url><title>JQuery, PHP, и ZendFW... Искусство современной веб-разработки</title></image><generator>http://wordpress.org/?v=2.6</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/kachayev" /><feedburner:info uri="kachayev" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>kachayev</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><title>Первая в России конференция по Zend Framework</title><link>http://feedproxy.google.com/~r/kachayev/~3/HDjaWrbwG0Q/</link><category>Будни web-разработчика</category><category>Новости</category><category>development</category><category>zend</category><category>анонс</category><category>конференция</category><category>событие</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Алексей Качаев</dc:creator><pubDate>Mon, 01 Feb 2010 03:10:39 PST</pubDate><guid isPermaLink="false">http://www.kachayev.ru/?p=706</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://www.zfconf.ru/" target="_blank"><img src="http://lh5.ggpht.com/_LTrMB58vSzk/S2XRVWUWqMI/AAAAAAAAABw/ItmlHrVIMVs/s800/205x175.png" alt="" width="205" height="175" align="left" /></a></p>
<p>В конце марта 2010 г. в Санкт-Петербурге пройдет первая в России конференция по Zend Framework.</p>
<p>На днях закончился прием тезисов по планируемым докладам. Примечательно, что в состав докладчиков вошли ведущие участники русскоязычного сообщества ZF, опытнейшие специалисты и лично один из создателей фрэймворка!</p>
<p>Участие в конференции планируется сделать бесплатным или за небольшую стоимость. На данный момент уже открыта <a href="http://www.zfconf.ru/pre-registration.php" target="_blank"><strong>предварительная регистрация</strong></a> на конференцию! Для решения ряда вопросов организаторам <strong>очень важно</strong> сейчас понять приблизительное количество человек, которые смогут посетить конференцию или каким-то иным образом принять участие в ней.</p>
<p>Каждый предстоящий доклад возможно обсудить на форуме ZF-сообщества. Ваше мнение очень важно для авторов!</p>
<p><strong>Планируемые доклады</strong></p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2269.0" target="_blank">Жизненный цикл предложений (proposals) в проекте Zend Framework</a></strong><br />
Александр Веремьев (<a href="http://www.zend.com" target="_blank">Zend Technologies</a>, Zend Framework Core команда)</p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2270.0" target="_blank">Zend_Search_Lucene в деталях</a></strong><br />
Александр Веремьев (<a href="http://www.zend.com" target="_blank">Zend Technologies</a>, Zend Framework Core команда)</p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2271.0" target="_blank">Zend Framework и производительность</a></strong><br />
Александр Махомет (создатель сообщества <a href="http://zendframework.ru" target="_blank">ZendFramework.ru</a>)</p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2272.0" target="_blank">Zend Framework и MVC, «толстая» модель</a></strong><br />
Александр Стешенко (<a href="http://norada.com" target="_blank">Norada Corporation</a>, PHP-разработчик)</p>
<p><strong> </strong></p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2273.0" target="_blank">ФотоСтрана.ru: Прототипирование с использованием ZF (история боевого применения Zend Framework в highload-проекте)</a></strong><br />
Леонид Жаворонков (<a href="http://fotostrana.ru" target="_blank">ФотоСтрана.ru</a>, тимлид)</p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2274.0" target="_blank">Использование очередей сообщений в повседневных проектах</a></strong><br />
Денис Баклыков (<a href="http://obnovlenie.ru" target="_blank">Обновление</a>, веб-разработчик)</p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2275.0" target="_blank">Zend Framework и Doctrine</a></strong><br />
Степан Танасийчук (руководитель веб-студии <a href="http://stfalcon.com" target="_blank">stfalcon.com</a>)</p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2276.0" target="_blank">Zend Framework и мультиязычность</a></strong><br />
Степан Танасийчук (руководитель веб-студии <a href="http://stfalcon.com" target="_blank">stfalcon.com</a>)</p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2277.0" target="_blank">История проекта e-Штаб</a></strong><br />
Анатолий Ларин (<a href="http://www.e-legion.com" target="_blank">e-Легион</a>, веб-программист)</p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2278.0" target="_blank">Что нового несет нам Zend Framework 2.0?</a></strong><br />
Надежда Блинова (<a href="http://www.wizartech.ru" target="_blank">Wizartech</a>, веб-программист), Георгий Туревич (<a href="http://www.wizartech.ru" target="_blank">Wizartech</a>, ведущий веб-программист)</p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2279.0" target="_blank">Интеграция Zend Framework c Javascript-фрэймворками jQuery и Dojo Toolkit</a></strong><br />
Георгий Туревич (<a href="http://www.wizartech.ru" target="_blank">Wizartech</a>, ведущий веб-программист)</p>
<p>Смело обсуждайте доклады и <a href="http://www.zfconf.ru/pre-registration.php" target="_blank"><strong>регистрируйтесь</strong></a>!</p>
<p>За последними новостями можно следить здесь:</p>
<p><strong>RSS-канал:</strong> <a href="http://feeds.feedburner.com/zfconf" target="_blank">feeds.feedburner.com/zfconf</a></p>
<p><strong>Twitter:</strong> <a href="http://twitter.com/zfconf" target="_blank">@zfconf</a></p>
<p><strong>Группа Вконтакте:</strong> <a href="http://vkontakte.ru/club14951507" target="_blank">vkontakte.ru/club14951507</a></p>
<p>К участию также приглашаются информационные и финансовые спонсоры.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kachayev?a=HDjaWrbwG0Q:aqFtXLSNX7c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kachayev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=HDjaWrbwG0Q:aqFtXLSNX7c:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/kachayev?i=HDjaWrbwG0Q:aqFtXLSNX7c:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=HDjaWrbwG0Q:aqFtXLSNX7c:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kachayev?i=HDjaWrbwG0Q:aqFtXLSNX7c:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=HDjaWrbwG0Q:aqFtXLSNX7c:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kachayev?i=HDjaWrbwG0Q:aqFtXLSNX7c:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=HDjaWrbwG0Q:aqFtXLSNX7c:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kachayev?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kachayev/~4/HDjaWrbwG0Q" height="1" width="1"/>]]></content:encoded><description>В конце марта 2010 г. в Санкт-Петербурге пройдет первая в России конференция по Zend Framework.
На днях закончился прием тезисов по планируемым докладам. Примечательно, что в состав докладчиков вошли ведущие участники русскоязычного сообщества ZF, опытнейшие специалисты и лично один из создателей фрэймворка!
Участие в конференции планируется сделать бесплатным или за небольшую стоимость. На данный момент уже открыта [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.kachayev.ru/2010/02/01/pervaya-v-rossii-konferenciya-po-zend-framework/feed/</wfw:commentRss><feedburner:origLink>http://www.kachayev.ru/2010/02/01/pervaya-v-rossii-konferenciya-po-zend-framework/</feedburner:origLink></item><item><title>Live Street - соображения по поводу роутинга в приложении</title><link>http://feedproxy.google.com/~r/kachayev/~3/33Rl5Ajrqt4/</link><category>Будни web-разработчика</category><category>livestreet</category><category>open source</category><category>php</category><category>веб-разработка</category><category>творчество</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Алексей Качаев</dc:creator><pubDate>Mon, 10 Aug 2009 13:46:00 PDT</pubDate><guid isPermaLink="false">http://www.kachayev.ru/?p=702</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>К хорошему привыкаешь быстро. Так и получилось с шаблонизатором Zend FW (Zend_View, Zend_Layout) и всевозможными ViewHelper`ами.</p>
<p>После прочтения вот этого поста: <a rel="nofollow" href="http://livestreet.ru/blog/2310.html">Убираем дублирование при добавлении роутинга</a>, об использовании констант в шаблонах Live Street, понял что такая архитектура вьевера не удобна не только мне. Хочу поделиться своими соображениями на этот счет.</p>
<p>Автор статьи правильно заметил, что при добавлении нового роута приходиться дублировать информацию. Но, на самом деле здесь происходит <strong>более «серьезное» дублирование, чем копипаст</strong> из config/config.route.php в Viewer.class.php — мы дублируем функционал по составлению пути — один раз это делает программист, разрабатывая модуль, второй раз это делает верстальщик, когда делает шаблон. Большее неудобство не в том, как мы доставим константу во Viewer, а именно в том факте, что верстальщику этими константами нужно пользоваться.</p>
<p>Если нам вдруг понадобиться изменить принцип роутинга, то придется перелапачивать весь шаблон, исправляя ошибки адресов. Имхо, если Router, решает какой Action должен отработать, пусть сам нам скажет, как к этому Action нужно обратиться. <strong>Тогда необходимость в константах во Viewer`e вообще отпадет сама собой.</strong></p>
<p>Для себя я решил проблему с помощью дополнительной функции в классе роутера и специально под это дела написаного Smarty-плагина. Подробнее об этом решении читайте здесь - &#8220;<a href="http://livestreet.ru/blog/tips_and_tricks/2313.html" target="_blank">Убираем константы из шаблонов</a>&#8220;.</p>
<p>А мораль из этого такова: <strong>Кто сеет - Тот и жнет</strong>. Иначе организационных проблем будет просто завал.</p>
<p>Спонсор поста:<br />
<span style="font-size: 11px;"> &#8220;Экономная&#8221; </span><a href="http://www.fabrikart-office.ru" target="_blank"><span style="font-size: 11px">мебель для офиса</span></a><span style="font-size: 11px;"> <img src='http://www.kachayev.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kachayev?a=33Rl5Ajrqt4:ASJct1UsbFo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kachayev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=33Rl5Ajrqt4:ASJct1UsbFo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/kachayev?i=33Rl5Ajrqt4:ASJct1UsbFo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=33Rl5Ajrqt4:ASJct1UsbFo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kachayev?i=33Rl5Ajrqt4:ASJct1UsbFo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=33Rl5Ajrqt4:ASJct1UsbFo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kachayev?i=33Rl5Ajrqt4:ASJct1UsbFo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=33Rl5Ajrqt4:ASJct1UsbFo:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kachayev?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kachayev/~4/33Rl5Ajrqt4" height="1" width="1"/>]]></content:encoded><description>К хорошему привыкаешь быстро. Так и получилось с шаблонизатором Zend FW (Zend_View, Zend_Layout) и всевозможными ViewHelper`ами.
После прочтения вот этого поста: Убираем дублирование при добавлении роутинга, об использовании констант в шаблонах Live Street, понял что такая архитектура вьевера не удобна не только мне. Хочу поделиться своими соображениями на этот счет.
Автор статьи правильно заметил, что при добавлении нового [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.kachayev.ru/2009/08/10/live-street-soobrazheniya-po-povodu-routinga-v-prilozhenii/feed/</wfw:commentRss><feedburner:origLink>http://www.kachayev.ru/2009/08/10/live-street-soobrazheniya-po-povodu-routinga-v-prilozhenii/</feedburner:origLink></item><item><title>Мое Live Street творчество</title><link>http://feedproxy.google.com/~r/kachayev/~3/R1dfNYtv_tA/</link><category>Будни web-разработчика</category><category>cms</category><category>livestreet</category><category>open source</category><category>php</category><category>веб-разработка</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Алексей Качаев</dc:creator><pubDate>Fri, 07 Aug 2009 17:17:40 PDT</pubDate><guid isPermaLink="false">http://www.kachayev.ru/?p=700</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Еще с начала этого года приглядывался к <strong>Live Street</strong> (<a href="http://livestreet.ru/" target="_blank">официальный сайт</a>) - Open Source CMS для создания блого-социальных сервисов (на подобие Хабра). Проект очень динамичный и перспективный, но сама система еще в юношеском состоянии <img src="http://www.kachayev.ru/wp-includes/images/smilies/icon_smile.gif" alt=":)" /> Тем интереснее - больше работы с мозга.</p>
<p>Последний месяц ввиду производственной необходимости познакомился с этим движком намного теснее - разрабатывал три модуля под заказ - “Гараж”, “Объявления”, “JS Loader”. В процессе работы над модулями внес свою лепту в рост проекта и влился в общение разарботчиков на самом livestreet.ru. Написал три статьи с описанием своих хаков и доработок.</p>
<p>Представляю их вам.</p>
<p><span id="more-700"></span></p>
<h2>Хак: Выполнение PHP кода на статических страницах</h2>
<p>Заметка повествует о том, как выполнять PHP код на статических страницах (храня его в базе вместе с текстом). Хак достаточно просто и незамысловатый - достаточно добавить одну функцию в Event, который отвечает за показ страницы пользователю.</p>
<p><a href="http://livestreet.ru/blog/tips_and_tricks/2262.html" target="_blank">Читать оригинал.</a></p>
<blockquote><p>P.S. В архитектуре движка LiveStreet: Event - это аналог Action в Zend Framework. А action`ом называется то, что в Zend называется Controller. По началу не привычно было в названиях ориентироваться <img src="http://www.kachayev.ru/wp-includes/images/smilies/icon_smile.gif" alt=":)" /></p></blockquote>
<h2>Автоматическое составление сложных запросов в mapper`ах</h2>
<p>Это статья познавательного характера. Здесь я просто рассказываю как выкрутился из ситуацией с составлением сложных SQL-запросов “на лету”, используя такой механизм библиотеки DbSimple как макроподстановки.</p>
<p><strong>Суть проблемы.</strong></p>
<p>Работая над модулем «Объявления» я столкнулся с необходимостью сделать достаточно сложный запрос к базе данных. Сложный не в плане SQL, а в том, что мы заранее не знаем каким он получиться. Такая ситуация возникла при создании пользовательского фильтра.</p>
<p>Технически задача заключается в следующем — есть три таблицы: объявления, категории объявлений — отсюда мы получаем название категории, пользователи — отсюда мы «дергаем» логин пользователя. Необходимо реализовать выборку по следующим условиям:<br />
— категория или массив категорий (дочерние),<br />
— ID пользователя или логин,<br />
— статус (опубликовано или нет — для администратора),<br />
— актуально объявление или нет,<br />
— минимальная и/или максимальная цена,<br />
— есть привилегии или нет,<br />
Учесть при этом составную сортировку (по одному или двум полям), а также не забывать, что результат фильтрации нужно показывать с разбивкой на страницы. Сложности в это все добавляет то, что логин пользователя тянется из другой таблицы, поэтому необходимо использовать HAVING, а не WHERE.</p>
<p>Решение проблемы: <a href="http://livestreet.ru/blog/2246.html" target="_blank">читаем здесь</a>.</p>
<h2>Модернизация модуля Message - жизнь после редиректа</h2>
<p>Это яркий пример реализации функционала Zend FW в системных возможностях LS.</p>
<p><strong>Описание проблемы.</strong></p>
<p>Создавая новый модуль или экшн, очень часто прибегаю к использованию сообщений Message_AddNotice() и Message_AddError(). Штука очень симпатичная и удобная. Но. Всегда есть одно но. И заключается оно в том, что модуль выводит сообщения только на «текущей» странице. Если же где-то в экшене выполняется редирект, то наше сообщение теряется.</p>
<p>Почему это неудобно? Давайте посмотрим конкретный пример. Я разрабатываю модуль «Гараж». По адресу /garage/user_login можно увидеть список машин пользователя, если просматривающий пользователь = текущему авторизированному, то у каждого автомобиля есть ссылка «Удалить». Эта ссылка указывает на /garage/user_login/del/car_id, где происходит обработка удаления. За это отвечает EventDeleteCar() и именно здесь удобно сказать пользователю «Парень, твоя машина успешно удалена», ну или «Сорри, не получается». Для этого используем стандартное Message_AddNotice(), Message_AddError().</p>
<p>Но, мы не можем оставить пользователя на этой страничке, и в конце реализации event`а перекидываем его назад к списку с помощью func_header_location(). И все. Никакого сообщения пользователь не увидит!</p>
<p><strong>Идея решения.</strong></p>
<p>В Zend Framework есть action-плагин FlashMessenger, который для тех же целей использует сессию. Мы поступим аналогично.</p>
<p>Решение проблемы: <a href="http://livestreet.ru/blog/2227.html" target="_blank">описано здесь</a>.</p>
<h2>Live Street</h2>
<p>Вообще, заниматься развитием Open Source - это очень увлекательное занятие. Жаль только времени получается отводить на это мало. Надеюсь, найду среди читателей своего блога коллег по мысли и деятельности <img src="http://www.kachayev.ru/wp-includes/images/smilies/icon_smile.gif" alt=":)" /> Завтра постараюсь выложить описание сделанных мною модулей.</p>
<p><strong>Спонсоры поста:</strong><br />
<a href="http://www.zakaz-buketa.ru/" target="_blank"><span>Доставка цветов в Москве</span></a><span><br />
</span><a href="http://www.oookit.ru/" target="_blank"><span>Сетка арматурная</span></a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kachayev?a=R1dfNYtv_tA:AGrVwKuglOE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kachayev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=R1dfNYtv_tA:AGrVwKuglOE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/kachayev?i=R1dfNYtv_tA:AGrVwKuglOE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=R1dfNYtv_tA:AGrVwKuglOE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kachayev?i=R1dfNYtv_tA:AGrVwKuglOE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=R1dfNYtv_tA:AGrVwKuglOE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kachayev?i=R1dfNYtv_tA:AGrVwKuglOE:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=R1dfNYtv_tA:AGrVwKuglOE:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kachayev?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kachayev/~4/R1dfNYtv_tA" height="1" width="1"/>]]></content:encoded><description>Еще с начала этого года приглядывался к Live Street (официальный сайт) - Open Source CMS для создания блого-социальных сервисов (на подобие Хабра). Проект очень динамичный и перспективный, но сама система еще в юношеском состоянии  Тем интереснее - больше работы с мозга.
Последний месяц ввиду производственной необходимости познакомился с этим движком намного теснее - разрабатывал три модуля под [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.kachayev.ru/2009/08/08/moe-live-street-tvorchestvo/feed/</wfw:commentRss><feedburner:origLink>http://www.kachayev.ru/2009/08/08/moe-live-street-tvorchestvo/</feedburner:origLink></item><item><title>ДляДрузей для любителей ВКонтакте</title><link>http://feedproxy.google.com/~r/kachayev/~3/DgORHWw3UB0/</link><category>Идеи и Проекты</category><category>вконтакте</category><category>идея</category><category>сервис</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Алексей Качаев</dc:creator><pubDate>Mon, 03 Aug 2009 05:43:13 PDT</pubDate><guid isPermaLink="false">http://www.kachayev.ru/?p=503</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Давненько я уже не выдвигал никаких идей новых проектов.</p>
<p>Идея пришла почти случайно, продумана не до конца. Выкладываю, что называется, &#8220;как есть&#8221;.</p>
<p>В социальной сети &#8220;ВКонтакте&#8221; очень популярным является такой вид развлечений: берем какую-нибудь смешную картинку (желательно с большим числом действующих персонажей) и отмечаем на лицах персонажей своих друзей. Каждому из отмеченных данная картинка будет добавлена как   фотография в раздел &#8220;Фотографии со мной&#8221; и естественно, придет уведомление, что кто-то отметил меня на фотографии.</p>
<p>Качество прикола зависит от &#8220;прикольности&#8221; самой картинки и чувства юмора составляющего. Особенно интересно, когда на такие творчества попадают тесно общающиеся группы людей (одноклассники, одногруппники, коллеги по работе или просто соседи по дому).</p>
<p>Идея сервиса &#8220;ДляДрузей&#8221; состоит в следующем:</p>
<p>1. Пользователь указывает свой mail, под которым зарегистрирован &#8220;Вконтакте&#8221;.</p>
<p>2. Мы скачиваем список его друзей и выводим на экран.</p>
<p>3. Пользователь выбирает галочками тех друзей, которых он бы хотел добавить на рисунок.</p>
<p>4. Для каждого из выбранных пользователей мы скачиваем их аватарку и из полученных аватарок по шаблону делаем какой-нибудь рисунок (комикс, календарь, шарж - на что фантазии хватит). Можно делать тематические рисунки (к праздникам, например).</p>
<p>5. Естественно, ставим в углу свой Watermark.</p>
<p>Технических трудностей в реализации не должно быть. Гораздо сложнее будет продумать как креативно обрабатывать фотки (хотя начинать можно с обычных коллажей).  Самая большая проблема, как обычно в подобных задумках, &#8220;как монетизировать социальный трафик?&#8221;</p>
<p>Спонсор поста: <a href="http://bestsounds.ru" target="_blank">Саундтреки из фильмов</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kachayev?a=DgORHWw3UB0:iyP5Ko5FkNw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kachayev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=DgORHWw3UB0:iyP5Ko5FkNw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/kachayev?i=DgORHWw3UB0:iyP5Ko5FkNw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=DgORHWw3UB0:iyP5Ko5FkNw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kachayev?i=DgORHWw3UB0:iyP5Ko5FkNw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=DgORHWw3UB0:iyP5Ko5FkNw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kachayev?i=DgORHWw3UB0:iyP5Ko5FkNw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=DgORHWw3UB0:iyP5Ko5FkNw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kachayev?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kachayev/~4/DgORHWw3UB0" height="1" width="1"/>]]></content:encoded><description>Давненько я уже не выдвигал никаких идей новых проектов.
Идея пришла почти случайно, продумана не до конца. Выкладываю, что называется, &amp;#8220;как есть&amp;#8221;.
В социальной сети &amp;#8220;ВКонтакте&amp;#8221; очень популярным является такой вид развлечений: берем какую-нибудь смешную картинку (желательно с большим числом действующих персонажей) и отмечаем на лицах персонажей своих друзей. Каждому из отмеченных данная картинка будет добавлена как [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.kachayev.ru/2009/08/03/dlyadruzej-dlya-lyubitelej-vkontakte/feed/</wfw:commentRss><feedburner:origLink>http://www.kachayev.ru/2009/08/03/dlyadruzej-dlya-lyubitelej-vkontakte/</feedburner:origLink></item><item><title>Вышел Zend Framework 1.9.0</title><link>http://feedproxy.google.com/~r/kachayev/~3/dxiMFb92S1o/</link><category>Будни web-разработчика</category><category>php</category><category>zend</category><category>веб-разработка</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Алексей Качаев</dc:creator><pubDate>Fri, 31 Jul 2009 13:25:34 PDT</pubDate><guid isPermaLink="false">http://www.kachayev.ru/?p=693</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img class=" alignleft" title="Zend Framework" src="http://devzone.zend.com/images/logos/zf-logo.jpg" alt="Zend Framework" hspace="8" width="150" height="84" /></p>
<p>Сегодня Zend Developer Zone оповестила о выходе ZF 1.9. Сейчас переходить на новую версию нет времени, обязательно сделаю это на следующей неделе - тогда и поделюсь впечатлениями. Новый Zend ориентирован на PHP 5.3.0 (вышедшего месяц назад), но будет нормально работать и на более старых версиях PHP.</p>
<p>Изменения и нововведения коснулись:</p>
<p>1. Zend_Rest_Route, Zend_Rest_Controller и Zend_Controller_Plugin_PutHandler;</p>
<p>2. Zend_Feed_Reader;</p>
<p>3. Zend_Db_Table;</p>
<p>4. Zend_Date, Zend_Locale и Zend_Translate;</p>
<p>5. Zend_View_Helper_BaseUrl;</p>
<p>6. Zend_Test_PHPUnit_Db;</p>
<p>7. Zend_Dojo;</p>
<p>8. Zend_Pdf;</p>
<p>9. Zend_Log_Writer_Syslog;</p>
<p>Подробнее об этих и других &#8220;фичах&#8221;  - <a href="http://devzone.zend.com/article/4906-Zend-Framework-1.9.0-Released" target="_blank">читаем здесь</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kachayev?a=dxiMFb92S1o:KXXPld-HIRw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kachayev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=dxiMFb92S1o:KXXPld-HIRw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/kachayev?i=dxiMFb92S1o:KXXPld-HIRw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=dxiMFb92S1o:KXXPld-HIRw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kachayev?i=dxiMFb92S1o:KXXPld-HIRw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=dxiMFb92S1o:KXXPld-HIRw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kachayev?i=dxiMFb92S1o:KXXPld-HIRw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=dxiMFb92S1o:KXXPld-HIRw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kachayev?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kachayev/~4/dxiMFb92S1o" height="1" width="1"/>]]></content:encoded><description>Сегодня Zend Developer Zone оповестила о выходе ZF 1.9. Сейчас переходить на новую версию нет времени, обязательно сделаю это на следующей неделе - тогда и поделюсь впечатлениями. Новый Zend ориентирован на PHP 5.3.0 (вышедшего месяц назад), но будет нормально работать и на более старых версиях PHP.
Изменения и нововведения коснулись:
1. Zend_Rest_Route, Zend_Rest_Controller и Zend_Controller_Plugin_PutHandler;
2. Zend_Feed_Reader;
3. Zend_Db_Table;
4. Zend_Date, Zend_Locale и Zend_Translate;
5. Zend_View_Helper_BaseUrl;
6. Zend_Test_PHPUnit_Db;
7. Zend_Dojo;
8. Zend_Pdf;
9. Zend_Log_Writer_Syslog;
Подробнее об этих и [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.kachayev.ru/2009/07/31/vyshel-zend-framework-190/feed/</wfw:commentRss><feedburner:origLink>http://www.kachayev.ru/2009/07/31/vyshel-zend-framework-190/</feedburner:origLink></item><item><title>Создание Twitter-клиента на PHP Zend Framework</title><link>http://feedproxy.google.com/~r/kachayev/~3/DIl0TFbl0dw/</link><category>Будни web-разработчика</category><category>service</category><category>twitter</category><category>zend</category><category>zendframework</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Алексей Качаев</dc:creator><pubDate>Thu, 30 Jul 2009 02:23:34 PDT</pubDate><guid isPermaLink="false">http://www.kachayev.ru/?p=691</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Популярность Twitter`a как вы знаете растет сумасшедшими темпами, а значит также быстро растет рынок твиттер-приложений: клиентов, дополнительных сервисов, мешапов и т.д.</p>
<p>Padraic Brady опубликовал замечательную статью о том, как сделать свой собственный twitter клиент с использованием Zend`овских библиотек Zend_OAuth и Zend_Service_Twitter. Рекомендую к прочтению:</p>
<blockquote><p><a href="http://blog.astrumfutura.com/archives/411-Writing_A_Simple_Twitter_Client_Using_the_PHP_Zend_Frameworks_OAuth_Library_Zend_Oauth.html" target="_blank">Writing A Simple Twitter Client Using the PHP Zend Framework&#8217;s OAuth Library (Zend_Oauth)</a></p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kachayev?a=DIl0TFbl0dw:PIwZqfZ8MQQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kachayev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=DIl0TFbl0dw:PIwZqfZ8MQQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/kachayev?i=DIl0TFbl0dw:PIwZqfZ8MQQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=DIl0TFbl0dw:PIwZqfZ8MQQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kachayev?i=DIl0TFbl0dw:PIwZqfZ8MQQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=DIl0TFbl0dw:PIwZqfZ8MQQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kachayev?i=DIl0TFbl0dw:PIwZqfZ8MQQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=DIl0TFbl0dw:PIwZqfZ8MQQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kachayev?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kachayev/~4/DIl0TFbl0dw" height="1" width="1"/>]]></content:encoded><description>Популярность Twitter`a как вы знаете растет сумасшедшими темпами, а значит также быстро растет рынок твиттер-приложений: клиентов, дополнительных сервисов, мешапов и т.д.
Padraic Brady опубликовал замечательную статью о том, как сделать свой собственный twitter клиент с использованием Zend`овских библиотек Zend_OAuth и Zend_Service_Twitter. Рекомендую к прочтению:
Writing A Simple Twitter Client Using the PHP Zend Framework&amp;#8217;s OAuth Library (Zend_Oauth)</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.kachayev.ru/2009/07/30/sozdanie-twitter-klienta-na-php-zend-framework/feed/</wfw:commentRss><feedburner:origLink>http://www.kachayev.ru/2009/07/30/sozdanie-twitter-klienta-na-php-zend-framework/</feedburner:origLink></item><item><title>PHP: Получение уникальных записей мульти-массивов</title><link>http://feedproxy.google.com/~r/kachayev/~3/DeyfAsna8AM/</link><category>Будни web-разработчика</category><category>php</category><category>функция</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Алексей Качаев</dc:creator><pubDate>Wed, 22 Jul 2009 13:59:57 PDT</pubDate><guid isPermaLink="false">http://www.kachayev.ru/?p=669</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Для получения уникальных записей массива в PHP есть функция array_unique();</p>
<p>Если элементами массива могут быть массивы, то я использую следующую функцию:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> func_array_unique<span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">// Идея в том, что если исходный массив</span>
    <span style="color: #666666; font-style: italic;">// содержал совершенно одинаковые элементы,</span>
    <span style="color: #666666; font-style: italic;">// md5(serialize($value)) будет для них одинаковым</span>
    <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">serialize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$value</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #666666; font-style: italic;">// Очищаем ключи массива</span>
    <span style="color: #b1b100;">return</span> <span style="color: #990000;">array_values</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Выручает частенько, может и вам кому пригодиться.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kachayev?a=DeyfAsna8AM:NgEKOXHl1pc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kachayev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=DeyfAsna8AM:NgEKOXHl1pc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/kachayev?i=DeyfAsna8AM:NgEKOXHl1pc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=DeyfAsna8AM:NgEKOXHl1pc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kachayev?i=DeyfAsna8AM:NgEKOXHl1pc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=DeyfAsna8AM:NgEKOXHl1pc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kachayev?i=DeyfAsna8AM:NgEKOXHl1pc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=DeyfAsna8AM:NgEKOXHl1pc:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kachayev?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kachayev/~4/DeyfAsna8AM" height="1" width="1"/>]]></content:encoded><description>Для получения уникальных записей массива в PHP есть функция array_unique();
Если элементами массива могут быть массивы, то я использую следующую функцию:

function func_array_unique&amp;#40;$array&amp;#41; &amp;#123;
    $result = array&amp;#40;&amp;#41;;
    // Идея в том, что если исходный массив
    // содержал совершенно одинаковые элементы,
    // md5(serialize($value)) будет для них [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.kachayev.ru/2009/07/22/poluchenie-unikalnyx-zapisej-multi-massivov/feed/</wfw:commentRss><feedburner:origLink>http://www.kachayev.ru/2009/07/22/poluchenie-unikalnyx-zapisej-multi-massivov/</feedburner:origLink></item><item><title>Issue Tracking совместно с заказчиком: 7 советов фрилансерам</title><link>http://feedproxy.google.com/~r/kachayev/~3/0vYIG8tpEqg/</link><category>Будни web-разработчика</category><category>веб-разработка</category><category>тестирование</category><category>управление проектами</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Алексей Качаев</dc:creator><pubDate>Sun, 12 Jul 2009 09:13:51 PDT</pubDate><guid isPermaLink="false">http://www.kachayev.ru/?p=676</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<blockquote><p>Спонсор поста: &#8220;Медсервис-М&#8221; - круглосуточная <a href="http://www.zub-m.ru/" target="_blank">стоматологическая клиника в центре</a> Москвы: демократичные цены и профессиональные специалисты.</p></blockquote>
<p>Говоря простым языком, <strong>Issue Tracking</strong> — процесс учета/отслеживания/решения проблем, возникающих в программе, обработка запросов на изменение, неточности, улучшения и т. д. Наиболее важная часть этого процесса - Bug Tracking - подразумевает обработку ошибок и неточностей.</p>
<p>Из своего опыта работы с различными заказчиками выношу несколько полезных советов.</p>
<p><strong>Совет #1. Issue Tracking - &#8220;работа для двоих&#8221; (заказчика и исполнителя).</strong></p>
<p>Если, конечно, проект не на два часа :). И не говорите, что можете реализовать что-то серьезное без багов. Даже если серьезных ошибок не будет, все равно будут мелкие доработки, улучшения и т.д. И именно эти мелочи могут остаться для вас незамеченными, а вот заказчику они сразу бросятся в глаза. Из баг-листа также часто рождаются идеи по улучшению продукта.</p>
<p><strong>Совет #2. Используйте специальные инструменты. </strong></p>
<p>Таких, слава богу, создано очень много. Ознакомиться с полным (?) списком можно здесь - &#8220;<a href="http://en.wikipedia.org/wiki/Comparison_of_issue_tracking_systems" target="_blank">Comparison of issue tracking systems</a>&#8220;, заодно почитать о преимуществах и недостатках каждой.</p>
<p>По мелким проектам я веду список багов и доработок на листах A4 со специальной табличной разметкой. Но для крупных проектов - это слишком экстремальный вариант <img src='http://www.kachayev.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Переписка по электронной почте с десятками встречных писем с описаниями багов и скриншотами - тоже плохо. В таком режиме информация в голове сбивается в кучу и очень просто о чем-то забыть.</p>
<p>В работе с заказчиком важно, чтобы баг-трекер был интуитивно понятен пользователю (заказчик не должен быть ни программистом, ни тестером, он вообще может слабо в компьютерах разбираться:)) и, что самое главное, доступен в сети. Поэтому локально установленный вам вряд ли поможет. Я остановился на таком варианте: http://www.assembla.com, которая дает возможность бесплатно вести публичный проект\ты. Если у вас в баг-трекере ничего серьезного не планируется держать, то это вполне подойдет.</p>
<p><strong>Совет #3. Расставляйте приоритеты.</strong></p>
<p>Отмечайте высоким приоритетом те баги и\или доработки, которые нужно закрыть срочно (в ближайшее время), и наоборот низким - то, что можно оставить на потом. При этом обязательно прислушивайтесь к заказчику! Вы смотрите на проект с точки зрения разработчика, поэтому некоторые моменты могут показаться вам не существенными (например, точки в отображении даты нужно заменить на слеши), а для заказчика они очень важны. Пусть это не имеет никакого основания - но ни в коем случае не игнорируйте такие вещи! Если заказчик поставил высокий приоритет, и вы с ним не согласны - объясните ему свою точку зрения и выслушайте его. Договоритесь - снижайте приоритет, не договоритесь - лучше закройте баг сразу.</p>
<p><strong>Совет #4. Заносите в список багов даже те проблемы, которые тут же устраняете.</strong></p>
<p>Для заказчика это не важно. А вот для процесса разработки может очень даже сгодиться. Тем более, что иногда проблема кажеться маленькой и не серьезной, а потом из нее начинает вылазить такое&#8230;</p>
<p><strong>Совет #5. Разделяйте задачи. </strong></p>
<p>Система <a href="http://trac.edgewall.org/" target="_blank">Trac</a> предлагает по умолчанию 3 вида тикетов (Type): defect, task, enhancement. На практике этого вполне достаточно для большинства проектов, и именно таким набором я пользуюсь. Уверен, не стоит объяснять какие тикеты для каких задач используются :).</p>
<p><strong>Совет #7. Указывайте ревизии.</strong></p>
<p>Если вы пользуетесь в разработке системой контроля версий (что я вам настоятельно рекомендую), то закрывая баг отписывайте номер ревизии, в котором проблема была окончательно решена.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kachayev?a=0vYIG8tpEqg:J2g-CIMg1xs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kachayev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=0vYIG8tpEqg:J2g-CIMg1xs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/kachayev?i=0vYIG8tpEqg:J2g-CIMg1xs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=0vYIG8tpEqg:J2g-CIMg1xs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kachayev?i=0vYIG8tpEqg:J2g-CIMg1xs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=0vYIG8tpEqg:J2g-CIMg1xs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kachayev?i=0vYIG8tpEqg:J2g-CIMg1xs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=0vYIG8tpEqg:J2g-CIMg1xs:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kachayev?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kachayev/~4/0vYIG8tpEqg" height="1" width="1"/>]]></content:encoded><description>Спонсор поста: &amp;#8220;Медсервис-М&amp;#8221; - круглосуточная стоматологическая клиника в центре Москвы: демократичные цены и профессиональные специалисты.
Говоря простым языком, Issue Tracking — процесс учета/отслеживания/решения проблем, возникающих в программе, обработка запросов на изменение, неточности, улучшения и т. д. Наиболее важная часть этого процесса - Bug Tracking - подразумевает обработку ошибок и неточностей.
Из своего опыта работы с различными заказчиками выношу несколько [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.kachayev.ru/2009/07/12/issue-tracking-sovmestno-s-zakazchikom-7-sovetov-frilanseram/feed/</wfw:commentRss><feedburner:origLink>http://www.kachayev.ru/2009/07/12/issue-tracking-sovmestno-s-zakazchikom-7-sovetov-frilanseram/</feedburner:origLink></item><item><title>Программист-предприниматель: советы по учету финансов фрилансера</title><link>http://feedproxy.google.com/~r/kachayev/~3/RF1BK7ah_qI/</link><category>Бизнес и Финансы</category><category>бизнес</category><category>предпринимательство</category><category>советы</category><category>финансы</category><category>фриланс</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Алексей Качаев</dc:creator><pubDate>Fri, 10 Jul 2009 14:00:42 PDT</pubDate><guid isPermaLink="false">http://www.kachayev.ru/?p=671</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<blockquote><p>Спонсор поста: Боитесь стоматологов? Доверьтесь профессионалам! <a href="http://www.ardc.ru/" target="_blank">Стоматология в Москве</a> - филиалом Американской стоматологической клиники (Сакраменто, Калифорния) - лучшие специалисты в своей области.</p></blockquote>
<p>Тяжелая выдалась неделька, зато продуктивная. Побегал по различным бюрократическим инстанциям и теперь я - физическое лицо предприниматель (в России это называется индивидуальный предприниматель, если я не ошибаюсь). Виды деятельности - разработка стандартного программного обеспечения, консультационные услуги в сфере информатизации, работа с банками данных и другие услуги в сфере разработки программного обеспечения.</p>
<p>С этого момента могу работать с составлением официального договора. Хотя, как показывает практика единичным заказчикам такой договор не нужен. Но сейчас веду переговоры с несколькими заказчиками, которым я буду обеспечивать постоянную поддержку проектов (в основном корпоративные блоги). С такими обязательно буду заключать договора.</p>
<p>Могу сказать, что у такой формы ведения своего дела есть свои плюсы и минусы. Основные неудобства свзязаны с тем, что ФОП (физическое лицо предприниматель) это и фирма, и я сам в одном лице. А значит повышается требования к моей финансовой дисциплине - нужно постоянно следить за тем, чтобы финансы моей &#8220;фирмы&#8221; жили отдельно от моих личных. В связи с этим сделал две вещи:</p>
<p>1. &#8220;Назначил&#8221; сам себе заработную плату. По окончанию каждого месяца, буду переводить эту сумму себе на дебетовую карточку и пользоваться. Это будет обычные затраты моего &#8220;предприятия&#8221;. А прибыль (разница доходов и расходов) будет реинвестироваться в дело.</p>
<p>2. Начал вести учет финансов фирмы отдельно от моих личных.</p>
<p>На втором остановлюсь немного подробнее и поделюсь сегодняшним опытом, потому что сам наткнулся на некоторые подводные камни. Слава богу, бухгалтерский учет знаю хорошо, нашел способ выкрутиться.</p>
<p>Естественно, использовать 1С для этих целей нет никакой надобности. Пересмотрел несколько программ для учета личных финансов. Хотелось что-нибудь удобное, серьезное и бесплатное. &#8220;Серьезное&#8221; имеется ввиду, лишенное &#8220;внутренних&#8221;, встроеных в программу и навязаных пользователю стратегий работы с деньгами - всякие пенсионные счета, которые нельзя удалить, ограничение уровня вложености статей доходов и т.д.</p>
<p>Остановился я на <a href="http://dervish.ru/" target="_blank">AbilityCash</a>. Программа удобная и интуитивно понятная. По функционалу стандартная: счета, доходы\расходы\переводы, валюты, отчеты и графики. Для учета личных финансов вполне подходит, а вот для учета работы предприятия не очень.. Все упирается в особенности ее предназначения.  Поэтому пришлось подставить свои костыли <img src='http://www.kachayev.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-671"></span></p>
<h2>Деньги на ведение деятельности</h2>
<p>Поначалу, не подумав, начал все делать как обычно - открыл счета для учета всех видов разных &#8220;денег&#8221;, с которыми буду работать:</p>
<p>- касса (для учета наличных)</p>
<p>- расчетный счет в банке</p>
<p>- webmoney</p>
<p>- weblancer</p>
<p>- blogun</p>
<p>На всех счетах указал &#8220;входящий&#8221; остаток - на различных электорнных кошельках около 600 грн. Дальше прикинул, что на все регистрационные процедуры потратил порядка 340 грн, и не долго думая указал это как входящий остаток по счету &#8220;Касса&#8221;.</p>
<p>Затем создал статьи доходов и расходов. Получилось следующие:</p>
<p><strong>Доходы</strong></p>
<p>- Разработка ПО под заказ</p>
<p>- Продажа ПО собственного производства</p>
<p>- Продажа ПО по агентским договорам</p>
<p>- Техническое обслуживание и сопровождение проектов</p>
<p>- Консультационные услуги</p>
<p><strong>Расходы</strong></p>
<p>- Заработная плата</p>
<p>- Канцелярские расходы</p>
<p>- Консультационные услуги</p>
<p>- Материально-техническое обеспечение</p>
<p>- Налоги и др. платежи</p>
<p>- Оплата за РКО</p>
<p>- Реклама и маркетинг</p>
<p>- Юридическое сопровождение</p>
<p>Потом провел все операции (уплаты всех взносов, налогов, всякие канцелярские затраты и т.д.). Все расходные опреации провел со счета &#8220;Касса&#8221;. Потом подумал и понял, что ошибся. Вроде бы все правильно, но &#8230; Но с таким подходом, я никогда не узнаю, сколько денег я вложил в свое &#8220;предприятие&#8221;.</p>
<p>Дело в том, что обычно предприятие начинается с уставного фонда. ФОП имеет право не формировать такового. Это удобно, но &#8220;расслабляет&#8221;. Если уже я решил отделить свои финансы от финансов фирмы, то должен точно знать, сколько денег влил в нее до тех пор пока не вышел на самоокупаемость. Поэтому отменил все действия и сделал следующие:</p>
<p>1. Ввел новую статью доходов &#8220;Внесение средств на ведение деятельности&#8221;.</p>
<p>2. Обнулил входящие остатки по всем открытым счетам.</p>
<p>3. Провел приходную операцию по этой статье на сумму 340 грн с зачислением на счет &#8220;Касса&#8221; и аналогичные приходные по всем видам открытых счетов.</p>
<p>Теперь видно, что деньги у меня появились не просто так, а по конкретной приходной статье. В будущем полезно будет анализировать размер оборотов по ней.</p>
<h2>Учет активов и пассивов</h2>
<p>Классически учет личных финансов состоит из записи доходов и расходов, а также учета сбережений. Некоторые программы позволяют также вести бюджетирование и планирование, но это не основные функции. На предприятии все обстоит по другому. Главное здесь - баланс. Т.е. сумма существующих активов и пассивов, активы генерируют доходы, пассивы - расходы. Значит доходы и расходы - вторичны.</p>
<p>У физического лица предпринимателя список активов и пассивов не длинный <img src='http://www.kachayev.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Так что вышел из этой ситуации, добавив специальные счета для учета тех статей, которые критически нужны - дебиторская и кредиторская задолженность. Почему это действительно важно?</p>
<p>Все дело в том, что учет личных финансов ведется по кассовому методу - т.е. деньги пришли-ушли, мы так и записали. По такому же принципу отчитываются в налоговую ФОПы. Но на предприятии такое движение не всегда показательно. Опишу проблему такого подхода на конкретном примере: Предположим, у нас есть 10 контрактов на тех обслуживание сайтов по 600 грн в месяц каждый. Все клиенты проводят с нами расчет в конце месяца, скажем 25-28 числа. Если мы ведем учет по кассовому методу, то по отчетности до 25 числа наше предприятие еле сводит концы с концами, а  с 28 резко становиться богаче на 6000 грн.</p>
<p>Счета дебиторской и кредиторской задолженности я буду использовать для отображения &#8220;реального&#8221; состояния дел не с точки зрения полученных и потраченных денег, а с точки зрения стоимости моих активов и пассивов.</p>
<p>Типичный пример - сегодня я открыл текущий счет в &#8220;Райфайзен Банк Аваль&#8221;. В сумме за открытие счета, корпоративную карточку, подключение к клиент-банк я должен заплатить 100 грн. Но я не платил наличкой, а договорился, что эта сумма будет списана с поступлений в течении месяца. Т.е. движения средст еще не было - 100 грн я ведь не отдал. Но подписав договор взял на себя обязательство сделать это в течении месяца. Согласитесь, без отображения этого в отчетах картина явно не полная <img src='http://www.kachayev.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Исходя из этого, я отобразил в учете следующую операцию: оплату РКО со счета &#8220;Кредиторская задолженность&#8221; в сумме 100 грн.  Ability Cash позволяет при построение отчетов по оборотам указывать какие счета нужно учитывать, а какие нет. Это удобно, так как выделив все счета, я получаю описание экономического состояния. А сняв отметку со счетов &#8220;Дебиторская задолженность&#8221; и &#8220;Кредиторская задолженность&#8221;, получаю отчет по кассовому методу (т.е. только движение средств).</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kachayev?a=RF1BK7ah_qI:gm6XUnt5f6c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kachayev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=RF1BK7ah_qI:gm6XUnt5f6c:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/kachayev?i=RF1BK7ah_qI:gm6XUnt5f6c:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=RF1BK7ah_qI:gm6XUnt5f6c:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kachayev?i=RF1BK7ah_qI:gm6XUnt5f6c:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=RF1BK7ah_qI:gm6XUnt5f6c:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kachayev?i=RF1BK7ah_qI:gm6XUnt5f6c:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=RF1BK7ah_qI:gm6XUnt5f6c:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kachayev?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kachayev/~4/RF1BK7ah_qI" height="1" width="1"/>]]></content:encoded><description>Спонсор поста: Боитесь стоматологов? Доверьтесь профессионалам! Стоматология в Москве - филиалом Американской стоматологической клиники (Сакраменто, Калифорния) - лучшие специалисты в своей области.
Тяжелая выдалась неделька, зато продуктивная. Побегал по различным бюрократическим инстанциям и теперь я - физическое лицо предприниматель (в России это называется индивидуальный предприниматель, если я не ошибаюсь). Виды деятельности - разработка стандартного программного обеспечения, консультационные услуги [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.kachayev.ru/2009/07/10/programmist-predprinimatel-sovety-po-uchetu-finansov-frilansera/feed/</wfw:commentRss><feedburner:origLink>http://www.kachayev.ru/2009/07/10/programmist-predprinimatel-sovety-po-uchetu-finansov-frilansera/</feedburner:origLink></item><item><title>3 вещи, которыми рискует программист-фрилансер</title><link>http://feedproxy.google.com/~r/kachayev/~3/czw65lJqPqQ/</link><category>Будни web-разработчика</category><category>профессия</category><category>советы</category><category>фрилансер</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Алексей Качаев</dc:creator><pubDate>Sun, 05 Jul 2009 02:08:55 PDT</pubDate><guid isPermaLink="false">http://www.kachayev.ru/?p=644</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>1. Деньги.<br />
2. Время.<br />
3. Нервы.</p>
<p><strong>Первым в меньшей степени.</strong> Чаще всего в форме &#8220;недополученных доходов&#8221;.</p>
<p>Гораздо в большей степени - вторым. И лично у меня сейчас период <strong>критической нехватки времени</strong>. Поэтому терять его, наверное, еще хуже. Вообще, некоторые говорят, что для фрилансера Деньги = Время. Я всегда добавляю Деньги = Время*Профессионализм.</p>
<p>С третьим все зависит <strong>от опыта выбора заказчиков и коллег по цеху</strong>. Хотя отдельные кадры случаются часто, даже там, где их не ждешь. Совет только один: остерегайтесь в работе неадекватных людей. По опыту своих контактов знаю, что программистам-фрилансерам часто труднее всего работать именно с людьми. И это понятно, в отличие от языком программирования, люди не имеют четких и предопределенных правил поведения.</p>
<p><strong>А у вы больше всего с какими проблемами встречаетесь?</strong><br />
<br/><br />
<strong>Интересное в блогосфере:</strong></p>
<ul>
<li>Блог о <a href='http://webjunk.ru'>заработке в интернете</a>. Seo, Smo и немного интернет-маркетинга.</li>
<li><a href='http://www.etxt.ru/'>Биржа контента </a> eTxT.ru предлагает вам уникальные возможности: «Копирайтинг с размещением» и «Мультизаказ».</li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kachayev?a=czw65lJqPqQ:vC9wddG2oSo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kachayev?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=czw65lJqPqQ:vC9wddG2oSo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/kachayev?i=czw65lJqPqQ:vC9wddG2oSo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=czw65lJqPqQ:vC9wddG2oSo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kachayev?i=czw65lJqPqQ:vC9wddG2oSo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=czw65lJqPqQ:vC9wddG2oSo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kachayev?i=czw65lJqPqQ:vC9wddG2oSo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kachayev?a=czw65lJqPqQ:vC9wddG2oSo:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kachayev?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kachayev/~4/czw65lJqPqQ" height="1" width="1"/>]]></content:encoded><description>1. Деньги.
2. Время.
3. Нервы.
Первым в меньшей степени. Чаще всего в форме &amp;#8220;недополученных доходов&amp;#8221;.
Гораздо в большей степени - вторым. И лично у меня сейчас период критической нехватки времени. Поэтому терять его, наверное, еще хуже. Вообще, некоторые говорят, что для фрилансера Деньги = Время. Я всегда добавляю Деньги = Время*Профессионализм.
С третьим все зависит от опыта выбора заказчиков [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.kachayev.ru/2009/07/05/3-veshhi-kotorymi-riskuet-programmist-frilanser/feed/</wfw:commentRss><feedburner:origLink>http://www.kachayev.ru/2009/07/05/3-veshhi-kotorymi-riskuet-programmist-frilanser/</feedburner:origLink></item></channel></rss>
