<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>«XOR's Post»</title><link>http://blogs.byte-force.com/xor/default.aspx</link><description>Somewhat frequent posts by Andrew Mayorov (aka XOR) on software architecture, programming, development news and other fun stuff. In russian and english.</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 (Build: 30912.2823)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/xor" type="application/rss+xml" /><item><title>Про ЕГЭ</title><link>http://feedproxy.google.com/~r/xor/~3/SJrb4JlQKRY/4530.aspx</link><pubDate>Tue, 16 Jun 2009 10:54:16 GMT</pubDate><guid isPermaLink="false">2d7b5c81-17d2-487b-a0e9-0530898b531a:4530</guid><dc:creator>Andrew Mayorov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.byte-force.com/xor/rsscomments.aspx?PostID=4530</wfw:commentRss><wfw:comment>http://blogs.byte-force.com/xor/commentapi.aspx?PostID=4530</wfw:comment><comments>http://blogs.byte-force.com/xor/archive/2009/06/16/4530.aspx#comments</comments><description>&lt;p&gt;Надо сказать, что я про ЕГЭ думал скорее положительно. Точнее, сильно не думал. Когда мне немного помогли задуматься, стал думать про него резко отрицательно. &lt;/p&gt;  &lt;p&gt;Для затравки, можно прочитать на Хабре несколько заметок про ЕГЭ. &lt;a href="http://shlemisto.habrahabr.ru/blog/62036/" target="_blank"&gt;Только что сдавший школьник недоволен&lt;/a&gt;. Довольно аргументировано. Человек «с другой стороны» &lt;a href="http://habrahabr.ru/blogs/study/62054/" target="_blank"&gt;рассказывает как умно все организовано&lt;/a&gt;. Другой &lt;a href="http://habrahabr.ru/blogs/study/62109/" target="_blank"&gt;рассказывает о нелегкой жизни администратора в центе тестирования&lt;/a&gt;. Тоже все организовано как часы. Раньше еще и софт было хороший, а теперь из Центра спустили какое-то Г. С ним все сложнее, но все равно организация на высоте. &lt;/p&gt;  &lt;p&gt;Читаем комментарии. Все очень умные. Все олимпиадники, тесты для них – ничто, легкотня. Тем более, что они-то их сдали. Все кто не сдали – тупы по определению. Суждения резкие, как понос, молодежные. Очень редко встречаются слова против тестирования, но отклика у населения не находят. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://habrahabr.ru/blogs/edu_2_0/45776/" target="_blank"&gt;Прочитал там же&lt;/a&gt; мнение &lt;a href="http://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D1%80%D1%8B%D0%B3%D0%B8%D0%BD,_%D0%98%D0%B3%D0%BE%D1%80%D1%8C_%D0%A4%D1%91%D0%B4%D0%BE%D1%80%D0%BE%D0%B2%D0%B8%D1%87" target="_blank"&gt;И.Ф.Шарыгина&lt;/a&gt; про тесты. Он аргументировано объясняет, почему именно поголовное и обязательное тестирование – плохо. Статья была опубликована в 2002 году после встречи с министром Филиповым (&lt;a href="http://nature.web.ru/db/msg.html?mid=1182770" target="_blank"&gt;источник – см. примечание&lt;/a&gt;). В 2009 тесты окончательно захватили мир. &lt;/p&gt;  &lt;p&gt;Задуматься над всем этим мне помогла мама. Зашла к нам выпить чаю после проверки ЕГЭ по математике. И вот что рассказала. Они проверяют сложные задания. Если почитать статьи по ссылкам, то там эта процедура описана. Абсолютное большинство школьников их не решают. Либо не приступал, либо не сделал. Крестики-нолики, действительно. &lt;/p&gt;  &lt;p&gt;Можно сказать, что школьники тупы, но все не так просто. Цель экзамена – проверить знания, но как ты можешь их проверить, если на твой вопрос никто не отвечает? Вопрос объективно сложен, шкала оценок проста – если ответил, значит умный, если не ответил, то дурак. Ясно, что большинство попадает в дураки. Ну, как говорится, при любом эпсилон большем нуля можно найти вопрос такой сложности…&lt;/p&gt;  &lt;p&gt;Мама говорит, что:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Первая проблема ЕГЭ – это плохие вопросы. С ними невозможно составить шкалу оценки знаний. Большинство получает очень мало баллов.&lt;/li&gt;    &lt;li&gt;Даже если бы вопросы были хорошие, остается вторая проблема. Учителя теперь не учат науке, а натаскивают на ЕГЭ. Два выпускных класса проходят в этом режиме. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;И вот эта вторая проблема – она вообще не решается. Да, есть отличный процесс приема. И нет никакой коррупции. Администраторы ИТ-инфраструктуры дают зуб, что все надежно… Это все не заставит учителей учить детей математике, а не тренировать их на решение задачек. Просто потому, что учитель должен подогнать ребенка под результат – сдачу ЕГЭ. Если не подгонит, то ему дадут по шее. Если подгонит, то будет молодец. Зачем ему рвать задницу и учить, если проще и надежнее подогнать.&lt;/p&gt;  &lt;p&gt;В результате натаскивания вместо обучения в последние годы студенты-математики становятся все хуже и хуже. Это не я говорю. Я к этому отношения не имею. Это говорят преподаватели с гигантским стажем работы. Про это Шарыгин писал в 2002 году. Это и случилось.&lt;/p&gt;  &lt;p&gt;А какое это отношение имеет к нам, маленьким софтверным компаниям? Прямое. Ждите на выходе свежую генерацию неучей.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.byte-force.com/aggbug.aspx?PostID=4530" width="1" height="1"&gt;</description><category domain="http://blogs.byte-force.com/xor/archive/tags/Russian/default.aspx">Russian</category><category domain="http://blogs.byte-force.com/xor/archive/tags/_1F0440043E04_+_3604380437043D044C04_/default.aspx">Про жизнь</category><feedburner:origLink>http://blogs.byte-force.com/xor/archive/2009/06/16/4530.aspx</feedburner:origLink></item><item><title>Летняя встреча .NET UG Yaroslavl</title><link>http://feedproxy.google.com/~r/xor/~3/Om4BNbYondw/yana-june-2009.aspx</link><pubDate>Tue, 16 Jun 2009 09:12:00 GMT</pubDate><guid isPermaLink="false">2d7b5c81-17d2-487b-a0e9-0530898b531a:4528</guid><dc:creator>Andrew Mayorov</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.byte-force.com/xor/rsscomments.aspx?PostID=4528</wfw:commentRss><wfw:comment>http://blogs.byte-force.com/xor/commentapi.aspx?PostID=4528</wfw:comment><comments>http://blogs.byte-force.com/xor/archive/2009/06/16/yana-june-2009.aspx#comments</comments><description>&lt;p&gt;В следующую среду, 24 июня состоится семинар ярославской .NET User Group (YaNA). Место и время обычное &amp;ndash; главный корпус ЯрГУ, 304 аудитория, 19:00. Обратите внимание на день недели. Не понедельник, а среда!&lt;/p&gt;
&lt;p&gt;С выступлениями пока не определились. Я попытаюсь рассказать про XSLT и показать примеры уличной магии. &lt;/p&gt;
&lt;p&gt;Update:&lt;/p&gt;
&lt;p&gt;Карточка семинара &amp;mdash; &lt;a target="_self" href="http://yana.ineta.ru/Events/EventMultiSessionInfo.aspx?Id=254fb19f-34c4-49a2-ad39-91e189b52938"&gt;здесь&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.byte-force.com/aggbug.aspx?PostID=4528" width="1" height="1"&gt;</description><category domain="http://blogs.byte-force.com/xor/archive/tags/Russian/default.aspx">Russian</category><category domain="http://blogs.byte-force.com/xor/archive/tags/YaNA/default.aspx">YaNA</category><feedburner:origLink>http://blogs.byte-force.com/xor/archive/2009/06/16/yana-june-2009.aspx</feedburner:origLink></item><item><title>Google Wave</title><link>http://feedproxy.google.com/~r/xor/~3/pqzoqoirPGE/google-wave.aspx</link><pubDate>Thu, 11 Jun 2009 14:51:00 GMT</pubDate><guid isPermaLink="false">2d7b5c81-17d2-487b-a0e9-0530898b531a:4523</guid><dc:creator>Andrew Mayorov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.byte-force.com/xor/rsscomments.aspx?PostID=4523</wfw:commentRss><wfw:comment>http://blogs.byte-force.com/xor/commentapi.aspx?PostID=4523</wfw:comment><comments>http://blogs.byte-force.com/xor/archive/2009/06/11/google-wave.aspx#comments</comments><description>&lt;p&gt;Посмотрел &lt;a href="http://www.youtube.com/watch?v=v_UyVmITiYQ&amp;amp;eurl=http%3A%2F%2Fwave.google.com%2F&amp;amp;feature=player_embedded" target="_blank"&gt;презентацию&lt;/a&gt;&amp;nbsp;&lt;a href="http://wave.google.com/" target="_blank"&gt;Google Wave&lt;/a&gt; &amp;ndash; очень и очень понравилось. Хочется уже взять и начать юзать. Жалко, пока не дают. Хочется сделать несколько наблюдений:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Действительно, если не путаясь можно всем вместе редактировать один и тот же документ, то электронная почта становится не нужна. Точнее, ей остается только древнейшая функция &amp;ndash; слать просто письма. &amp;laquo;Милый дедушка, Константин Макарыч!&amp;raquo; и так далее.&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;На мой взгляд, вот тут наш давнишний &lt;a href="http://blogs.byte-force.com/xor/archive/2008/11/06/2379.aspx" target="_blank"&gt;спор про HTML Wiki&lt;/a&gt; подходит к концу. Напомню, что я предлагал уже хоронить вики-разметку, потому что браузер позволяет ричтекстово редактировать. Возражения было два. Во-первых, вики-разметку проще сравнивать, чтобы показать историю изменений. Во-вторых, в медиа вики можно вставлять всякие серверные расширения, и это удобно. &lt;/p&gt;
&lt;p&gt;Получается, что в вэйве версии сравнивать вовсе необязательно. Плэйбэк изменений сделать проще, и он не менее нагляден. Серверные расширения там тоже есть. Вполне можно сделать робота, который будет LaTeX&amp;rsquo;овский жуткий текст конвертировать к картинку. В SVG какой-нибудь.&lt;/p&gt;
&lt;p&gt;Заслать вэйв на растерзание заказчику &amp;ndash; это вообще милое дело. Вики начинает отдыхать.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.byte-force.com/aggbug.aspx?PostID=4523" width="1" height="1"&gt;</description><category domain="http://blogs.byte-force.com/xor/archive/tags/Russian/default.aspx">Russian</category><category domain="http://blogs.byte-force.com/xor/archive/tags/Wiki/default.aspx">Wiki</category><category domain="http://blogs.byte-force.com/xor/archive/tags/Google+Wave/default.aspx">Google Wave</category><feedburner:origLink>http://blogs.byte-force.com/xor/archive/2009/06/11/google-wave.aspx</feedburner:origLink></item><item><title>Впечатления о SEF-2009</title><link>http://feedproxy.google.com/~r/xor/~3/wfkJ66V1b7w/4509.aspx</link><pubDate>Fri, 29 May 2009 09:04:01 GMT</pubDate><guid isPermaLink="false">2d7b5c81-17d2-487b-a0e9-0530898b531a:4509</guid><dc:creator>Andrew Mayorov</dc:creator><slash:comments>9</slash:comments><wfw:commentRss>http://blogs.byte-force.com/xor/rsscomments.aspx?PostID=4509</wfw:commentRss><wfw:comment>http://blogs.byte-force.com/xor/commentapi.aspx?PostID=4509</wfw:comment><comments>http://blogs.byte-force.com/xor/archive/2009/05/29/4509.aspx#comments</comments><description>&lt;p&gt;Слайды с моих выступлений на SEF-2009 &lt;a href="http://blogs.byte-force.com/xor/archive/2009/05/27/sef2009-slides.aspx"&gt;я уже выкладывал&lt;/a&gt;. Настало время описать свои впечатления. &lt;/p&gt;  &lt;p&gt;Конференция мне понравилась. В отличие от той же SEC(R), которая показалась скучным междусобойчиком. Тут была движуха, были интересующиеся люди. Точно никто не спал. Ну разве что я сам чуть не уснул на одном «мастер-классе». &lt;/p&gt;  &lt;p&gt;В то же время, что SEF, что SEC(R) пропитаны неким духом старперства, да простят мне такое определение. Начинается это с открытия конференции, где выступает уже довольно престарелый профессор, и заканчивается почти полным отсутствием онлайн-присутствия. Правильнее сказать, заканчивается онлайн-отсутствием. Пленарная секция навевает воспоминания о съездах. Могут сказать, что это, дескать, Белоруссия, и что же ты хотел. Ну дак ведь и в России было не лучше. В Белоруссии профессор хотя бы был бодр и весел, а в России так выглядел и говорил ровно как профессор Фарнсворт. &lt;/p&gt;  &lt;p&gt;Итак,&amp;#160; что было хорошо:&lt;/p&gt;  &lt;ol&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;Откровенно плохим ничего не было, но вот недостатки:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;У докладчика должны быть возможность самому переключать слайды. Мне приходилось говорить «следующий слайд», что убивает динамику наповал. &lt;/li&gt;    &lt;li&gt;Должен быть Wi-Fi, легко и бесплатно доступный для всех посетителей. Это же программистская конференция. Как можно их лишать самого привычного способа общения? Если будет сеть, народ сразу же с конференции начал бы что-то писать в сеть, создавая, таким образом, онлайновую движуху.&lt;/li&gt;    &lt;li&gt;Онлайновую движуху надо поддерживать. На сайте конференции нужно выкладывать доклады по мере их прочтения. Причем не архивом, а инлайново на страничке. Нужно как-то комментировать это все прямо на сайте. Классно бы вопросы и комментарии передавать докладчикам. Там на конференции много девочек сидит на ресепшене. Вот, могли бы поддерживать интерфейс. &lt;/li&gt;    &lt;li&gt;Бэджи для докладчиков должны визуально отличаться. Это часть игры.&lt;/li&gt;    &lt;li&gt;Должно быть централизованно организованное afterparty. Платят пускай желающие, но организовать их надо.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Еще про онлайн. Поищите сейчас Яндексом «SEF 2009». Вылезет пара десятков ссылок. Причем большинство из них про то, что конференция будет. Очень мало пост-впечатлений. Ни одного свежака, чтобы прямо из зала. Это очень, очень плохо. Нужно стыковать оффлайн и онлайн. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Да, и напоследок вот еще что вспомнил. Практических докладов для программистов было мало. Про это, видимо, надо отдельно написать.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.byte-force.com/aggbug.aspx?PostID=4509" width="1" height="1"&gt;</description><category domain="http://blogs.byte-force.com/xor/archive/tags/Russian/default.aspx">Russian</category><category domain="http://blogs.byte-force.com/xor/archive/tags/SEF/default.aspx">SEF</category><feedburner:origLink>http://blogs.byte-force.com/xor/archive/2009/05/29/4509.aspx</feedburner:origLink></item><item><title>SEF-2009 Презентации</title><link>http://feedproxy.google.com/~r/xor/~3/yms1uvmzOTQ/sef2009-slides.aspx</link><pubDate>Wed, 27 May 2009 07:09:00 GMT</pubDate><guid isPermaLink="false">2d7b5c81-17d2-487b-a0e9-0530898b531a:4446</guid><dc:creator>Andrew Mayorov</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.byte-force.com/xor/rsscomments.aspx?PostID=4446</wfw:commentRss><wfw:comment>http://blogs.byte-force.com/xor/commentapi.aspx?PostID=4446</wfw:comment><comments>http://blogs.byte-force.com/xor/archive/2009/05/27/sef2009-slides.aspx#comments</comments><description>&lt;p&gt;Наконец-то, приехали с SEF-2009. Ехали довольно долго, но про это я чуть попозже напишу. И про саму конференцию тоже. А пока выкладываю слайды. На сайте конференции все выложено одним архивом. Неудобно как-то.&lt;/p&gt;
&lt;h2&gt;&lt;a style="margin:12px 0px 3px;display:block;font:14px helvetica,arial,sans-serif;text-decoration:underline;" title="Построение индекса по иерархии записей в реляционной БД" href="http://www.slideshare.net/xorets/ss-1493870?type=presentation"&gt;Построение индекса по иерархии записей в реляционной БД&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;

&lt;object style="margin:0px;" width="425" height="355"&gt;
&lt;param name="movie" /&gt;
&lt;param name="allowFullScreen" /&gt;
&lt;param name="allowScriptAccess" /&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=amayorovhindex-090527015412-phpapp01&amp;amp;stripped_title=ss-1493870" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;h2&gt;&lt;a style="margin:12px 0px 3px;display:block;font:14px helvetica,arial,sans-serif;text-decoration:underline;" title="ObjectXPathNavigator - как и зачем?" href="http://www.slideshare.net/xorets/objectxpathnavigator?type=powerpoint"&gt;ObjectXPathNavigator - как и зачем?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;

&lt;object style="margin:0px;" width="425" height="355"&gt;
&lt;param name="movie" /&gt;
&lt;param name="allowFullScreen" /&gt;
&lt;param name="allowScriptAccess" /&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=amayorovobjectxpathnavigator-090527015517-phpapp01&amp;amp;stripped_title=objectxpathnavigator" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.byte-force.com/aggbug.aspx?PostID=4446" width="1" height="1"&gt;</description><category domain="http://blogs.byte-force.com/xor/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.byte-force.com/xor/archive/tags/ObjectXPathNavigator/default.aspx">ObjectXPathNavigator</category><category domain="http://blogs.byte-force.com/xor/archive/tags/SEF/default.aspx">SEF</category><feedburner:origLink>http://blogs.byte-force.com/xor/archive/2009/05/27/sef2009-slides.aspx</feedburner:origLink></item><item><title>Про выбор города на сайтах</title><link>http://feedproxy.google.com/~r/xor/~3/D-w0RhPmzdE/city-selector-on-large-sites.aspx</link><pubDate>Thu, 14 May 2009 10:12:28 GMT</pubDate><guid isPermaLink="false">2d7b5c81-17d2-487b-a0e9-0530898b531a:3942</guid><dc:creator>Andrew Mayorov</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://blogs.byte-force.com/xor/rsscomments.aspx?PostID=3942</wfw:commentRss><wfw:comment>http://blogs.byte-force.com/xor/commentapi.aspx?PostID=3942</wfw:comment><comments>http://blogs.byte-force.com/xor/archive/2009/05/14/city-selector-on-large-sites.aspx#comments</comments><description>&lt;p&gt;Сайты крупных федеральных компаний иногда бесят. Прихожу и хочу найти местный филиал. Выбираю город - Ярославль - но на сайте ничего не меняется. Куда звонить? Непонятно. Иногда удается найти телефон где-то там в списке филиалов, а иногда и вовсе нет его. Только единый номер колл-центра. А зачем я тогда город выбирал?&lt;/p&gt;  &lt;p&gt;Сегодня вообще хит был. Нужна страховка на машину (грин-карта, &lt;a href="http://blogs.byte-force.com/xor/archive/2009/04/28/3655.aspx"&gt;на конференцию SEF-2009 ехать&lt;/a&gt;). Покопавшись в рекламном мусоре в голове, нашел сайт «Росно». Смотрю, есть выбор Ярославля. Хорошо, выбрал. Дальше иду. Есть интернет-магазин, где как раз грин-карту могут продать. Отлично! Заполняю кучу полей, дохожу до конца. В конце оказывается, что получить полис можно только в московских отделениях! Что, про это нельзя было в самом начале процесса написать? В итоге время потрачено, ничего не сделано. В Росно я, конечно, не пойду уже.&lt;/p&gt;  &lt;p&gt;Мораль такая. Если у вас крупная компания с большой филиальной сетью, то:&lt;/p&gt;  &lt;ol&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;С этим москвоцентризмом надо заканчивать.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.byte-force.com/aggbug.aspx?PostID=3942" width="1" height="1"&gt;</description><category domain="http://blogs.byte-force.com/xor/archive/tags/Russian/default.aspx">Russian</category><category domain="http://blogs.byte-force.com/xor/archive/tags/web+development/default.aspx">web development</category><feedburner:origLink>http://blogs.byte-force.com/xor/archive/2009/05/14/city-selector-on-large-sites.aspx</feedburner:origLink></item><item><title>Корпоративный веб-сайт на 100%</title><link>http://feedproxy.google.com/~r/xor/~3/NWjFJ29A_u8/corporate-site-by-100-percents.aspx</link><pubDate>Mon, 04 May 2009 08:19:00 GMT</pubDate><guid isPermaLink="false">2d7b5c81-17d2-487b-a0e9-0530898b531a:3773</guid><dc:creator>Andrew Mayorov</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.byte-force.com/xor/rsscomments.aspx?PostID=3773</wfw:commentRss><wfw:comment>http://blogs.byte-force.com/xor/commentapi.aspx?PostID=3773</wfw:comment><comments>http://blogs.byte-force.com/xor/archive/2009/05/04/corporate-site-by-100-percents.aspx#comments</comments><description>&lt;p&gt;Прочитал книгу Романа Овчинникова и Сергея Сухова &lt;a target="_blank" href="http://www.webdevelopment.ru"&gt;&amp;laquo;Корпоративный веб-сайт на 100%&amp;raquo;&lt;/a&gt;, любезно подаренную мне Сергеем. Впечатления двойственные. Для специалиста по разработке сайтов, книга особого интереса не представляет. Нам все это так хорошо знакомо, что уже кажется очевидным. &lt;/p&gt;
&lt;p&gt;С другой стороны, был бы очень рад, если бы эту книгу прочитали клиенты. Им очень полезно будет посмотреть на всю картину в целом. С высоты птичьего полета, так сказать. Сразу станет понятно, что удовлетворить все начальство цветами кнопочек на сайте &amp;ndash; это далеко не самое главное. Ну или уж точно, это даже не полдела. &lt;/p&gt;
&lt;p&gt;Так что прочитайте книгу, поймите, что тут еще пахать и пахать, и давайте работать. &lt;/p&gt;
&lt;p&gt;Пара вещей, которые не понравились:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Декларируется, что в книга построена в виде чеклиста (списка проверки). Дескать, читаешь пункты, отмечаешь галочками проверенные. Но по факту получается, что настоящих списков для проверки тут не так и много. Зато любые перечисления снабжены галочками. Не очень убедительно.&lt;/li&gt;
&lt;li&gt;Раздражает слово &amp;laquo;клиент&amp;raquo;, написанное с большой буквы. В книге повсеместно &amp;mdash; &amp;laquo;Клиент&amp;raquo;. К чему это вот показное подобострастие? Даже если в Индивиде такие внутренние правила, не нужно было их переносить в книгу. Нет в русском языке такой традиции. &lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.byte-force.com/aggbug.aspx?PostID=3773" width="1" height="1"&gt;</description><category domain="http://blogs.byte-force.com/xor/archive/tags/Books/default.aspx">Books</category><category domain="http://blogs.byte-force.com/xor/archive/tags/Russian/default.aspx">Russian</category><category domain="http://blogs.byte-force.com/xor/archive/tags/web+development/default.aspx">web development</category><feedburner:origLink>http://blogs.byte-force.com/xor/archive/2009/05/04/corporate-site-by-100-percents.aspx</feedburner:origLink></item><item><title>SDF — это такая CMS</title><link>http://feedproxy.google.com/~r/xor/~3/UxPMM873MYQ/sdf_2D00_is_2D00_a_2D00_cms.aspx</link><pubDate>Wed, 29 Apr 2009 14:56:09 GMT</pubDate><guid isPermaLink="false">2d7b5c81-17d2-487b-a0e9-0530898b531a:3684</guid><dc:creator>Andrew Mayorov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.byte-force.com/xor/rsscomments.aspx?PostID=3684</wfw:commentRss><wfw:comment>http://blogs.byte-force.com/xor/commentapi.aspx?PostID=3684</wfw:comment><comments>http://blogs.byte-force.com/xor/archive/2009/04/29/sdf_2D00_is_2D00_a_2D00_cms.aspx#comments</comments><description>&lt;p&gt;Наша SDF — это, конечно, Content Management System, ибо управляет данными, которые лежат в базе данных, которые сайт показывает у себя на морде. Что сайт показывает? Содержимое, т.е. контент. Так что SDF, управляющий контентом, есть CMS. Правда, в отличие от большинства CMS, это управление контентом, и только контентом. Без оглядки на то, как этот контент выводится на сайт. Выводить можно как угодно, в этом сила (брат). &lt;/p&gt;  &lt;p&gt;И слабость тоже:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Администратор должен хорошо представлять, как из данных образуются страницы. &lt;/li&gt;    &lt;li&gt;Модель зафиксирована, но без набора контроллеров (файлов .sdf) и view (XSLT) конечного сайта не будет. Мы обычно делаем все вручную, на основе старых похожих сайтов. Но мы же умеем, а что будет делать неопытный товарищ? &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Поэтому решили сейчас сделать такой &amp;quot;эталонный сайт&amp;quot;, где будут реализованы типовые паттерны для доставания информации и показа их. Стараемся сделать максимально модульно. Чтобы можно было копировать блоки туда-сюда для получения нужного результата. &lt;/p&gt;  &lt;p&gt;Скажем, хотим приделать возможность комментирования фотографии. Берем &lt;strike&gt;страницу&lt;/strike&gt; контроллер, который эту фотографию показывает и добавляем в него блок для комментариев. Просто инклюдим файл, возможно. Правда, как-то надо будет связать комментарии с идентификатором объекта. Так что просто инклюд может и не получится. Это решаемо. Теперь берем XSLT, который показывает фото, импортируем в него XSLT, которые комментариями заведует. Возможно, добавляем в нужное место вызов шаблона. Все, заработало. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;SDF — это такая CMS. Плюс движок, упрощающий доставание данных из базы и процессинг их XSLT-шаблонами. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.byte-force.com/aggbug.aspx?PostID=3684" width="1" height="1"&gt;</description><category domain="http://blogs.byte-force.com/xor/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.byte-force.com/xor/archive/tags/Russian/default.aspx">Russian</category><category domain="http://blogs.byte-force.com/xor/archive/tags/SDF/default.aspx">SDF</category><feedburner:origLink>http://blogs.byte-force.com/xor/archive/2009/04/29/sdf_2D00_is_2D00_a_2D00_cms.aspx</feedburner:origLink></item><item><title>SEF-2009</title><link>http://feedproxy.google.com/~r/xor/~3/N2GKpLa0mvc/3655.aspx</link><pubDate>Tue, 28 Apr 2009 13:04:17 GMT</pubDate><guid isPermaLink="false">2d7b5c81-17d2-487b-a0e9-0530898b531a:3655</guid><dc:creator>Andrew Mayorov</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.byte-force.com/xor/rsscomments.aspx?PostID=3655</wfw:commentRss><wfw:comment>http://blogs.byte-force.com/xor/commentapi.aspx?PostID=3655</wfw:comment><comments>http://blogs.byte-force.com/xor/archive/2009/04/28/3655.aspx#comments</comments><description>&lt;p&gt;С 19 по 21 мая в Минске будет проходить Software Engineering Forum – SEF-2009. Буду там выступать с двумя докладами:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Построение индекса по иерархии записей в реляционной БД. &lt;/li&gt;    &lt;li&gt;ObjectXPathNavigator – Как и зачем? &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Ничего безумно нового – с этими темами я уже выступал у нас на .NET User Group. Но мужики-то не знают.&lt;/p&gt;  &lt;p&gt;В Минске никогда не были, поэтому будет интересно посмотреть. Сразу же оказалось, что куча друзей тоже в Минске не была, и им тоже интересно посмотреть. Сходу все готовы тоже ехать, правда верится с трудом. Надеюсь, что удастся хоть кого-нибудь с собой прихватить. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.byte-force.com/aggbug.aspx?PostID=3655" width="1" height="1"&gt;</description><category domain="http://blogs.byte-force.com/xor/archive/tags/Russian/default.aspx">Russian</category><category domain="http://blogs.byte-force.com/xor/archive/tags/SEF/default.aspx">SEF</category><feedburner:origLink>http://blogs.byte-force.com/xor/archive/2009/04/28/3655.aspx</feedburner:origLink></item><item><title>Еще немного про «HTML-Wiki»</title><link>http://feedproxy.google.com/~r/xor/~3/TE4OtD7h9PU/little-more-about-html_2D00_wiki.aspx</link><pubDate>Tue, 31 Mar 2009 14:49:00 GMT</pubDate><guid isPermaLink="false">2d7b5c81-17d2-487b-a0e9-0530898b531a:2810</guid><dc:creator>Andrew Mayorov</dc:creator><slash:comments>7</slash:comments><wfw:commentRss>http://blogs.byte-force.com/xor/rsscomments.aspx?PostID=2810</wfw:commentRss><wfw:comment>http://blogs.byte-force.com/xor/commentapi.aspx?PostID=2810</wfw:comment><comments>http://blogs.byte-force.com/xor/archive/2009/03/31/little-more-about-html_2D00_wiki.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.byte-force.com/xor/archive/2008/11/06/2379.aspx" target="_blank"&gt;Мы уже обсуждали&lt;/a&gt;, что же особенно важно в вики. Нельзя сказать, что все пришли к одному мнению, но какие-то общие знаменатели нашли. Один из них &amp;mdash; обязательно нужна история изменений. Чтобы визуально подсвечивались все изменения. Тогда решили, что это довольно сложно сделать для HTML. &lt;/p&gt;
&lt;p&gt;Я внезапно вспомнил, что есть в природе Microsoft XML Diff and Patch (скачать можно &lt;a href="http://msdn.microsoft.com/en-us/xml/bb190622.aspx" target="_blank"&gt;тут&lt;/a&gt;). Это библиотека, которая сравнивает два документа и выдает наружу третий документ, описывающий изменения. Например, на входе мы имеем следующее. &lt;/p&gt;
&lt;p&gt;Документ №1:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  Hello!&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span class="kwrd"&gt;Документ №2:&lt;/span&gt;&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Hello!&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;colspan&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;3&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;То в результате сравнения получится вот что:&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xd:xmldiff&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; ...&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xd:node&lt;/span&gt; &lt;span class="attr"&gt;match&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xd:remove&lt;/span&gt; &lt;span class="attr"&gt;match&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xd:change&lt;/span&gt; &lt;span class="attr"&gt;match&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;h1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xd:add&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Hello!&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xd:add&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xd:change&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xd:node&lt;/span&gt; &lt;span class="attr"&gt;match&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;3&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xd:node&lt;/span&gt; &lt;span class="attr"&gt;match&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xd:add&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt; &lt;span class="attr"&gt;colspan&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;3&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xd:add&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xd:node&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xd:node&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xd:xmldiff&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Суть здесь такая:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Найти первый узел и дальше работать с его содержимым. 
&lt;/li&gt;
&lt;li&gt;Убрать первый узел. Это у нас текст &amp;quot;Hello!&amp;quot;. 
&lt;/li&gt;
&lt;li&gt;У второго поменять имя на &amp;lt;h1&amp;gt; и вставить внутрь текст &amp;quot;Hello!. Понятно, что мыслит он забавно, но ведь логично же. 
&lt;/li&gt;
&lt;li&gt;Теперь найти третий узел (оригинального документа). Это table. Работаем с его содержимым. 
&lt;/li&gt;
&lt;li&gt;Находим первый узел (td) и работаем &lt;b&gt;не с содержимым&lt;/b&gt;. Просто ставим курсор. 
&lt;/li&gt;
&lt;li&gt;Добавляем в курсорную точку &amp;lt;tr&amp;gt; и ее содержимое. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Казалось бы, по такому логу изменений, можно и подсветить что надо, а? Конечно, будут сложности с добавленными и удаленными ячейками. Видимо, алгоритм показа изменений нужно будет отдельно продумывать для разных HTML-элементов. Но вроде не так и сложно?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.byte-force.com/aggbug.aspx?PostID=2810" width="1" height="1"&gt;</description><category domain="http://blogs.byte-force.com/xor/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.byte-force.com/xor/archive/tags/Russian/default.aspx">Russian</category><category domain="http://blogs.byte-force.com/xor/archive/tags/Wiki/default.aspx">Wiki</category><feedburner:origLink>http://blogs.byte-force.com/xor/archive/2009/03/31/little-more-about-html_2D00_wiki.aspx</feedburner:origLink></item><item><title>SuperPreview</title><link>http://feedproxy.google.com/~r/xor/~3/ZBtyEQJ1f24/2800.aspx</link><pubDate>Fri, 20 Mar 2009 16:33:50 GMT</pubDate><guid isPermaLink="false">2d7b5c81-17d2-487b-a0e9-0530898b531a:2800</guid><dc:creator>Andrew Mayorov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.byte-force.com/xor/rsscomments.aspx?PostID=2800</wfw:commentRss><wfw:comment>http://blogs.byte-force.com/xor/commentapi.aspx?PostID=2800</wfw:comment><comments>http://blogs.byte-force.com/xor/archive/2009/03/20/2800.aspx#comments</comments><description>&lt;p&gt;На MIX&amp;#39;09 показали &lt;a href="http://blogs.msdn.com/xweb/archive/2009/03/18/Microsoft-Expression-Web-SuperPreview-for-Windows-Internet-Explorer.aspx" target="_blank"&gt;SuperPreview для Expression Web&lt;/a&gt;. Суть проста — тебе показывают, как твоя страница рендерится в различных браузерах. Можно сравнить варианты слева и справа, а можно наложить один на другой. При этом иметь все-все браузеры вовсе не нужно. Страница засылается на сервер, а оттуда приходят уже отрендеренные картинки. В принципе, такие сервисы уже есть. Например, &lt;a href="http://browsershots.org/" target="_blank"&gt;BrowserShots&lt;/a&gt;. Но тут все красивенько упаковано в специальный интерфейс. Предполжительно удобный.&lt;/p&gt; &lt;p&gt;Бета-версию уже &lt;a href="http://download.microsoft.com/download/5/6/8/568F0D28-0434-4794-B7FC-FB293BCC98FB/SuperPreview_Trial_en.exe" target="_blank"&gt;можно скачать&lt;/a&gt;. Пока позволяют только сравнить твою текущую версию IE с IE6. То есть, видимо, на сервере у них шестой ИЕ и все. &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.istartedsomething.com/20090318/expression-web-superpreview-cross-browser-testing/" target="_blank"&gt;Вот здесь&lt;/a&gt; все расписано подробно, со скриншотами. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.byte-force.com/aggbug.aspx?PostID=2800" width="1" height="1"&gt;</description><category domain="http://blogs.byte-force.com/xor/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.byte-force.com/xor/archive/tags/Russian/default.aspx">Russian</category><category domain="http://blogs.byte-force.com/xor/archive/tags/web+development/default.aspx">web development</category><feedburner:origLink>http://blogs.byte-force.com/xor/archive/2009/03/20/2800.aspx</feedburner:origLink></item><item><title>Анимационная библиотека GX</title><link>http://feedproxy.google.com/~r/xor/~3/09bgIFLIxys/2796.aspx</link><pubDate>Fri, 13 Mar 2009 16:08:10 GMT</pubDate><guid isPermaLink="false">2d7b5c81-17d2-487b-a0e9-0530898b531a:2796</guid><dc:creator>Andrew Mayorov</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.byte-force.com/xor/rsscomments.aspx?PostID=2796</wfw:commentRss><wfw:comment>http://blogs.byte-force.com/xor/commentapi.aspx?PostID=2796</wfw:comment><comments>http://blogs.byte-force.com/xor/archive/2009/03/13/2796.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://gx.riccardodegni.net/" target="_blank"&gt;GX&lt;/a&gt; — библиотека для анимирования CSS-свойств объектов. Работает поверх jQuery, что приятно. Автор — Riccardo Degni — раньше уже делал что-то подобное для MooTools. Но мы же мутулзы не используем. Так что эта может быть полезна. &lt;/p&gt; &lt;p&gt;Примеры использования:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;// simple animation&lt;/span&gt;
$(&lt;span class="str"&gt;&amp;#39;element&amp;#39;&lt;/span&gt;).gx( {&lt;span class="str"&gt;&amp;#39;width&amp;#39;&lt;/span&gt;:&lt;span class="str"&gt;&amp;#39;+=200px&amp;#39;&lt;/span&gt;, &lt;span class="str"&gt;&amp;#39;height&amp;#39;&lt;/span&gt;:&lt;span class="str"&gt;&amp;#39;4em&amp;#39;&lt;/span&gt;, &lt;span class="str"&gt;&amp;#39;opacity&amp;#39;&lt;/span&gt;:0.4, &lt;span class="str"&gt;&amp;#39;color&amp;#39;&lt;/span&gt;:&lt;span class="str"&gt;&amp;#39;#ff0&amp;#39;&lt;/span&gt;}, 4000);
     
&lt;span class="rem"&gt;// queue animations&lt;/span&gt;
$(&lt;span class="str"&gt;&amp;#39;element&amp;#39;&lt;/span&gt;).gx({width: 0}, 200)
            .gx({width: 200}, 4000)
            .gx({width: 0}, &lt;span class="str"&gt;&amp;#39;verySlow&amp;#39;&lt;/span&gt;)
            .gx({width: 100}, &lt;span class="str"&gt;&amp;#39;slow&amp;#39;&lt;/span&gt;);
&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.byte-force.com/aggbug.aspx?PostID=2796" width="1" height="1"&gt;</description><category domain="http://blogs.byte-force.com/xor/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.byte-force.com/xor/archive/tags/Russian/default.aspx">Russian</category><category domain="http://blogs.byte-force.com/xor/archive/tags/jQuery/default.aspx">jQuery</category><feedburner:origLink>http://blogs.byte-force.com/xor/archive/2009/03/13/2796.aspx</feedburner:origLink></item><item><title>Рисуем треугольнички в CSS</title><link>http://feedproxy.google.com/~r/xor/~3/7oZUyrC5h9Q/2779.aspx</link><pubDate>Thu, 05 Mar 2009 10:10:14 GMT</pubDate><guid isPermaLink="false">2d7b5c81-17d2-487b-a0e9-0530898b531a:2779</guid><dc:creator>Andrew Mayorov</dc:creator><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.byte-force.com/xor/rsscomments.aspx?PostID=2779</wfw:commentRss><wfw:comment>http://blogs.byte-force.com/xor/commentapi.aspx?PostID=2779</wfw:comment><comments>http://blogs.byte-force.com/xor/archive/2009/03/05/2779.aspx#comments</comments><description>&lt;p&gt;Треугольнички и трапеции, оказывается, можно рисовать при помощи одного лишь CSS (и HTML, конечно). Как это можно применить на практике &lt;a href="http://www.filamentgroup.com/lab/image_free_css_tooltip_pointers_a_use_for_polygonal_css/" target="_blank"&gt;рассказывают нам&lt;/a&gt; ребята, занимающиеся jQuery UI. &lt;/p&gt; &lt;p&gt;Идея очень проста, но в голову раньше не приходила. Если у блочного элемента широкий бордер, то в месте соединения левого, скажем, и верхнего бордера браузер рисует диагональную линию. Ну это понятно — так красивее получается. И вот теперь если левую границу сделать прозрачной, то получится, что виден только верхний бордер, срезанный слева. Если сделать прозрачными и правый с нижним, то получится трапеция или треугольник (в зависимости от ширины блока). &lt;/p&gt; &lt;p&gt;Из вот такой вот кода: &lt;/p&gt;&lt;pre class="csharpcode"&gt;div {
    width:0; 
    height:0; 
    border-left: 20px solid transparent; 
    border-right: 20px solid transparent;
    border-top: 30px solid red;
    border-bottom: 0;
}&lt;/pre&gt;
&lt;p&gt;Получается вот такой треугольник:&lt;/p&gt;
&lt;p&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="46" alt="image" src="http://blogs.byte-force.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/xor/image_5F00_3.png" width="55" border="0" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.byte-force.com/aggbug.aspx?PostID=2779" width="1" height="1"&gt;</description><category domain="http://blogs.byte-force.com/xor/archive/tags/Russian/default.aspx">Russian</category><category domain="http://blogs.byte-force.com/xor/archive/tags/web+development/default.aspx">web development</category><feedburner:origLink>http://blogs.byte-force.com/xor/archive/2009/03/05/2779.aspx</feedburner:origLink></item><item><title>Плохая новость</title><link>http://feedproxy.google.com/~r/xor/~3/Mz6KdVY52lA/2772.aspx</link><pubDate>Sat, 28 Feb 2009 15:28:00 GMT</pubDate><guid isPermaLink="false">2d7b5c81-17d2-487b-a0e9-0530898b531a:2772</guid><dc:creator>Andrew Mayorov</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;&lt;img style="border-right:0px;border-top:0px;margin:0px 15px 0px 0px;border-left:0px;border-bottom:0px;" alt="Mayorov_v_v" src="http://blogs.byte-force.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/xor/Mayorov_5F00_v_5F00_v_5F00_3.jpg" align="left" border="0" width="138" height="200" /&gt; Сегодня, 28 февраля 2009 года умер мой папа &amp;mdash; Вячеслав Владимирович Майоров &amp;mdash; доктор наук, профессор, заведующий кафедрой компьютерных сетей ЯрГУ. Прощание состоится в понедельник, второго марта в 11 часов в ярославском Доме Офицеров. Приходите.&lt;/p&gt;
&lt;p&gt;Не дожил до весны всего одного дня...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.byte-force.com/aggbug.aspx?PostID=2772" width="1" height="1"&gt;</description><category domain="http://blogs.byte-force.com/xor/archive/tags/Russian/default.aspx">Russian</category><category domain="http://blogs.byte-force.com/xor/archive/tags/_1B04380447043D043E043504_/default.aspx">Личное</category><feedburner:origLink>http://blogs.byte-force.com/xor/archive/2009/02/28/2772.aspx</feedburner:origLink></item><item><title>Загрузчиков JS все прибывает</title><link>http://feedproxy.google.com/~r/xor/~3/IvZVYRtJAjI/2768.aspx</link><pubDate>Fri, 27 Feb 2009 17:39:01 GMT</pubDate><guid isPermaLink="false">2d7b5c81-17d2-487b-a0e9-0530898b531a:2768</guid><dc:creator>Andrew Mayorov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.byte-force.com/xor/rsscomments.aspx?PostID=2768</wfw:commentRss><wfw:comment>http://blogs.byte-force.com/xor/commentapi.aspx?PostID=2768</wfw:comment><comments>http://blogs.byte-force.com/xor/archive/2009/02/27/2768.aspx#comments</comments><description>&lt;p&gt;Довольно давно я писал про &lt;a href="http://blogs.byte-force.com/xor/archive/2008/04/16/1758.aspx" target="_blank"&gt;«Using» для яваскрипта&lt;/a&gt;. С тех пор мы успели сделать свой продвинутый загрузчик JavaScript по требованию, который умеет подгружать зависимости (хотя и не так, как писалось &lt;a href="http://blogs.byte-force.com/xor/archive/2008/04/25/1782.aspx" target="_blank"&gt;тут&lt;/a&gt;). В отличие от большинства загрузчиков, у нас нет хитрой системы именования модулей. Модуль (т.е. js-файл) идентифицируется просто своим URL. &lt;/p&gt; &lt;p&gt;Пример описания модуля:&lt;/p&gt; &lt;blockquote&gt;&lt;pre class="csharpcode"&gt;SDF.Package({
    name: &lt;span class="str"&gt;&amp;quot;/cpanel/m/articles/EditArticleDialog.js&amp;quot;&lt;/span&gt;,
    styles: [
        &lt;span class="str"&gt;&amp;quot;/lib/ext_2.2/resources/css/ext-all.css&amp;quot;&lt;/span&gt;,
        &lt;span class="str"&gt;&amp;quot;/cpanel/css/common.css&amp;quot;&lt;/span&gt;
    ],
    scripts: [
        &lt;span class="str"&gt;&amp;quot;/cpanel/c/Ext.ux.TinyMCE.js&amp;quot;&lt;/span&gt;,
        &lt;span class="str"&gt;&amp;quot;/cpanel/c/objpicker.js&amp;quot;&lt;/span&gt;,
        &lt;span class="str"&gt;&amp;quot;/cpanel/c/controls.js&amp;quot;&lt;/span&gt;,
        &lt;span class="str"&gt;&amp;quot;/cpanel/c/ObjectEditorDialogBase.js&amp;quot;&lt;/span&gt;,
        &lt;span class="str"&gt;&amp;quot;/cpanel/m/articles/ArticleJS.asmx/js&amp;quot;&lt;/span&gt;,
        &lt;span class="str"&gt;&amp;quot;/cpanel/c/fileman.js&amp;quot;&lt;/span&gt;
    ],
    strings: [
          &lt;span class="str"&gt;&amp;quot;SDF.Articles&amp;quot;&lt;/span&gt;
    ]
},
&lt;span class="kwrd"&gt;function&lt;/span&gt;(){
  &lt;span class="rem"&gt;// Package body&lt;/span&gt;
  ...&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Здесь мы видим имя модуля (идентично его URL, необходимо для функционирования), нужные стили, скрипты и строки локализации. Тело модуля исполнится только тогда, когда все необходимое будет загружено. Если среди нужных скриптов встречаются такие же «пэкеджи» с зависимостями, то сначала будут загружены их зависимости, потом запущены сами нужные пэкеджи, и потом уже только сработает текущий. &lt;/p&gt;
&lt;p&gt;Кстати, пэкеджи можно грузить как через SDF.Using(), так и просто вставив тэг &amp;lt;script&amp;gt; на страницу. Все отработает одинаково.&lt;/p&gt;
&lt;p&gt;Штуку эту писали долго, долго отлаживали. Сейчас работает как надо. И что интересно: &lt;a href="http://docs.jquery.com/JQuery_1.4_Roadmap#Core" target="_blank"&gt;в планах на jQuery 1.4&lt;/a&gt; заявлена возможность загрузки скриптов по требованию. Вроде как, это базируется на проекте &lt;a href="http://code.google.com/p/ajaxsoft/wiki/xLazyLoader" target="_blank"&gt;xLazyLoader&lt;/a&gt;, в котором есть вот такие примеры кода:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="csharpcode"&gt;$.xLazyLoader({
     js: &lt;span class="str"&gt;&amp;#39;jquery.ui.all.js&amp;#39;&lt;/span&gt;,
     css: &lt;span class="str"&gt;&amp;#39;ui.allplugins.css&amp;#39;&lt;/span&gt;,
     image: &lt;span class="str"&gt;&amp;#39;your_image.jpg&amp;#39;&lt;/span&gt;,
     load: &lt;span class="kwrd"&gt;function&lt;/span&gt;(){
         alert(&lt;span class="str"&gt;&amp;#39;All files are loaded&amp;#39;&lt;/span&gt;);
     }
 });&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Почти совсем одинаково это у нас получилось. По крайней мере в том, что касается использования. Выходит, надо было просто подождать полгодика? :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.byte-force.com/aggbug.aspx?PostID=2768" width="1" height="1"&gt;</description><category domain="http://blogs.byte-force.com/xor/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.byte-force.com/xor/archive/tags/Russian/default.aspx">Russian</category><category domain="http://blogs.byte-force.com/xor/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.byte-force.com/xor/archive/tags/jQuery/default.aspx">jQuery</category><category domain="http://blogs.byte-force.com/xor/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.byte-force.com/xor/archive/tags/web+development/default.aspx">web development</category><category domain="http://blogs.byte-force.com/xor/archive/tags/using.js/default.aspx">using.js</category><feedburner:origLink>http://blogs.byte-force.com/xor/archive/2009/02/27/2768.aspx</feedburner:origLink></item></channel></rss>
