<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>   // [code]</title>
<link>http://www.miheev.info/rus/code/</link>
<description>   // [code]</description>
<ttl>60</ttl>
<lastBuildDate>Sat, 29 Nov 2008 21:44:05 +0300</lastBuildDate>
<generator>InTerra Blog Machine</generator>
<item><title>Переехал, или Interra - УГ</title>
<link>http://www.miheev.info/rus/2008/11/29/interra-is-lame.html</link>
<description>&lt;p&gt;Вместе с &lt;a href=\&quot;http://www.rock.ru/\&quot;&gt;rock.ru&lt;/a&gt; решил перенести на новый сервер и свой блог. Жаль только, что перенос слегка затянулся, и пока я был занят, закончился старый хостинг. Но теперь я снова с вами. Точнее, снова пишу сюда своё словоблудие.&lt;/p&gt;

&lt;p&gt;Кроме самого переезда я решил перевести блог на юникод, всё-таки год уже 2008, сколько можно быть привязанным к жуткой windows-1251? Так вот: Interra - УГ. В куче файлов жёстко прописана кодировка, а заставить работать \&quot;встроенный\&quot; транслит и парсер wiki так и не удалось. Там всё тоже завязано на конкретную кодировку. И не развязывается.&lt;/p&gt;

&lt;p&gt;Придётся ускорить написание заброшенного было собственного движка для блога. С блекджеком и юникодом и не прибитого гвоздями к cp1251, благо скоро у меня будет чуть больше свободного времени, потому что мы наконец-то нашли человека, которому сможем отдать часть работы по техподдержке. Уже на второй день работы он здорово меня разгрузил, несмотря даже на то, что половину дня мы объясняли и показывали ему разные вещи. И вообще, кажется, толковый малый.&lt;/p&gt;</description>
<pubDate>Sat, 29 Nov 2008 21:31:00 +0300</pubDate>
</item>
<item><title>Новый блог</title>
<link>http://www.miheev.info/rus/2008/08/23/new-blog.html</link>
<description>&lt;a name=&quot;p-9602-1&quot;&gt;&lt;/a&gt;&lt;p class=&quot;auto&quot; id=&quot;p-9602-1&quot;&gt;Я&amp;nbsp;немного устал от&amp;nbsp;&lt;a href=&quot;http://dull.ru/interra&quot; class=&quot;myLink&quot; target=&quot;_blank&quot;&gt;Интерры&lt;/a&gt;. Она, конечно, по-своему хорошая и&amp;nbsp;быстрая, но... Этих &amp;laquo;но&amp;raquo; несколько:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt; Внутри не&amp;nbsp;то чтобы чёрт ногу сломит, но&amp;nbsp;разбираться в&amp;nbsp;этом коде, чтобы дописать что-то, тоскливо и&amp;nbsp;лениво.
&lt;/li&gt;&lt;li&gt; Красивость ссылок (ЧПУ, ага) организована кучей RewriteRule в&amp;nbsp;.htaccess, и&amp;nbsp;они во-первых, не&amp;nbsp;всегда работают как&amp;nbsp;надо, а&amp;nbsp;во-вторых, не&amp;nbsp;очень хорошо переносятся, например, на&amp;nbsp;nginx. Точнее, переноситься-то они&amp;nbsp;переносятся, но&amp;nbsp;то, что&amp;nbsp;не&amp;nbsp;работало с&amp;nbsp;Apache, работать от&amp;nbsp;этого всё равно не&amp;nbsp;начнёт, а&amp;nbsp;понять, почему так, становится ещё сложнее.
&lt;/li&gt;&lt;li&gt; Smarty. Ненавижу. Не&amp;nbsp;хочу ни&amp;nbsp;обсуждать это, ни&amp;nbsp;спорить об&amp;nbsp;этом. Не&amp;nbsp;переношу на&amp;nbsp;дух эту&amp;nbsp;штуку. Без&amp;nbsp;особых поводов. Аллергия, видимо.
&lt;/li&gt;&lt;li&gt; MySQL. Скоро &lt;a href=&quot;http://www.st-host.ru/&quot; class=&quot;myLink&quot; target=&quot;_blank&quot;&gt;мы&lt;/a&gt; поставим в&amp;nbsp;стойку очередной сервер, на&amp;nbsp;этот раз&amp;nbsp;для &lt;!--notypo--&gt;&lt;abbr title=&quot;Virtual Private Server&quot;&gt;VPS&lt;/abbr&gt;&lt;!--/notypo--&gt;, и&amp;nbsp;я туда перееду с&amp;nbsp;FirstVDS.ru, на&amp;nbsp;котором мне, конечно, нравится, но&amp;nbsp;всё-таки глючно. А&amp;nbsp;переехав, я&amp;nbsp;хочу избавиться от&amp;nbsp;MySQL на&amp;nbsp;своём сервере, и&amp;nbsp;держать там&amp;nbsp;только PostgreSQL. Из&amp;nbsp;принципиальных соображений и&amp;nbsp;опыта для. Конечно, добавить поддержку слонов в&amp;nbsp;Интерру несложно, но&amp;nbsp;с учётом предыдущих трёх пунктов, это&amp;nbsp;&amp;ndash; лишний повод.
&lt;/li&gt;&lt;li&gt; Не-ООП :-) Это&amp;nbsp;уже совсем религия, хотя я&amp;nbsp;никогда не&amp;nbsp;был и&amp;nbsp;не буду адептом ООП. Хочется просто.
&lt;/li&gt;&lt;li&gt; И&amp;nbsp;ещё я&amp;nbsp;уже довольно давно обещал на&amp;nbsp;одном форуме выложить небольшой туториал о&amp;nbsp;том, как&amp;nbsp;сделать простейший блог на&amp;nbsp;PHP за&amp;nbsp;один час. С&amp;nbsp;этого и&amp;nbsp;начну, а&amp;nbsp;потом буду доводить до&amp;nbsp;ума. Тут-то ООП&amp;nbsp;и&amp;nbsp;окажется очень кстати.&lt;/li&gt;&lt;/ul&gt;

&lt;a name=&quot;p-9602-2&quot;&gt;&lt;/a&gt;&lt;p class=&quot;auto&quot; id=&quot;p-9602-2&quot;&gt;
Итак. Это&amp;nbsp;всё будет на&amp;nbsp;PHP с&amp;nbsp;использованием фрейморка &lt;a href=&quot;http://kohanaphp.com/&quot; class=&quot;myLink&quot; target=&quot;_blank&quot;&gt;Kohana&lt;/a&gt;, как&amp;nbsp;разработке которого ваш&amp;nbsp;покорный слуга некогда приложил руку (кое-какие фиксы в&amp;nbsp;драйвере PostgreSQL) и&amp;nbsp;собирается прикладывать в&amp;nbsp;дальше (доводить до&amp;nbsp;ума всё тот&amp;nbsp;же&amp;nbsp;драйвер и&amp;nbsp;библиотеку Image). Данные будут храниться в&amp;nbsp;PostgreSQL, но&amp;nbsp;для доступа к&amp;nbsp;данным будет использоваться &lt;!--notypo--&gt;&lt;abbr title=&quot;Object-Relational Mapping&quot;&gt;ORM&lt;/abbr&gt;&lt;!--/notypo--&gt;, так&amp;nbsp;что можно будет без&amp;nbsp;изменения кода использовать хоть MySQL, хоть SQLite, хоть чёрта лысого.&lt;/p&gt;
&lt;a name=&quot;p-9602-3&quot;&gt;&lt;/a&gt;&lt;p class=&quot;auto&quot; id=&quot;p-9602-3&quot;&gt;
Ещё я&amp;nbsp;надеюсь, что&amp;nbsp;удастся вытащить из&amp;nbsp;Интерры, не&amp;nbsp;поломав, типографику и&amp;nbsp;парсер wiki-разметки. Очень уж&amp;nbsp;клёвые штуки.&lt;/p&gt;
&lt;a name=&quot;p-9602-4&quot;&gt;&lt;/a&gt;&lt;p class=&quot;auto&quot; id=&quot;p-9602-4&quot;&gt;
Исходники некоторых модулей будут доступны для&amp;nbsp;скачивания всем. Например, интерфейс к&amp;nbsp;&lt;a href=&quot;http://myphoto.nnov.ru/&quot; class=&quot;myLink&quot; target=&quot;_blank&quot;&gt;myphoto.nnov.ru&lt;/a&gt;: в&amp;nbsp;качестве демонстрации работы с&amp;nbsp;его API&amp;nbsp;(который тоже надо будет дописать и&amp;nbsp;&amp;laquo;прилизать&amp;raquo;).&lt;/p&gt;
&lt;a name=&quot;p-9602-5&quot;&gt;&lt;/a&gt;&lt;p class=&quot;auto&quot; id=&quot;p-9602-5&quot;&gt;
Пожелаем мне&amp;nbsp;удачи.&lt;/p&gt; </description>
<pubDate>Sat, 23 Aug 2008 07:07:00 +0400</pubDate>
</item>
<item><title>Небольшой хак для Wordpress 1.5.2, обрезающий ссылки на соседние посты до определённой длинны</title>
<link>http://www.miheev.info/rus/2006/03/27/wordpress152_shrink_links_hack.html</link>
<description>&lt;a name=&quot;p-1904-1&quot;&gt;&lt;/a&gt;&lt;p class=&quot;auto&quot; id=&quot;p-1904-1&quot;&gt;В&amp;nbsp;основном для&amp;nbsp;&lt;a href=&quot;http://pepsimist.ru&quot; class=&quot;myLink&quot; target=&quot;_blank&quot;&gt;Пепсимиста&lt;/a&gt; (извини за&amp;nbsp;такую задержку, но&amp;nbsp;в тот&amp;nbsp;вечер по&amp;nbsp;разным причинам руки не&amp;nbsp;дошли, а&amp;nbsp;потом, как&amp;nbsp;всегда, времени не&amp;nbsp;хватало), но&amp;nbsp;может и&amp;nbsp;ещё кого-нибудь заинтересует.&lt;/p&gt;
&lt;a name=&quot;p-1904-2&quot;&gt;&lt;/a&gt;&lt;p class=&quot;auto&quot; id=&quot;p-1904-2&quot;&gt;
Wordpress &amp;ndash; штука, конечно, хорошая, но&amp;nbsp;когда автор склонен к&amp;nbsp;сочинительству длинных заголовков, сслыки на&amp;nbsp;предыдущий и&amp;nbsp;последующий посты не&amp;nbsp;всегда выглядят красиво, разваливаясь на&amp;nbsp;несколько строк и&amp;nbsp;пытаясь сдвинуть друг друга вниз. Ограничивать ширину дивов и&amp;nbsp;получать две&amp;nbsp;многострочных ссылки рядом &amp;ndash; лучше, но&amp;nbsp;всё равно некрасиво как-то. &lt;/p&gt;
&lt;a name=&quot;p-1904-3&quot;&gt;&lt;/a&gt;&lt;p class=&quot;auto&quot; id=&quot;p-1904-3&quot;&gt;
Вот, что&amp;nbsp;сделал я&amp;nbsp;(сам Wordpress не&amp;nbsp;пользуюсь, но&amp;nbsp;поковырял его&amp;nbsp;немного в&amp;nbsp;поисках хорошего движка для&amp;nbsp;многопользовательского блога и&amp;nbsp;ради удовольствия).&lt;/p&gt;
&lt;a name=&quot;p-1904-4&quot;&gt;&lt;/a&gt;&lt;p class=&quot;auto&quot; id=&quot;p-1904-4&quot;&gt;
Функции &lt;strong&gt;previous_post_link(..)&lt;/strong&gt; и&amp;nbsp;&lt;strong&gt;next_post_link(..)&lt;/strong&gt; определены в&amp;nbsp;файле &lt;strong&gt;wp-includes/templates-functions-links.php&lt;/strong&gt;. Их&amp;nbsp;и будем править, но&amp;nbsp;чуть позже. Сначала добавим в&amp;nbsp;конец &lt;strong&gt;wp-includes/templates-functions-general.php&lt;/strong&gt; такую вот&amp;nbsp;функцию:

&lt;!--notypo--&gt;
&lt;PRE&gt;&lt;code&gt;
function limit_string($string, $len)
{
	if(strlen($string) &lt;= $len) return $string;
	
	$words = str_word_count($string, 2);

	$pos=0;
	foreach($words as $indx)
		if($indx&lt;$len) $pos=$indx;

	if($pos == 0) $string = substr($string, 0, $len);
	else $string = substr($string,0,$pos);
	
	return rtrim($string, '!@#$^&amp;*(;&quot;.,/?- ').&quot;...&quot;;
}
&lt;/code&gt;&lt;/PRE&gt;
&lt;!--/notypo--&gt;

Она&amp;nbsp;сначала пытается разбить строку на&amp;nbsp;слова, и&amp;nbsp;обрезать её до&amp;nbsp;&lt;strong&gt;$len&lt;/strong&gt; символов &amp;laquo;красиво&amp;raquo;, то&amp;nbsp;есть не&amp;nbsp;разрывая слова. Если не&amp;nbsp;получается (а такое будет только если заголовок &amp;ndash; одно длинное слово или&amp;nbsp;что-нибудь вроде &amp;laquo;очень-очень-...-очень длинный пост&amp;raquo;) &amp;ndash; режет как&amp;nbsp;получится.&lt;/p&gt;
&lt;a name=&quot;p-1904-5&quot;&gt;&lt;/a&gt;&lt;p class=&quot;auto&quot; id=&quot;p-1904-5&quot;&gt;
Остаётся только чуть-чуть подправить фукнции, о&amp;nbsp;которых я&amp;nbsp;упоминал выше. Находим в&amp;nbsp;каждой из&amp;nbsp;них строки &lt;!--notypo--&gt; &lt;PRE style=&quot;font-weight: bold;&quot;&gt;&lt;code&gt;$link = str_replace('%title', $title, $link); &lt;/code&gt;&lt;/PRE&gt; &lt;!--/notypo--&gt; и&amp;nbsp;исправляем их&amp;nbsp;на &lt;!--notypo--&gt; &lt;PRE style=&quot;font-weight: bold;&quot;&gt;&lt;code&gt;$link = limit_string(str_replace('%title', $title, $link), 30);&lt;/code&gt;&lt;/PRE&gt; &lt;!--/notypo--&gt; .&lt;/p&gt;
&lt;a name=&quot;p-1904-6&quot;&gt;&lt;/a&gt;&lt;p class=&quot;auto&quot; id=&quot;p-1904-6&quot;&gt;
Наслаждайтесь. Значение 30 я&amp;nbsp;подобрал эмпирически для&amp;nbsp;дефолтной инсталляции Wordpress.&lt;/p&gt;
&lt;a name=&quot;p-1904-7&quot;&gt;&lt;/a&gt;&lt;p class=&quot;auto&quot; id=&quot;p-1904-7&quot;&gt;
&lt;strong&gt;Update:&lt;/strong&gt; Убрал из&amp;nbsp;последней строки функции процент и&amp;nbsp;закрывающую скобку.&lt;/p&gt; </description>
<pubDate>Mon, 27 Mar 2006 05:40:00 +0400</pubDate>
</item>

</channel>
</rss>