<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Alex L. Demidov</title>
    <link rel="alternate" type="text/html" href="http://alexd.vinf.ru/" />
    <link rel="self" type="application/atom+xml" href="http://alexd.vinf.ru/atom.xml" />
    <id>tag:alexd.vinf.ru,2008-03-18://1</id>
    <updated>2008-04-03T04:50:39Z</updated>
    <subtitle>programmer, unix/cisco sysadmin</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Open Source 4.1</generator>

<entry>
    <title>Сборка русской версии Movable Type</title>
    <link rel="alternate" type="text/html" href="http://alexd.vinf.ru/sysadmin/sborka-russkoj-versii-movable.html" />
    <id>tag:alexd.vinf.ru,2008://1.18</id>

    <published>2008-04-01T20:35:21Z</published>
    <updated>2008-04-03T04:50:39Z</updated>

    <summary>Для сборки руссифицированной версии Movable Type нам опять понадобятся исходники из svn-репозитария. Делаем чекаут, как описано в предыдущей статье о работе с файлом перевода и прикладываем к полученным исходникам патч patch-rubuild.gz, который добавляет возможность сборки русской версии. Следующим шагом вносим...</summary>
    <author>
        <name>Алексей Демидов</name>
        <uri>http://alexd.vinf.ru/</uri>
    </author>
    
        <category term="Администрирование" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="l10n" label="l10n" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletype" label="MovableType" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://alexd.vinf.ru/">
        <![CDATA[<p>Для сборки руссифицированной версии Movable Type нам опять понадобятся исходники из <a href="http://code.sixapart.com/svn/movabletype/">svn-репозитария</a>. Делаем чекаут, как описано в предыдущей <a href="http://alexd.vinf.ru/sysadmin/rabota-s-failom-perevoda-mt.html">статье о работе с файлом перевода</a> и прикладываем к полученным исходникам патч <a href="http://alexd.vinf.ru/files/patch-rubuild.gz"><span class="code">patch-rubuild.gz</span></a>, который добавляет возможность сборки русской версии. 
</p>
<p>
Следующим шагом вносим в исходники все необходимые изменения для поддержки русского языка:
</p>
<ul>
<li><a href="http://alexd.vinf.ru/files/patch-rudate41.gz"><span class="code">patch-rudate41.gz</span></a>&nbsp;&mdash; добавляет русский формат дат</li>
<li><a href="http://alexd.vinf.ru/files/patch-dirify.gz"><span class="code">patch-rudirify41.gz</span></a>&nbsp;&mdash; добавляет русские символы в таблицы преобразования заголовков статей в имена файлов (в отличии от <a href="http://blog.lexa.ru/files/patch-dirify.gz">патча</a> <a href="http://blog.lexa.ru/">Алексея Тутубалина</a> изменяется также и Javascript код, а преобразование русских символов в латиницу сделано в соответствии с <a href="http://www.gsnti-norms.ru/norms/common/doc.asp?0&amp;/norms/stands/7_79.htm">ГОСТ 7.79-2000</a>)</li>
<li><a href="http://blog.lexa.ru/files/patch-nofollow.gz"><span class="code">patch-nofollow.gz</span></a>&nbsp;&mdash; добавляет поддержку тэга &lt;noindex&gt; необходимого для российских поисковиков (автор Алексей Тутубалин)</li>
<li><a href="http://blog.lexa.ru/files/patch-monday-mt41.gz"><span class="code">patch-monday-mt41.gz</span></a>&nbsp;&mdash; делает первым днем недели в календаре понедельник (автор Алексей Тутубалин)</li>
</ul>
<p>
После внесения изменений в код и шаблоны осталось добавить собственно файл перевода <span class="code">lib/MT/L10N/ru.pm</span> (<a href="http://movable-type.ru/forums/viewtopic.php?id=75">перевод</a> проекта <a href="http://movable-type.ru">movable-type.ru</a>, либо мой, менее полный <a href="http://alexd.vinf.ru/files/ru.pm">перевод</a>), файл стилей <a href="http://alexd.vinf.ru/files/styles_ru.css"><span class="code">mt-static/styles_ru.css</span></a> и два HTML-файла&nbsp;&mdash; <span class="code">index.html.ru</span> и <span class="code">readme.html.ru</span> (они есть в <a href="http://code.google.com/p/movabletype/source/checkout ">репозитарии</a> русской версии Movable Type на Google Code). Файл перевода необходимо обработать в соответствии с инструкциями в предыдущей <a href="http://alexd.vinf.ru/sysadmin/rabota-s-failom-perevoda-mt.html">статье</a>. В завершении можно изменить некоторые настройки по умолчанию (часовой пояс, кодировки, ссылки на новости, портал и техподдержку)  для собираемого пакета, отредактировав файл <span class="code">build/mt-dists/ru.mk</span>.
</p>
<p>
Сделав все необходимые изменения выполняем сборку пакета MTOS:
</p>
<pre class="code">
env LANG=C ./build/exportmt.pl --local --pack=MTOS --lang=ru --prod
</pre>
<p>
В результате выполнения данной команды получим два архива с русской версией Movable Type&nbsp;&mdash; <span class="code">MTOS-4.1-ru.tar.gz</span> и <span class="code">MTOS-4.1-ru.zip</span>.
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Работа с файлами перевода Movable Type.</title>
    <link rel="alternate" type="text/html" href="http://alexd.vinf.ru/sysadmin/rabota-s-failom-perevoda-mt.html" />
    <id>tag:alexd.vinf.ru,2008://1.17</id>

    <published>2008-03-30T09:35:28Z</published>
    <updated>2008-03-30T09:45:01Z</updated>

    <summary>Совпадение, но через два дня после публикации последней статьи на тему руссификации Movable Type, вышел перевод от проекта movable-type.ru. В сравнении с моим переводом, он более полный, но делался, судя по всему, по французскому файлу трансляции от версии 4.0 и...</summary>
    <author>
        <name>Алексей Демидов</name>
        <uri>http://alexd.vinf.ru/</uri>
    </author>
    
        <category term="Администрирование" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Программирование" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="i18n" label="i18n" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="l10n" label="l10n" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletype" label="MovableType" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://alexd.vinf.ru/">
        <![CDATA[<p>Совпадение, но через два дня после публикации <a href="http://alexd.vinf.ru/sysadmin/russifikacija-movable-type-41.html">последней статьи</a> на тему руссификации Movable Type, вышел <a href="http://movable-type.ru/forums/viewtopic.php?id=75">перевод</a> от проекта <a href="http://movable-type.ru/">movable-type.ru</a>.  В сравнении с моим переводом, он более полный, но делался, судя по всему, по французскому файлу трансляции от версии 4.0 и в нем отсутствует более 300 строк, а также полтора десятка строк остались на французском. 
</p>

<p>
Для того, чтобы синхронизировать файл перевода с текущим релизом (а также будущими релизами) и добавить в него отсутствующие строки, нужен полный комплект исходников <a href="http://www.movabletype.org/">Movable Type</a> из <a href="http://code.sixapart.com/svn/movabletype/">svn-репозитария</a>&nbsp;&mdash; в них пристутствует набор скриптов для манипуляций с файлами переводов (для работы скриптов нужен perl и набор unix-утилит - shell, awk, find и т.д.). Сначала <a href="http://www.movabletype.org/2007/12/mtos_subversion_tips.html">делаем чекаут</a> исходников из репозитария:
</p>
<pre class="code">
svn co http://code.sixapart.com/svn/movabletype/latest mtos-latest
</pre>
<p>
После выполнения данной команды в каталоге <span class="code">mtos-latest</span> будет три подкаталога: <span class="code">dev</span>, <span class="code">stable</span> и <span class="code">release</span>. Нам нужен подкаталог <span class="code">release</span>, в котором находится последний релиз Movable Type с которым мы будем работать. Первым делом кладем наш файл перевода <span class="code">ru.pm</span> в подкаталог <span class="code">lib/MT/L10N/</span>. Следующим шагом запускаем собственно генерацию обновленного файла перевода из каталога <span class="code">release</span>:
</p>
<pre class="code">
sh build/l10n/make-l10n ru
</pre>
<p>
В результате работы данного скрипта в каталоге <span class="code">/tmp</span> будет сгенерировано четыре файла: 
</p>
<ul>
  <li><span class="code">ru-base.pm</span>&nbsp;&mdash; файл со всеми строками трансляции (в том числе дублирующиеся строки)</li>
  <li><span class="code">ru-nodupe.pm</span>&nbsp;&mdash; файл с удаленными дубликатами строк</li>
  <li><span class="code">ru-old.pm</span>&nbsp;&mdash;строки трансляции которые более не используются</li>
  <li><span class="code">ru.pm</span>&nbsp;&mdash;новый файл перевода</li>
</ul>
<p>
В новом файле перевода <span class="code">/tmp/ru.pm</span> будут добавлены отсутствующие строки перевода (отмечены комментарием &laquo;Translate - New&raquo;) и будут отчемены строки с регистром перевода отличающимся от оригинала&nbsp;&mdash; например, переводы следующего вида:
</p>
<pre class="code">
'video' => 'Видео'
</pre>
<p class="code">
Этот файл уже готов к использованию, но для полноценной поддержки русского языка я сделал дополнительный фильтр <a href="http://alexd.vinf.ru/files/ru-filter.pl"><span class="code">ru-filter.pl</span></a>, через который надо пропустить файл перевода:
</p>
<pre class="code">
cat /tmp/ru.pm | perl ru-filter.pl &gt; lib/MT/L10N/ru.pm
</pre>
<p>
Данный фильтр делает следующее:
</p>
<ul>
<li>отмечает комментарием &laquo;# Translate - No translation&raquo; непереведенные строки, в которых оригинал и перевод совпадают</li>
<li>отмечает комментарием &laquo;# Translate - No russian char&raquo; строки перевода в которых не встречаются русские буквы</li>
<li>отключает строки с пустым переводом</li>
<li>добавляет perl&rsquo;овый код для правильной поддержки множественного числа</li>
</ul>
<p>
Поддержка множественного числа сделана через переопределение функции
quant из <a href="http://search.cpan.org/dist/Locale-Maketext/">Locale::Maketext</a>. Теперь второй и третий параметры этой функции принимают формы слова для значений числительного от 2 до 4 и от 5 до 0 соответственно. Таким образом можно писать &laquo;<span class="code">[quant, _1,минута,минуты,минут]</span>&raquo; и соответствующий текст будет генерироваться как &laquo;1 минута, 2 минуты, 5 минут&raquo; вместо &laquo;1 минута, 2 минут., 3 минут.&raquo;
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Руссификация Movable Type 4.1</title>
    <link rel="alternate" type="text/html" href="http://alexd.vinf.ru/sysadmin/russifikacija-movable-type-41.html" />
    <id>tag:alexd.demco.ru,2008:/blog//1.7</id>

    <published>2008-03-24T11:59:10Z</published>
    <updated>2008-04-01T21:23:00Z</updated>

    <summary>Продолжаем работу с Movable Type. Руссификацию пришлось делать в два захода. На первом заходе, после предварительного гугленья, был применен рецепт для руссификации Movable Type версии 4 от Алексея Тутубалина с небольшими изменениями: приложен патч patch-monday-mt41.gz для того чтобы в календаре...</summary>
    <author>
        <name>Алексей Демидов</name>
        <uri>http://alexd.vinf.ru/</uri>
    </author>
    
        <category term="Администрирование" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="i18n" label="i18n" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="l10n" label="l10n" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletype" label="MovableType" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://alexd.vinf.ru/">
        <![CDATA[<p><a href="http://alexd.vinf.ru/sysadmin/movabletypes-fastcgi.html">Продолжаем</a> работу с Movable Type. Руссификацию пришлось делать в два захода. На первом заходе, после предварительного гугленья, был применен <a href="http://blog.lexa.ru/2008/01/26/movabletype_41_i_russkij_jazik.html">рецепт</a> для руссификации <a href="http://www.movabletype.org/">Movable Type</a> версии 4 от <a href="http://blog.lexa.ru/">Алексея Тутубалина</a> с небольшими изменениями:
</p>
<ul>
  <li>приложен патч <a href="http://blog.lexa.ru/files/patch-monday-mt41.gz">patch-monday-mt41.gz</a> для того чтобы в календаре неделя начиналась с понедельника</li>
  <li>приложен патч <a href="http://blog.lexa.ru/files/patch-dirify.gz">patch-dirify.gz</a> для конвертации русских символов в заголовках статей в латиницу при генерации имени файла</li>
   <li>приложен патч <a href="http://blog.lexa.ru/files/patch-nofollow.gz">patch-nofollow.gz</a> для поддержки тэга &lt;noindex&gt; для Яндекса</li>
</ul>

<p>
Патч <a href="http://blog.lexa.ru/files/patch-rudate.gz">patch-rudate.gz</a> не прикладывал, но посмотрев в него, сделал свой. Вместо того, чтобы использовать итальянский формат, добавил русский в список форматов, изменив  <span class="code">lib/MT/Util.pm</span> и <span class="code">tmpl/cms/cfg_entry.tmpl</span>. Изменен также и формат отображения&nbsp;&mdash; вместо <em>24.03.2008</em> будет <em>Март, 24 2008</em>. Патч <a href="http://alexd.vinf.ru/files/patch-rudate41.gz">patch-rudate41.gz</a> прилагается.
</p>

<p>
Далее последовал наиболее нудный этап&nbsp;&mdash; перевод шаблонов. Разбор со <a href="http://blog.lexa.ru/2007/09/23/eksport_templejtov_movable_type_variant_2.html">скриптом Алексея Тутубалина</a> для экспорта/импорта шаблонов я оставил на потом (этот скрипт был сделан до выхода версии 4.1 и неизвестно как он с ней работает, к тому же он требует установки плугина <a href="http://mt-hacks.com/templateinstaller.html">TemplateInstaller</a>), поэтому шаблоны перевел вручную через админку Movable Type. Хотя шаблонов около полусотни, но сами они немногословны и переводить можно не все, а только те, которые реально используются. Поэтому первые результаты появился сравнительно быстро, но в процессе перевода увлекся файн-тюнингом оформления и внес слишком много изменений в шаблоны, так что собравшись создавать блог для своей SO, обнаружил что мне надо либо вычищать свое оформление, либо возвращаться к стандартным шаблонам и переводить их опять с нуля.
</p>
<p>
Немного поразмышляв, решил выбрать другой подход. В Movable Type есть в наличии полная инфраструктура для локализации базирующаяся на perl&rsquo;овом <a href="http://search.cpan.org/search?m=module&amp;q=Locale%3A%3AMaketext">Locale::Maketext</a> и <a href="http://wiki.movabletype.org/Translation_and_Localization">документация рекомендуют</a> именно этот подход. Проект <a href="http://movable-type.ru/">movable-type.ru</a> после выхода версии 4.0 в августе 2007 вроде бы огранизовал <a href="http://movable-type.ru/2007/08/localization-mt4.php">коллективную попытку</a> сделать русский перевод и месяц назад даже <a href= "http://movable-type.ru/forums/viewtopic.php?id=66">заявлена</a> 90% готовность, но реальных результатов пока не наблюдается. Конечно объем текста в более чем 4 тысячи строк на первый взгляд выглядит ужасающе,  но ничто не мешает переводить текст по частям, например, для начала только те строки, которые используются в самих блогах, а не в админке. 
</p>
<p>
За пару вечеров у меня был готов перевод следующих компонентов используемых в опубликованном блоге:
</p>
<ul>
  <li>шаблоны <span class="code">default_templates/*.mtml</span> которые используются при генерации шаблонов нового блога</li>
  <li>шаблоны <span class="code">plugins/WidgetManager/default_widgets/*.mtml</span> для widget'ов </li>
  <li>php-скрипты динамической публикации</li>
</ul>
<p>
Все это занимает где-то чуть более 600 строк (<a href="http://alexd.vinf.ru/files/ru-published-only.pm">ru-published-only.pm</a>). Данный файл необходимо переименовать в <span class="code">ru.pm</span> и положить в <span class="code">lib/MT/L10N/</span>, при этом русский язык автоматически станет доступен для выбора в профиле пользователя. Стоит иметь в виду, что перевод фраз в шаблонах на русский производится в момент генерации шаблонов и только если у пользователя выбран русский язык в профиле. Если блог уже создан, то можно перегенерировать шаблоны заново, зайдя в своем блоге через меню &laquo;Design&raquo;&nbsp;&rarr; &laquo;Manage Templates&raquo;&nbsp;&rarr;  &laquo;Refresh Blog Templates&raquo;.  При перегенерации большинство новых руссифицированных шаблонов будут иметь русские имена и у меня лично слетели Archive Maps и наборы widget&rsquo;ов. Нужно будет их пересоздать, предварительно удалив все старые  шаблоны и widget&rsquo;ы. 
</p>
<p>
Все остальное пока находится в процессе перевода, хотя наиболее часто используемые части админки уже переведены практически полностью (можно скачать <a href="http://alexd.vinf.ru/files/ru-20080402.pm">Файл перевода</a>). В качестве основы для этого файла взят <span class="code">es.pm</span>, поэтому непереведенные строки будут по испански. Также добавлен скрипт <a href="http://alexd.vinf.ru/files/mt_ru.js">mt_ru.js</a> который содержит локализованные строки для JavaScript и локализованную таблицу для динамической dirtif&rsquo;икации заголовков в имена файлов. Файл стилей <a href="http://alexd.vinf.ru/files/styles_ru.css">styles_ru.css</a> содержит одну строчку&nbsp;&mdash; модификация ширины колонок в виджете календаря. 
</p>
<p>
По мере дальнейшего перевода я планирую выкладывать обновленную версию файла <a href="http://alexd.vinf.ru/files/ru-20080402.pm">ru.pm</a>, следите за обновлениями.
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Ускорение Movable Types ( Apache и FastCGI )</title>
    <link rel="alternate" type="text/html" href="http://alexd.vinf.ru/sysadmin/movabletypes-fastcgi.html" />
    <id>tag:alexd.demco.ru,2008:/blog//1.2</id>

    <published>2008-03-20T20:44:05Z</published>
    <updated>2008-03-27T08:33:33Z</updated>

    <summary><![CDATA[После установки Movable Type обнаружилось что работа с его админкой (CMS) достаточно некомфортна из-за её существенной тормознутости&nbsp;&mdash; время загрузки главной страницы составляет около 15 секунд. Впрочем, это не удивительно, поскольку админка реализована как достаточно тяжелый perl&rsquo;овый скрипт со множеством зависимостей...]]></summary>
    <author>
        <name>Алексей Демидов</name>
        <uri>http://alexd.vinf.ru/</uri>
    </author>
    
        <category term="Администрирование" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="fastcgi" label="FastCGI" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletype" label="MovableType" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://alexd.vinf.ru/">
        <![CDATA[<p>После установки <a href="http://www.movabletype.org/">Movable Type</a> обнаружилось что работа с его админкой (CMS) достаточно некомфортна из-за её существенной тормознутости&nbsp;&mdash; время загрузки главной страницы составляет около 15 секунд. Впрочем, это не удивительно, поскольку админка реализована как достаточно тяжелый perl&rsquo;овый скрипт со множеством зависимостей которые при работе в режиме стандратного CGI подгружаются при каждом <acronym>HTTP</acronym>-запросе.</p>

<p>Первой мыслью было попробовать запустить его под <a href="http://perl.apache.org/">mod_perl</a>, который у меня уже есть, но как оказалось <a href="http://www.movabletype.org/">Movable Type</a> поддерживает только <a href="http://perl.apache.org/">mod_perl</a> 1.x, а я уже третий год как переехал на <a href="http://httpd.apache.org/">Apache</a> 2.x. Поэтому пришлось обратиться к альтернативном варианту&nbsp;&mdash; <a href="http://www.fastcgi.com/">FastCGI</a>, отличие которого от классического CGI именно в том, что скрипт обслуживает не один, а множество <acronym>HTTP</acronym>-запросов, чем минимизируются временные затраты на запуск и инициализацию скрипта.</p>

<p>Сначала обеспечиваем поддержку <a href="http://www.fastcgi.com/">FastCGI</a> в <a href="http://httpd.apache.org/">Apache</a>&nbsp;&mdash; это делается с помощь модуля <a href="http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html">mod_fastcgi</a> (или альтернативная реализация <a href="http://fastcgi.coremail.cn/">mod_fcgid</a>). Ставим модуль и подключаем его в <span class="code">httpd.conf</span>.

настройки для <a href="http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html">mod_fastcgi</a>:
</p>
<pre class="code">
LoadModule fastcgi_module libexec/apache22/mod_fastcgi.so
&lt;IfModule mod_fastcgi.c&gt;
  AddHandler fastcgi-script .fcgi
  FastCgiIpcDir /var/run/fcgidsock/
&lt;/IfModule&gt;
</pre>
<p>
настройки для <a href="http://fastcgi.coremail.cn/">mod_fcgid</a>:</p>
<pre class="code">
LoadModule fcgid_module libexec/apache22/mod_fcgid.so
&lt;IfModule mod_fcgid.c&gt;
  AddHandler fcgid-script .fcgi 
  SocketPath /var/run/fcgidsock/
&lt;/IfModule&gt;
</pre>


<p>Сам  <a href="http://www.movabletype.org/">Movable Type</a> начиная с версии 4 поддерживает работу через  <a href="http://www.fastcgi.com/">FastCGI</a> из <a href="http://www.movabletype.org/documentation/administrator/maintenance/fastcgi.html">коробки</a>, поэтому для его настойки достаточно указать для каталога где находятся скрипты <span class="code">mt*.cgi</span> следующую директиву:
</p>
<pre class="code">AddHandler fcgid-script .cgi</pre>
<p>или</p>
<pre class="code">AddHandler fastcgi-script .cgi</pre>

<p>
После включения данной опции тестирование с помощью <a href="http://httpd.apache.org/docs/2.0/programs/ab.html">ApacheBench</a> показало на моей домашней машинке ускорение более чем на порядок&nbsp;&mdash; с 0.75 запросов в секунду до 15. Но особого ускорения при работе с админкой не прозошло. Налицо классический случай &laquo;premature optimization&raquo;, которая &laquo;root of all evil&raquo; &copy; <a href="http://en.wikiquote.org/wiki/C._A._R._Hoare">C.A.R. Hoare</a>.
</p>

<p>Поэтому пришлось все-таки более внимательно посмотреть в <a href="http://developer.yahoo.com/yslow/">YSlow</a> и последовательно применить предлагаемые <a href="http://developer.yahoo.com/performance/rules.html">рекомендации</a>. Основная проблема оказалась в большом количестве объектов на странице и как следствие, большом количестве HTTP запросов (около 50 в данном случае), причем большинство запросов были <span class="code">If-Modified-Since</span> на файлы из <span class="code">mt-static</span>, в осовном изображения. Лечиться это добавлением заголовков <span class="code">Expires</span> для каталога <span class="code">mt-static</span> с помощью <a href="http://httpd.apache.org/docs/2.0/mod/mod_expires.html">mod_expires</a>:
</p>
<pre class="code">
ExpiresActive On
ExpiresDefault "access plus 1 month"
</pre>

<p>
С включением данной опции броузер перестал обращаться к каждой картинке при каждой загрузке страницы, что сократило количество запросов с полусотни до ровно одного&nbsp;&mdash; обращение собственно к <span class="code">mt.cgi</span>. Общий объем передаваемых данных также сократился с 100Kb (уже с учетом включеной компрессии для <span class="code">text/*</span>) до 10Kb. Общее же время загрузки страницы сократилось с 15 секунд до 5-6 секунд по таймеру <a href="http://developer.yahoo.com/yslow/">YSlow</a> и до 3-4 секунд по секундомеру с отключеным <a href="http://www.getfirebug.com/">FireBug</a>'ом и <a href="http://developer.yahoo.com/yslow/">YSlow</a>. 
</p>

<p>Достигнутый результат меня вполне устроит и тему оптимизации можно отложить. Дальше нужно будет заниматься уже переводом на русский и переносом на боевой сервер в тесный <span class="code">jail</span>. А пока в процессе первых дней эксплуатации выяснилось пара нюансов. Во-первых, не все скрипты <a href="http://www.movabletype.org/">MT</a> работают в режиме <a href="http://www.fastcgi.com/">FastCGI</a>, поэтому лучше использовать следующие настройки подсмотренные в <a href="http://www.movabletype.org/documentation/administrator/maintenance/fastcgi.html">документации Movable Type</a>:
</p>
<pre class="code">
&lt;FilesMatch "^mt(?:-(?:comments|search|tb|view))?\.cgi$"&gt;
     AddHandler fcgid-script .cgi
&lt;/FilesMatch&gt;
</pre>
<p>
Во-вторых, процесс <span class="code">mt.cgi</span> со временем может разрастаться до достаточно неприличиных размеров (более 100 Mb) и поэтому лучше настроить <a href="http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html">mod_fastcgi</a> так, чтобы он переодические его перезапускал:
</p>
<pre class="code">
   FastCgiConfig -maxProcesses 10 -killInterval 3600
</pre>
<p>и для <a href="http://fastcgi.coremail.cn/">mod_fcgid</a></p>
<pre class="code">
   ProcessLifeTime 3600
   MaxProcessCount 10
   MaxRequestsPerProcess 500
</pre>
<p>
И в третьих, при работе через <a href="http://www.fastcgi.com/">FastCGI</a> возникают неудобства с изменением кода MT на ходу&nbsp;&mdash; необходимо постоянно перезапускать <span class="code">mt.cgi</span> чтобы он перечитал измененные модули.
</p>

<p>
<strong><em><a href="http://alexd.vinf.ru/sysadmin/russifikacija-movable-type-41.html">Продолжение следует</a> ...</em></strong>
</p>]]>
        
    </content>
</entry>

<entry>
    <title>I just finished installing Movable Type 4!</title>
    <link rel="alternate" type="text/html" href="http://alexd.vinf.ru/i-just-finished-installing-mov.html" />
    <id>tag:localhost,2008:/alexd/blog//1.1</id>

    <published>2008-03-18T19:09:27Z</published>
    <updated>2008-03-22T12:11:43Z</updated>

    <summary>Так совпало, что у меня после сдачи очередного проекта появилось немного свободного времени, а у моей SO на днях возникло острое желание завести себе блог. Поэтому решил освежить свое давнее знакомство с блог-движком Movable Type, а заодно и свой заброшенный...</summary>
    <author>
        <name>Алексей Демидов</name>
        <uri>http://alexd.vinf.ru/</uri>
    </author>
    
    <category term="movabletype" label="MovableType" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ru" xml:base="http://alexd.vinf.ru/">
        <![CDATA[<p>Так совпало, что у меня после сдачи очередного проекта появилось немного свободного времени, а у моей <a href="http://en.wikipedia.org/wiki/Significant_other">SO</a> на днях возникло острое желание  завести себе блог.  Поэтому решил освежить свое давнее знакомство с блог-движком <a href="http://www.movabletype.org/">Movable Type</a>, а заодно и свой <a href="http://alexd.vinf.ru/">заброшенный блог</a> оживить. 
</p>
]]>
        
    </content>
</entry>

</feed>

