<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2624257041710967536</id><updated>2011-12-23T05:52:58.569-08:00</updated><title type='text'>Блог программиста</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://normalmasnemtanto.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://normalmasnemtanto.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>admin</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>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2624257041710967536.post-8287415271228756183</id><published>2011-10-03T09:26:00.000-07:00</published><updated>2011-10-03T09:26:33.222-07:00</updated><title type='text'>Problem with autogen syntax error near unexpected token 1.9.6 AM_PATH_CPPUNIT(1.9.6) - Install rtorrent</title><content type='html'>Так как из репов ставилась старая версия rtorrent'a, color-path не захотел натягиваться на него.&lt;br /&gt;Пришлось собирать из сорсов.&lt;br /&gt;Столкнулся с такой проблемой при запуске autogen.sh&lt;br /&gt;&lt;blockquote&gt;Problem with autogen syntax error near unexpected token 1.9.6 AM_PATH_CPPUNIT(1.9.6) &lt;/blockquote&gt;ее решило&lt;br /&gt;apt-get install libcppunit-dev&lt;br /&gt;Система Debian 6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2624257041710967536-8287415271228756183?l=normalmasnemtanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://normalmasnemtanto.blogspot.com/feeds/8287415271228756183/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/10/problem-with-autogen-syntax-error-near.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/8287415271228756183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/8287415271228756183'/><link rel='alternate' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/10/problem-with-autogen-syntax-error-near.html' title='Problem with autogen syntax error near unexpected token 1.9.6 AM_PATH_CPPUNIT(1.9.6) - Install rtorrent'/><author><name>admin</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><id>tag:blogger.com,1999:blog-2624257041710967536.post-8078828063629002013</id><published>2011-10-03T08:56:00.000-07:00</published><updated>2011-10-03T08:56:28.810-07:00</updated><title type='text'>Патч для раскрашивания rtorrent</title><content type='html'>Неплохой фак по патчингу популярного торрент клиента под никсы rtorrent&lt;br /&gt;&lt;br /&gt;http://binhng.wordpress.com/2010/04/16/rebuilding-rtorrent-with-color-patch-on-debian/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2624257041710967536-8078828063629002013?l=normalmasnemtanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://normalmasnemtanto.blogspot.com/feeds/8078828063629002013/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/10/rtorrent.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/8078828063629002013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/8078828063629002013'/><link rel='alternate' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/10/rtorrent.html' title='Патч для раскрашивания rtorrent'/><author><name>admin</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><id>tag:blogger.com,1999:blog-2624257041710967536.post-4824086551295354328</id><published>2011-07-13T22:39:00.000-07:00</published><updated>2011-07-13T22:39:10.093-07:00</updated><title type='text'>substr не работает с русским алфавитом</title><content type='html'>Вышла тут задачка вырезать из русской строки несколько символов. Столкнулся с проблемой что ни substr, ни mb_substr не корректно обрезали строку, возвращав пустой результат.&lt;br /&gt;Решение довольно быстро нашлось добавить 4 параметр, кодировку.&lt;br /&gt;&lt;blockquote&gt;$str = mb_substr($urlstr,0,5,'UTF-8');&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2624257041710967536-4824086551295354328?l=normalmasnemtanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://normalmasnemtanto.blogspot.com/feeds/4824086551295354328/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/07/substr.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/4824086551295354328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/4824086551295354328'/><link rel='alternate' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/07/substr.html' title='substr не работает с русским алфавитом'/><author><name>admin</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><id>tag:blogger.com,1999:blog-2624257041710967536.post-5545736622282910329</id><published>2011-07-10T11:49:00.000-07:00</published><updated>2011-07-10T11:49:20.519-07:00</updated><title type='text'>Не теряйте домены!</title><content type='html'>У ребят и брайн куба проэкспайрился домен. В их блоге &lt;strike&gt;есть&lt;/strike&gt; были довольно интресные наработки по CI 2 Template Library. Копипастю себе в блог, для истории.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;В части 2 цикла статей о подготовке фреймворка мы работаем над шаблонизатором. Определим наши задачи: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Один файл шаблона с header и footer областями, разный контент.&lt;/li&gt;&lt;li&gt;Возможность подгружать любые файлы в header и footer области шаблона, а так же выбирать разный шаблон.&lt;/li&gt;&lt;li&gt;Возможность скреплять методы add_header и add_footer в цепочки используя method chaining.&lt;/li&gt;&lt;li&gt;Предусмотреть поддержку AJAX.&lt;/li&gt;&lt;/ul&gt;&lt;span id="more-210"&gt;&lt;/span&gt; &lt;span class="five-o"&gt;&lt;/span&gt; &lt;div class="singlebuttonwrap"&gt;&lt;a class="button" href="http://proismy.name/res/articles/ci_start2/htdocs.zip" title="Скачать исходный код"&gt;Исходники&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;Зачем это нужно&lt;/h3&gt;Шаблонизатор позволяет избегать повторов в разметке: постоянно копировать &lt;i&gt;header&lt;/i&gt; и &lt;i&gt;footer&lt;/i&gt; области в каждом файле view. Конечно, всегда можно создать 2 файла &lt;em&gt;header_view.php&lt;/em&gt; и &lt;em&gt;footer_view.php&lt;/em&gt;,  и подгружать их отдельно. Однако, это требует повторов в коде и  определенной концентрации внимания на подобных мелочах. Метод, который я  предлагаю, намного удобнее. Идея этого шаблонизатора взята из дебрей  nettuts, за что им огромный респект.  &lt;h3&gt;Как это будет работать&lt;/h3&gt;В каждом контроллере мы будем использовать новую библиотеку (library),  которая будет осуществлять все операции по подгрузке шаблона. Вот как  будет выглядеть контроллер Home из первой части цикла статей:  &lt;pre class="brush: php"&gt;class Home extends Controller {&lt;br /&gt;&lt;br /&gt; function  __construct() {&lt;br /&gt;  parent::__construct();&lt;br /&gt;&lt;br /&gt;  $this-&amp;gt;tpl-&amp;gt;set_title('My title');&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public function index() {&lt;br /&gt;  $data = array();&lt;br /&gt;  if ($this-&amp;gt;_isAjaxRequest()) {&lt;br /&gt;   $this-&amp;gt;load-&amp;gt;view('home_view_ajax', $data);&lt;br /&gt;  }&lt;br /&gt;  else {&lt;br /&gt;   $this-&amp;gt;tpl-&amp;gt;view('home_view', $data);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; private function _isAjaxRequest() {&lt;br /&gt;  return (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) &amp;amp;&amp;amp; strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;h3&gt;Создаем нашу библиотеку&lt;/h3&gt;Создадим &lt;em&gt;app/libraries/Tpl.php&lt;/em&gt;. Обратите внимание, первая буква  названия написана в верхнем регистре, это важно. Обращаться к нашей  библиотеке из CI мы будем тоже как «Tpl»  &lt;pre class="brush: php; highlight: [51]"&gt;&amp;lt;?php if (!defined('BASEPATH')) exit('No direct script access allowed');&lt;br /&gt;/*&lt;br /&gt; * Code by BrainCube.ru - Smart solutions for the Web.&lt;br /&gt; * @author Max Degterev &amp;lt;max@braincube.ru&amp;gt;&lt;br /&gt; * @copyright (c) 2010 BrainCube&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;class Tpl {&lt;br /&gt; private $CI;&lt;br /&gt;&lt;br /&gt; private $title_for_layout = NULL;&lt;br /&gt;&lt;br /&gt; private $title_separator = ' | ';&lt;br /&gt;&lt;br /&gt; private $header = array();&lt;br /&gt; private $footer = array();&lt;br /&gt;&lt;br /&gt; public function __construct() {&lt;br /&gt;  $this-&amp;gt;CI =&amp;amp; get_instance();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public function set_title($title) {&lt;br /&gt;  $this-&amp;gt;title_for_layout = $title;&lt;br /&gt;  return $this;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public function view($view_name, $params = array(), $layout = 'default') {&lt;br /&gt;  $rendered_view = $this-&amp;gt;CI-&amp;gt;load-&amp;gt;view($view_name, $params, TRUE);&lt;br /&gt;&lt;br /&gt;  if ($this-&amp;gt;title_for_layout !== NULL) {&lt;br /&gt;   $this-&amp;gt;title_for_layout = $this-&amp;gt;title_separator . $this-&amp;gt;title_for_layout;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  $this-&amp;gt;CI-&amp;gt;load-&amp;gt;view('layouts/' . $layout, array(&lt;br /&gt;   'content_for_layout' =&amp;gt; $rendered_view,&lt;br /&gt;   'title_for_layout' =&amp;gt; $this-&amp;gt;title_for_layout&lt;br /&gt;  ));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public function __call($name, $arguments) {&lt;br /&gt;  if (substr($name,0,4) == 'get_') {&lt;br /&gt;   $property = substr($name,4);&lt;br /&gt;&lt;br /&gt;   return $this-&amp;gt;_parseIncludes($property);&lt;br /&gt;  }&lt;br /&gt;  else if (substr($name,0,4) == 'add_') {&lt;br /&gt;   $property = substr($name,4);&lt;br /&gt;   &lt;br /&gt;   if (!isset($arguments[1])) {&lt;br /&gt;    $this-&amp;gt;CI-&amp;gt;load-&amp;gt;helper('url'); // Just in case!&lt;br /&gt;    $project = ((stripos(base_url(), 'http://') !== FALSE) ? base_url() : 'http://'.base_url());&lt;br /&gt;    array_push($this-&amp;gt;$property, $project . $arguments[0]);&lt;br /&gt;   }&lt;br /&gt;   else {&lt;br /&gt;    array_push($this-&amp;gt;$property, $arguments[0]);&lt;br /&gt;   }  &lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  return $this;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private function _parseIncludes($arrayname) {&lt;br /&gt;  $final_includes = '';&lt;br /&gt;&lt;br /&gt;  foreach ($this-&amp;gt;$arrayname as $include) {&lt;br /&gt;   if (preg_match('/js$/', $include)) {&lt;br /&gt;    $final_includes .= '&amp;lt;script src="' . $include . '"&amp;gt;&amp;lt;/script&amp;gt;';&lt;br /&gt;   }&lt;br /&gt;   elseif (preg_match('/css$/', $include)) {&lt;br /&gt;    $final_includes .= '&amp;lt;link rel="stylesheet" href="' . $include . '" /&amp;gt;';&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  return $final_includes;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Часть методов вполне понятна сама по себе. Дополнительные пояснения к коду: &lt;ul&gt;&lt;li&gt;9-16 строки инициализируют переменные. &lt;b&gt;$CI&lt;/b&gt; требуется для утилизации API CI, &lt;b&gt;$title_separator&lt;/b&gt; – разделитель для тега &lt;i&gt;&amp;lt;title&amp;gt;&lt;/i&gt; шаблона. Остальные переменные содержат необходимые для работы данные (сам заголовок, массив с файлами &lt;i&gt;header&lt;/i&gt; и &lt;i&gt;footer&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;18-20 получаем инстанцию CI для работы с API. Этот трюк необходим  при работе над любой библиотекой CI т.к. прямой доступ к API мы имеем  только в контроллерах.&lt;/li&gt;&lt;li&gt;40-60 магия PHP5. Чтобы не дублировать одинаковый код для методов &lt;i&gt;add_header&lt;/i&gt; и &lt;i&gt;add_footer&lt;/i&gt;, мы воспользуемся magic методом __call. &lt;b&gt;$name&lt;/b&gt; — вызываемый метод, &lt;b&gt;$arguments&lt;/b&gt;  — передаваемые ему аргументы. Сначала мы определяем требуемое действие.  В случае вызова «get_» метода, мы передаем действие сторонней функции,  которую мы рассмотрим чуть ниже. В случае «add_» метода мы добавляем в  соответствующий массив (&lt;b&gt;$header&lt;/b&gt; или &lt;b&gt;$footer&lt;/b&gt;) новый элемент. Далее мы возвращаем инстанцию класса &lt;b&gt;$this&lt;/b&gt;  для возможности создавать цепочки методов. Обратите внимание на строку  51, этого действия можно избежать. В случае, если вы вводили адрес сайта  в виде строки в переменной &lt;b&gt;$config['base_url']&lt;/b&gt;. Поскольку мы внесли изменения в конфигурацию, при работе с localhost будет ошибка с загрузкой &lt;i&gt;css&lt;/i&gt; и &lt;i&gt;javascript&lt;/i&gt;. Чтобы исправить это недоразумение требуется небольшая проверка.&lt;/li&gt;&lt;li&gt;62-75 метод, отвечающий за выдачу файлов в &lt;i&gt;header&lt;/i&gt; и &lt;i&gt;footer&lt;/i&gt; области шаблона. Определяем тип элемента и создаем соответствующие теги.&lt;/li&gt;&lt;li&gt;27-38 метод, загружающий шаблон. Его мы будем вызывать из  контроллеров. Ожидаемые параметры: файл view, массив данных и файл  шаблона. По умолчанию используется «default». Далее мы получаем view в  виде строки, готовим заголовок документа и вызываем шаблон. Данные из  view файла передаются в общем массиве с заголовком и загружаются в  шаблон.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Создаем шаблон по умолчанию&lt;/h3&gt;Для этой задачи возьмем за основу наработки замечательного ресурса &lt;a href="http://html5boilerplate.com/" rel="nofollow"&gt;HTML5 ★ Boilerplate&lt;/a&gt;.  Архив содержит множество интересных файлов и папок, и определенно  заслуживает отдельной статьи. Однако, нам требуются только папки &lt;em&gt;css&lt;/em&gt;, &lt;em&gt;js&lt;/em&gt;; и файлы &lt;em&gt;index.html&lt;/em&gt;, &lt;em&gt;apple-touch-icon.png&lt;/em&gt;, &lt;em&gt;favicon.ico&lt;/em&gt;. Переместим все, кроме &lt;em&gt;index.html&lt;/em&gt;, с которым нам придется поработать, в корень нашего CI. &lt;em&gt;apple-touch-icon.png&lt;/em&gt;, &lt;em&gt;favicon.ico&lt;/em&gt; это иконки нашего сайта для аппаратов Apple и обычных браузеров соответственно.&lt;br /&gt;&lt;figure&gt;    &lt;a href="http://proismy.name/res/articles/ci_start2/1.jpg"&gt;&lt;img alt="Содержимое архива" src="http://proismy.name/res/articles/ci_start2/1.jpg" /&gt;&lt;/a&gt;    &lt;figcaption&gt;Содержимое архива с HTML5 Boilerplate&lt;/figcaption&gt;   &lt;/figure&gt; Создадим &lt;em&gt;app/views/layouts/default.php&lt;/em&gt;:&lt;br /&gt;&lt;pre class="brush: php"&gt;&amp;lt;?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');&lt;br /&gt;/*&lt;br /&gt; * Code by BrainCube.ru - Smart solutions for the Web.&lt;br /&gt; * @author Max Degterev &amp;lt;max@braincube.ru&amp;gt;&lt;br /&gt; * @copyright (c) 2010 BrainCube&lt;br /&gt; */&lt;br /&gt; &lt;br /&gt;// Get year property for copyright and some other stuff.&lt;br /&gt;$year = (date("Y") == '2010') ? date("Y") : ('2010-'.date("Y"));&lt;br /&gt;$project = ((stripos(base_url(), 'http://') !== FALSE) ? base_url() : 'http://'.base_url());&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;!doctype html&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!--[if lt IE 7 ]&amp;gt; &amp;lt;html lang="en" class="no-js ie6"&amp;gt; &amp;lt;![endif]--&amp;gt;&lt;br /&gt;&amp;lt;!--[if IE 7 ]&amp;gt;    &amp;lt;html lang="en" class="no-js ie7"&amp;gt; &amp;lt;![endif]--&amp;gt;&lt;br /&gt;&amp;lt;!--[if IE 8 ]&amp;gt;    &amp;lt;html lang="en" class="no-js ie8"&amp;gt; &amp;lt;![endif]--&amp;gt;&lt;br /&gt;&amp;lt;!--[if IE 9 ]&amp;gt;    &amp;lt;html lang="en" class="no-js ie9"&amp;gt; &amp;lt;![endif]--&amp;gt;&lt;br /&gt;&amp;lt;!--[if (gt IE 9)|!(IE)]&amp;gt;&amp;lt;!--&amp;gt; &amp;lt;html lang="en" class="no-js"&amp;gt; &amp;lt;!--&amp;lt;![endif]--&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt; &amp;lt;meta charset="utf-8"&amp;gt;&lt;br /&gt; &amp;lt;meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;meta name="description" content="" /&amp;gt;&lt;br /&gt; &amp;lt;meta name="author" content="BrainCube.ru - Smart solutions for the Web" /&amp;gt;&lt;br /&gt; &amp;lt;meta name="copyright" content="" /&amp;gt;&lt;br /&gt; &amp;lt;title&amp;gt;Company&amp;lt;?php echo $title_for_layout ?&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;&lt;br /&gt; &amp;lt;link rel="shortcut icon" href="&amp;lt;?php echo $project;?&amp;gt;favicon.ico"&amp;gt;&lt;br /&gt; &amp;lt;link rel="apple-touch-icon" href="&amp;lt;?php echo $project;?&amp;gt;apple-touch-icon.png"&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;link rel="stylesheet" href="&amp;lt;?php echo $project;?&amp;gt;css/style.css?v=2"&amp;gt;&lt;br /&gt; &amp;lt;script src="&amp;lt;?php echo $project;?&amp;gt;js/libs/modernizr-1.6.min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt; &amp;lt;?php echo $this-&amp;gt;tpl-&amp;gt;get_header(); ?&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;header&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;/header&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;?php echo $content_for_layout; ?&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;footer&amp;gt;&lt;br /&gt;  &amp;lt;?php echo $year; ?&amp;gt; &amp;amp;copy; Company&lt;br /&gt; &amp;lt;/footer&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt; &amp;lt;script&amp;gt;!window.jQuery &amp;amp;&amp;amp; document.write(unescape('%3Cscript src="&amp;lt;?php echo $project;?&amp;gt;js/libs/jquery-1.4.4.js"%3E%3C/script%3E'))&amp;lt;/script&amp;gt;&lt;br /&gt; &amp;lt;script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt; &amp;lt;script&amp;gt;!window.jQuery &amp;amp;&amp;amp; document.write(unescape('%3Cscript src="&amp;lt;?php echo $project;?&amp;gt;js/libs/jquery-ui-1.8.6.custom.min.js"%3E%3C/script%3E'));&amp;lt;/script&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;script src="&amp;lt;?php echo $project;?&amp;gt;js/script.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt; &amp;lt;?php echo $this-&amp;gt;tpl-&amp;gt;get_footer(); ?&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;!--[if lt IE 7 ]&amp;gt;&lt;br /&gt;  &amp;lt;script src="&amp;lt;?php echo $project;?&amp;gt;js/libs/dd_belatedpng.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;  &amp;lt;script src="&amp;lt;?php echo $project;?&amp;gt;js/ie6fix.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt; &amp;lt;![endif]--&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;HTML прост как топор. Небольшие пояснения по части PHP: &lt;ul&gt;&lt;li&gt;9-10 получаем переменные &lt;b&gt;$year&lt;/b&gt; — требуется для футера, а также &lt;b&gt;$project&lt;/b&gt;, которая указывает абсолютный путь до файлов в зависимости от base_url().&lt;/li&gt;&lt;li&gt;26, 43 выводят передаваемые в шаблон заголовок и контент.&lt;/li&gt;&lt;li&gt;34, 55 отвечают за выгрузку дополнительных файлов в области хедера и футера.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Проверим в действии!&lt;/h3&gt;Для этого добавим нашу библиотеку в автозагрузку. В  &lt;em&gt;app/config/autoload.php&lt;/em&gt;:   &lt;pre class="brush: php"&gt;$autoload['libraries'] = array('Tpl');&lt;br /&gt;&lt;/pre&gt;Приведем наш контроллер &lt;em&gt;app/controllers/home.php&lt;/em&gt; к следующему виду: &lt;pre class="brush: php"&gt;&amp;lt;?php if (!defined('BASEPATH')) exit('No direct script access allowed');&lt;br /&gt;/*&lt;br /&gt; * Code by BrainCube.ru - Smart solutions for the Web.&lt;br /&gt; * @author Max Degterev &amp;lt;max@braincube.ru&amp;gt;&lt;br /&gt; * @copyright (c) 2010 BrainCube&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;class Home extends Controller {&lt;br /&gt;&lt;br /&gt; function  __construct() {&lt;br /&gt;  parent::__construct();&lt;br /&gt;  $this-&amp;gt;tpl&lt;br /&gt;    -&amp;gt;set_title('Welcome to our index page')&lt;br /&gt;    -&amp;gt;add_header('css/handheld.css')&lt;br /&gt;    -&amp;gt;add_footer('js/plugins.js');&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public function index() {&lt;br /&gt;  $data = array();&lt;br /&gt;  if ($this-&amp;gt;_isAjaxRequest()) {&lt;br /&gt;   $this-&amp;gt;load-&amp;gt;view('home_view_ajax', $data);&lt;br /&gt;  }&lt;br /&gt;  else {&lt;br /&gt;   $this-&amp;gt;tpl-&amp;gt;view('home_view', $data);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; private function _isAjaxRequest() {&lt;br /&gt;  return (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) &amp;amp;&amp;amp; strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Разберемся, что тут происходит: &lt;ul&gt;&lt;li&gt;12 строка мы загружаем в нашу библиотеку данные о заголовке и дополнительных файлах областей &lt;i&gt;header&lt;/i&gt; и &lt;i&gt;footer&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;17-22 мы определяем тип запроса. В случае, если это AJAX запрос, шаблонизатор нам не требуется, и мы просто загружаем файл view.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Заключение&lt;/h3&gt;&lt;figure&gt;    &lt;a href="http://proismy.name/res/articles/ci_start2/2.jpg"&gt;&lt;/a&gt; &lt;figcaption&gt;Можете смело похлопать себя по плечу. Эта штука работает!&lt;/figcaption&gt;   &lt;/figure&gt; После проделанной работы у нас на руках гибкий шаблонизатор с массой  возможностей. Однако, это еще не все. В части 3 мы рассмотрим как  изменить стандартную страницу ошибки 404 фреймворка.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2624257041710967536-5545736622282910329?l=normalmasnemtanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://normalmasnemtanto.blogspot.com/feeds/5545736622282910329/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/07/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/5545736622282910329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/5545736622282910329'/><link rel='alternate' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/07/blog-post.html' title='Не теряйте домены!'/><author><name>admin</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><id>tag:blogger.com,1999:blog-2624257041710967536.post-2489324927563631553</id><published>2011-06-23T00:58:00.000-07:00</published><updated>2011-06-23T00:58:23.706-07:00</updated><title type='text'>Установка Sphinx на Debian 6.</title><content type='html'>При установке поискового движка Сфинкса на дебиан столкнулся с такой проблемой&lt;br /&gt;ERROR: cannot find MySQL include files. Далее было предложение установить mysql-devel, но по такому названия пакета apt-get ничего не находил. Решение нашел очень быстро на оффициальном сайте поддержки сфинкса&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;aptitude install libmysql++-dev libmysqlclient15-dev checkinstall&lt;/pre&gt;После чего ./configure прошло без ошибок.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2624257041710967536-2489324927563631553?l=normalmasnemtanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://normalmasnemtanto.blogspot.com/feeds/2489324927563631553/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/06/sphinx-debian-6.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/2489324927563631553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/2489324927563631553'/><link rel='alternate' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/06/sphinx-debian-6.html' title='Установка Sphinx на Debian 6.'/><author><name>admin</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><id>tag:blogger.com,1999:blog-2624257041710967536.post-8627296480046759143</id><published>2011-06-23T00:29:00.000-07:00</published><updated>2011-06-23T00:29:02.888-07:00</updated><title type='text'>Stopping MySQL database server: mysqld failed!</title><content type='html'>При переносе базы через rsync на новый сервер, подменился пароль на пользователя debian-sys-maint со старого сервера.&lt;br /&gt;При попытке перезапустить сервер выдавалась ошибка&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;/etc/init.d/mysql&amp;nbsp;restart&amp;nbsp;&lt;br /&gt;Stopping&amp;nbsp;MySQL&amp;nbsp;database&amp;nbsp;server:&amp;nbsp;mysqld&amp;nbsp;&lt;span style="color: red;"&gt;failed&lt;/span&gt;!&amp;nbsp;&lt;br /&gt;Starting&amp;nbsp;MySQL&amp;nbsp;database&amp;nbsp;server:&amp;nbsp;mysqld&amp;nbsp;already&amp;nbsp;running. &lt;/span&gt;&lt;br /&gt;После не долгого гугления проблема была решена таким образом.&lt;br /&gt;Посмотрел текущий пароль пользователя&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;cat&amp;nbsp;/etc/mysql/debian.cnf&amp;nbsp;&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;password&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;Скопировал вывденный пароль подсоединился к mysql:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;mysql&amp;nbsp;-u&amp;nbsp;root&amp;nbsp;-p&amp;lt;pass&amp;gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;И изменил пароль для пользователя debian-sys-admin на скопированный пароль: &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;GRANT&lt;/span&gt;&amp;nbsp;&lt;span class="op"&gt;ALL&lt;/span&gt;&amp;nbsp;&lt;span class="keyword"&gt;PRIVILEGES&lt;/span&gt;&amp;nbsp;&lt;span class="keyword"&gt;ON&lt;/span&gt;&amp;nbsp;*.*&amp;nbsp;&lt;span class="keyword"&gt;TO&lt;/span&gt;&amp;nbsp;&lt;span class="string"&gt;'debian-sys-maint'&lt;/span&gt;@&lt;span class="string"&gt;'localhost'&lt;/span&gt;&amp;nbsp;IDENTIFIED&amp;nbsp;&lt;span class="keyword"&gt;BY&lt;/span&gt;&amp;nbsp;&lt;span class="string"&gt;'&amp;lt;password&amp;gt;'&lt;/span&gt;&amp;nbsp;&lt;span class="keyword"&gt;WITH&lt;/span&gt;&amp;nbsp;&lt;span class="keyword"&gt;GRANT&lt;/span&gt;&amp;nbsp;&lt;span class="keyword"&gt;OPTION&lt;/span&gt;; &lt;/span&gt;&lt;br /&gt;После проделанных манипуляций сервер начал перегружаться нормально.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2624257041710967536-8627296480046759143?l=normalmasnemtanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://normalmasnemtanto.blogspot.com/feeds/8627296480046759143/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/06/stopping-mysql-database-server-mysqld.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/8627296480046759143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/8627296480046759143'/><link rel='alternate' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/06/stopping-mysql-database-server-mysqld.html' title='Stopping MySQL database server: mysqld failed!'/><author><name>admin</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><id>tag:blogger.com,1999:blog-2624257041710967536.post-6906114757804311987</id><published>2011-06-20T10:57:00.000-07:00</published><updated>2011-06-20T10:57:50.560-07:00</updated><title type='text'>PHP5 в fastcgi - php отдавалось текстом в Debian 6</title><content type='html'>Пол часа бился с пытался почему на свежем серваке php скрипты отдавались с текстом. Оказалось дело все в dotdeb.com Оттуда тянулся не понятные сорсы пыхи для debian 6. Как следствие не смог нормально встать php 5.3&lt;br /&gt;&lt;code&gt;&lt;br /&gt;killall php-cgi&lt;br /&gt;aptitude purge -y `dpkg -l | sed -e 's/ /\n/g' | grep php5`&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Подчистил source list&lt;br /&gt;&lt;code&gt;&lt;br /&gt;vim /etc/apt/source.list&lt;br /&gt;&lt;/code&gt;Удалил оттуда строчку с dotdeb.com&lt;br /&gt;Добавил &lt;br /&gt;&lt;code&gt;&lt;br /&gt;deb http://debian.intergenia.de/debian/ squeeze main contrib non-free&lt;br /&gt;deb-src http://debian.intergenia.de/debian/ squeeze main contrib non-free&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Оттуда стянулся нормальный пыха и проблема была решена. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt; &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt; &lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2624257041710967536-6906114757804311987?l=normalmasnemtanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://normalmasnemtanto.blogspot.com/feeds/6906114757804311987/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/06/php5-fastcgi-php-debian-6.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/6906114757804311987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/6906114757804311987'/><link rel='alternate' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/06/php5-fastcgi-php-debian-6.html' title='PHP5 в fastcgi - php отдавалось текстом в Debian 6'/><author><name>admin</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><id>tag:blogger.com,1999:blog-2624257041710967536.post-5523935389048868171</id><published>2011-06-20T08:53:00.000-07:00</published><updated>2011-06-20T08:53:09.067-07:00</updated><title type='text'>Если тормозит авторизация по SSH через PUTTY</title><content type='html'>Подвисает после строчки login....&lt;br /&gt;То нужно добавить в конфиг ssh&lt;br /&gt;&lt;em&gt;/etc/ssh/sshd_config&lt;/em&gt;&lt;br /&gt;добавить строчку &lt;em&gt;UseDNS no&amp;nbsp;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2624257041710967536-5523935389048868171?l=normalmasnemtanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://normalmasnemtanto.blogspot.com/feeds/5523935389048868171/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/06/ssh-putty.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/5523935389048868171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/5523935389048868171'/><link rel='alternate' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/06/ssh-putty.html' title='Если тормозит авторизация по SSH через PUTTY'/><author><name>admin</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><id>tag:blogger.com,1999:blog-2624257041710967536.post-8954976507389030404</id><published>2011-06-18T08:25:00.000-07:00</published><updated>2011-06-20T02:35:13.746-07:00</updated><title type='text'>RSYNC: Бекап и перенос серверов</title><content type='html'>rsync - это замечательная unix программка для переноса/синхронизации файлов на разных машинах.&lt;br /&gt;Предположим что у нас есть два сервера:&lt;br /&gt;&lt;ol&gt;&lt;li&gt; SOU - сервер источник, с которого мы хотем скопировать информацию&lt;/li&gt;&lt;li&gt;BAC - сервер&amp;nbsp; на который мы хотим сделать бекап&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;Для начала нужно установить её на обоих машинах:&lt;br /&gt;&lt;code&gt;apt-get install rsync&lt;/code&gt;&lt;br /&gt;Мы хотим делать бекапы через крон. Для этого нам нужно создать публичный ключ, который мы скопируем на сервер BAC.&lt;br /&gt;Создаем публичный ключ на сервере SOU:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd /root/.ssh&lt;br /&gt;ssh-keygen -t rsa&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Ввыжно на предложение ввести пароль нужно просто надать ентер два раза.&lt;br /&gt;Полученный файл перенесем на сервер BAC, можно через обычный &lt;a href="http://ru.wikipedia.org/wiki/SCP"&gt;scp&lt;/a&gt;&lt;br /&gt;И уже скопированный файл добавляем на сервере BAC в authorized_keys&lt;br /&gt;&lt;code&gt;cat id_rsa.pub &amp;gt;&amp;gt; authorized_keys&lt;/code&gt;&lt;br /&gt;После чего на сервере SOU:&lt;br /&gt;&lt;code&gt;rsync -avz -e ssh /home/www/ root@YOU.IP.ADD.RES:/home/www&lt;/code&gt;&lt;br /&gt;Параметр -a заменяет большинство нужных и часто используемых параметров. v - визуализация того что делает rsync.&lt;br /&gt;Этот код можно поместить в крон, и настроить для ежедневного бЭкапа нужных вам файлов.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2624257041710967536-8954976507389030404?l=normalmasnemtanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://normalmasnemtanto.blogspot.com/feeds/8954976507389030404/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/06/rsync.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/8954976507389030404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/8954976507389030404'/><link rel='alternate' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/06/rsync.html' title='RSYNC: Бекап и перенос серверов'/><author><name>admin</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><id>tag:blogger.com,1999:blog-2624257041710967536.post-8042812777826494908</id><published>2011-06-09T11:35:00.000-07:00</published><updated>2011-06-09T11:35:26.379-07:00</updated><title type='text'>Заметки программиста</title><content type='html'>Добрый день дамы и господа. В этом уютном бложике я буду выкладывать свои заметки. Программирую на php, python. Если вдруг у Вас какие вопросы возникают, пишите в комментарии, не стесняйтесь!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2624257041710967536-8042812777826494908?l=normalmasnemtanto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://normalmasnemtanto.blogspot.com/feeds/8042812777826494908/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/06/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/8042812777826494908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2624257041710967536/posts/default/8042812777826494908'/><link rel='alternate' type='text/html' href='http://normalmasnemtanto.blogspot.com/2011/06/blog-post.html' title='Заметки программиста'/><author><name>admin</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>
