<?xml version="1.0" encoding="windows-1251"?>
<rss xmlns:solutecs="http://www.solutecs.com/" version="2.0">
<channel>
<title>Солютекс :: Блог разработчиков XS2</title>
<link>http://www.solutecs.com/blog/index/ru.htm</link>
<description>Солютекс :: Блог разработчиков XS2</description>
<copyright>©- </copyright>
<generator> v</generator>
<image>
<url>http://www.solutecs.com/_inc/_common/img/logo.gif</url>
<link>http://www.solutecs.com/</link>
<title>Солютекс</title>
</image>
<lastBuildDate>Tue, 25 Nov 2008 19:16:00 GMT</lastBuildDate>
<item>
<title><![CDATA[Поисковый запрос вместо урла]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.134.htm</link>
<description><![CDATA[<p>Недавно я вернулся из Японии. О страсти японцев постоянно все улучшать и искать нестандартные решения ходят легенды. До сих пор нахожусь под впечатлением от увиденного,&nbsp;но&nbsp;в этом&nbsp;блоге решил привести лишь один&nbsp;пример нестандартного решения, имеющего прямое отношение к вебу.</p><lj-cut><p>Все мы каждый день видим печатную рекламу в метро, на билбордах, в журналах и газетах. Естественно, сейчас все печатают в рекламных объявлениях URL сайта рекламируемой компании, продукта или услуги. Но мало кто задумывается у нас над тем, что адрес, увиденный на рекламе, достаточно сложно запомнить. Во-первых, потому, что он написан латиницей, во-вторых, потому, что в нем нет пробелов, в-третьих, в адресе часто используются английские слова.</p>
<p>Японцы придумали, как сделать так, чтобы тому, кто видит печатную рекламу, было просто запомнить, как найти соответствующий сайт в интернете. Когда я в первый раз увидел этот прием в рекламном объявлении в метро, я не придал значения увиденному - подумал, что это небольшая находка конкретного рекламодателя. Но затем, разглядывая рекламу во время долгих поездок между Токио и Татикавой, где я жил, я понял, что это стандартный прием, понятный каждому японцу. У него уже есть свой канон. Посмотрите на картинку ниже:</p>
<p style="text-align: center"><img alt="" width="400" height="223" src="http://www.solutecs.com/_data/blog/0000134/payment.jpg" /></p>
<p style="text-align: left">Здесь изображена строка поиска, в которую забито то слово, которое надо набрать в поисковике, чтобы искомый сайт выпал первым результатом. Во всех рекламах используется именно такой способ изображения этой информации: белый инпут и кнопочка &quot;<span style="font-size: medium">&#26908;&#32034;</span>&quot; (&quot;Поиск&quot;). Кстати, в этом объявлении, перед инпутом еще стоит призыв&nbsp;&quot;Попробуйте прежде всего поискать!&quot;. По-моему, идея блистательная!</p></lj-cut>]]></description>
<pubDate>Tue, 25 Nov 2008 19:16:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Контроль полномочий]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.126.htm</link>
<description><![CDATA[<p>В процессе некоторого обсуждения, разгорелся у нас спор. Про контроль полномочий.</p>
<p>Я лично считаю, что все эти несусветные роли и разграничения прав на доступ к тому или иному разделу сайта только усложняют работу с проектом. Во-первых, средний пользовательский проект содержит ну максимум 4-5 редакторов (мы сейчас не про одиного контент-менеджера), которые чаще всего находятся в одном помещении и все равно (как ни крути) свои пароли/логины передают, со словами &quot;Мань, поправь там за меня&quot;. Или, что еще хуже, случаются ситуации, когда требуется экстренно произвести какие-то действия, а того, кто может это сделать в данный момент нет. Ну и так далее.</p>
<p>Мне кажется, что лучший способ разграничения прав - персональные интерфейсы.</p>
<p>Во-первых это охраняет админку проектов от &quot;всесильных&quot; ручек пользователей, во-вторых их легко и удобно строить, в том числе и &quot;разукрашивать&quot;.</p>
<p>не секрет, что традиционные CMS начинают безумно гордиться иконостасом в интерфейсе, какими-то мега кнопками и пиктограммами.</p>
<p>Хотите себе? Да в чем проблема? Работая с XS2 можно запросто создать и специальный пользовательский = редакторский, модераторский, клубный (какой хотите) интерфейс одновременно с проектом. Кто вам мешает?</p>
<p>На что yaseek сказал, что во второй версии все будет мега-круто и по-другому. Пусть сам расскажет.</p>]]></description>
<pubDate>Tue, 21 Oct 2008 13:02:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Ненавижу копипасту]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.123.htm</link>
<description><![CDATA[<p>Я хочу <strike>нажраться</strike> стереть весь файл, когда замечаю в нем повторяющийся код. Я десятки раз видел, как двухминутная правка отнимает два часа. Это классическй закон подлости + бездумное копирование. Никогда не верьте словам &laquo;это никогда не будет изменяться&raquo; про какой-нибудь блок на сайте. <a href="http://www.imdb.com/title/tt0412142/quotes#qt0070194">Все врут</a>.</p><lj-cut><p>Откроем <a href="http://www.solutecs.com/library/chapter/show/ru.9.htm">главу</a> про повторное использование методов из &laquo;Руководства разработчика&raquo;. В последнем листинге мы получаем страницу новости с блоком ссылок &laquo;еще свежие новости&raquo;. Этот блок вставлен с помощью функции <a href="http://www.solutecs.com/online/function/show/ru.xs2Fetch.htm">xs2Fetch</a>.</p>
<p>Бывает, что нужно вклеить одинаковую часть несколько раз. Например, если дизайнер продублировал блок меню в шапке и в подвале страницы. Фетчим дважды? Не обязательно! Вспоминаем про параметр <strong>var</strong> и пишем вверху <strong>[div class=&quot;top-menu&quot;]{xs2Fetch var=&quot;menu&quot; met=&quot;menu&quot;}{$menu}[/div],</strong> а затем <strong>[div class=&quot;bot-menu&quot;]{$menu}[/div]</strong> внизу. Функция не выводит результат, а запоминает его в переменной, когда видит этот парметр. Но наверху страницы нам все-таки надо показать меню, поэтому сразу после фетча выводим эту переменную. Она никуда не исчезает до конца шаблона, поэтому выводим ее второй раз. Причем, с помощью классов, которые мы указали, можно задать для этих частей разное оформление.</p>
<p>Однако все сказанное не помогает против раскладки сайта. Именно с ней обычно связаны повторяющиеся куски. Типичный случай: в центре текст, сверху меню, сбоку анонсы других текстов, реклама и т.д. Дивами или таблицами эти части позиционируются на экране. Такая разметка образует шелуху, которую так и тянет просто скопировать. Она же не поменяется. Ага, а через неделю заказчик и говорит: &laquo;все хорошо, только ма-а-аленькая просьба &mdash; надо поменять вот это с этим, а то &mdash; убрать&raquo;.</p>
<p>И тут тебя осеняет простейшая идея &mdash; сделать один шаблон, который будет называться &laquo;раскладка&raquo;. Как его сделать? Сейчас расскажу. Но сначала&nbsp; небольшое отступление: я видел движки, где эта самая раскладка была единственным способом отобразить страницу. То есть вывести статью можно только привязав ее к раскладке, которая одна для всего сайта. И если на одной странице три колонки, а на другой &mdash; только две, то в шаблоне надо ставить if и не один. Потом сайт растет, шаблон набухает такими условиями, и разобраться в нем становится невозможно. Вывод: какие страницы сливать в один шаблон, а какие не стоит &mdash; надо решать мозгом.</p>
<p>Итак, загоняем шелуху в отдельный метод. Для этого нам понадобится конструкция <a href="http://smarty.net/manual/ru/language.builtin.functions.php#language.function.capture">capture</a> &mdash; стандартная штука шаблонизатора Smarty. Напишем примитивный шаблон и назовем его <span style="color: rgb(51, 153, 102);"><strong>layout:</strong></span></p>
<p style="margin-left: 40px;"><code>[html][body][head][title]<strong>{$title}</strong>[/title][head]<br />
[body][table][tbody][tr]<br />
[td]<b>{$left}</b>[/td][td]<b>{$right}</b>[/td]<br />
[/tr][/tbody][/table][/body][/html]</code></p>
<p>Это раскладка, которая ожидает три блока в переменных <strong>title, left и right</strong>. Осталось их сформировать и передать. Пишем в методе, который надо показать в такой раскладке:</p>
<p style="margin-left: 40px;"><code>{xs2GetNode var=&quot;n&quot; mod=&quot;news&quot; NodId=$_THE.PARAMS[0]}<br />
{<span style="color: rgb(255, 102, 0);"><strong>capture</strong></span> name=&quot;<span style="color: rgb(255, 102, 0);"><strong>r</strong></span>&quot;}<br />
&nbsp;&nbsp;&nbsp;&nbsp; [h1]{$n.NName}[/h1]<br />
&nbsp;&nbsp;&nbsp;&nbsp; [p]{$n.Text}[/p]<br />
{<span style="color: rgb(255, 102, 0);">/<strong>capture</strong></span>}<br />
<span style="color: rgb(128, 128, 128);">{* Справа покажем текст новости. *}</span><br />
{assign var=&quot;<span style="color: rgb(255, 102, 0);"><strong>right</strong></span>&quot; value=<span style="color: rgb(255, 102, 0);">$<strong>smarty.capture.r</strong></span>} <br />
<span style="color: rgb(128, 128, 128);">{* Назначаем заголовок окна. *}</span><br />
{assign var=&quot;title&quot; value=&quot;Новость `$n.NName`&quot;}<br />
<span style="color: rgb(128, 128, 128);">{* Слева покажем меню. *}</span> <br />
{xs2Fetch var=&quot;left&quot; met=&quot;menu&quot;}</code></p>
<p>И продолжаем в том же методе, чтобы передать блоки в шаблон-раскладку:</p>
<p style="margin-left: 40px;"><code> {xs2Fetch met=&quot;<span style="color: rgb(51, 153, 102);"><strong>layout</strong></span>&quot;}</code></p>
<p>И все. Впрочем, осталось еще важное замечание. Увеличение количества фетчей и вызовы capture, конечно же, утяжеляют сборку страницы. Поэтому строить так <em>все</em> сайты не рекомендую.</p></lj-cut>]]></description>
<pubDate>Tue, 30 Sep 2008 13:16:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Не прошло и ста лет!]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.112.htm</link>
<description><![CDATA[<p>Я и сама не могу поверить, что, наконец,<a href="http://www.solutecs.com/projects/site/info/ru.114.htm"> это сделала.</a> Хотя очень давно обещала. Но, естественно, чтобы перекреститься необходим гром - и участие в неких интересных, но пока еще будущих, проектах, заставило меня все-таки описать мега-детище нашей компании - систему электронного документооборота, созданную для Группы Компаний Бородино (92 место среди 200 самых крупных частных компаний России <a href="http://www.gkborodino.ru/holding/news/news_show/948.htm">по мнению Forbes</a>).</p>
<p>Сказать, что мы системой документооботорота гордимся - не сказать ничего. Это один из знаковых проектов, который позволяет доказать, что принципы XS2 Framework дают возможность реализовать любые требования заказчика высокого уровня, создать любые необходимые индивидуальные типы объектов, построить различные модели, синхронизированные с реальными бизнес-процессами, легко и быстро расширять, обновлять, надстраивать и развивать уже существующую систему.</p>
<p>ДМС (волей народа прозванный пользователями в честь нашей компании Солютексом) связывает города и предприятия, регламентирует работу всех подразделений, позволяет контролировать исполнение задач, решая проблемы управления огромным многопрофильным холдингом.</p>
<p>Чтобы было о чем подумать, вот всего лишь цифры статистики:</p>
<p>На момент подготовки данного документа (июнь 2008) в системе зарегистрировано более 250 тысяч документов и сопутствующих им объектов, 2,5 тысячи пользователей, 1,5 тысячи правил движений документов, более 300 протоколов совещаний и собраний и 6 тысяч сопутствующих им объектов. В системе насчитывается более 1,7 млн. связей между различными объектами. В среднем в документообороте ГК &laquo;Бородино&raquo; создается более 15 новых объектов в минуту.</p>
<p>Я думаю, для подобных систем это очень хорошие цифры. Скриншоты-картинки будут позже.</p>
<p>Да, и чтобы похвастаться добавлю, что самым главным в данном случае является процесс внедрения, а не разработки.. ведь более 97% казалось бы идеальных решений так и не удается внедрить. Нам - удалось!</p>]]></description>
<pubDate>Tue, 01 Jul 2008 21:32:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Случай доброкачественного паразитарного сопряжения (XS2+PHPB3)]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.106.htm</link>
<description><![CDATA[<p>Многие разработчики на XS2 сталкивались с необходимостью сопряжения XS2 с форумом PHPBB и многие демонстрировали при этом чудеса смекалки. PHPBB не имеет никакого API для манипулирования пользователями из внешних приложений, что сильно усложняет интеграцию с ним. В этом посте мы приводим пример кошерного сопряжения с PHPBB.</p><lj-cut><p>При интеграции с XS2 часто встает задача синхронизации пользователей модуля&nbsp;XS2 users. Иными словами при создании новых объектов user необходимо создавать иденитичные аккаунты в PHPBB, при их удалении нужно синхронно удалять пользователей форума. Кроме того, часто необходимо выводить информацию о количестве личных сообщений или ранге пользователя PHPBB в шаблонах XS2. Изрядно попотев на кодом PHPBB мы написали простенький&nbsp;процессор, содержащий функции, которые&nbsp;позволяет&nbsp;информацию о пользователе,&nbsp;добавлять и удалять&nbsp;пользователей PHPBB. Вот он:</p>
<p>&lt;?<br />
<!--p<br-->define('IN_PHPBB', true);<br />
<span style="color: #808080">//путь к форуму относительно корня сайта<br />
</span>$phpbb_root_path = 'forum/';<br />
$phpEx = 'php';<br />
include($phpbb_root_path . 'common.' . $phpEx);<br />
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);</p>
<p><span style="color: #808080">//Функция возвращает информацию о PHPBB-юзере<br />
</span>function login_user($username,$password){<br />
&nbsp;&nbsp;&nbsp; global $auth,$user,$phpEx;<br />
&nbsp;&nbsp;&nbsp; $auth-&gt;login($username,$password);&nbsp; <br />
&nbsp;&nbsp;&nbsp; return $user;<br />
}</p>
<p><span style="color: #808080">//это функция позволяет добавить нового пользователя<br />
//при этом мы передаем в нее урл аватары, уже хранящейся в объекте user - в этом случае картинка не будет хранится на сервере два раза<br />
</span>function add_user($username, $password, $email, $avatar_url, $group_id=2){<br />
&nbsp;&nbsp;&nbsp; $user_id = user_add(array(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'username'=&gt;$username,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'user_password'=&gt;phpbb_hash($password),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'group_id'=&gt;$group_id,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'user_type'=&gt;USER_NORMAL,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'user_email'=&gt;$email<br />
&nbsp;&nbsp;&nbsp; ));<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; if ($user_id &amp;&amp; $avatar_url){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $_REQUEST['remotelink']=$avatar_url;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ar = avatar_process_user($error, array('user_id'=&gt;$user_id));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(sizeof($error)&gt;0 || !$av){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; return $user_id;<br />
}</p>
<p><span style="color: #808080">//эта функция удаляет пользователя<br />
</span>function delete_user($user_id,$post_username=false){<br />
&nbsp;&nbsp;&nbsp; return user_delete('remove',$user_id,$post_username);<br />
}<br />
?&gt;</p></lj-cut>]]></description>
<pubDate>Thu, 15 May 2008 18:19:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[XS2 v1 + PHP5]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.103.htm</link>
<description><![CDATA[<p>Ну вот и настал тот день, когда PHP4 окончательно сдох и у нас в ООО &laquo;Солютекс&raquo; тоже! :) Десять минут назад было создано обновление (ядро 1.34.0) для XS2 Framework v1, позволяющее ему прекрасно работать как на традиционном PHP4 так и на &laquo;модерновом&raquo; PHP5.</p>
<p>Я знаю, что в последнее время очень многие российские хостинг-провайдеры начали переключать рычаг 4х/5х, без согласия своих клиентов (беспредел, ну да ладно...). Я знаю, что совместимости PHP 4x/5x от от нас просили многие наши агенты и ценные стратегические партнеры. Я это знаю, мы это знаем. Мы вас любим &mdash; ловите свежую &laquo;обновку&raquo;! :)</p>
<p>Спасибо за то, что вы с нами!</p>]]></description>
<pubDate>Mon, 28 Apr 2008 18:03:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Неожиданная древесная свинья]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.100.htm</link>
<description><![CDATA[<p>Мы начали внутреннее альфа-тестирование второй версии и практически сразу наткнулись на&nbsp;неожиданную проблему.</p><lj-cut><p>При тестировании <a href="http://developer.yahoo.com/yui/">YUI</a>-компонента <a href="http://developer.yahoo.com/yui/treeview/">TreeView</a> в Internet Explorer выявилась серьезные проблемы со скоростью рендеринга при более, чем 100 узлах в одной ветке. Скорость отрисовки узлов просто неприемлема. Пошурудив на форуме разработчкиков, мы обнаружили, что эта проблема <a href="http://tech.groups.yahoo.com/group/ydn-javascript/message/29233">уже заявлена</a>, но как-то не нашла пока достаточного отклика со стороны команды YUI.</p>
<p>Самое обидное, что компонент показывает отличные результаты по рендерингу в др. браузерах (FF и Opera), и только долбанный IE, сука, отрисовывает 100 узлов так, как будто он трехмерную модель их в памяти строит.</p>
<p>Надеемся, что в команде YUI все-таки решат эту проблему. Мне слабо верится, что наш&nbsp;<a href="http://www.solutecs.com/blog/index/ru.htm?tag=extremus">extremus</a>, который написал дерево для первой версии XS2&nbsp;и который как-то эту проблему обошел/решил, намного круче яхуйных индусов.</p>
<p>Пока индусы думают, мы решил&nbsp;срочно заменить их дерево&nbsp;деревом extremusа. Оно более чем функционально и прекрасно себя зарекомендовало. Единственный его недостаток, что оно не компонент YUI. Однако YUI сам виноват...</p></lj-cut>]]></description>
<pubDate>Fri, 18 Apr 2008 12:33:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Наследование в XS2]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.89.htm</link>
<description><![CDATA[<p>В традициях блогосферки - сначала оффтоп. <a href="http://www.solutecs.com/library/chapter/show/ru.htm">Руководство разработчика XS2</a> пополнилось за последние 2 недели двумя новыми главами: про AJAX и про поле lnk (специально для Peanut).</p>
<p>А теперь по теме.</p><lj-cut><p>Задумываясь о том, что бы можно было бы реализовать в следующих версиях XS2, мы вспомнили, что для полного соответствия ООП-парадигме в&nbsp;XS2 не хватает наследования. Когда мы работали над первой версией XS2, помнится, этот вопрос всплыл, но никто точно не знал, как могло бы выглядеть наследование в XS2. Теперь же, когда у нас есть как собственный опыт внедрения, так и опыт партнеров, концепция наследования полностью оформилась.</p>
<p>Представим обычный интернет-магазин с большим количеством разнородных товаров. Для каждого типа товара мы заведем свой тип узлов со своим набором полей. Однако, такие поля как &quot;Цена&quot;, &quot;Количество на складе&quot;, &quot;Производитель&quot; и т.п. совершенно точно будут присутствовать у всех товаров. Конечно, можно просто во всех типах завести соответствующие&nbsp;поля с одинаковыми названиями - обычно разработчики так и поступают. Но представьте, насколько благостнее было бы создать тип &quot;Товар&quot;, куда собрать все общие для всех товаров поля, а затем наследовать от него все типы товаров! При этом можно было бы, скажем, при выборках с помощью функций API указывать в параметре NType название самого абстрактного типа &quot;Товары&quot;, а при этом система выбирала бы узлы всех типов, которые от него пронаследованы. При указаниее ссылок lnk наследование бы тоже срабатывало. Если для какого-то поля указано, что оно является ссылочным и допускает указание узлов типа &quot;Товар&quot;, это означает, что в него можно указать любой из типов-наследников &quot;Товара&quot;. Более того, методы, как в нормальном ООП, тоже можно было бы наследовать. Можно написать метод &quot;show&quot;, который навесить на абстрактный &quot;Товар&quot;. Однако вызывать его можно будет на любом из типов-наследников. Конечно, метод в этом случае должен быть полиморфным.</p>
<p>Вот такая концепция.</p></lj-cut>]]></description>
<pubDate>Thu, 10 Apr 2008 20:27:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[День конторки]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.87.htm</link>
<description><![CDATA[<p>Вчера компании Солютекс исполнилось 3 года.</p><lj-cut><p>Насколько же отличался инет в 2005 от того, что он есть сейчас. Помню, что именно тогда завел себе аккаунт гмаила и мы вместе с Ясиком <span style='color:red;'>[ой, вырвалося]&rarr;</span>охуевали от&nbsp;аяксового интерфейса. Теперь это, кажется,&nbsp;один из самых древних представителей такого интерфейса.&nbsp;Про ютуб&nbsp;мы тогда еще не слышали, про &quot;веб 2.0&quot;, насколько помню, тоже. PHP5 еще еле-еле выползал из сырой стадии, Unicode считался&nbsp;в рунете&nbsp;бесполезной тратой времени. Джаваскрипт все еще многими считался скриптом... CMS читалось как &quot;КМС&quot;. &quot;Битрикс&quot; уже сосал. А конторка была стартапом.</p>
<p>Время - это круто.</p></lj-cut>]]></description>
<pubDate>Fri, 04 Apr 2008 19:51:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Мануал опубликован]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.84.htm</link>
<description><![CDATA[<p>Наконец-то выкладываем новый мануал для разработчиков.</p><lj-cut><p>Онлайн-версия&nbsp;доступна тут&nbsp;- <a href="http://www.solutecs.com/library/chapter/show/ru.htm">http://www.solutecs.com/library/chapter/show/ru.htm</a>.</p>
<p>Сейчас pdf-версия по содержанию полностью соответствует онлайн-версии. Однако, думаю, что ее нужно дополнить приложением с XS2 API, онлайн версия которого находится здесь - <a href="http://www.solutecs.com/online/index/ru.htm">http://www.solutecs.com/online/index/ru.htm</a>.</p>
<p>В ближайшем будущем вся документация XS2 будет переведена в формат онлайн/pdf. Полный пакет документации будет состоять из:</p>
<ol>
<li>XS2 Быстрый старт (XS2 Quick Start)</li>
<li>Руководство разработчика XS2</li>
<li>Руководство пользователя XS2 (это то, что сейчас называется XS2 Manual)</li>
<li>Справочник XS2 API</li>
</ol></lj-cut>]]></description>
<pubDate>Mon, 24 Mar 2008 17:34:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Функции постраничного вывода]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.79.htm</link>
<description><![CDATA[<p>Еще три года назад, при разработке первой версии XS2, у нас возникли споры по поводу включения функция постраничного вывода в XS2 API. Речь идет о функциях <a href="http://www.solutecs.com/online/function/show/ru.xs2CountPages.htm">xs2CountPages</a>, <a href="http://www.solutecs.com/online/function/show/ru.xs2GetPage.htm">xs2GetPage</a>, <a href="http://www.solutecs.com/online/function/show/ru.xs2HasNextPage.htm">xs2HasNextPage</a>, <a href="http://www.solutecs.com/online/function/show/ru.xs2HasPrevPage.htm">xs2HasPrevPage</a>, предназначенных исключительно для организации &quot;листалок&quot; на страницах сайтов.</p><lj-cut><p>Тогда было принято решение включить эти функции в API, поскольку, казалось, они могли бы использоваться не только для листалок, но и просто для работы с диапазонами узлов в выборке. Однако дальнейший опыт разработки показал, что включение их в API было ошибочным. Они использовались только для листалок, а это частное применение, которое хорошо бы было реализовать просто в виде модуля на подобие модулей &quot;Многоязычность&quot; или &quot;AJAX&quot;.</p>
<p>Вторая проблема этих функций состоит в том, что для их работы требуется выборка всех узлов. Это означает, что для вывода одной страницы, на которой показываются только 10 товаров из 1000, нужно выбрать всю 1000. Конечно, есть пути оптимизации: например, можно делать выборку только идентификаторов, а затем, когда произведена вырезка диапазона, выбрать полностью все поля только для узлов данного&nbsp;диапазона. Но все равно... некошерно, <span style='color:red;'>[ой, вырвалося]&rarr;</span>бля.</p>
<p>Во второй версии мы решили сделать эти функции нерекомендуемыми для использования, и перенести их в общий модуль &quot;Постраничный вывод&quot;. Кроме того, во второй версии в функции выборок решено добавить помимо параметра limit еще и параметр offset, задающий начальную позицию диапазона выборки. В паре эти два параметра позволяют не выбирать всю тысячу узлов для вывода 10 из них.</p>
<p>Для вывода &quot;листалок&quot; нужно знать, сколько узлов всего в выборке. Сейчас эту задачу можно решить только путем тупого подсчета количества возвращенных&nbsp;узлов с помощью функции count.&nbsp; Это, конечно, полное <span style='color:red;'>[ой, вырвалося]&rarr;</span>уебанство и нарушение &quot;благостной гармонии&quot; (&copy;Ху Цзин Тао, 2007).&nbsp;Для оптимального посчета количества узлов в выборке во второй&nbsp;версии появится функция xs2CountNodes, которая будет возвращать количество узлов, удовлетворяющих условию, заданном в ее параметере condition.</p></lj-cut>]]></description>
<pubDate>Thu, 13 Mar 2008 15:07:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Город родной над Невой :)]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.78.htm</link>
<description><![CDATA[<p>Я как всегда задержалась с докладом. Но тем не менее .. (читать с пафосом)</p>
<p>Подключение регионов идет семимильными шагами. Теперь к системе документооборота присоединены Санкт-Петербург, Можайск и мы движемся в сторону машиностроительного дивизиона, в котором предприятия отличаются огромной величиной и государственным значением.</p>
<p>В общем, полет нормальный.</p>
<p>Дома, в Солютексе - ТАК хорошо! :))</p>]]></description>
<pubDate>Tue, 04 Mar 2008 14:18:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Баг-долгожитель]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.75.htm</link>
<description><![CDATA[<p>В пятницу мы обнаружили багу, которой жила в коде почти два года. Бага фундаментальная, но благодаря особенностям организации проектов, она оставалась незамеченной и была отловлена даже не в XS2v1, а при тестировании XS2v2, куда она перекочевала&nbsp;вместе с куском рефакторизованного&nbsp;кода.</p><lj-cut><p>Суть баги заключается в том, что&nbsp;в определенных случаях в поле типа lnk некоторые ссылки не сохроняются. Однако, мы пришли к выводу, что ни один проект на XS2 не столкнулся с этой проблемой потому, что условия ее возникновения слишком редки:</p>
<ol>
<li>В типе должно быть поле, в котором можно указывать <b>несколько</b> узлов</li>
<li>Узлы должны быть не только разного типа, но и из <b>разных модулей</b></li>
<li>Эти узлы из разных модулей должны иметь <b>одинаковый идентификатор </b>и должны встретиться в одном линковом поле.</li>
</ol>
<p>Чудом удалось обнаружить эту багу при комплексном тестировании поля lnk во второй версии только потому, что тестирование включало все вероятные комбинации настроек поля&nbsp;- даже те, которые не встречались до сих пор в реальных проектах.</p>
<p>&nbsp;</p></lj-cut>]]></description>
<pubDate>Tue, 26 Feb 2008 14:24:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Новый мануал XS2]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.73.htm</link>
<description><![CDATA[<p>Мы все-таки решили написать подробный мануал для разработчиков XS2. Та документация, которая существует сейчас, была написана еще во время выпуска первой версии на рынок. Не то, чтобы она устарела, просто за прошедшее время мы и партнеры накопили огромный опыт разработки на XS2, этот опыт в виде практических рекомендаций мы и решили оформить в виде серьезного мануала.</p><lj-cut><p>По задумке мануал будет состоять&nbsp;из трех частей.<br />
<b>Первая часть</b> уже почти готова и содержит разжеванные до семантической каши подробные указания, как сделать модуль, тип, как работать с шаблонами и процессорами, как производить выборки и вставки и т.п.&nbsp;Вот небольшой кусочек из первой главы первой части, в которой производится вправка мозга:</p>
<p style="margin-left: 40px"><span style="font-size: large">&quot;</span>Любая операция с данными для того, чтобы ее произвести с помощью платформы, должна быть переведена в уме пользователся в термины этой платформы. Например, пользователь хочет создать музыкальный каталог на своем компьютере. Он должен сообразить, что каждая запись будет файлом, а категории каталога (жанр, исполнитель, альбом) удобно представить в виде вложенных директорий. Придумывая способы представления объектов реального мира (музыкальные произведения, испольнители, альбомы) с помощью модели платформы (файлы, директории и их поведение), пользователь как раз и производит перевод в термины платформы.</p>
<p style="margin-left: 40px">Для того, чтобы сделать сайт на XS2, прежде всего необходимо как раз описать его в принятых на данной платформе терминах. Основным элементом модели данных в XS2 является <em class="term">узел</em>. Вместо того, чтобы пытаться дать отвлеченное определения этого понятия, приведем несколько примеров объектов, которые могут быть представлены в XS2 в виде узла: новость, статья, блог, запись в блоге, пользователь, объект недвижимости, товар, заказ, строка заказа, фотография, пункт в меню сайта. Эти узлы имеют определенное поведение, которое определяется как общими для всех узлов свойствами, так и свойствами, придуманными разработчиком сайта. Общие для всех узлов в XS2 являют такие свойства, как идентификатор узла, его название, дата создания и проч. Для всех узлов в качестве их стандартного поведения в XS2 реализованы следующие операции: вкладывание узлов друг в друга в виде дерева, добавление, редактирование, удаление, перемещение и копирование узлов. Кроме того, узлы могут содержать произвольные ссылки друг на друга. Например, узел &quot;Новость&quot; может ссылаться на узел &quot;Автор&quot;, узел &quot;Строка заказа&quot; явно должен содержать ссылку на товар, узел &quot;Заказ&quot; ссылается на узел &quot;Покупатель&quot; и т.п. Очень важно понимать, что XS2 изначально не содержит готовых объектов &ndash; вы придумываете и создаете их сами, указывая их свойства и ссылки между ними.<span style="font-size: large">&quot;</span></p>
<p><b>Вторая часть </b>будет&nbsp;содержать также рекомендации, но уже не для начинающих, а для продвинутых.&nbsp;Думаю, там будут&nbsp;разобранные примеры решения реальных нетривиальных задач. Например, организации тэгов, мультиязычность,&nbsp;синхронизация двух проектов,&nbsp;взаимодействие с&nbsp;web2.0-сервисами, взаимодействия с Flash&nbsp;</p>
<p><b>Треться часть </b>будет справочником. Туда войду&nbsp;описание API,&nbsp;представленное сейчас&nbsp;вот здесь - <a href="http://www.solutecs.com/online/index/ru.htm">http://www.solutecs.com/online/index/ru.htm</a>.&nbsp;</p></lj-cut>]]></description>
<pubDate>Tue, 19 Feb 2008 14:33:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[За 101-м километром или с приветом из Можайска!]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.71.htm</link>
<description><![CDATA[<p>Мечтала вчера написать традиционный пост &quot;Я в N-ске&quot;, но не сложилось, в связи с отcутствием места стационарного приземления. Пишу сегодня:)<br />
<br />
День Святого, не побоюсь этого слова, Валентина начался с подарков. С утра я подарила милому, красивому и заботливому гаишнику 1000 р. за скорость. Я шумаХер :)<br />
<br />
Теперь  от лирики к практике внедрения. <br />
Можайск - следующая моя точка в подключении региональных предприятий холдинга к общей системе документооборота. Главная сложность  в том, что это про-из-вод-ство. А на производстве, сами понимаете, за компьютером сидеть некогда - работать надо. Линий много, завод большой, специалисты высокого уровня, но довольно солидного возраста. С другой стороны большой объем коммуникаций с другими предприятиями и подразделениями, поставщиками сырья, маркетологами, рекламщиками, логистикой, и везде нужен строгий порядок. В общем, процесс пошел и определилась схема взаимодействия с учетом особенностей конкретного предприятия.</p>
<p>Я все больше понимаю, что автоматизация документооборота это не только сокращение затрат, увеличение скорости работы, отсутствие беготни и так далее. В первую очередь это установление четкого регламента действий, повышение уровня ответственности сотрудников и руководства, а также возможности контролировать бизнес-процесс. Ведь автоматизация не терпит слов &quot;если вдруг.. то может быть&quot;.</p>]]></description>
<pubDate>Fri, 15 Feb 2008 10:43:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[40 полезных советов]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.70.htm</link>
<description><![CDATA[<p>Очень дельный, хотя и не без спорных моментов, текст:<br />
<a target="_blank" href="http://topright.livejournal.com/24971.html">&quot;40 советов веб-программисту о разработке веб-движков с помощью PHP и MySQL&quot;.</a></p>
<p>Особо нас удовлетворил&nbsp;совет №4. За него готовы закрыть глаза даже на совет №18, предполагающий, что автор каждый раз&nbsp;разрабатывая новый проект, создает под него&nbsp;заново модель предметной области в&nbsp;БД.</p>]]></description>
<pubDate>Tue, 12 Feb 2008 14:19:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Прозрачный механизм архивации]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.66.htm</link>
<description><![CDATA[<p>Вчера обсуждали общие принципы организации архивации-разархивации проектов на второй версии XS2.<br />
В первой версии утилита архивации-разархивации позволяет переносить как проект целиком, так и отдельные его части: модули, методы, данные. Причем при переносе отдельных модулей также можно указать, переносить ли только структуру, только методы, только данные или все вместе. Все эти возможности хотелось бы не только перенести во вторую версию, но и сделать их прозрачными и железно-бетонными в плане сохранности пользовательских данных.</p><lj-cut><p>При архивации проекта целиком (не отдельных модулей), особых проблем не возникает. Здесь существует два основных варианта: перенос структуры+данных, перенос только структуры. Первый вариант очевиден, второй - очевиден более менее. При переносе только структуры в проекте, куда производится перенос, все данные изменяются так, чтобы соответствовать новой структуре: например, если удалилось поле типа, то удаляются и данные этого поля; если изменился тип поля, то произойдет приведение данных этого поля и т.д.</p>
<p>Гораздо большую сложность представляет собой перенос отдельных модулей. Основная проблема - это связи между модулями, проявляющиеся в наличии полей типа lnk в объектах. Например, мы архивируем модуль &quot;Блог&quot;, в котором есть тип объекта &quot;Дневник&quot; и в этом типе есть поле &quot;Пользователь&quot;, содержащее ссылка на объект &quot;Пользователь&quot; из модуля &quot;Пользователи&quot;. Допустим, мы архивировали отдельно модуль &quot;Блог&quot; - в архиве будут содержаться половинчатые ссылки на пользователей. Теперь мы разархивируем архив на другом проекте, где модуль &quot;Пользователи&quot; тоже есть. Понятно, что процедура разархивирования должна постараться на основании тех данных о ссылках, которые есть в архиве, восстановить ссылки Журнал-&gt;Пользователь.</p>
<p>Для восстановления целостности ссылок при переносе архивов необходимо заново разработать два надежных механизма:</p>
<ol>
<li>Механизм идентификации одного и той же сущности на разных проектах. Процедура разархивации должна установить, что модуль &quot;Пользователи&quot;, с которым связан разархивирумый модуль &quot;Блог&quot;, - это тот же модуль &quot;Пользователи&quot;, который был в исходном проекте.</li>
<li>Механизм идентификации одной и того же объекта на разных проектах. Даже если модули на проекте-источнике и проекте-приемнике одинаковы, никто не гарантирует, что дневник под номером 2 на одном проекте и дневник с таким же номером на втором - это один и тот же дневник.</li>
</ol>
<p>Первый механизм будет реализован на базе <a href="http://ru.wikipedia.org/wiki/GUID">GUID</a>ов. Многие скажут, что и со вторым следует поступить так же. Но здесь есть много НО, и мы еще точно не решили, какое решение здесь применим.</p></lj-cut>]]></description>
<pubDate>Fri, 08 Feb 2008 15:56:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Посторонним В.]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.63.htm</link>
<description><![CDATA[<p>Все-таки здесь, в нашем блоге, мы вольны и открыты писать так, как нравится нам. Но мне пришлось столкнуться с мнением о &quot;несерьезности людей, которые себе позволяют..&quot;. <br />
Поэтому до того, как появится дисклеймер, мне бы хотелось узнать - умение видеть серьезные вещи за несерьезностью изложения, это особенность единомышленников?</p>]]></description>
<pubDate>Wed, 06 Feb 2008 15:01:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Марко Поло в шоке]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.59.htm</link>
<description><![CDATA[<p>Недавно прочитал &quot;<a href="http://www.lib.ru/INPROZ/POLO_M/mir.txt">Книгу о разнообразии мира</a>&quot;, записанную Рустичано Пизанским под диктовку Марко Поло. Книга весьма поучительная. Вот замечательная цитата, наглядно демонстрирующая, что даже в области финансов и банковского дела Европа не была первой. В ней Марко Поло описывает монетный двор великого хана Кублая (Хубилай),&nbsp;правящего Китаем в&nbsp;конце 13 века.</p><lj-cut><p style="margin-left: 40px">&quot;В Канбалу [Ханбалык] монетный двор великого хана, да такой, что про&nbsp; великого хана сказать можно -- алхимию он знает вполне, и вот почему. Приказывает он изготовлять вот какие деньги: заставит он набрать коры от тутовых деревьев, листья которых едят шелковичные черви, да нежное дерево, что между корой и сердцевиной, и из этого нежного дерева приказывает изготовить папку, словно как бумагу; а когда папка готова, приказывает он из нее нарезать вот как: сначала маленькие [кусочки], стоящие половину малого ливра, или малый ливр, иные ценой в пол серебряный грош, а другие в серебряный грош; есть и в два гроша, и в пять, и в десять, и в безант, и в три и так далее до десяти безантов; и ко всем папкам приложена печать великого хана. Изготовляется по его приказу такое множество этих денег, что все богатство в свете можно ими купить. Приготовят бумажки так, как я вам описал, и по приказу великого хана распространяют их по всем областям, царствам, землям, всюду, где он властвует, и никто не смеет, под страхом смерти, их не принимать. Все его подданные повсюду, скажу вам, охотно берут в уплату эти бумажки, потому что, куда они ни пойдут, за все они платят бумажками, за товары, за жемчуг, за драгоценные камни, за золото и за серебро: на бумажки все могут купить и за все ими уплачивать; бумажка стоит десять безантов, а не весит ни одного.&quot;</p>
<p style="text-align: right">&quot;Книга о разнообразии мира&quot;, Глава XCVI</p>
<p style="text-align: right">&nbsp;</p></lj-cut>]]></description>
<pubDate>Tue, 05 Feb 2008 13:26:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[«Эходебаг», как разновидность онанизма]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.57.htm</link>
<description><![CDATA[<p>Отладка программ бывает разная, как и сами отладчики... Бывает простая, бывает удобная, бывает и то и другое, но лишь один способ отладки сразу ввергает в уныние любого программиста &mdash; его зовут &laquo;эходебаг&raquo; (существует так же его изощренная разновидность &mdash; &laquo;логдебаг&raquo;, описанная мной ниже).</p>
<p>Ну да ладно &mdash; от слов к делу. Мы все привыкли пользоваться Zend Debugger'ом, ловко выкорчеванным мной из <a href="http://www.zend.com/en/products/platform/">Zend Platform</a> для трассировки и отладки PHP внутри среды <a href="http://www.zend.com/en/products/studio/">Zend Studio</a>. Мы привыкли пользоваться замечательным <a href="http://www.getfirebug.com/">Firebug</a> для отладки скриптов в <a href="http://www.mozilla.com/en-US/">Mozilla Firefox</a> и <a href="http://msdn.microsoft.com/vstudio/">MS Visual Studio</a> для <a href="http://www.microsoft.com/rus/windows/ie/default.mspx">IE</a>. Для &laquo;верстки&raquo; (работы с HTML и HTTP) чрезвычайно удобен <a href="http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038">IE Developer Toolbar</a> и <a href="http://www.iewatch.com/">IE Watch</a>. Я не думал что существуют задачи, способные вернуть меня из 2008 в 2000 год, заставив вспомнить конструкции типа &laquo;echo $my_var&raquo; или &laquo;alert(my_var)&raquo;.</p>
<p>К сожалению, такие задачи есть &mdash; одна из них метод-шлюз, сопрягающий XS2 Client и XS2 Framework v2. Я не буду долго и нудно расписывать его устройство а просто скажу, что состоит он из трех классов XS2_Client, обрабатывающий команды от клиента, XS2_ClientGate, разбирающего POST-запросы от клиента и формирующего пакеты ответов и XS2_ClientItem, представляющего любой метод или ресурс XS2.</p>
<p>Не имея возможности &laquo;засунуть отладочное что-то&raquo; от Zend Studio в .Net'овые внутренности XS2 Client, а так же выводить &laquo;эху&raquo; в браузер (браузера то нет) &mdash; я был вынужден прибегнуть к самому мерзкому из известных мне способу отладки &mdash; &laquo;логдебагу&raquo;, для чего были написаны приватные методы &laquo;_debug($text)&raquo; на каждом из моих классов и константы-выключатели &laquo;self::DEBUG&raquo; там же.</p>
<p>Нет ничего более неприятного чем бегать между четырьмя, постоянно обновляющимися лог-файлами (клиент то работает и шлет команды), открытыми в <a href="http://www.ultraedit.com/">UltraEdit</a>, нервозно нажимая кнопку &laquo;ДА&raquo; на возникающих контекстах &laquo;Do you want to reload it?&raquo; и &laquo;Do you want to convert it to DOS format?&raquo;, бешено крутя колесо мыши в поисках того места, которое &laquo;тут же еще секунду назад видел&raquo;. Ужас. Возвращаюсь в редактор программы и уже не помню что искал в этом &laquo;логе&raquo; и что писал в программе до того как пошел &laquo;в лог&raquo;.</p>
<p>...Уважаемый читатель, коллега или конкурент &mdash; свой метод-шлюз XS2v2 к XS2 Client я все-таки добил! Готово и работает почти как надо &mdash; пользоваться можно!, а эта запись &mdash; просто мысли вслух и несколько полезных ссылок, если ты вдруг соберешься что-то подобное программировать. На дворе уже 2008 год! Удачной охо... тьфу! Отладки! :)</p>]]></description>
<pubDate>Mon, 04 Feb 2008 02:30:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Редактирование кода метода в браузере]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.52.htm</link>
<description><![CDATA[<p>Думается, что икаю я тогда, когда вольный разработчик на понтовой <a href="http://www.ubuntu.com/">Убунте</a> заходит в XS2 с целью подправить какой-нибудь метод.</p><lj-cut><p>Для того, чтобы отредактировать произвольный метод не используя при этом <a href="http://download.solutecs.com/xs2client/">XS2 Client</a> (он ставится только на <a href="http://windows.microsoft.com">Windows</a>), нужно кликнуть на проекте, модуле или типе объектов, выбрать пункт &quot;Методы&quot;, затем выбрать метод, щелкнуть по нему, выбрать пункт &quot;Скачать&quot;, выбрать, что именно скачать: шаблон или процессор, затем в открывшемся браузерном окне выбрать папку на локальном диске, куда скачать, затем открыть программу-редактор, открыть в нем сохраненный файл, отредактировать, сохранить, вернуться в интерфейс XS2, выбрать пункт &quot;Заменить&quot;, в открывшемся окне выбрать на локальном диске измененный файл, нажать кнопку &quot;Сохранить&quot;. Ну вообщем только закаленный бессоными ночами борьбы с линуксовыми конфигами админ не разразился бы при этом лишенной эвфемизмов тирадой.</p>
<p>Теперь редактировать код метода можно прямо в браузере. В меню работы с методом добавился пункт &quot;Редактировать&quot; при нажатии на который открывается окошко с кодом метода. Это стало возможно благодаря охуительной технологии <a href="http://codepress.org/"><b>Codepress</b></a>, позволяющей подсвечивать синтаксис прямо в браузере. Отдельная благодарность нашим партнерам из <a href="http://www.agrosystem.ru/">ФГУП ВНИИ &laquo;Агросистема&raquo;</a>, которые:</p>
<p style="margin-left: 40px;">1. <strike>Вынесли нам все мозги</strike> не отставали от нас с просьбами сделать редактирование в браузере;<br />
2. Рассказали нам про <b>Codepress.</b></p>
<p>Фича выйдет в версии 1.31.3.</p>
<table width="200" cellspacing="7" cellpadding="7" border="0" align="center">
<tbody>
<tr>
<td><a href="http://www.solutecs.com/_data/blog/0000052/1-big.png"><img width="240" vspace="5" hspace="5" height="180" border="0" src="http://www.solutecs.com/_data/blog/0000052/1-pre.png " alt="" /></a></td>
<td><a href="http://www.solutecs.com/_data/blog/0000052/2-big.png"><img width="240" vspace="5" hspace="5" height="180" border="0" src="http://www.solutecs.com/_data/blog/0000052/2-pre.png " alt="" /></a></td>
</tr>
<tr>
<td style="text-align: center;" colspan="2"><a href="http://www.solutecs.com/_data/blog/0000052/3-big.png"><img width="240" vspace="5" hspace="5" height="180" border="0" src="http://www.solutecs.com/_data/blog/0000052/3-pre.png " alt="" /></a></td>
</tr>
</tbody>
</table></lj-cut>]]></description>
<pubDate>Thu, 31 Jan 2008 13:58:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Узел объекта]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.48.htm</link>
<description><![CDATA[<p>Терминологический вопрос. Слово <b>объект</b> слишком много всего обозначает. Оно может смутить программиста, когда рядом в коде оказываются объект в смысле экземпляра какого-то класса и объект XS2 в виде набора полей. Например, $_HTML-&gt;assign('...', xs2GetNode(...)); здесь и $_HTML, и результат функции xs2GetNode - оба называются объектами. И как такое объяснять по телефону? Явно подходящий момент, чтобы вернуться к истокам, которые были <nobr>еще до XS2 ;)</nobr> Не зря функция говорит <i>get node</i>. Поэтому теперь мы стараемся называеть <i>наши объекты</i> <b>узлами</b>.</p>]]></description>
<pubDate>Tue, 29 Jan 2008 12:44:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Страсти по XS2 Client]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.47.htm</link>
<description><![CDATA[<p>Давеча привелось копаться в коде <a href="http://download.solutecs.com/xs2client/">XS2 Client</a> с целью сделать его совместимым со второй версией XS2. Феерические успехи, достигнутые в первые 2 дня (мне удалось-таки добавить два радиобатона для выбора версии), сподвигли меня на то, чтобы внести изменения, о коих я грезил еще год назад.</p><lj-cut><p>Прежде всего добавил возможность соединятся сервером по альтернативным портам, а не только по 80. Затем добавил выбор кодировки проекта (раньше была жестко задана <a href="http://ru.wikipedia.org/wiki/Windows-1251">win-1251</a>). Добился-таки того, чтобы при обновлении клиента сохранялись все его настройки, включая аккаунты. И наконец, исправил надоедливый баг при создании ресурсов.</p>
<table width="100" cellspacing="1" cellpadding="1" border="0" align="center" style="">
<tbody>
<tr>
<td>
<p><img width="307" height="256" src="http://www.solutecs.com/_data/blog/0000047/01_b_1.png" alt="" /></p>
<p style="text-align: center;">Редактирование учетной записи</p>
</td>
</tr>
<tr>
<td>
<p><img width="307" vspace="10" hspace="10" height="256" alt="" src="http://www.solutecs.com/_data/blog/0000047/02_b.png" /></p>
</td>
</tr>
<tr>
<td style="text-align: center;">Экзотическая кодировка работает!</td>
</tr>
</tbody>
</table>
<p>Много времени ушло на то, чтобы разобраться с технологией разворачивания приложения Microsoft <a href="http://msdn2.microsoft.com/en-us/library/142dbbz4(VS.80).aspx">ClickOnce</a>. Клиент распространяется по этой технологии. Она действительно очень удобна, но у нее есть ряд подводных камней. Думается, что в ближайшее время нужно будет все-таки сделать версию с обычным инсталлятором.</p>
<p>Неприятная фигня: обновиться до новой версии клиента, которая сейчас уже лежит <a href="http://download.solutecs.com/xs2client/">вот здесь</a>, с текущих версий будет нельзя. Нужно будет деинсталлировать текущую версию и поставить новую. Но зато потом, обновления будут работать как надо.</p></lj-cut>]]></description>
<pubDate>Mon, 28 Jan 2008 12:52:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[И снова я! Только из Кисловодска!]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.45.htm</link>
<description><![CDATA[<p>В продолжение предыдущей темы о вндрении электронного документооборота! Теперь я в Кисловодске, кругом горы, красота, свежий воздух и замечательные люди.<br />
Все-таки я радуюсь, когда система развивается и растет. Когда постепенно возникает культура использования автоматизированных систем. Искренее считаю, что это одна из сторон идеалогии предприятия, тем более когда его части разнообразны и так широкомасштабны.<br />
Я вернусь сегодня!</p>]]></description>
<pubDate>Thu, 24 Jan 2008 15:56:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Эффект "второй версии"]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.39.htm</link>
<description><![CDATA[<p>Приятное времяпрепровождение в обществе трех существ... XS2 Client, XS2 v1, XS2 v2. Сервершлюз XS2 v2 и контроллер-обрабочик команд XS2 Client. Так много стало понятно именно сейчас, так много хочется изменить и так тяжело понимать, что &quot;изменить много&quot; нельзя... Знаменитый эффект &quot;второй версии&quot;? Желание &quot;улучшить все до неузнаваемости&quot;? ... Может быть что-то еще? Не знаю. Борюсь с собой и боюсь себя! А вы готовы к переменам?! :) Йо!</p>]]></description>
<pubDate>Tue, 22 Jan 2008 02:37:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Я в Оренбурге!]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.36.htm</link>
<description><![CDATA[<p>Одна из границ моей ответственности - внедрение системы электронного документооборота, созданной на базе платформы XS2 для крупного многопрофильного и многорегионального Холдинга, о чем я клятвенно обещаю рассказать в &quot;Проектах&quot;.</p>
<p>Второй день XS2 находится на границе Европы и Азии или Азии и Евразии (я точно пока не осознала). Докладываю, что процесс налажен, пользователи настроены... положительн :)</p>
<p>Я провела огромное число семинаров, так как стараюсь проводить обучение малыми группами. Все счастливы, теперь и Оренбургские предприятия включены в общую систему документооборота, что не может не радовать.</p>
<p>Для тех, кто не в курсе в системе сейчас около 1000 пользователей, около 30 предприятий, 4 типа документов, Урал уже 4-й регион. И это все РАСТЕТ и РАЗВИВАЕТСЯ!</p>
<p>В 19.05 у меня самолет, а пока я отправляюсь по местам боевой славы Чапаева, то есть на Урал :)</p>
<p>Из музыки звучит только &quot;степь да степь кругом&quot; :)</p>
<p>PS Я не знаю ГДЕ ЗДЕСЬ ПЛАТКИ :)</p>]]></description>
<pubDate>Thu, 17 Jan 2008 14:00:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Будни]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.31.htm</link>
<description><![CDATA[<p>Моими &quot;пользовательскими глазами&quot;... <br />
Если вы думаете, что если кто-то что-то программирует, архитектуру там всяческую создает - это не к нам :)</p>
<p>Они ПАЯЮТ! Нормальным таким паяльником!</p>]]></description>
<pubDate>Tue, 15 Jan 2008 14:08:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Unicode]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.28.htm</link>
<description><![CDATA[<p>Во второй версии, наконец-то будет Юникод. Не зря восьмой год уже наступил.</p>
<p>Лично я вообще  выступал за то, чтобы оставить <b>только</b> юникод, а однобайтные древности типа win-1251 забыть насовсем. Однако, мы решили оставить их для совместимости.</p>]]></description>
<pubDate>Mon, 14 Jan 2008 14:10:00 GMT</pubDate>
</item>
<item>
<title><![CDATA[Hello, World!]]></title>
<link>http://www.solutecs.com/blog/message/show/ru.13.htm</link>
<description><![CDATA[<p>Хотел начать с пожелания 10 тысяч лет жизни Председателю, но вспомнил, что не то время сейчас...</p>
<p>Это блог был сделан на XS2 примерно за 3 часа. Еще 3 часа ушло на пинание yaseekа с целью &quot;поддизайнить шнягу&quot;. Еще 20 минут ушло у вышеупомянутого yaseekа на CSS-самовыражение и обещание убить меня за &quot;уебанские имена классов&quot; и вот, что получилось.</p>
<p>Мы точно пока не знаем, о чем будет этот блог. Надеюсь, что будем писать:</p>
<ol>
<li>О разработке <a href="http://www.solutecs.com/presscenter/release/show/ru.89.htm">второй версии XS2</a></li>
<li>О борьбе за выживание первой версии XS2</li>
<li>О синхробуффонадах, в которые неизменно выливаются наши брифы</li>
<li>О наших прожектах в области агрономии, алгебры, антропологии, апокрифологии, археологии, архитектуры, астрономии, аэронавтики, баллистики, библиотековедения, биологии, бионики, биотехнологии, биофилологии, биохазардалогии, географии, геологии, геометрии, геомеханики, геофизики, геронтомахии, документоведения, информатики, искусствоведения, истории, кибернетики, книговедения, кораблестроения, космонавтики, краеведения, культурологии, лингвистики, литературоведения, математического анализа, материаловедения, машиностроения, медицины, механики, нанотехнологии, педагогики, пищевой технологии, политологии, почвоведения, психологии, радиотехники, робототехники, системотехники, социологии, социоботаники, строительства, теплотехники, трибологии, физики, филологии, философии, химии, экономики, электротехники, энергетики, этнографии, юриспруденции.</li>
<li>О еще о чем-нибудь (я ваще этот пункт добавил, потому что в странах с китайской письменностью число 4 считается несчастливым).</li>
</ol>
<p>Мы точно писать не будем:</p>
<ol>
<li>О наших проебах (а вы б стали писать такое в корпоблоге?)</li>
<li>О проебах наших друзей</li>
<li>О проебах друзей наших друзей</li>
<li>О удачах врагов</li>
</ol>]]></description>
<pubDate>Fri, 11 Jan 2008 13:48:00 GMT</pubDate>
</item>
</channel>
</rss>