<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="http://www.w3.org/2000/08/w3c-synd/style.css" type="text/css"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Блог разработки S2</title>
		<link>http://s2cms.ru/blog/</link>
		<description>Блог разработки S2. Последние заметки.</description>
		<generator>S2 1.0dev</generator>
		<ttl>10</ttl>
		<atom:link href="http://s2cms.ru/blog/rss.xml" rel="self" type="application/rss+xml" />
		<lastBuildDate>Sat, 12 Jun 2010 10:55:00 GMT</lastBuildDate>
		<item>
			<title>Многопользовательский режим в S2</title>
			<link>http://s2cms.ru/blog/2010/06/12/Multiuser_S2</link>
			<description>&lt;p&gt;Многопользовательский режим&amp;nbsp;— это одна из тех &lt;a href=&quot;http://s2cms.ru/info/roadmap&quot;&gt;вещей&lt;/a&gt;, которые я хочу сделать перед окончательным выпуском S2. Формально многопользовательский режим имеется&amp;nbsp;— администратор сайта, работающего на S2, может сделать несколько учетных записей для авторов и&amp;nbsp;модераторов. Однако сейчас доступ пользователей ограничивается недостаточно. Например, если пользователю разрешить изменение страниц, он сможет редактировать страницы, созданные другими авторами, что не всегда допустимо. Также в&amp;nbsp;текущей реализации нет возможности показать посетителям сайта, что над ним работает не один автор, а&amp;nbsp;целый коллектив.&lt;/p&gt;

&lt;p&gt;Как в&amp;nbsp;идеале должен работать многопользовательский режим? В&amp;nbsp;нем можно выделить три составляющих:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;регистрация&lt;/em&gt;&amp;nbsp;— иногда администратор не должен добавлять вручную каждого пользователя;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;профиль&lt;/em&gt;&amp;nbsp;— отображение на сайте информации о&amp;nbsp;зарегистрированном пользователе;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;управление правами пользователей&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Последний пункт подразумевает привязку каждой страницы к&amp;nbsp;ее автору, чтобы страницу, созданную одним автором, не могли изменять другие авторы, а&amp;nbsp;только редакторы или модераторы с&amp;nbsp;расширенными правами. Отображение имени автора рядом с&amp;nbsp;датой создания материала должно включаться в&amp;nbsp;параметрах или через шаблоны. Если в&amp;nbsp;параметрах включены профили, то с&amp;nbsp;имени автора должна стоять ссылка на его профиль.&lt;/p&gt;

&lt;p&gt;После введения регистрации в&amp;nbsp;принципе можно привязывать к&amp;nbsp;учетным записям и&amp;nbsp;комментарии, что позволит разрешать комментарии только зарегистрированным пользователям. Однако такую привязку я делать не планирую.&lt;/p&gt;

&lt;p&gt;Есть несколько путей реализации этих идей. Первый путь&amp;nbsp;— всё запрограммировать самому. Второй&amp;nbsp;— не изобретать велосипед, а&amp;nbsp;сделать расширение для интеграции с&amp;nbsp;форумным движком &lt;a href=&quot;http://punbb.informer.com/&quot;&gt;PunBB&lt;/a&gt;. Он обладает мощной и&amp;nbsp;гибкой системой управления правами пользователей, группами, банами и&amp;nbsp;т.&amp;nbsp;д. В&amp;nbsp;PunBB есть регистрация и&amp;nbsp;профили. После установки подобного расширения текущие учетные записи S2 будут заменяться на форумные учетные записи, при этом сам форум станет приятным дополнением :)&lt;/p&gt;

&lt;p&gt;Я склоняюсь ко второму варианту&amp;nbsp;— интеграции с&amp;nbsp;PunBB, но хотел&amp;nbsp;бы услышать и&amp;nbsp;мнения заинтересованных лиц.&lt;/p&gt;

&lt;p&gt;А&amp;nbsp;еще я надеюсь, что в&amp;nbsp;ближайшее время разработка S2 пойдет активнее, и&amp;nbsp;через несколько месяцев появится бета-версия со всей &lt;a href=&quot;http://s2cms.ru/info/roadmap&quot;&gt;запланированной функциональностью&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Ключевые слова: &lt;a href=&quot;http://s2cms.ru/blog/tags/features/&quot;&gt;функциональность&lt;/a&gt;&lt;/p&gt;</description>
			<author>(roman@written.ru) Роман Парпалак</author>
			<guid isPermaLink="true">http://s2cms.ru/blog/2010/06/12/Multiuser_S2</guid>
			<pubDate>Sat, 12 Jun 2010 10:55:00 GMT</pubDate>
			<comments>http://s2cms.ru/blog/2010/06/12/Multiuser_S2#comment</comments>
		</item>
		<item>
			<title>Поиск</title>
			<link>http://s2cms.ru/blog/2010/02/11/search</link>
			<description>&lt;p&gt;Трудно спорить с&amp;nbsp;тем, что поиск на сайтах&amp;nbsp;— вещь нужная и&amp;nbsp;полезная. Однако сейчас в&amp;nbsp;S2 поиска нет. Я собираюсь рассказать, почему.&lt;/p&gt;

&lt;p&gt;S2&amp;nbsp;— простой и&amp;nbsp;быстрый движок, и&amp;nbsp;хотелось&amp;nbsp;бы так&amp;nbsp;же просто и&amp;nbsp;быстро к&amp;nbsp;нему прикрутить поиск. Проблема в&amp;nbsp;том, что хороший поиск просто и&amp;nbsp;быстро сделать нельзя.&lt;/p&gt;

&lt;p&gt;Сначала определимся с&amp;nbsp;тем, что такое хороший поиск. Поиск хороший тогда, когда результаты упорядочены по релевантности (степени соответствия запросу). Под релевантностью каждый может понимать что-нибудь свое. Для определенности мы будем считать, что при сортировке должны учитываться следующие вещи:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;русская морфология (учет изменений слов по падежам, числам, временам, лицам);&lt;/li&gt;
&lt;li&gt;выделение курсивом или жирным шрифтом (если слово выделено на какой-то странице, эта страница, скорее всего, больше соответствует запросу);&lt;/li&gt;
&lt;li&gt;частотность (сколько раз слово встречается на данной странице);&lt;/li&gt;
&lt;li&gt;степень уникальности (если слово из запроса редко встречается на остальных страницах, данную страницу нужно поместить в&amp;nbsp;результатах поиска выше).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Из&amp;nbsp;самых общих соображений поиск можно сделать следующими способами:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;LIKE или strpos.&lt;/li&gt;
&lt;li&gt;Fulltext-индексы базы данных.&lt;/li&gt;
&lt;li&gt;Создание собственных поисковых индексов.&lt;/li&gt;
&lt;li&gt;Сторонние поисковые движки.&lt;/li&gt;
&lt;li&gt;Сторонние сервисы.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Первым способом практически невозможно учитывать выделенные нами четыре составляющих релевантности. Второй способ хорош, но, к&amp;nbsp;сожалению, только для английского языка. Fulltext-индексы в&amp;nbsp;MySQL не учитывают русскую морфологию.&lt;/p&gt;

&lt;p&gt;Третьим способом, при помощи своего индекса, можно сделать практически всё, что угодно. Но&amp;nbsp;этот способ наиболее сложен. Здесь недостаточно просто запрограммировать функциональность. Нужно продумать и&amp;nbsp;учесть масштабируемость решения как по количеству страниц, так и&amp;nbsp;по посещаемости. В&amp;nbsp;общем, этот случай&amp;nbsp;— один из тех, когда 20% функциональности требуют 80% затрат времени :)&lt;/p&gt;

&lt;p&gt;Здесь легко встать на путь изобретения велосипедов. Ведь уже есть поисковые движки, &lt;a href=&quot;http://www.sphinxsearch.com/&quot;&gt;бесплатные&lt;/a&gt; и&amp;nbsp;&lt;a href=&quot;http://company.yandex.ru/technology/server/&quot;&gt;не очень&lt;/a&gt;, которые умеют быстро индексировать поля баз данных и&amp;nbsp;быстро искать по ним (четвертый способ). К&amp;nbsp;сожалению, во многих случаях на серверы хостинга нельзя устанавливать дополнительное программное обеспечение. Да и&amp;nbsp;делать на S2 сайты, которым требуются подобные поисковые движки, скорее всего никто не будет.&lt;/p&gt;

&lt;p&gt;К&amp;nbsp;счастью, есть еще один способ, в&amp;nbsp;котором минимальные затраты приносят ощутимый результат. На&amp;nbsp;сайте достаточно расположить форму поиска Гугла, примерно так, как это сделано в&amp;nbsp;&lt;a href=&quot;http://httpd.apache.org/docs/2.2/&quot;&gt;документации Apache&lt;/a&gt;. Действительно, как&amp;nbsp;бы мы ни старались, вряд&amp;nbsp;ли у&amp;nbsp;нас получится поиск лучше, чем у&amp;nbsp;Яндекса или Гугла. Обычно я пользуюсь Гуглом, когда ищу что-либо на конкретных сайтах, даже если на них есть собственный поиск.&lt;/p&gt;

&lt;p&gt;Единственный недостаток пятого способа, который можно придумать,&amp;nbsp;— на странице результатов поиска будет чужая реклама. Но&amp;nbsp;на фоне минимальных затрат и&amp;nbsp;приличного качества поиска этот недостаток вполне можно потерпеть.&lt;/p&gt;

&lt;p&gt;Я не планирую включать поиск в&amp;nbsp;ядро S2. Поиск можно будет сделать отдельным &lt;a href=&quot;http://s2cms.ru/extension/&quot;&gt;расширением&lt;/a&gt;, но в&amp;nbsp;силу описанных выше причин эта задача &lt;a href=&quot;http://s2cms.ru/info/roadmap&quot;&gt;далеко не самая приоритетная&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Ключевые слова: &lt;a href=&quot;http://s2cms.ru/blog/tags/features/&quot;&gt;функциональность&lt;/a&gt;&lt;/p&gt;</description>
			<author>(roman@written.ru) Роман Парпалак</author>
			<guid isPermaLink="true">http://s2cms.ru/blog/2010/02/11/search</guid>
			<pubDate>Thu, 11 Feb 2010 13:11:00 GMT</pubDate>
			<comments>http://s2cms.ru/blog/2010/02/11/search#comment</comments>
		</item>
		<item>
			<title>S2 1.0 alpha</title>
			<link>http://s2cms.ru/blog/2010/02/02/S2_alpha_release</link>
			<description>&lt;p&gt;Я рад сообщить о&amp;nbsp;выпуске первой публичной версии движка сайтов S2. Однако сам движок не нов&amp;nbsp;— на нем уже несколько лет работает мой сайт &lt;a href=&quot;http://written.ru/&quot;&gt;written.ru&lt;/a&gt;. Я &lt;a href=&quot;http://written.ru/blog/keywords/s2/&quot;&gt;долго раздумывал&lt;/a&gt;, что&amp;nbsp;же мне делать с&amp;nbsp;движком дальше. Наконец я нашел немного свободного времени, привел код движка в&amp;nbsp;порядок и&amp;nbsp;выпустил под лицензией GPL.&lt;/p&gt;

&lt;p&gt;Текущая версия слишком сырая для готовых сайтов. До&amp;nbsp;выпуска стабильной версии я хочу &lt;a href=&quot;http://s2cms.ru/info/roadmap&quot;&gt;переделать и&amp;nbsp;добавить некоторые вещи&lt;/a&gt; и&amp;nbsp;исправить баги, если таковые найдутся. Определенных сроков выхода стабильной версии назвать не могу. Если найдутся заинтересованные, попробую сделать пораньше, если нет&amp;nbsp;— займусь другими делами :)&lt;/p&gt;

&lt;p&gt;Вопросы и&amp;nbsp;отзывы пока можно оставлять здесь, в&amp;nbsp;комментариях.&lt;/p&gt;&lt;p&gt;Ключевые слова: &lt;a href=&quot;http://s2cms.ru/blog/tags/releases/&quot;&gt;релизы&lt;/a&gt;&lt;/p&gt;</description>
			<author>(roman@written.ru) Роман Парпалак</author>
			<guid isPermaLink="true">http://s2cms.ru/blog/2010/02/02/S2_alpha_release</guid>
			<pubDate>Tue, 02 Feb 2010 14:00:00 GMT</pubDate>
			<comments>http://s2cms.ru/blog/2010/02/02/S2_alpha_release#comment</comments>
		</item>
	</channel>
</rss>
