<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;C0MNQ347eCp7ImA9WhRWEEs.&quot;"><id>tag:blogger.com,1999:blog-4335322278857984660</id><updated>2011-12-28T10:38:12.000+02:00</updated><category term="ruby" /><category term="symfony" /><category term="rvm" /><category term="ubuntu" /><category term="rails" /><category term="note" /><category term="html" /><category term="svn" /><category term="netbeans" /><title>web development tips</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://jq11.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://jq11.blogspot.com/" /><author><name>jq11</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/jq11" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="jq11" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DkQARHk5eCp7ImA9WhZWF0g.&quot;"><id>tag:blogger.com,1999:blog-4335322278857984660.post-9215958687847250352</id><published>2011-05-19T00:29:00.002+03:00</published><updated>2011-05-19T00:32:25.720+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-19T00:32:25.720+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><category scheme="http://www.blogger.com/atom/ns#" term="note" /><category scheme="http://www.blogger.com/atom/ns#" term="rvm" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title>Установка RVM, Ruby, Rails, MySQL на Ubuntu</title><content type="html">&lt;h4&gt;1. Установка MySQL с причендалами&lt;/h4&gt;&lt;br /&gt;
&lt;pre class="brush:bash"&gt;$ sudo apt-get install mysql-server mysql-client libmysql-ruby libmysqlclient-dev
&lt;/pre&gt;&lt;br /&gt;
&lt;h4&gt;2. Установка RVM&lt;/h4&gt;&lt;br /&gt;
&lt;pre class="brush:bash"&gt;$ sudo apt-get install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev
$ bash &lt; &lt;(curl -s https://rvm.beginrescueend.com/install/rvm)
&lt;/pre&gt;
После установки должно вывалиться много текста. Внимательно читаем и правим файл &lt;b&gt;.bashrc&lt;/b&gt;, иначе не взлетит.
Перезапускаем консоль, проверяем что rvm жив:
&lt;pre class="brush:bash"&gt;$ type rvm | head -1 # должно сказать "rvm is a function"
$ rvm notes
&lt;/pre&gt;
&lt;h4&gt;3. Установка Ruby + Rails&lt;/h4&gt;
&lt;pre class="brush:bash"&gt;$ rvm install 1.9.2
$ rvm use 1.9.2
$ ruby -v
$ gem install rails
$ rails -v
&lt;/pre&gt;На данный момент рельсы версии 3.0.7

&lt;h4&gt;4. Пробуем создать rails-приложение&lt;/h4&gt;
&lt;pre class="brush:bash"&gt;$ rails new abc -d mysql -J
$ cd abc/
&lt;/pre&gt;На данный момент версия mysql2 - 0.3.2. Она работает только с рельсами 3.1.
У нас же рельсы 3.0, по этому меняем в &lt;b&gt;Gemfile&lt;/b&gt; строку
&lt;pre&gt;gem 'mysql2'&lt;/pre&gt;на
&lt;pre&gt;gem 'mysql2', '&lt; 0.3'&lt;/pre&gt;
Устанавливаем необходимые gem'ы
&lt;pre class="brush:bash"&gt;$ bundle install
&lt;/pre&gt;Среди пакетов должен установиться mysql2 версии 0.2.7.

Правим файл &lt;b&gt;config/database.yml&lt;/b&gt;.
Создаём базы

&lt;pre class="brush:bash"&gt;$ rake db:create
&lt;/pre&gt;На всякий случай можно проверить, что базы созданы

&lt;pre class="brush:bash"&gt;$ mysql -uroot -p -e "show databases"
&lt;/pre&gt;&lt;br /&gt;
Всё.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335322278857984660-9215958687847250352?l=jq11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jq11.blogspot.com/feeds/9215958687847250352/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://jq11.blogspot.com/2011/05/rvm-ruby-rails-mysql-ubuntu.html#comment-form" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/9215958687847250352?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/9215958687847250352?v=2" /><link rel="alternate" type="text/html" href="http://jq11.blogspot.com/2011/05/rvm-ruby-rails-mysql-ubuntu.html" title="Установка RVM, Ruby, Rails, MySQL на Ubuntu" /><author><name>jq11</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;C0AHRHw5fip7ImA9WxNaFko.&quot;"><id>tag:blogger.com,1999:blog-4335322278857984660.post-6550621195530246490</id><published>2009-12-01T14:48:00.001+02:00</published><updated>2009-12-01T14:48:55.226+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-01T14:48:55.226+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="symfony" /><title>symfony 1.3 and 1.4 stable released</title><content type="html">Ура! Версия 1.4 - это тоже, что и 1.3 минус устаревшие фичи.&lt;br /&gt;
&lt;a href="http://www.symfony-project.org/blog/2009/12/01/symfony-1-3-and-1-4-stable-released"&gt;Официальный анонс&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335322278857984660-6550621195530246490?l=jq11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jq11.blogspot.com/feeds/6550621195530246490/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://jq11.blogspot.com/2009/12/symfony-13-and-14-stable-released.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/6550621195530246490?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/6550621195530246490?v=2" /><link rel="alternate" type="text/html" href="http://jq11.blogspot.com/2009/12/symfony-13-and-14-stable-released.html" title="symfony 1.3 and 1.4 stable released" /><author><name>jq11</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0EGRno5fCp7ImA9WxNaEU0.&quot;"><id>tag:blogger.com,1999:blog-4335322278857984660.post-7744465625886804414</id><published>2009-11-25T00:18:00.005+02:00</published><updated>2009-11-25T00:27:07.424+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-25T00:27:07.424+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="symfony" /><title>Symfony Custom Filter in Admin Generator</title><content type="html">Небольшой snippet по расширению Form Filter.&lt;br /&gt;
Например есть табличка с заказами Order, табличка с товарами Product и связующая табличка OrderProduct. В backend необходимо добавить возможность фильтрации по id заказа &lt;small&gt;(странно что symfony сама не добавляет в фильтр id)&lt;/small&gt; и по названию товара в заказе.&lt;br /&gt;
&lt;br /&gt;
Первым делом изменяем OrderFormFilter:&lt;br /&gt;
&lt;pre class="brush:php"&gt;class OrderFormFilter extends BaseOrderFormFilter
{
  public function configure()
  {
    $this-&gt;widgetSchema['id'] = new sfWidgetFormInput();
    $this-&gt;validatorSchema['id'] = new sfValidatorInteger(array('required' =&gt; false));

    $this-&gt;widgetSchema['prodname'] = new sfWidgetFormInput();
    $this-&gt;validatorSchema['prodname'] = new sfValidatorString(array('required' =&gt; false));
  }

  public function getFields()
  {
    $fields = parent::getFields();
    $fields['id'] = 'Number';
    $fields['prodname'] = 'Text';
    return $fields;
  }


  public function addIdColumnQuery(Doctrine_Query $query, $field, $value)
  {
    $query-&gt;andWhere('r.id = ? ', $value);
  }


  public function addProdnameColumnQuery(Doctrine_Query $query, $field, $value)
  {
    $query-&gt;leftJoin('r.Products p')-&gt;andWhere('p.name LIKE ?', "%$value%");
  }

}
&lt;/pre&gt;&lt;br /&gt;
Теперь нужно добавить новые поля в generator.yml:&lt;br /&gt;
&lt;pre class="brush:yaml"&gt;      filter:
        display: [ id, prodname, ..... ]
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335322278857984660-7744465625886804414?l=jq11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jq11.blogspot.com/feeds/7744465625886804414/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://jq11.blogspot.com/2009/11/symfony-custom-filter-in-admin.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/7744465625886804414?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/7744465625886804414?v=2" /><link rel="alternate" type="text/html" href="http://jq11.blogspot.com/2009/11/symfony-custom-filter-in-admin.html" title="Symfony Custom Filter in Admin Generator" /><author><name>jq11</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEMARH85eSp7ImA9WxNUE0s.&quot;"><id>tag:blogger.com,1999:blog-4335322278857984660.post-7046862696870124154</id><published>2009-11-04T22:26:00.001+02:00</published><updated>2009-11-04T22:27:25.121+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-04T22:27:25.121+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="note" /><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><title>Alt-Tab в NetBeans</title><content type="html">В Windows глючит Alt-Tab в NetBeans. Лечится заменой look and feel.&lt;br /&gt;
В файле &lt;em&gt;netbeans.conf&lt;/em&gt; добавляем в &lt;em&gt;netbeans_default_options&lt;/em&gt;:&lt;br /&gt;
&lt;pre class="brush"&gt;netbeans_default_options="...... --laf javax.swing.plaf.metal.MetalLookAndFeel"
&lt;/pre&gt;&lt;br /&gt;
p.s.&lt;br /&gt;
Записи с меткой &lt;em&gt;note&lt;/em&gt; пишу в основном для себя, что бы не искать каждый раз одно и то же.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335322278857984660-7046862696870124154?l=jq11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/7046862696870124154?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/7046862696870124154?v=2" /><link rel="alternate" type="text/html" href="http://jq11.blogspot.com/2009/11/alt-tab-netbeans.html" title="Alt-Tab в NetBeans" /><author><name>jq11</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author></entry><entry gd:etag="W/&quot;D0QMRXw6fCp7ImA9WxNWEU8.&quot;"><id>tag:blogger.com,1999:blog-4335322278857984660.post-901720254297273585</id><published>2009-10-10T00:56:00.000+03:00</published><updated>2009-10-10T00:56:24.214+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-10T00:56:24.214+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="html" /><title>5 признаков плохого HTML кода</title><content type="html">Недавно, в связи с редизайном одного проекта, пришлось перелопатить довольно большой объём HTML-кода. Ниже привожу 5 наиболее распространённых ошибок, про которые все знают, но почему-то не особо стараются их избегать.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;b&gt;Использование тэга &lt;em&gt;&amp;lt;br/&amp;gt;&lt;/em&gt; для вертикальных отступов&lt;/b&gt;&lt;br /&gt;
Для отступов есть &lt;em&gt;padding&lt;/em&gt; и &lt;em&gt;margin&lt;/em&gt; в CSS, а &lt;em&gt;&amp;lt;br/&amp;gt;&lt;/em&gt; нужен только для разрывов строк.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Использование inline CSS&lt;/b&gt;&lt;br /&gt;
Инлайн стили надо использовать только в крайних случаях. Тогда при редизайне не прийдётся выискивать стили в HTML-шаблонах. Да и страничка будет загружаться быстрее, т.к. CSS-файлы, как правило, кешируются.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Использование инлайн JavaScript&lt;/b&gt;&lt;br /&gt;
Аналогично предыдущему пункту. Старайтесь избегать кода вида &lt;em&gt;&amp;lt;a onclick="..."&lt;/em&gt;. Не стоит загромождать HTML код логикой. Лучше создать отдельный js-файл и навесить обработчик события из него.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Использование таблиц для отображения нетабличных данных&lt;/b&gt;&lt;br /&gt;
Про это и так предостаточно сказано, поэтому комментирвать не буду.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Невалидный HTML&lt;/b&gt;&lt;br /&gt;
Ваш HTML-код должен 100% проходить валидацию. Провериться можно на &lt;a href="http://validator.w3.org/"&gt;W3C Markup Validation Service&lt;/a&gt;, &lt;br /&gt;
так же рекомендую расширение для FireFox - &lt;a href="http://users.skynet.be/mgueury/mozilla/"&gt;Html Validator&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335322278857984660-901720254297273585?l=jq11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jq11.blogspot.com/feeds/901720254297273585/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://jq11.blogspot.com/2009/10/5-html.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/901720254297273585?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/901720254297273585?v=2" /><link rel="alternate" type="text/html" href="http://jq11.blogspot.com/2009/10/5-html.html" title="5 признаков плохого HTML кода" /><author><name>jq11</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0AMQnozfSp7ImA9WxNXGEs.&quot;"><id>tag:blogger.com,1999:blog-4335322278857984660.post-6694764350263689568</id><published>2009-10-06T23:37:00.002+03:00</published><updated>2009-10-06T23:43:03.485+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-06T23:43:03.485+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="symfony" /><title>Readonly fields in symfony</title><content type="html">Иногда бывает необходимо просто отобразить поле в форме без возможности его изменения. Обычно это актуально для автогенерируемых полей, таких как created_at и updated_at. Проблема в том, что поля типа &lt;em&gt;datetime&lt;/em&gt; отображаются в виде набора селектов (sfWidgetFormSelect) и простое навешивание атрибута &lt;em&gt;readonly&lt;/em&gt; не поможет:&lt;br /&gt;
&lt;pre class="brush:php"&gt;$this-&amp;gt;widgetSchema['created_at']-&amp;gt;setAttribute('readonly', 'readonly');
&lt;/pre&gt;Наиболее простым выходом из ситуации будет замена виджета &lt;em&gt;sfWidgetFormDateTime&lt;/em&gt; на &lt;em&gt;sfWidgetFormInput&lt;/em&gt;:&lt;br /&gt;
&lt;pre class="brush:php"&gt;public function configure()
{
  // ...
  $this-&amp;gt;widgetSchema['created_at'] = new sfWidgetFormInput(array(), array('readonly'=&amp;gt;'readonly'));
  // ...
}
&lt;/pre&gt;&lt;br /&gt;
Если по каким-либо причинам понадобилось вместо поля ввода (input) отображать просто текст, то можно создать виджет &lt;em&gt;myWidgetFormPlain&lt;/em&gt;&lt;br /&gt;
&lt;pre class="brush:php"&gt;class myWidgetFormPlain extends sfWidgetForm
{
  
  protected function configure($options = array(), $attributes = array()) { }

  public function render($name, $value = null, $attributes = array(), $errors = array())
  {
    return $value ? $value : '&amp;amp;mdash;';
  }

}
&lt;/pre&gt;При использовании этого виджета необходимо отключить валидатор:&lt;br /&gt;
&lt;pre class="brush:php"&gt;public function configure()
{
  // ...
  $this-&amp;gt;widgetSchema['created_at'] = new myWidgetFormPlain();
  unset($this-&amp;gt;validatorSchema['created_at']);
  // ...
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335322278857984660-6694764350263689568?l=jq11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jq11.blogspot.com/feeds/6694764350263689568/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://jq11.blogspot.com/2009/10/readonly-fields-in-symfony.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/6694764350263689568?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/6694764350263689568?v=2" /><link rel="alternate" type="text/html" href="http://jq11.blogspot.com/2009/10/readonly-fields-in-symfony.html" title="Readonly fields in symfony" /><author><name>jq11</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0UNQn49cSp7ImA9WxNXFUQ.&quot;"><id>tag:blogger.com,1999:blog-4335322278857984660.post-5957957336130256449</id><published>2009-09-28T01:01:00.004+03:00</published><updated>2009-10-03T22:48:13.069+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-03T22:48:13.069+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="symfony" /><title>Routing cache в symfony</title><content type="html">Уже довольно давно хотел написать об этом, но всё руки не доходили.&lt;br /&gt;
При довольно большом количестве ссылок иногда можно наблюдать ошибку такого плана&lt;br /&gt;
&lt;pre&gt;Allowed memory size of ******** bytes exhausted (tried to allocate ******* bytes) in app/cache/frontend/prod/config/config_core_compile.yml.php on line 3369&lt;/pre&gt;Происходит это из-за того, что кеш роутинга становится слишком большим.&lt;br /&gt;
Кеш представляет собой огромный сериализованный массив в файле&lt;br /&gt;
&lt;i&gt;app/cache/frontend/prod/config/routing/symfony.routing.data.cache&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Существует несколько вариантов решения этой проблемы, но для себя самым оптимальным я нашел просто отключение кеша для роутера. В &lt;i&gt;factories.yml&lt;/i&gt;&lt;br /&gt;
&lt;pre&gt;all:
  routing:
    class: sfPatternRouting
    param:
      cache: { class: sfNoCache }
&lt;/pre&gt;Почему я только сейчас пишу об этом? Да потому что только что вышла symfony 1.2.9, в которой как раз по дефолту и отключен кеш роутинга :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335322278857984660-5957957336130256449?l=jq11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jq11.blogspot.com/feeds/5957957336130256449/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://jq11.blogspot.com/2009/09/routing-cache-symfony.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/5957957336130256449?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/5957957336130256449?v=2" /><link rel="alternate" type="text/html" href="http://jq11.blogspot.com/2009/09/routing-cache-symfony.html" title="Routing cache в symfony" /><author><name>jq11</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0UMRn49fyp7ImA9WxNXFUQ.&quot;"><id>tag:blogger.com,1999:blog-4335322278857984660.post-68434196546706640</id><published>2009-09-28T00:46:00.002+03:00</published><updated>2009-10-03T22:48:07.067+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-03T22:48:07.067+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="symfony" /><title>symfony 1.2.9 is ready to use</title><content type="html">&lt;a href="http://www.symfony-project.org/blog/2009/09/27/symfony-1-2-9-is-ready-to-use"&gt;Анонс &lt;/a&gt;и &lt;a href="http://www.symfony-project.org/installation/1_2/changelog"&gt;Changelog&lt;/a&gt;? :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335322278857984660-68434196546706640?l=jq11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jq11.blogspot.com/feeds/68434196546706640/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://jq11.blogspot.com/2009/09/symfony-129-is-ready-to-use.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/68434196546706640?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/68434196546706640?v=2" /><link rel="alternate" type="text/html" href="http://jq11.blogspot.com/2009/09/symfony-129-is-ready-to-use.html" title="symfony 1.2.9 is ready to use" /><author><name>jq11</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DU4FQXk8cSp7ImA9WxNQGUQ.&quot;"><id>tag:blogger.com,1999:blog-4335322278857984660.post-3115859715551286457</id><published>2009-09-26T23:43:00.001+03:00</published><updated>2009-09-26T23:45:10.779+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-26T23:45:10.779+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="symfony" /><title>Symfony 1.3 alpha1</title><content type="html">Вышла первая альфа ветки 1.3.&lt;br /&gt;
&lt;a href="http://www.symfony-project.org/blog/2009/09/26/hey-look-symfony-1-3-alpha1"&gt;Анонс&lt;/a&gt; и &lt;a href="http://www.symfony-project.org/tutorial/1_3/en/whats-new"&gt;What's new?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335322278857984660-3115859715551286457?l=jq11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jq11.blogspot.com/feeds/3115859715551286457/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://jq11.blogspot.com/2009/09/symfony-13-alpha1.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/3115859715551286457?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/3115859715551286457?v=2" /><link rel="alternate" type="text/html" href="http://jq11.blogspot.com/2009/09/symfony-13-alpha1.html" title="Symfony 1.3 alpha1" /><author><name>jq11</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEQAQng_eCp7ImA9WxNXE0w.&quot;"><id>tag:blogger.com,1999:blog-4335322278857984660.post-4354739562815098180</id><published>2009-09-22T00:10:00.007+03:00</published><updated>2009-09-30T15:05:43.640+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-30T15:05:43.640+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="netbeans" /><title>Code Folding в NetBeans</title><content type="html">Уже довольно давно ползуюсь &lt;a href="http://www.netbeans.org/"&gt;NetBeans&lt;/a&gt;, но совснем недавно узнал, что в нём можно делать code folding (аналог &lt;i&gt;#region&lt;/i&gt; в Visual Studio).&lt;br /&gt;
Итак, формат такой&lt;br /&gt;
&lt;pre class="brush:php"&gt;// &amp;lt;editor-fold defaultstate="collapsed" desc="describe what is in here"&amp;gt;
your code here
// &amp;lt;/editor-fold&amp;gt;
&lt;/pre&gt;Параметры &lt;b&gt;defaultstate&lt;/b&gt; и &lt;b&gt;desc&lt;/b&gt; не обязательны.&lt;br /&gt;
Вот часть кода в раскрытом виде&lt;br /&gt;
&lt;img border="0" src="http://1.bp.blogspot.com/_pfRx03NrgDE/SrV44A_BknI/AAAAAAAACKM/-qAjHE2rv44/s800/netbeans-folding-expanded.gif" /&gt;&lt;br /&gt;
А вот она же, но уже в свёрнутом виде&lt;br /&gt;
&lt;img border="0" src="http://1.bp.blogspot.com/_pfRx03NrgDE/SrV5qsWTkzI/AAAAAAAACKU/HsBd8o9mfrY/s800/netbeans-folding-collapsed.gif" /&gt;&lt;br /&gt;
&lt;br /&gt;
Естественно мало кто захочет набирать всё это каждый раз вручную. Поэтому открываем&lt;br /&gt;
Tools &amp;rarr; Options &amp;rarr; Editor &amp;rarr; Code Templates&lt;br /&gt;
и создаём следующий шаблон&lt;br /&gt;
&lt;pre class="brush:php"&gt;// &amp;lt;editor-fold defaultstate="collapsed" desc="${comment}"&amp;gt;
${selection}${cursor}
// &amp;lt;/editor-fold&amp;gt;
&lt;/pre&gt;Сохраняем.&lt;br /&gt;
Выделяем часть кода, давим Alt-Enter и выбираем наш Surronud with...&lt;br /&gt;
&lt;br /&gt;
Вообще бытует мнение, что если приходится использовать фолдинг, то ваш код не очень хорошо структурирован, и я с этим согласен. Но если, например, нужно разобраться в длиннющем скрипте, то здесь фолдинг может очень помочь.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335322278857984660-4354739562815098180?l=jq11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jq11.blogspot.com/feeds/4354739562815098180/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://jq11.blogspot.com/2009/09/netbeans.html#comment-form" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/4354739562815098180?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/4354739562815098180?v=2" /><link rel="alternate" type="text/html" href="http://jq11.blogspot.com/2009/09/netbeans.html" title="Code Folding в NetBeans" /><author><name>jq11</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_pfRx03NrgDE/SrV44A_BknI/AAAAAAAACKM/-qAjHE2rv44/s72-c/netbeans-folding-expanded.gif" height="72" width="72" /><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;AkUGQ3k7fyp7ImA9WxNQFEU.&quot;"><id>tag:blogger.com,1999:blog-4335322278857984660.post-3394227154104036075</id><published>2009-09-21T01:53:00.003+03:00</published><updated>2009-09-21T02:10:22.707+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-21T02:10:22.707+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="svn" /><title>Бесплатный  SVN хостинг для личных проектов</title><content type="html">Сначала я использовал &lt;a href="http://www.assembla.com/"&gt;assembla&lt;/a&gt;, но после того, как она стала полностью платной, перешел на &lt;a href="http://xp-dev.com/"&gt;XP-Dev.com&lt;/a&gt;. До сих пор пользуюсь их сервисом. Но сегодня, пока их сервер обновлялся и был недоступен, решил на всякий случай подыскать альтернативу.&lt;br /&gt;
Итак, небольшое сравнение бесплатных аккаунтов некоторых SVN-хостингов.&lt;br /&gt;
&lt;table class="grid"&gt;&lt;tr&gt;   &lt;th&gt;Хостер&lt;/th&gt;   &lt;td&gt;&lt;a href="http://www.xp-dev.com/pricing"&gt;XP-Dev.com&lt;/a&gt;&lt;/td&gt;   &lt;td&gt;&lt;a href="http://beanstalkapp.com/pricing"&gt;Beanstalk&lt;/a&gt;&lt;/td&gt;   &lt;td&gt;&lt;a href="http://unfuddle.com/accounts/plans"&gt;unfuddle&lt;/a&gt;&lt;/td&gt;   &lt;td&gt;&lt;a href="https://www.projectlocker.com/signup/startup"&gt;ProjectLocker&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt;   &lt;th&gt;Пространство&lt;/th&gt;   &lt;td&gt;200M&lt;/td&gt;   &lt;td&gt;100M&lt;/td&gt;   &lt;td&gt;200M&lt;/td&gt;   &lt;td&gt;500M&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt;   &lt;th&gt;Репозиториев&lt;/th&gt;   &lt;td&gt;?&lt;/td&gt;   &lt;td&gt;1&lt;/td&gt;   &lt;td&gt;unlim&lt;/td&gt;   &lt;td&gt;unlim&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt;   &lt;th&gt;Пользователей&lt;/th&gt;   &lt;td&gt;unlim&lt;/td&gt;   &lt;td&gt;3&lt;/td&gt;   &lt;td&gt;2&lt;/td&gt;   &lt;td&gt;5&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt;   &lt;th&gt;Проектов&lt;/th&gt;   &lt;td&gt;2&lt;/td&gt;   &lt;td&gt;?&lt;/td&gt;   &lt;td&gt;1&lt;/td&gt;   &lt;td&gt;unlim&lt;/td&gt; &lt;/tr&gt;
&lt;/table&gt;Кроме цифр есть такой немаловажный фактор, как удобство пользования. А оно у XP-Dev.com в последнее время оставляет желать лучшего. Вообщем лидер есть, надо будет попробовать...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335322278857984660-3394227154104036075?l=jq11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jq11.blogspot.com/feeds/3394227154104036075/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://jq11.blogspot.com/2009/09/svn.html#comment-form" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/3394227154104036075?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/3394227154104036075?v=2" /><link rel="alternate" type="text/html" href="http://jq11.blogspot.com/2009/09/svn.html" title="Бесплатный  SVN хостинг для личных проектов" /><author><name>jq11</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DkcAQ3s4cSp7ImA9WxNQFUo.&quot;"><id>tag:blogger.com,1999:blog-4335322278857984660.post-7490149374019444253</id><published>2009-09-20T14:19:00.008+03:00</published><updated>2009-09-22T02:00:42.539+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-22T02:00:42.539+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="symfony" /><title>get_partial &amp; task в symfony</title><content type="html">Есть проект на &lt;a href="http://www.symfony-project.org/"&gt;symfony&lt;/a&gt;.&lt;br /&gt;
Имеется &lt;a href="http://www.symfony-project.org/book/1_2/16-Application-Management-Tools#chapter_16_sub_custom_tasks_new_in_symfony_1_1"&gt;консольная задача&lt;/a&gt; в которой необходимо выполнять рассылку писем.&lt;br /&gt;
Тело письма создаётся через &lt;a href="http://www.symfony-project.org/api/1_2/PartialHelper#method_get_partial"&gt;get_partial&lt;/a&gt;.&lt;br /&gt;
В шаблоне письма есть &lt;a href="http://www.symfony-project.org/api/1_2/UrlHelper#method_link_to"&gt;link_to&lt;/a&gt; и/или &lt;a href="http://www.symfony-project.org/api/1_2/UrlHelper#method_url_for"&gt;url_for&lt;/a&gt;.&lt;br /&gt;
Проблема в том, что роутер не может создать правилый URL, т.к. приложение выполняется вне web-окружения и вместо нормальных ссылок получаем что-то типа &lt;u&gt;http://symfony/symfony/post/2009&lt;/u&gt;.&lt;br /&gt;
Я выкрутился следующим способом&lt;br /&gt;
&lt;pre class="brush:php"&gt;$_SERVER['HTTP_HOST'] = 'myhost';
$_SERVER['SCRIPT_NAME'] = '/index.php';
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false);
$context = sfContext::createInstance($configuration);
$configuration-&amp;gt;loadHelpers('Partial');
$body = get_partial('post/mail_notify', array('myvar' =&amp;gt; $myval));&lt;/pre&gt;Обратите внимание на параметр '&lt;b&gt;prod&lt;/b&gt;'. Это необходимо для того что бы роутер смог выкинуть /index.php из URL'а (если generate_shortest_url=true в factories.yml)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335322278857984660-7490149374019444253?l=jq11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jq11.blogspot.com/feeds/7490149374019444253/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://jq11.blogspot.com/2009/09/getpartial-tasks-symfony.html#comment-form" title="Комментарии: 3" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/7490149374019444253?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/7490149374019444253?v=2" /><link rel="alternate" type="text/html" href="http://jq11.blogspot.com/2009/09/getpartial-tasks-symfony.html" title="get_partial &amp; task в symfony" /><author><name>jq11</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;CU4DRHsyeSp7ImA9WxNQFUo.&quot;"><id>tag:blogger.com,1999:blog-4335322278857984660.post-4315784583271056556</id><published>2009-09-19T16:55:00.023+03:00</published><updated>2009-09-22T01:59:35.591+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-22T01:59:35.591+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="html" /><title>Якоря</title><content type="html">Почему-то большинство разработчиков для создания якорей используют конструкцию вида&lt;br /&gt;
&lt;pre class="brush:html"&gt;&amp;lt;h2&amp;gt;
  &amp;lt;a name=&amp;quot;section1&amp;quot;&amp;gt;Section 1&amp;lt;/a&amp;gt;
&amp;lt;/h2&amp;gt;&lt;/pre&gt;Хотя якорем может быть любой элемент с атрибутом &lt;b&gt;id&lt;/b&gt;&lt;br /&gt;
&lt;pre class="brush:html"&gt;&amp;lt;h2 id="section1"&amp;gt;Section 1&amp;lt;/h2&amp;gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4335322278857984660-4315784583271056556?l=jq11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jq11.blogspot.com/feeds/4315784583271056556/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://jq11.blogspot.com/2009/09/tttttttttt.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/4315784583271056556?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4335322278857984660/posts/default/4315784583271056556?v=2" /><link rel="alternate" type="text/html" href="http://jq11.blogspot.com/2009/09/tttttttttt.html" title="Якоря" /><author><name>jq11</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry></feed>

