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

<channel>
	<title>Блог непонятно кого &#187; Веб-разработка</title>
	<atom:link href="http://mr-ozio.ru/c/webdev/feed" rel="self" type="application/rss+xml" />
	<link>http://mr-ozio.ru</link>
	<description>Привет! Меня зовут Николай Соловьёв, этот блог я создал чтобы делится своим опытом и просто рассказывать о своих открытиях в разных областях своих увлечений.</description>
	<lastBuildDate>Tue, 23 Aug 2011 23:07:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>IE Conditional comments</title>
		<link>http://mr-ozio.ru/379</link>
		<comments>http://mr-ozio.ru/379#comments</comments>
		<pubDate>Tue, 23 Aug 2011 23:07:54 +0000</pubDate>
		<dc:creator>mr.ozio</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[Browser Compatibility]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[вёрстка]]></category>
		<category><![CDATA[хаки]]></category>

		<guid isPermaLink="false">http://mr-ozio.ru/?p=379</guid>
		<description><![CDATA[Просто положу здесь эту ссылку. Не так часто требуется, но когда требуется &#8212; всегда заминка. Надоело :) &#60;!--[if IE]&#62; According to the conditional comment this is Internet Explorer&#60;br /&#62; &#60;![endif]--&#62; &#60;!--[if IE 5]&#62; According to the conditional comment this is Internet Explorer 5&#60;br /&#62; &#60;![endif]--&#62; &#60;!--[if IE 5.0]&#62; According to the conditional comment this is [...]]]></description>
			<content:encoded><![CDATA[<p>Просто положу здесь эту <a href="http://www.quirksmode.org/css/condcom.html">ссылку</a>. Не так часто требуется, но когда требуется &#8212; всегда заминка. Надоело :)</p>
<p><code>&lt;!--[if IE]&gt;<br />
According to the conditional comment this is Internet Explorer&lt;br /&gt;<br />
&lt;![endif]--&gt;<br />
&lt;!--[if IE 5]&gt;<br />
According to the conditional comment this is Internet Explorer 5&lt;br /&gt;<br />
&lt;![endif]--&gt;<br />
&lt;!--[if IE 5.0]&gt;<br />
According to the conditional comment this is Internet Explorer 5.0&lt;br /&gt;<br />
&lt;![endif]--&gt;<br />
&lt;!--[if IE 5.5]&gt;<br />
According to the conditional comment this is Internet Explorer 5.5&lt;br /&gt;<br />
&lt;![endif]--&gt;<br />
&lt;!--[if IE 6]&gt;<br />
According to the conditional comment this is Internet Explorer 6&lt;br /&gt;<br />
&lt;![endif]--&gt;<br />
&lt;!--[if IE 7]&gt;<br />
According to the conditional comment this is Internet Explorer 7&lt;br /&gt;<br />
&lt;![endif]--&gt;<br />
&lt;!--[if gte IE 5]&gt;<br />
According to the conditional comment this is Internet Explorer 5 and up&lt;br /&gt;<br />
&lt;![endif]--&gt;<br />
&lt;!--[if lt IE 6]&gt;<br />
According to the conditional comment this is Internet Explorer lower than 6&lt;br /&gt;<br />
&lt;![endif]--&gt;<br />
&lt;!--[if lte IE 5.5]&gt;<br />
According to the conditional comment this is Internet Explorer lower or equal to 5.5&lt;br /&gt;<br />
&lt;![endif]--&gt;<br />
&lt;!--[if gt IE 6]&gt;<br />
According to the conditional comment this is Internet Explorer greater than 6&lt;br /&gt;<br />
&lt;![endif]--&gt;<br />
</code></p>
<p>Всем спасибо.</p>
]]></content:encoded>
			<wfw:commentRss>http://mr-ozio.ru/379/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Функции для работы с Cookie на javascript</title>
		<link>http://mr-ozio.ru/361</link>
		<comments>http://mr-ozio.ru/361#comments</comments>
		<pubDate>Mon, 08 Aug 2011 09:53:30 +0000</pubDate>
		<dc:creator>mr.ozio</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://mr-ozio.ru/?p=361</guid>
		<description><![CDATA[Себе на заметку, чтоб было откуда их взять по-быстрому. function getCookie( name ) { var start = document.cookie.indexOf( name + "=" ); var len = start + name.length + 1; if ( ( !start ) &#038;&#038; ( name != document.cookie.substring( 0, name.length ) ) ) { return null; } if ( start == -1 ) [...]]]></description>
			<content:encoded><![CDATA[<p>Себе на заметку, чтоб было откуда их взять по-быстрому.</p>
<p><code>function <strong>getCookie</strong>( name ) {<br />
    var start = document.cookie.indexOf( name + "=" );<br />
    var len = start + name.length + 1;<br />
    if ( ( !start ) &#038;&#038; ( name != document.cookie.substring( 0, name.length ) ) ) {<br />
        return null;<br />
    }<br />
    if ( start == -1 ) return null;<br />
    var end = document.cookie.indexOf( ';', len );<br />
    if ( end == -1 ) end = document.cookie.length;<br />
    return unescape( document.cookie.substring( len, end ) );<br />
}</code></p>
<p><code>function <strong>setCookie</strong>( name, value, expires, path, domain, secure ) {<br />
    var today = new Date();<br />
    today.setTime( today.getTime() );<br />
    if ( expires ) {<br />
        expires = expires * 1000 * 60 * 60 * 24;<br />
    }<br />
    var expires_date = new Date( today.getTime() + (expires) );<br />
    document.cookie = name+'='+escape( value ) +<br />
        ( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()<br />
        ( ( path ) ? ';path=' + path : '' ) +<br />
        ( ( domain ) ? ';domain=' + domain : '' ) +<br />
        ( ( secure ) ? ';secure' : '' );<br />
}</code></p>
<p><code>function <strong>deleteCookie</strong>( name, path, domain ) {<br />
    if ( getCookie( name ) ) document.cookie = name + '=' +<br />
            ( ( path ) ? ';path=' + path : '') +<br />
            ( ( domain ) ? ';domain=' + domain : '' ) +<br />
            ';expires=Thu, 01-Jan-1970 00:00:01 GMT';<br />
}</code></p>
]]></content:encoded>
			<wfw:commentRss>http://mr-ozio.ru/361/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Клонирование объекта в javascript</title>
		<link>http://mr-ozio.ru/352</link>
		<comments>http://mr-ozio.ru/352#comments</comments>
		<pubDate>Mon, 01 Aug 2011 09:22:27 +0000</pubDate>
		<dc:creator>mr.ozio</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[clone]]></category>
		<category><![CDATA[eval]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[stringify]]></category>
		<category><![CDATA[uneval]]></category>

		<guid isPermaLink="false">http://mr-ozio.ru/?p=352</guid>
		<description><![CDATA[Разрабатываю тут на работе шаблонизатор (эпопея, реально) на js и в одной из рекурсий столкнулся с проблемой &#8212; создаваемый объект не является совершенно новым, а лишь является ссылкой оригинального, что приводило к некоторым косякам. var obj = { a: 1 }; var obj1 = obj; obj1.a = 0; // при этом obj.a также становится равным [...]]]></description>
			<content:encoded><![CDATA[<p>Разрабатываю тут на работе шаблонизатор (эпопея, реально) на js и в одной из рекурсий столкнулся с проблемой &#8212; создаваемый объект не является совершенно новым, а лишь является ссылкой оригинального, что приводило к некоторым косякам.</p>
<p><code>var obj = { a: 1 };<br />
var obj1 = obj;<br />
obj1.a = 0; // при этом obj.a также становится равным 0. </code></p>
<p>Соответственно потребовалось нечто, что смогло бы создавать копию объекта без ссылки на оригинальный. После <a href="http://www.thespanner.co.uk/2008/04/10/javascript-cloning-objects/" target="_blank">недолгого поиска</a> было найдено решение &#8212; волшебная функция uneval (обратное от функции <a href="http://javascript.ru/eval" target="_blank">eval</a>). Выглядит оно потрясающе элегантно:</p>
<p><code>function clone(o) {<br />
    return eval(uneval(o));<br />
}</code></p>
<p>Радость была бы абсолютной не узнай я, что функция uneval не работает не только в IE, но и в Опере, и даже в WebKit. Печаль была безгранична. В замен этому решению было придумано собственное, не сильно сложнее:</p>
<p><code>function clone(o) {<br />
	var obj = {};<br />
	for(var i in o){<br />
		obj[i] = o[i];<br />
	}<br />
	return obj;<br />
}</code></p>
<p>Очевидно &#8212; немного криво, поскольку не учитывается тип входящего объекта (вдруг это массив или строка?). Протестил и опечалился, в рекурсии оно почему-то опять портит воздух. Даже после всего этого я не стал унывать и спустя выходные решение нашлось внезапно в начале рабочего дня:</p>
<p><code>function clone(o) {<br />
	return eval("("+JSON.stringify(o)+")");<br />
}</code></p>
<p>Честно говоря плохо понимаю, что это за глобальный объект JSON и откуда он взялся (вероятно какая-то дыра в моём убогом самообразовании), но его замечательный метод stringify выполняет примерно то же, что и print_r в php. При этом этот способ вполне кроссбраузерен &#8212; протестил в IE9, FF5, Opera 11 и Chrome 11 (более ранние версии проверять лень). Придётся убить заготовку поста про мой самописный скрипт print_r для js.</p>
<p>P.S. Коллега подсказал функцию которую он использовал сам (с учётом всякого), может пригодиться:</p>
<p><code>function clone(obj)<br />
{<br />
    if(obj == null || typeof(obj) != 'object')<br />
    {<br />
        return obj;<br />
    }<br />
    var temp = {};<br />
    for(var key in obj)<br />
    {<br />
        temp[key] = clone(obj[key]);<br />
    }<br />
    return temp;<br />
}</code></p>
]]></content:encoded>
			<wfw:commentRss>http://mr-ozio.ru/352/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>position:fixed в ie6</title>
		<link>http://mr-ozio.ru/341</link>
		<comments>http://mr-ozio.ru/341#comments</comments>
		<pubDate>Wed, 19 Jan 2011 07:51:26 +0000</pubDate>
		<dc:creator>mr.ozio</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[опыт]]></category>
		<category><![CDATA[хак]]></category>

		<guid isPermaLink="false">http://mr-ozio.ru/?p=341</guid>
		<description><![CDATA[Как известно, ie6 не поддерживает css-правило position: fixed, для иммитации существует вот такой несложный хак: #some { &#160;&#160;&#160;&#160;position: fixed; &#160;&#160;&#160;&#160;top: 10px; &#160;&#160;&#160;&#160;left: 10px; &#160;&#160;&#160;&#160;width: 100px; &#160;&#160;&#160;&#160;height: 100px; } /* эмуляция position: fixed */ * html #some { &#160;&#160;&#160;&#160;position: absolute; &#160;&#160;&#160;&#160;top: expression(document.getElementsByTagName( 'body' )[0].scrollTop + "px"); &#160;&#160;&#160;&#160;left: expression(document.getElementsByTagName( 'body' )[0].scrollLeft + "px"); &#160;&#160;&#160;&#160;margin-left: 10px; /* эмуляция [...]]]></description>
			<content:encoded><![CDATA[<p>Как известно, ie6 не поддерживает css-правило position: fixed, для иммитации существует вот такой несложный хак:</p>
<p><code>#some {<br />
&nbsp;&nbsp;&nbsp;&nbsp;position: fixed;<br />
&nbsp;&nbsp;&nbsp;&nbsp;top: 10px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;left: 10px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;width: 100px;<br />
&nbsp;&nbsp;&nbsp;&nbsp;height: 100px;<br />
}<br />
/* эмуляция position: fixed */<br />
* html #some {<br />
&nbsp;&nbsp;&nbsp;&nbsp;position: absolute;<br />
&nbsp;&nbsp;&nbsp;&nbsp;top: expression(document.getElementsByTagName( 'body' )[0].scrollTop + "px");<br />
&nbsp;&nbsp;&nbsp;&nbsp;left: expression(document.getElementsByTagName( 'body' )[0].scrollLeft + "px");<br />
&nbsp;&nbsp;&nbsp;&nbsp;margin-left: 10px; /* эмуляция top: 10px; */<br />
&nbsp;&nbsp;&nbsp;&nbsp;margin-top: 10px; /* эмуляция left: 10px; */<br />
}</code></p>
<p>У этого хака известен один досадный баг &#8212; из-за постоянного и очень неспешного пересчёта координат див будет постоянно дёргаться. Решается эта проблема полным сносом доктайпа со страницы. В некоторых случаях, кстати, этот костыль вообще не работает при наличии доктайпа на странице. Падений браузера и прочих критических проблем при использовании костыля не замечено.</p>
<p>Присутствует также ещё один минус &#8212; свойства bottom и right реализовать получится только дополнительным js-кодом. Для проектов использую jQuery, по-этому для имитации, например, <code>bottom: 10px;</code> вполне прокатывает конструкция <code>$("#some").css("margin-top", ($(window).height() - 10) + "px");</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://mr-ozio.ru/341/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Определяем iPad с помощью JavaScript</title>
		<link>http://mr-ozio.ru/325</link>
		<comments>http://mr-ozio.ru/325#comments</comments>
		<pubDate>Thu, 13 Jan 2011 15:27:42 +0000</pubDate>
		<dc:creator>mr.ozio</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[user-agent]]></category>

		<guid isPermaLink="false">http://mr-ozio.ru/?p=325</guid>
		<description><![CDATA[Поскольку моя работа в данный момент связана с проектами для московского правительства, то вполне очевидно, что без особенной поддержки таких устройств как iPad не обойтись. Нанотехнологии, инновации, Россия вперёд! Все дела, в общем. У нас на работе проблема обнаружения iPad до недавнего времени решалась грустным костылём &#8212; if($.browser.safari). Не дело. Разумеется самый простой и адекватный [...]]]></description>
			<content:encoded><![CDATA[<p>Поскольку моя работа в данный момент связана с проектами для московского правительства, то вполне очевидно, что без особенной поддержки таких устройств как iPad не обойтись. Нанотехнологии, инновации, Россия вперёд! Все дела, в общем. У нас на работе проблема обнаружения iPad до недавнего времени решалась грустным костылём &#8212; <code>if($.browser.safari)</code>. Не дело.</p>
<p>Разумеется самый простой и адекватный способ &#8212; распарсить строку юзерагента. Выглядит она у iPad примерно так:</p>
<p><code>Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10</code></p>
<p>Для определения же, создаём переменную <code>isiPad</code>:</p>
<p><code>var isiPad = navigator.userAgent.match(/iPad/i) != null;</code></p>
<p>Далее просто используем условие <code>if(isiPad)</code> или <code>if(!isiPad)</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://mr-ozio.ru/325/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Определение наличия тега на странице с помощью jquery</title>
		<link>http://mr-ozio.ru/321</link>
		<comments>http://mr-ozio.ru/321#comments</comments>
		<pubDate>Mon, 20 Dec 2010 09:27:45 +0000</pubDate>
		<dc:creator>mr.ozio</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[решения]]></category>

		<guid isPermaLink="false">http://mr-ozio.ru/?p=321</guid>
		<description><![CDATA[По-скольку логичное с точки зрения кодинга if($("#id")) не катит. Делается так: if($("#id").length). Соответственно с любым другим селектором тоже катит. Спасибо за внимание.]]></description>
			<content:encoded><![CDATA[<p>По-скольку логичное с точки зрения кодинга <code>if($("#id"))</code> не катит. Делается так: <code>if($("#id").length)</code>. Соответственно с любым другим селектором тоже катит.</p>
<p>Спасибо за внимание.</p>
]]></content:encoded>
			<wfw:commentRss>http://mr-ozio.ru/321/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Немного про XSLT-преобразования</title>
		<link>http://mr-ozio.ru/318</link>
		<comments>http://mr-ozio.ru/318#comments</comments>
		<pubDate>Mon, 25 Oct 2010 08:52:17 +0000</pubDate>
		<dc:creator>mr.ozio</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XPath]]></category>
		<category><![CDATA[XSL]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">http://mr-ozio.ru/?p=318</guid>
		<description><![CDATA[По работе последнее время всё чаще приходится решать задачи связанные с XSLT-преобразованиями. Жалко я раньше не знал какая это прекрасная штука. Краткое резюме: XSLT &#8212; часть спецификации XSL, задающая язык преобразований XML-документов. Т.е. при наличии любого внешнего или внутреннего XML-документа (например RSS-потока или ответа какого-нибудь API) мы можем преобразовать его как нам заблагорассудится достаточно простым [...]]]></description>
			<content:encoded><![CDATA[<p>По работе последнее время всё чаще приходится решать задачи связанные с XSLT-преобразованиями. Жалко я раньше не знал какая это прекрасная штука. Краткое резюме:</p>
<p>XSLT &#8212; часть спецификации XSL, задающая язык преобразований XML-документов. Т.е. при наличии любого внешнего или внутреннего XML-документа (например RSS-потока или ответа какого-нибудь API) мы можем преобразовать его как нам заблагорассудится достаточно простым и прозрачным синтаксисом языка XSLT не мучая голову и сервер регулярными выражениями или языковыми функциями.</p>
<p>Простенький пример такого преобразования можно подсмотреть в <a href="http://ru.wikipedia.org/wiki/Xslt#.D0.A2.D1.80.D0.B0.D0.BD.D1.81.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D1.86.D0.B8.D1.8F_.D0.B8.D0.B7_XML_.D0.B2_XHTML">вики</a>.</p>
<p>Само по себе преобразование происходит на клиентской стороне прямо в браузере. Причём все наиболее используемые функции и атрибуты языка поддерживаются всеми, даже <abbr title="тупой осёл">самыми грустными браузерами</abbr>.</p>
<p>Однако, есть и грустная сторона дела &#8212; крайне сложно найти адекватную литературу на русском языке (впрочем, as usual), однако я напрягся и нашел несколько весьма достойных мануалов по теме, ссылками на которые я и хочу с вами поделиться:</p>
<ul>
<li><a href="http://www.zvon.org/xxl/XSLTutorial/Output_rus/contents.htm">По-шаговый учебник XSLT построенный на примерах</a></li>
<li><a href="http://www.zvon.org/xxl/XPathTutorial/General_rus/examples.html">XPath в примерах</a> (внутри XSLT используется другой стандарт адресации по элементам XML-документа &#8212; XPath)</li>
<li><a href="http://msdn.microsoft.com/ru-ru/library/ms256069.aspx">Справочник по XSLT</a> [msdn]</li>
<li><a href="http://msdn.microsoft.com/ru-ru/library/ms256115.aspx">Справочник по XPath</a> [msdn]</li>
</ul>
<p>Также несколько интересных статей, которые помогли разобраться в сути ещё до того как были найдены полноценные справочники:</p>
<ul>
<li><a href="http://habrahabr.ru/blogs/xslt/22236/">Практический XSLT. Использование в качестве шаблонизатора</a></li>
<li><a href="http://habrahabr.ru/blogs/xslt/22339/">Практический XSLT. Использование в качестве шаблонизатора. Часть 2</a></li>
</ul>
<p>Лично для меня эта тема открыла короткий путь для работы с десятком-другим интересных API. Надеюсь и Вам такое случиться. Спасибо за внимание :)</p>
]]></content:encoded>
			<wfw:commentRss>http://mr-ozio.ru/318/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Новое в Dreamweaver CS5</title>
		<link>http://mr-ozio.ru/281</link>
		<comments>http://mr-ozio.ru/281#comments</comments>
		<pubDate>Mon, 19 Apr 2010 08:17:36 +0000</pubDate>
		<dc:creator>mr.ozio</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Dreamweaver]]></category>
		<category><![CDATA[Dreamweaver CS5]]></category>

		<guid isPermaLink="false">http://mr-ozio.ru/?p=281</guid>
		<description><![CDATA[CSS Inspect Рядом с Live View появилась новая кнопочка – CSS Inspect. Это такая функция, которая помогает визуально понять, где какие проблемы в CSS. В основном это связано с параметрами width/height, padding и margin. После запуска функции блоки начинают подсвечиваться при наведении на них курсора, как, например, это сделано в Opera DragonFly или FireBug. Разными [...]]]></description>
			<content:encoded><![CDATA[<h3><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://mr-ozio.ru/wp-content/uploads/2010/04/picture-1-298x300.png" alt="Dreamweaver CS5" title="Dreamweaver CS5" width="298" height="300" class="alignright size-full wp-image-292" />CSS Inspect</h3>
<p>Рядом с Live View появилась новая кнопочка – CSS Inspect. Это такая функция, которая помогает визуально понять, где какие проблемы в CSS. В основном это связано с параметрами width/height, padding и margin. После запуска функции блоки начинают подсвечиваться при наведении на них курсора, как, например, это сделано в Opera DragonFly или FireBug. Разными цветами подсвечиваются внешний и внутренний отступы, так и высота, и ширина блока. Нажав на блок, мы можем отредактировать свойства CSS-селектора и сразу же увидеть изменения.</p>
<h3>Site Setup</h3>
<p>Более удобное окно настроек сайта. На первой странице только лишь название сайта и его папка. Всё остальное убрано во вкладку Advanced settings. </p>
<p>Не сказал бы, что это серьёзное улучшение, но выглядит так много приятней.</p>
<h3>CSS Enable</h3>
<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://mr-ozio.ru/wp-content/uploads/2010/04/inline.jpg" alt="функция Dreamweaver CS5 - CSS Enable" title="CSS Enable" width="177" height="115" class="alignright size-full wp-image-287" />Удобная и приятная функция, которая позволяет одним кликом включить или отключить (закомментировать) какое-либо свойство класса. </p>
<p>В окошке со списком параметров класса, слева от каждого параметра присутствует небольшое пустое пространство, наведя указатель на которое, появляется красненький значок, нажимая на который происходит включение/отключение параметра.</p>
<h3>Live View Navigation</h3>
<p>Теперь стало возможным при использовании функции Live View перемещаться по страницам сайта. Например, исправили мы класс какой, смотрим страницу и радуемся, переходим по ссылке, а там этот класс уже не так красиво смотрится, ибо иные реалии уже :)</p>
<p>Помимо всего прочего с этой функцией появилась ещё и адресная строка, в которой можно открыть вообще любую страницу и изучить её изнутри средствами DW.</p>
<h3><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://mr-ozio.ru/wp-content/uploads/2010/04/inline3.jpg" alt="Adobe BrowserLab" title="Adobe BrowserLab" width="177" height="115" class="alignright size-full wp-image-291" />Adobe BrowserLab</h3>
<p>То, что все так ждали и хотели видеть. То, что уже давно реализовано в Microsoft Expression Web 3 Super Preview. Теперь, помимо живого просмотра страницы через Live View на вебките, появляется возможность посмотреть на то как сайт будет смотреться в других популярных браузерах (правда, почему-то, забыли про Оперу, как всегда), а именно – Chrome 3, FF2+, IE6+ и Safari 3+.</p>
<p>Не без ложки дёгтя, конечно. 1) Функционал в аналоге от Microsoft приятней, хоть и доступен там только IE и FF, впрочем как и удобство использования (на первый взгляд); 2) Эта функция реализована как плагин на Adobe AIR и работает через сервер Adobe Labs. Само собой каждый раз при использовании функции происходит загрузка страниц и много всяких лишних действий, ну и, разумеется &#8212; 3) Для тех пользователей, которые не платили за использование DW, эта функция будет недоступна.</p>
<h3><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://mr-ozio.ru/wp-content/uploads/2010/04/inline1.jpg" alt="функция Dreamweaver CS5 - PHP Hinting" title="PHP Hinting" width="177" height="115" class="alignright size-full wp-image-289" />PHP Hinting</h3>
<p>Теперь при написании PHP-кода DW будет его понимать. Т.е. создав функцию или написав переменную DW, как любой уважающий себя IDE, будет подсказывать не только html-теги и css-свойства. Причём DW стал настолько умён, что подтягивать переменные и функции он будет даже из php-файлов привязанных к странице функцией require.</p>
<p>Также, DW обязуется подсказывать глобальные переменные и встроенные функции PHP, причём даже с описанием из мануала PHP.</p>
<h3><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://mr-ozio.ru/wp-content/uploads/2010/04/inline2.jpg" alt="DW CS5 Site-specific code hinting" title="Site-specific code hinting" width="177" height="115" class="alignright size-full wp-image-290" />Code Hinting</h3>
<p>Добавляет к функционалу PHP Hinting функции и полуглобальные переменные популярных фрэймворков, например, стандартно в DW CS5 вшиты функции Drupal, Joomla и WordPress (нужное выбрать во время редактирования). Включена возможность дать сжевать DW любой другой CMF и тогда DW научится понимать и его сленг.</p>
<h3>Фильтр связанных файлов</h3>
<p>Под открытыми вкладками в DW обычно располагается список файлов связанных с открытым во вкладке (style.css, jquery.js, custom.js, ну и всякое такое) документом.</p>
<p>Чем суровей наша страница, чем больше мы используем сценариев, визуальных эффектов и прочего, тем больше у нас становится связанных файлов. А когда файлов становится больше, чем может поместиться в экране, появляется противная и неудобная стрелка. В компании Adobe очень изящно решили эту задачу – добавили фильтр, указав в котором маску файлов, будут фильтроваться все неподходящие под эту маску файлы. Стандартно присутствуют три маски &#8212; *.html, *.js, *.css.</p>
<h3>Widget Browser</h3>
<p>Как и раньше, для меня остаётся загадкой вопрос – почему Adobe придумала свою собственную Spry, вместо того, чтобы использовать, практически ставшую стандартом, jQuery? Хотя с другой стороны, конечно, они давно уже этим занялись и негоже отступать. Adobe ведь. Ну да пофиг.</p>
<p>Компания Adobe написала целую кучу разных виджетов на своём этом Spry и пустила их в свободный доступ на Adobe Live Labs. Идея вообще очень интересная. С помощью этой функции можно загрузить любой из этих виджетов прямо в DW и встроить в свою страницу. Причём каждый виджет можно полностью настроить под нужды страницы, и даже сохранять настройки как пресеты. Т.е. достаточно сложнй скрипт установится полностью сам и ни разу не придётся лезть в код.</p>
<p>Минус тут, опять же, в том, что функция работает как аддон на Adobe AIR и работает через сервера Adobe, т.е. 1) это невозможность использования на бесплатных версиях; 2) no internet – no work.</p>
<p>Больше ничего серьёзного не наблюдается. Как думаете, стоит такое обновление $199?</p>
]]></content:encoded>
			<wfw:commentRss>http://mr-ozio.ru/281/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сегодня CSS Naked Day 2010!</title>
		<link>http://mr-ozio.ru/278</link>
		<comments>http://mr-ozio.ru/278#comments</comments>
		<pubDate>Fri, 09 Apr 2010 06:47:20 +0000</pubDate>
		<dc:creator>mr.ozio</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[CSS Naked Day]]></category>
		<category><![CDATA[w3c]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://mr-ozio.ru/?p=278</guid>
		<description><![CDATA[CSS Naked Day был учреждён в 2006м году Дастином Диазом, дабы продвигать и популяризировать веб-стандарты. Отключая CSS показать всему миру, что сайт сделан с учётом всех стандартов, обладает семантической вёрсткой и хорошей структурой. Идея мне очень нравится и вы сами можете поглядеть, что блог мой структурирован на ура и я вообще даволен как всё сделал [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mr-ozio.ru/wp-content/uploads/2010/04/naked.gif"><img src="http://mr-ozio.ru/wp-content/uploads/2010/04/naked.gif" alt="CSS Naked Day" title="CSS Naked Day" width="400" height="105" class="alignnone size-full wp-image-279" /></a></p>
<p><a href="http://naked.dustindiaz.com/">CSS Naked Day</a> был учреждён в 2006м году Дастином Диазом, дабы продвигать и популяризировать веб-стандарты. Отключая CSS показать всему миру, что сайт сделан с учётом всех стандартов, обладает семантической вёрсткой и хорошей структурой.</p>
<p>Идея мне очень нравится и вы сами можете поглядеть, что блог мой структурирован на ура и я вообще даволен как всё сделал :)</p>
]]></content:encoded>
			<wfw:commentRss>http://mr-ozio.ru/278/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Валидный счётчик LiveInternet</title>
		<link>http://mr-ozio.ru/263</link>
		<comments>http://mr-ozio.ru/263#comments</comments>
		<pubDate>Mon, 14 Dec 2009 03:36:58 +0000</pubDate>
		<dc:creator>mr.ozio</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[liveinternet]]></category>
		<category><![CDATA[w3c]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://mr-ozio.ru/?p=263</guid>
		<description><![CDATA[В последние годы для русскоговорящих веб-девелоперов стало почти стандартом вешать на свои сайты (помимо дефолтного во всём мире Google Analytics) счётчик LiveInternet. Однажды, я прочитал несколько книг по веб-стандартам и немного спецификации xhtml, после чего, само собой, код стал весьма и весьма валиден. В каждом конкретном случае хотелось, чтобы этот факт подтверждал и тот самый [...]]]></description>
			<content:encoded><![CDATA[<p>В последние годы для русскоговорящих веб-девелоперов стало почти стандартом вешать на свои сайты (помимо дефолтного во всём мире Google Analytics) счётчик LiveInternet.</p>
<p>Однажды, я прочитал несколько книг по веб-стандартам и немного спецификации xhtml, после чего, само собой, код стал весьма и весьма валиден. В каждом конкретном случае хотелось, чтобы этот факт подтверждал и <a href="http://validator.w3.org/">тот самый валидатор</a>, даже не смотря на то, что многие, как и у нас, так и на западе называют его &#171;всего-лишь скриптом&#187;. Разумеется столкнулся я с рядом проблем возникающих от чужого кода (со своим, благо, справился без проблем), одной из главных стала валидация кода счётчика LiveInternet при доктайпе xhtml1.0 transitional. Сначала я пытался отловить проблемы в коде и создать универсальный и валидный код. Из этого ничего не вышло. Однако решение подсказал сам LiveInternet.</p>
<p>При кастомизации кода счётчика необходимо выбрать пункт &#171;отдельный код для логотипа и для счётчика&#187;, а на сайт просто вставляем их друг за другом, или вообще в разных местах. И валидатор счастлив.</p>
<p>Вот он, валидный код счётчика LiveInternet на все времена:</p>
<pre class="brush:plain">&lt;!--LiveInternet counter--&gt;
&lt;script type="text/javascript"&gt;new Image().src = "http://counter.yadro.ru/hit?r" + escape(document.referrer) + ((typeof(screen)=="undefined")?"" : ";s"+screen.width+"*"+screen.height+"*" + (screen.colorDepth?screen.colorDepth:screen.pixelDepth)) + ";u"+escape(document.URL) + ";h"+escape(document.title.substring(0,80)) + ";" +Math.random();&lt;/script&gt;
&lt;!--/LiveInternet--&gt;

&lt;!--LiveInternet logo--&gt;
&lt;a href="http://www.liveinternet.ru/click" target="_blank"&gt;
&lt;img src="http://counter.yadro.ru/logo?38.2" border="0" width="31" height="31" alt="" title="LiveInternet"/&gt;
&lt;/a&gt;
&lt;!--/LiveInternet--&gt;</pre>
<p>Всех с началом новой недели!</p>
]]></content:encoded>
			<wfw:commentRss>http://mr-ozio.ru/263/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

