<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Отблески… &#187; код</title>
	<atom:link href="http://chalker.ru/tag/%d0%ba%d0%be%d0%b4/feed/" rel="self" type="application/rss+xml" />
	<link>http://chalker.ru</link>
	<description>И шёпот трав весенних в лугах и на полянах…</description>
	<lastBuildDate>Mon, 09 Aug 2010 06:56:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Система модулей.</title>
		<link>http://chalker.ru/2009/08/15/%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d0%b0-%d0%bc%d0%be%d0%b4%d1%83%d0%bb%d0%b5%d0%b9/</link>
		<comments>http://chalker.ru/2009/08/15/%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d0%b0-%d0%bc%d0%be%d0%b4%d1%83%d0%bb%d0%b5%d0%b9/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 21:23:23 +0000</pubDate>
		<dc:creator>ChALkeR</dc:creator>
				<category><![CDATA[Неразобранное]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[floss]]></category>
		<category><![CDATA[gpl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[код]]></category>
		<category><![CDATA[файлы]]></category>

		<guid isPermaLink="false">http://chalker.ru/?p=3124</guid>
		<description><![CDATA[Выкладываю систему модулей — сердце моей CMS. Лицензия: GNU GPLv3+. Внутри один php файл, лицензия, и diff между версией в CMS и выкладываемой (разница только в заголовке, но для порядка выложил и его). Документации не будет, зато через некоторое время будет пара модулей, кому надо — там всё прозрачно. Скачать: module_system.tar.bz2. Версия от 2010-02-28.]]></description>
			<content:encoded><![CDATA[<p>Выкладываю систему модулей — сердце моей CMS.</p>
<p>Лицензия: <abbr title="GNU General Public License version 3.0 or later">GNU GPLv3+</abbr>.</p>
<p>Внутри один php файл, лицензия, и diff между версией в CMS и выкладываемой (разница только в заголовке, но для порядка выложил и его).</p>
<p>Документации не будет, зато через некоторое время будет пара модулей, кому надо — там всё прозрачно.</p>
<p>Скачать: <a href="http://chalker.ru/wp-content/uploads/2009/08/module_system.tar.bz2">module_system.tar.bz2</a>.</p>
<p><strong>Версия от 2010-02-28.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://chalker.ru/2009/08/15/%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d0%b0-%d0%bc%d0%be%d0%b4%d1%83%d0%bb%d0%b5%d0%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Движок темплейтов.</title>
		<link>http://chalker.ru/2009/08/03/%d0%b4%d0%b2%d0%b8%d0%b6%d0%be%d0%ba-%d1%82%d0%b5%d0%bc%d0%bf%d0%bb%d0%b5%d0%b9%d1%82%d0%be%d0%b2/</link>
		<comments>http://chalker.ru/2009/08/03/%d0%b4%d0%b2%d0%b8%d0%b6%d0%be%d0%ba-%d1%82%d0%b5%d0%bc%d0%bf%d0%bb%d0%b5%d0%b9%d1%82%d0%be%d0%b2/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 00:22:47 +0000</pubDate>
		<dc:creator>ChALkeR</dc:creator>
				<category><![CDATA[Неразобранное]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[floss]]></category>
		<category><![CDATA[lgpl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[код]]></category>
		<category><![CDATA[файлы]]></category>

		<guid isPermaLink="false">http://chalker.ru/?p=1346</guid>
		<description><![CDATA[Выкладываю движок темплейтов, использующийся в моей CMS. Его я писал сам, но под влиянием двжика темплейтов из phpbb. Лицензия: GNU LGPLv3+. Оригинал — 305 строк с шапкой и комментариями, выкладываемая версия — 326 строк, из-за того, что поддержку кэша пришлось вносить в саму библиотеку. Примеры синтаксиса: {L_NAME}: {USER_NAME} &#160; &#60;date /&#62; &#60;date time=&#34;{TIME}&#34;&#62;Y-m-d H:i&#60;/date&#62; [date [...]]]></description>
			<content:encoded><![CDATA[<p>Выкладываю движок темплейтов, использующийся в моей CMS.</p>
<p>Его я писал сам, но под влиянием двжика темплейтов из phpbb.</p>
<p>Лицензия: <abbr title="GNU Lesser General Public License version 3.0 or later">GNU LGPLv3+</abbr>.</p>
<p>Оригинал — 305 строк с шапкой и комментариями, выкладываемая версия — 326 строк, из-за того, что поддержку кэша пришлось вносить в саму библиотеку.</p>
<p>Примеры синтаксиса:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">{L_NAME}: {USER_NAME}
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;date</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span> <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;date</span> <span style="color: #000066;">time</span>=<span style="color: #ff0000;">&quot;{TIME}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Y-m-d H:i<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/date<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> [date time='{TIME}+60*60*24*7' /]
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ul<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;block</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;row&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;li</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;row[var expr='{row.BLOCK_NUM}%2' /]&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>{row.CONTENTS}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/block<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ul<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;if</span> <span style="color: #000066;">expr</span>=<span style="color: #ff0000;">&quot;{IS_ADMIN} || {IS_USER}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	текст
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;else</span> <span style="color: #000066;">expr</span>=<span style="color: #ff0000;">&quot;{IS_INDEX}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		другой текст
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/else<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;else<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		третий текст
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/else<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/if<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;switch</span> <span style="color: #000066;">expr</span>=<span style="color: #ff0000;">&quot;{ERROR_CODE}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;case</span> <span style="color: #000066;">expr</span>=<span style="color: #ff0000;">&quot;404&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Не найдено.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/case<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;case</span> <span style="color: #000066;">expr</span>=<span style="color: #ff0000;">&quot;403&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Запрещено.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/case<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;case</span> <span style="color: #000066;">expr</span>=<span style="color: #ff0000;">&quot;{MY_ERROR_CODE}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>{MY_ERROR}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/case<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;case<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Ошибка {ERROR_CODE}.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/case<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/switch<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>И так далее, подробности &#8211; внутри, документация &#8211; в архиве.</p>
<p><span id="more-1346"></span></p>
<p>Тут часть вещей срезана из-за зависимости от других модулей, но я выкладываю diff-файл с разницей от оригинала. Конкретно: </p>
<ul>
<li>даты в cms обрабатывались через специальную функцию, поддерживали чуть более гибкое представление (локальные имена месяцев в родительном падеже), зависели от выбранного языка, и по умолчанию использовали формат, настраиваемый в профиле пользователя/админке,</li>
<li>кэш работал через специальный модуль,</li>
<li>функции-обёртки для переменных вида L_NAME и ICON_SAVE использовали не название функции, а название модуля и название функции в нём.</li>
</ul>
<p>Ставится простой распаковкой, и, если понадобится &#8211; проставлением прав на папку кэша. Там внутри есть файл с примерами использования и комментариями. При открытии по http покажет примеры кода темплейтов, а как использовать со стороны php кода &#8211; можно посмотреть в файле „index.php“.</p>
<p>Да, .htaccess файлы я в архив класть не стал, но напоминаю, что к папке cache доступ по http хорошо бы запретить.</p>
<p>Скачать: <a href="http://chalker.ru/wp-content/uploads/2009/08/template.tar.bz2">template.tar.bz2</a>.</p>
<p><strong>Обновлено 2009-08-15.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://chalker.ru/2009/08/03/%d0%b4%d0%b2%d0%b8%d0%b6%d0%be%d0%ba-%d1%82%d0%b5%d0%bc%d0%bf%d0%bb%d0%b5%d0%b9%d1%82%d0%be%d0%b2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Плагины к CMS. Версия 0.7.</title>
		<link>http://chalker.ru/2009/07/19/%d0%bf%d0%bb%d0%b0%d0%b3%d0%b8%d0%bd%d1%8b-%d0%ba-cms-%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d1%8f-0-7/</link>
		<comments>http://chalker.ru/2009/07/19/%d0%bf%d0%bb%d0%b0%d0%b3%d0%b8%d0%bd%d1%8b-%d0%ba-cms-%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d1%8f-0-7/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 05:47:42 +0000</pubDate>
		<dc:creator>ChALkeR</dc:creator>
				<category><![CDATA[Неразобранное]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[floss]]></category>
		<category><![CDATA[код]]></category>
		<category><![CDATA[файлы]]></category>

		<guid isPermaLink="false">http://chalker.ru/2009/07/19/%d0%bf%d0%bb%d0%b0%d0%b3%d0%b8%d0%bd%d1%8b-%d0%ba-cms-%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d1%8f-0-7/</guid>
		<description><![CDATA[Выкладываю архив папки с отделяемыми (поддерживается установка на другой адрес) сторонними (автор &#8211; не я) плагинами к моей CMS, используемыми в текущей версии (0.7.0/0.7.1). Внутри &#8211; иконки (oxygen), яваскрипт (jQuery с набором плагинов), флэш плееры видео/аудио, флажки. Лицензии зависят от конкретного файла: public domain/lgpl/mit/mpl/аналогичные. Набор плагинов к CMS (версия 0.7). Размер &#8211; 8.7 МиБ в [...]]]></description>
			<content:encoded><![CDATA[<p>Выкладываю архив папки с отделяемыми (поддерживается установка на другой адрес) сторонними (автор &#8211; не я) плагинами к моей CMS, используемыми в текущей версии (0.7.0/0.7.1).</p>
<p>Внутри &#8211; иконки (oxygen), яваскрипт (jQuery с набором плагинов), флэш плееры видео/аудио, флажки.</p>
<p>Лицензии зависят от конкретного файла: public domain/lgpl/mit/mpl/аналогичные.</p>
<p><a href='http://chalker.ru/wp-content/uploads/2009/07/site_plugins_v0.7.tar.bz2'>Набор плагинов к CMS (версия 0.7)</a>.</p>
<p>Размер &#8211; 8.7 МиБ в архиве.<br />
Вся остальная CMS (включая неотделяемые плагины, т.е. флэш-загрузчик и висивиг) &#8211; 525 КиБ в архиве.</p>
]]></content:encoded>
			<wfw:commentRss>http://chalker.ru/2009/07/19/%d0%bf%d0%bb%d0%b0%d0%b3%d0%b8%d0%bd%d1%8b-%d0%ba-cms-%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d1%8f-0-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Скрипт миниатюр.</title>
		<link>http://chalker.ru/2009/07/17/%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d0%bc%d0%b8%d0%bd%d0%b8%d0%b0%d1%82%d1%8e%d1%80/</link>
		<comments>http://chalker.ru/2009/07/17/%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d0%bc%d0%b8%d0%bd%d0%b8%d0%b0%d1%82%d1%8e%d1%80/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 02:21:56 +0000</pubDate>
		<dc:creator>ChALkeR</dc:creator>
				<category><![CDATA[Неразобранное]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[floss]]></category>
		<category><![CDATA[lgpl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[изображения]]></category>
		<category><![CDATA[код]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[файлы]]></category>

		<guid isPermaLink="false">http://chalker.ru/?p=1204</guid>
		<description><![CDATA[Выкладываю отдельно простой php-скрипт для генерации миниатюр на лету с кэшем (и проверкой актуальности, естественно), используемый в моей CMS. Работает со всеми jpg/png/gif изображениями, лежащими внутри папки, в которую поставлен (рекурсивно). Если поставить в корень хоста &#8211; то со всеми изображениями на этом хосте. Лицензия: GNU LGPLv3+. Показываю примеры работы. Оригинальный файл: image.jpg (1251 на [...]]]></description>
			<content:encoded><![CDATA[<p>Выкладываю отдельно простой php-скрипт для генерации миниатюр на лету с кэшем (и проверкой актуальности, естественно), используемый в моей CMS.<br />
Работает со всеми  jpg/png/gif изображениями, лежащими внутри папки, в которую поставлен (рекурсивно). Если поставить в корень хоста &#8211; то со всеми изображениями на этом хосте.</p>
<p>Лицензия: <abbr title="GNU Lesser General Public License version 3.0 or later">GNU LGPLv3+</abbr>.</p>
<p>Показываю примеры работы.</p>
<p>Оригинальный файл:<br />
<a href="http://chalker.ru/wp-content/uploads/2009/07/image.jpg">image.jpg</a> (1251 на 2000 пикселей).</p>
<p>Уменьшенное изображение, вписанное в 300&#215;200:<br />
<img src="http://chalker.ru/wp-content/uploads/2009/07/image.(300x200).jpg" alt="" /><br />
<a href="http://chalker.ru/wp-content/uploads/2009/07/image.(300x200).jpg">image.(300&#215;200).jpg</a><br />
(125 на 200 пикселей).</p>
<p>Отношение сторон сохраняется.<br />
<a href="http://chalker.ru/wp-content/uploads/2009/07/image.jpg.(300x200)">image.jpg.(300&#215;200)</a> &#8211; то же самое, что и <a href="http://chalker.ru/wp-content/uploads/2009/07/image.(300x200).jpg">image.(300&#215;200).jpg</a>, для простоты автоматического использования.</p>
<p><a href="http://chalker.ru/wp-content/uploads/2009/07/image.(300).jpg">image.(300).jpg</a> &#8211; то же самое, что и <a href="http://chalker.ru/wp-content/uploads/2009/07/image.jpg.(300)">image.jpg.(300)</a>, <a href="http://chalker.ru/wp-content/uploads/2009/07/image.(300x300).jpg">image.(300&#215;300).jpg</a>, и <a href="http://chalker.ru/wp-content/uploads/2009/07/image.jpg.(300x300)">image.jpg.(300&#215;300)</a> (вписанное в квадрат сто стороной 300).</p>
<p><a href="http://chalker.ru/wp-content/uploads/2009/07/image.(400x500).jpg?nocache=1">image.(400&#215;500).jpg?nocache=1</a> &#8211; отключает кэш (мне это нужно было для генерации изображений непостоянных размеров, например, во всплывающем div предпросмотра на яваскрипте, когда размер картинки зависит от размера окна браузера пользователя &#8211; их сохранять просто незачем).</p>
<p>Маленькие изображения не увеличивает, зато скрипт гарантирует что получившееся изображение будет правильного отношения сторон и не больше  заданного размера.</p>
<p>Если файла изображения нет, показывает такую (меняется) картинку, вписанную в тот же размер:<br />
<img src="http://chalker.ru/invalid_image.(80x80).jpg" alt="" /><br />
<a href="http://chalker.ru/invalid_image.(80x80).jpg">invalid_image.(80&#215;80).jpg</a></p>
<p>Файлы и инструкции по установке &#8211; ниже.<br />
<span id="more-1204"></span><br />
Как ставить:</p>
<ol>
<li>Скачиваем архив, распаковываем, кладём получившуюся папку „thumbnail” в корень директории, в которой нужны миниатюры.</li>
<li>Ставим права на запись (желательно, минимальные, скорее всего — 700 или 770) на папку „thumbnail/cache”, если нужен кэш. Если не нужен — отключаем его в заголовке файла „thumbnail/index.php”.</li>
<li>Открываем „thumbnail/htaccess_parent.txt”, добавляем его содержимое в „.htaccess” файл той директории, куда положили „thumbnail (если его там нету &#8211; создаём с этим содержимым).</li>
<li>По желанию меняем путь к файлу, который показывается, если изображение не найдено (в заголовке файла „thumbnail/index.php”).</li>
<li>Проверяем на любом изображении.</li>
</ol>
<p>„.htaccess”:<br />
<code># Image thumbnails<br />
#<br />
# Add this to your htaccess file.<br />
#<br />
# Supported types: jpg, jpeg, png, gif.<br />
# Supported formats: path/file.png.(HxW), path/file.png.(M), path/file.(HxW).png, path/file.(M).png,<br />
# where H stands for max-height, W - for max-width, M - for both max-height and max-width<br />
#<br />
<IfModule mod_rewrite.c><br />
	RewriteEngine On</p>
<p>	RewriteRule ^(.+)\.(jpg|jpeg|png|gif|bmp|tiff)\.\(([0-9]+)x([0-9]+)\)$ thumbnail/index.php?img=$1.$2&#038;w=$3&#038;h=$4 [L,QSA,NC]<br />
	RewriteRule ^(.+)\.(jpg|jpeg|png|gif|bmp|tiff)\.\(([0-9]+)\)$ thumbnail/index.php?img=$1.$2&#038;w=$3&#038;h=$3 [L,QSA,NC]<br />
	RewriteRule ^(.+)\.\(([0-9]+)x([0-9]+)\)\.(jpg|jpeg|png|gif|bmp|tiff)$ thumbnail/index.php?img=$1.$4&#038;w=$2&#038;h=$3 [L,QSA,NC]<br />
	RewriteRule ^(.+)\.\(([0-9]+)\)\.(jpg|jpeg|png|gif|bmp|tiff)$ thumbnail/index.php?img=$1.$3&#038;w=$2&#038;h=$2 [L,QSA,NC]<br />
</IfModule><br />
# /Image thumbnails</code></p>
<p>„.htaccess” файл в самой директории „thumbnail” трогать не надо, он там затем, чтобы данные из кэша нельзя было получить напрямую по http.</p>
<p>Файлы кэша будут создаваться с правами родительской папки минус бит выполняемого файла.</p>
<p>Собственно архив: <a href='http://chalker.ru/wp-content/uploads/2009/07/thumbnail.tar.gz'>генератор миниатюр</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://chalker.ru/2009/07/17/%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d0%bc%d0%b8%d0%bd%d0%b8%d0%b0%d1%82%d1%8e%d1%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

