<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0"
 xmlns:blogChannel="http://backend.userland.com/blogChannelModule"
>

<channel>
<title>&#x412;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430; &#x42D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;!</title>
<link>http://maillist.ru/55140</link>
<description>&#x412; &#x43D;&#x430;&#x448;&#x435;&#x439; &#x440;&#x430;&#x441;&#x44B;&#x43B;&#x43A;&#x435; &#x432;&#x44B; &#x443;&#x437;&#x43D;&#x430;&#x435;&#x442;&#x435; &#x43E; &#x440;&#x430;&#x437;&#x43B;&#x438;&#x447;&#x43D;&#x44B;&#x445; &#x442;&#x43E;&#x43D;&#x43A;&#x43E;&#x441;&#x442;&#x44F;&#x445;, &#x43D;&#x44E;&#x430;&#x43D;&#x441;&#x430;&#x445; &#x438; &#x442;&#x440;&#x44E;&#x43A;&#x430;&#x445; &#x432;&#x435;&#x431;-&#x434;&#x438;&#x437;&#x430;&#x439;&#x43D;&#x430;, &#x432;&#x435;&#x431;-&#x43F;&#x440;&#x43E;&#x433;&#x440;&#x430;&#x43C;&#x43C;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F; &#x438; &#x432;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x438; &#x432; &#x446;&#x435;&#x43B;&#x43E;&#x43C;. &#x41E;&#x445;&#x432;&#x430;&#x442; &#x442;&#x435;&#x43C; &#x43E;&#x447;&#x435;&#x43D;&#x44C; &#x448;&#x438;&#x440;&#x43E;&#x43A; - &#x43E;&#x442; &#x440;&#x430;&#x431;&#x43E;&#x442;&#x44B; &#x432; &#x433;&#x440;&#x430;&#x444;&#x438;&#x447;&#x435;&#x441;&#x43A;&#x438;&#x445; &#x440;&#x435;&#x434;&#x430;&#x43A;&#x442;&#x43E;&#x440;&#x430;&#x445;, &#x434;&#x43E; &#x43F;&#x440;&#x43E;&#x433;&#x440;&#x430;&#x43C;&#x43C;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x44F; &#x43F;&#x43E;&#x434; AJAX &#x438; ASP.NET.</description>
<language>ru</language>

<item>
<title>&#x412;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430;? &#x42D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;! easyAPI. &#x423;&#x434;&#x430;&#x43B;&#x435;&#x43D;&#x43D;&#x430;&#x44F; &#x437;&#x430;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x430; XML.
</title>
<link>http://archives.maillist.ru/55140/1154425.html?rss=1</link>
<description><![CDATA[<style type="text/css"><!-- #list {      
background-color:#F5F5F5;       
border:1px solid #EDEDED;       
font-family:courier,monospace;       
padding:10px;       
}       
       
span.drop {style.css (line 404)       
-x-system-font:none;       
color:#0019FF;       
float:left;       
font-family:tahoma,sans-serif;       
font-size:60px;       
font-size-adjust:none;       
font-stretch:normal;       
font-style:normal;       
font-variant:normal;       
font-weight:bold;       
line-height:0.83em;       
margin-right:5px;       
}       
       
#rap { 
background:transparent url(main.jpg) repeat-y scroll 0 0;       
border-left:3px solid #262626;       
border-right:3px solid #262626;       
margin:0 auto;       
text-align:left;       
width:900px;       
}       
#content { 
float:right;       
margin:0 20px 20px 8px;       
text-align:left;       
width:600px;       
}       
 .post {  
background:#FFFFFF none repeat scroll 0 0;       
border:1px solid #EDEDED;       
margin-bottom:20px;       
}       
 .storycontent { 
font-size:115%;       
padding-left:10px;       
padding-right:10px;       
}       
 --></style>
<table summary="" cellspacing="5" cellpadding="5" border="0" bgcolor="#ffffff" style="background-color: #ffffff; background-image: ;">
<tr valign="top" align="left">
<td bgcolor="#ffffff" style="padding: 5px; background-color: #ffffff; background-image: ; border: solid 1px #dddddd;"><div id="rap">
<div id="content">
<div class="post">
<div class="storycontent">
<p>И вот, наконец, долгожданная, вторая статья из раздела <strong>easyAPI</strong>.</p>
<p>Сегодня мы узнаем, как загрузить <em>XML</em>-данные с <em>удаленного домена</em>. Подобная задача возникает, например, когда владелец сайта на бесплатном (а значит - без серверного кода) хостинге хочет вставить в страницу <em>погодный XML-информер</em>. Именно на этом примере мы и рассмотрим сегодня удаленную загрузку XML-файлов.</p>
<p>Итак, для фоновой загрузки данных мы привыкли использовать так называемый <strong>AJAX</strong>, то есть объект <strong>XMLHttpRequest</strong>, про эту технологию я уже не раз писал в статьях блога. Однако, эта технология в данном случае никуда не годится. Почему? А потому что объект XMLHttpRequest не позволяет делать запросы к доменам, иным, чем тот, в котором работает скрипт, создающий этот объект.</p>
<p>И здесь к нам на помощь приходит технология, получившая название <a href='http://ru.wikipedia.org/wiki/JSON#JSONP' target='_blank'>JSONP</a>, что значит <em>JavaScript Object Notation with Padding</em>. Про сам JSON можео почитать вот здесь <a href='http://ru.wikipedia.org/wiki/JSON' target='_blank'>JSON</a>, а JSONP представляет собой объект в нотации JSON обернутый в вызов функции, что-то вроде этого:
<pre name='code' class='javascript'>
onSuccess('JSON-object')
</pre></p>
<p>А теперь объясню, зачем это нужно. Хоть XMLHttpRequest и не позволяет делать запросы к удаленным доменам, однако все браузеры позволяют нам загружать JavaScript'ы с любых доменов, то есть страница, загруженная с домена localdomain.ru, позволяет выполнить в ее рамках следующую инструкцию:
&lt;script type='text/javascript' src='http://remotedomain.ru'&gt
&lt;/script&gt;</p>
<p>А теперь смотрите, что происходит. Наша страница загружает скрипт с удаленного домена, а скрипт этот возвращает нам JSONP-конструкцию, которая после загрузки скрипта тут же и выполнится, а значит, вызовет некую предопределенную заранее функцию onSuccess, которая получит в качестве аргумента тот самый XML-файл. И теперь мы можем делать с ним все, что захотим!</p>
<p>Осталось только одно - завладеть таким remotedomain.ru, который вернет нам то, что нам нужно. Скажу, что домен этот - <em>http://easyapi.ru</em>. Да-да, именно на этом, предусмотрительно приобретенном не так давно домене, и будут жить все наши полезные, жизненно необходимые почти каждому веб-разработчику, функции. :) Скромненько и со вкусом...</p>
<p>Статью <a href='http://easy4web.ru/?p=654' target='_blank'>"easyAPI. Удаленная загрузка XML."</a> и другие статьи, посвященные веб-разработке, Вы можете найти на сайте <a href='http://easy4web.ru' target='_blank'>Веб-разработка? Это просто!</a></p>

</div>
</div>
</div>
</div><!-- " ' --></td>
</tr>
</table>]]></description>
<guid isPermaLink="false">1154425</guid>
<pubDate>Mon, 01 Feb 2010 10:47:03 MSK</pubDate>
</item>
<item>
<title>&#x412;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430;? &#x42D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;! &#x41A;&#x440;&#x43E;&#x441;&#x441;&#x431;&#x440;&#x430;&#x443;&#x437;&#x435;&#x440;&#x43D;&#x43E;&#x435; XSLT-&#x43F;&#x440;&#x435;&#x43E;&#x431;&#x440;&#x430;&#x437;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x432; JavaScript
</title>
<link>http://archives.maillist.ru/55140/1094415.html?rss=1</link>
<description><![CDATA[<style type="text/css"><!-- p { 
     padding-left: 10px; 
     padding-right: 10px; 
     font: 14px/20px Veradana, Arial, sans-serif; 
} 
 
span.drop { 
     font: bold 60px /0.83em tahoma, sans-serif; 
     color: #0019ff; 
     float: left; 
     margin-right: 5px; 
     margin-top: 5px; 
} 
 
 .list { 
     background-color: #f5f5f5; 
     border: 1px solid #ededed; 
     padding: 10px; 
     margin: 10px 40px 10px 40px; 
     font-family: courier, monospace; 
} 
 
h1{ 
     font-family: Verdana, Arial, Sans-Serif; 
     color:#fcb300; 
     font-size:28px; 
     font-weight:bold; 
     padding: 10px 0 0 10px; 
     text-align:left; 
} 
 --></style>
<table summary="" cellspacing="5" cellpadding="5" border="0" bgcolor="#ffffff" style="background-color: #ffffff; background-image: ;">
<tr valign="top" align="left">
<td bgcolor="#ffffff" style="padding: 5px; background-color: #ffffff; background-image: ; border: solid 1px #dddddd;"><h1>Кроссбраузерное XSLT-преобразование в JavaScript</h1>
<p>Столкнулся я однажды с необходимостью отобразить XML-данные погодного информера gismeteo посредством XSLT-шаблона. Причем возникла острая необходимость сделать это через  JavaScript, так как на предлагаемом бесплатном хостинге не было поддержки PHP, а значит отпарсить XML на сервере не представлялось возможным.</p>
<p>В результате этой острой необходимости родился код на JavaScript, который я и предлагаю на ваше рассмотрение.</p>
<pre class="javascript" name="code">function transformXslt(source,style) {<br />    if(window.ActiveXObject)<br />    {<br />        return source.transformNode(style);<br />    }<br />    else if(window.XSLTProcessor)<br />    {<br />        var xsltProcessor=new XSLTProcessor();<br />        xsltProcessor.importStylesheet(style);<br />        var resultDocument = xsltProcessor.transformToDocument(source);<br />        var xmls = new XMLSerializer();<br />        return xmls.serializeToString(resultDocument);<br
/>    }<br />    else<br />    {<br />        alert(&quot;Преобразование XML не поддерживается браузером&quot;);<br />        return null;<br />    }<br />}<br /></pre>
<p>Что мы здесь видим?</p>
<p>А видим мы здесь кроссбраузерное решение данной задачи. XSLT-преобразование в IE производится посредством метода <em>transformNode</em> XML-документа. Во всех остальных браузерах(FF, Chrome, Safari, Opera) XSLT-преобразование делается совсем по-другому. И делается оно посредством объекта <em>XSLTProcessor</em>, в который методом <em>importStylesheet</em> загружается файл стилей XSLT, а результирующий документ генерируется методом <em>transformToDocument(xml)</em>. И напоследок мы поручим объекту <em>XMLSerializer</em>
сгенерить строковое представление результирующего XML-документа.</p>
<p>И напоследок еще одна полезная, и такая же кроссбраузерная, функция, которая преобразует строковое представление XML (и XSLT)-документа собственно в сам документ, готовый для его дальнейшего использования.</p>
Продолжение статьи "<a href="http://easy4web.ru/?p=604">Кроссбраузерное XSLT-преобразование в JavaScript</a>" и многие другие статьи посвященные веб-разработке вы можете на сайте <a href="http://easy4web.ru">Веб-разработка? Это просто!</a>.
<!-- " ' --></td>
</tr>
</table>]]></description>
<guid isPermaLink="false">1094415</guid>
<pubDate>Sun, 25 Oct 2009 15:15:05 MSK</pubDate>
</item>
<item>
<title>&#x412;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430;? &#x42D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;! &#x41A;&#x440;&#x43E;&#x441;&#x434;&#x43E;&#x43C;&#x435;&#x43D;&#x43D;&#x44B;&#x439; JavaScript (JSONP)
</title>
<link>http://archives.maillist.ru/55140/1087522.html?rss=1</link>
<description><![CDATA[<style type="text/css"><!-- p { 
     padding-left: 10px; 
     padding-right: 10px; 
     font: 14px/20px Veradana, Arial, sans-serif; 
} 
 
span.drop { 
     font: bold 60px /0.83em tahoma, sans-serif; 
     color: #0019ff; 
     float: left; 
     margin-right: 5px; 
     margin-top: 5px; 
} 
 
 .list { 
     background-color: #f5f5f5; 
     border: 1px solid #ededed; 
     padding: 10px; 
     margin: 10px 40px 10px 40px; 
     font-family: courier, monospace; 
} 
 
h1{ 
     font-family: Verdana, Arial, Sans-Serif; 
     color:#fcb300; 
     font-size:28px; 
     font-weight:bold; 
     padding: 10px 0 0 10px; 
     text-align:left; 
} 
 --></style>
<table summary="" cellspacing="5" cellpadding="5" border="0" bgcolor="#ffffff" style="background-color: #ffffff; background-image: ;">
<tr valign="top" align="left">
<td bgcolor="#ffffff" style="padding: 5px; background-color: #ffffff; background-image: ; border: solid 1px #dddddd;"><h1>Кросдоменный JavaScript (JSONP)</h1>
<p>Итак, мы уже научились использовать объект <strong>XMLHttpRequest</strong> для фоновой загрузки данных с сервера, этот подход подробно описан в статье <a href="http://easy4web.ru?p=213">AJAX. 1 &ndash; Что это такое?</a>. Однако, приведенный метод обладает одним недостатком - он не позволяет делать кроссдоменные запросы, то есть скрипт расположенный на домене <em>easy4web.ru</em> не может обратиться к домену <em>vision4web.ru</em>, а иногда этого так хочется. И здесь нам на помощь придет метод динамически
подгружаемых скриптов &lt;SCRIPT&gt;.</p>
<p>Как известно, HTML-элемент <em>&lt;SCRIPT&gt;</em> может загружаться и с чужого домена, то есть аттрибут <em>src</em> у него может указывать вообще на любой домен. При этом, сразу после загрузки в нашу страницу, скрипт начнет выполняться. Таким образом, вставив в этот скрипт вызов некой заранее известной функции, мы можем организовать оповещение страницы о том, что скрипт загружен и готов к выполнению работы. А данные для для скрипта можно упаковать в пакет <em>JSON</em>. Такой комбинированный подход носит
имя <strong><a href="http://ru.wikipedia.org/wiki/JSON#JSONP">JSONP</a> (JSON with padding)</strong>.</p>
<p>На клиентской стороне мы выполняем такой код:
<pre name='code' class='javascript'>  var script = document.createElement("script");
  script.src = 'http://mydomain.ru/script.php?callback=func1';
  script.type = 'text/javascript';
  document.body.appendChild(script);</pre></p>
<p>А по адресу  <em>http://mydomain.ru/script.php</em> поселим вот такой код:
<pre name='code' class='php'>&lt;?php
echo($_REQUEST['callback'].'({"result":"Успешно!"})');
?&gt;</pre></p>
<p>На клиентской стороне также существует такой callback (то есть функция, которая сработает после загрузки скрипта):
<pre name='code' class='javascript'>function func1(response)
{
  alert(response.result);
}</pre></p>
<p>Протестировать рабочий пример можно здесь: <a href="http://easy4web.ru/samples/jsonp/index.html" target='_blank'>http://easy4web.ru/samples/jsonp/index.html</a>, а скачать код вышеприведенного примера можно здесь: <a href="http://easy4web.ru/images/jsonp.zip" target='_blank'>http://easy4web.ru/images/jsonp.zip</a></p>
<p>В тестовом примере, как можно увидеть, не происходит кроссдоменной загрузки - мы загружаем с того же домена, где расположен скрипт. Но вы можете заменить <em>URL</em> в этом месте кода:
<pre name='code' class='html'>&lt;input type="button" value="Получить JSONP"
 onclick="getJSONP('http://easy4web.ru/samples/jsonp/handler.php',onSuccess)"/&gt;</pre> на ваш собственный или на наш тестовый handler, расположенный на другом домене, (вот здесь http://vision4web.ru/api/handler.php) и убедиться в том, что кроссдоменная загрузка прекрасно работает.</p>
Статью <a href='http://easy4web.ru/?p=598'>Кросдоменный JavaScript (JSONP)</a> Вы можете на нашем сайте <a href='http://easy4web.ru'>Веб-разработка? Это просто!</a>
<!-- " ' --></td>
</tr>
</table>]]></description>
<guid isPermaLink="false">1087522</guid>
<pubDate>Tue, 13 Oct 2009 13:40:23 MSD</pubDate>
</item>
<item>
<title>&#x412;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430;? &#x42D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;! &#x41D;&#x430;&#x447;&#x438;&#x43D;&#x430;&#x435;&#x43C; &#x441;&#x43E;&#x437;&#x434;&#x430;&#x432;&#x430;&#x442;&#x44C; &#x43D;&#x430;&#x431;&#x43E;&#x440; &#x441;&#x435;&#x440;&#x432;&#x438;&#x441;&#x43E;&#x432; easyAPI
</title>
<link>http://archives.maillist.ru/55140/1087021.html?rss=1</link>
<description><![CDATA[<style type="text/css"><!-- p { 
     padding-left: 10px; 
     padding-right: 10px; 
     font: 14px/20px Veradana, Arial, sans-serif; 
} 
 
span.drop { 
     font: bold 60px /0.83em tahoma, sans-serif; 
     color: #0019ff; 
     float: left; 
     margin-right: 5px; 
     margin-top: 5px; 
} 
 
 .list { 
     background-color: #f5f5f5; 
     border: 1px solid #ededed; 
     padding: 10px; 
     margin: 10px 40px 10px 40px; 
     font-family: courier, monospace; 
} 
 
h1{ 
     font-family: Verdana, Arial, Sans-Serif; 
     color:#fcb300; 
     font-size:28px; 
     font-weight:bold; 
     padding: 10px 0 0 10px; 
     text-align:left; 
} 
 --></style>
<table summary="" cellspacing="5" cellpadding="5" border="0" bgcolor="#ffffff" style="background-color: #ffffff; background-image: ;">
<tr valign="top" align="left">
<td bgcolor="#ffffff" style="padding: 5px; background-color: #ffffff; background-image: ; border: solid 1px #dddddd;"><h1>Начинаем создавать набор сервисов easyAPI</h1>
<p>Создавая статьи на темы, интересующие посетителей, отвечая на их комментарии, и даже выполняя платные заказы на эти темы я все больше понимал, что пора создавать некий набор сервисов и библиотек, реализующих насущные потребности пользователей веб-сайтов.</p>
<p>Собственно, этой статьей я начинаю публикацию на нашем ресурсе сервисов под общим названием <strong>easyAPI</strong>.</p>
<p>Что это будет?</p>
<p><strong>EasyAPI </strong>это по большей части <strong>JavaScript</strong>-библиотеки, реализующие ту или иную функциональность, я пока до конца не знаю, какие именно сервисы я буду предоставлять и в каком виде. Но точно знаю, что эти сервисы помогут, например, владельцу сайта, поднятого на бесплатном хостинге, отобразить погодный информер, настроенный полностью под требования веб-мастера. Или, например, позволят определить географию посетителей определенного сайта и отобразить ее на карте страны. Или, например,
отобразить посетителю сайта погодный информер именно его города. И все это, повторюсь, чаще всего будет возможно даже на хостинге без поддержки PHP. </p>
<p>Короче говоря, от слов к делу!</p>
<p>И сегодня на сайте easy4web.ru появляется первый такой сервис - <strong>GeoIP</strong>, позволяющий по адресу посетителя определить его приблизительное местоположение.</p>
<p>Он живет здесь <a href="http://easy4web.ru/api/geoip/get.php">http://easy4web.ru/api/geoip/get.php</a></p>
<p>Поддерживаемые параметры:
<strong>p - формат отдаваемых данных:</strong>
<ul>
<li>p=j - результат - JSON</li>
<li>p=a - результат - массив вида <em>cc2=RU;cc3=RUS;cty=Moskow</em></li>
<li>p=x - результат - XML</li>
<li>p=ax - результат - массив обернутый в <em>XML</em>, вида <em>&lt;easy&gt;cc2=RU;cc3=RUS;cty=Moskow&lt;/easy&gt;</em></li>
<li>p=jx - результат - <em>JSON </em>обернутый в <em>XML</em>, вида <em>&lt;easy&gt;cc2=RU;cc3=RUS;cty=Moskow&lt;/easy&gt;</em></li>
</ul>
<strong>f - длина имен полей:</strong>
<ul>
<li>f=f - длинные имена, вида <em>country_code</em></li>
<li>f=s - короткие имена, вида <em>cc2</em></li>
</ul>
<strong>ip - IP-адрес</strong>, если он не задан, то в качестве адреса берутся координаты сервера, с которого пришел запрос <em>REMOTE_ADDR</em>.</p><p></p>
<p>Если я желаю получить информацию по собственному местоположению в формате <em>JSON </em>с длинными именами полей, я вызову URL <a href="http://easy4web.ru/api/geoip/get.php?p=j&f=f">http://easy4web.ru/api/geoip/get.php?p=j&f=f</a></p>
<p>В следующей статье на эту тему я расскажу о том, как можно применить данный сервис при вызове его из <em>PHP</em>-программы, и из <em>JavaScript </em>на удаленном сервере. Пока сервис <strong>easy.GeoIP </strong>находится в стадии тестирования, возможны некоторые изменения в его работе, о которых я буду предупреждать на сайте.</p>
<!-- " ' --></td>
</tr>
</table>]]></description>
<guid isPermaLink="false">1087021</guid>
<pubDate>Mon, 12 Oct 2009 15:31:03 MSD</pubDate>
</item>
<item>
<title>&#x412;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430;? &#x42D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;! AJAX &#x441; &#x43F;&#x43E;&#x43C;&#x43E;&#x449;&#x44C;&#x44E; jQuery &#x438; ASP.NET web-&#x441;&#x435;&#x440;&#x432;&#x438;&#x441;&#x43E;&#x432;
</title>
<link>http://archives.maillist.ru/55140/1074849.html?rss=1</link>
<description><![CDATA[<style type="text/css"><!-- p { 
     padding-left: 10px; 
     padding-right: 10px; 
     font: 14px/20px Veradana, Arial, sans-serif; 
} 
 
span.drop { 
     font: bold 60px /0.83em tahoma, sans-serif; 
     color: #0019ff; 
     float: left; 
     margin-right: 5px; 
     margin-top: 5px; 
} 
 
 .list { 
     background-color: #f5f5f5; 
     border: 1px solid #ededed; 
     padding: 10px; 
     margin: 10px 40px 10px 40px; 
     font-family: courier, monospace; 
} 
 
h1{ 
     font-family: Verdana, Arial, Sans-Serif; 
     color:#fcb300; 
     font-size:28px; 
     font-weight:bold; 
     padding: 10px 0 0 10px; 
     text-align:left; 
} 
 --></style>
<table summary="" cellspacing="5" cellpadding="5" border="0" bgcolor="#ffffff" style="background-color: #ffffff; background-image: ;">
<tr valign="top" align="left">
<td bgcolor="#ffffff" style="padding: 5px; background-color: #ffffff; background-image: ; border: solid 1px #dddddd;"><h1>AJAX с помощью jQuery и ASP.NET web-сервисов</h1>
<p>Если вы создаете сайты под <strong>ASP.NET</strong>, то возможно вам уже довелось использовать <strong>AJAX-framework</strong>, предоставляемый <em>Microsoft</em>. Тот самый, что использует <strong>ScriptManager</strong></p><p>

Этот метод достаточно прост и удобен, если бы не одно "но" - он весит 132 Кб. И обладает еще одним интересным свойством: если в нашем проекте есть несколько страниц, использующих <strong>AJAX</strong>, то каждая из них будет заново загружать этот скрипт, потому что при загрузке скрипта на странице используется примерно следующий URL <em>http://domainname/ScriptResource.axd?d=TvjJs2RlM8MX3pIUhEsdnZKUzGh-9Wr9nvNBZJbxf-xzq-Wvzbpj6FfMJqZqOPR8Pku52J2zBqleUlYtVE8XCyfyo3kcbSnhbwzYc2LkdfQ1&amp;t=ffffffffee41303f</em>
и для каждой страницы в пределах вашего проекта будет свой <em>ScriptManager</em>, а значит и свой уникальный ID в <em>query-string</em>. А значит скрипт этот для каждой страницы будет браться не из кэша, а запрашиваться заново с сервера.</p><p>

В общем, мне все это не понравилось и я заинтересовался, как можно сэкономить трафик и перейти на AJAX.jQuery. Тем более, что jQuery уже использовался в этом же проекте для других целей. Сказано - сделано! И вот какое решение я нашел.</p><p>

Собственно, модификации пришлось подвергнуть как сами клиентские JavaScript-ы, так и методы, вызываемые на стороне сервера. Связано это с тем, что мне хотелось передавать в качестве параметров для web-сервиса сложные объекты, а не просто строки и целые значения. И получать в ответ хотелось тоже сложные объекты, а не просто строки.</p><p>

Все это можно легко и просто сделать, передавая как в ту так и в другую сторону все же строки, но строки в формате <strong>JSON</strong>, который является родным для <strong>JavaScript</strong>. Да к тому же <strong>ASP.NET</strong> обладает встроенными возможностями сериализации/десериализации <strong>JSON</strong>.</p><p>

Правда, для сериализации объекта в <strong>JSON </strong>на клиентской стороне пришлось использовать еще одну дополнительную библиотеку <strong>json2.js</strong>. Таким образом, обе библиотеки весят около <em>67 Кб</em>. Да плюс ко всему в случае нескольких <strong>ajax</strong>-страниц в проекте, скрипт загрузится всего один раз, и для остальных страниц будет браться из кэша браузера.</p><p>

Но от слов - к делу!</p><p>
Полный текст статьи <a href="http://easy4web.ru/?p=568" target="_blank">"AJAX с помощью jQuery и ASP.NET web-сервисов"</a> с образцами кода и со ссылкой на архив с готовым проектом Вы можете прочитать на сайте <a href="http://easy4web.ru/" target="_blank">"Веб-разработка? Это просто!"</a>
</p>
<!-- " ' --></td>
</tr>
</table>]]></description>
<guid isPermaLink="false">1074849</guid>
<pubDate>Tue, 22 Sep 2009 11:11:05 MSD</pubDate>
</item>
<item>
<title>&#x412;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430;? &#x42D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;! XML+XSLT &#x43D;&#x430; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;&#x435; XML-&#x43F;&#x43E;&#x433;&#x43E;&#x434;&#x44B; &#x43E;&#x442; gismeteo.ru
</title>
<link>http://archives.maillist.ru/55140/1048061.html?rss=1</link>
<description><![CDATA[<style type="text/css"><!-- p { 
     padding-left: 10px; 
     padding-right: 10px; 
     font: 14px/20px Veradana, Arial, sans-serif; 
} 
 
span.drop { 
     font: bold 60px /0.83em tahoma, sans-serif; 
     color: #0019ff; 
     float: left; 
     margin-right: 5px; 
     margin-top: 5px; 
} 
 
 .list { 
     background-color: #f5f5f5; 
     border: 1px solid #ededed; 
     padding: 10px; 
     margin: 10px 40px 10px 40px; 
     font-family: courier, monospace; 
} 
 
h1{ 
     font-family: Verdana, Arial, Sans-Serif; 
     color:#fcb300; 
     font-size:28px; 
     font-weight:bold; 
     padding: 10px 0 0 10px; 
     text-align:left; 
} 
 --></style>
<table summary="" cellspacing="5" cellpadding="5" border="0" bgcolor="#ffffff" style="background-color: #ffffff; background-image: ;">
<tr valign="top" align="left">
<td bgcolor="#ffffff" style="padding: 5px; background-color: #ffffff; background-image: ; border: solid 1px #dddddd;"><h1>XML+XSLT на примере XML-погоды от gismeteo.ru </h1>
<p>Итак, выполняя свое обещание, публикую статью, посвященную отображению информера погоды gismeteo.ru.
</p><p>
Как вы помните, в прошлый раз в статье <a href="http://easy4web.ru/?p=393">Парсинг XML в JavaScript на примере XML-погоды от gismeteo.ru</a> мы написали длинный (в нескольких местах запутанный и непонятный) скрипт на JavaScript, который радостно преобразовывал XML-Данные от ГИС-метео в HTML-формат, который мы и отображали в нашем браузере.
</p><p>
Этот вариант имел ряд недостатков:
1) При отключенном JavaScript в браузере пользователя мы вообще ничего не увидим.
2) Шаблоны, используемые в этом скрипте были настолько запутанные, что иногда и я сам терялся в том, что значит каждый из тегов этого шаблона.
3) И вообще это не модно и несовременно!
</p><p>
Ведь есть технология лучше: XML+XSLT !
</p><p>
Вот выдержка из wikipedia:
</p>
<blockquote><p><strong>XSLT (Extensible Stylesheet Language Transformations)</strong> &mdash; часть спецификации XSL, задающая язык преобразований XML-документов. Спецификация XSLT является рекомендацией W3C.
</p><p>
При применении таблицы стилей XSLT, состоящей из набора шаблонов, к XML-документу (исходное дерево) образуется конечное дерево, которое может быть другой XML-структурой, HTML-документом или обычным текстом. Правила выбора (и, отчасти, преобразования) данных из исходного дерева пишутся на языке запросов XPath.
</p><p>
XSLT имеет множество различных применений, в основном в области web-программирования и генерации отчётов. Одной из задач, решаемых языком XSLT, является отделение данных от их представления, как часть общей парадигмы MVC (англ. Model-view-controller). Другой стандартной задачей является преобразование XML-документов из одной XML-схемы в другую.</p><p>
В общем, XSLT - это тоже XML особого вида, главной целью которого является преобразование XML-данных из одного вида в другой.</p></blockquote>
<p>
Собственно, эта статья подразумевается именно как практическое введение в <em>XSLT</em>, а поэтому я сразу приведу результирующий <em>XSLT-шаблон</em>, а затем буду его построчно объяснять. Вот он.
</p><p>
<pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;

&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;xsl:output method="xml" indent="yes" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/&gt;

 &lt;!--Шаблон, преобразующий номер дня недели в его текстовое 
представление--&gt;
 &lt;xsl:template name="get-day-of-the-week-abbreviation"&gt;
 &lt;xsl:param name="day-of-the-week"/&gt;
 &lt;xsl:choose&gt;
 &lt;xsl:when test="$day-of-the-week = 1"&gt;Вс&lt;/xsl:when&gt;
 &lt;xsl:when test="$day-of-the-week = 2"&gt;Пн&lt;/xsl:when&gt;
 &lt;xsl:when test="$day-of-the-week = 3"&gt;Вт&lt;/xsl:when&gt;
 &lt;xsl:when test="$day-of-the-week = 4"&gt;Ср&lt;/xsl:when&gt;
 &lt;xsl:when test="$day-of-the-week = 5"&gt;Чт&lt;/xsl:when&gt;
 &lt;xsl:when test="$day-of-the-week = 6"&gt;Пт&lt;/xsl:when&gt;
 &lt;xsl:when test="$day-of-the-week = 7"&gt;Сб&lt;/xsl:when&gt;
 &lt;xsl:otherwise&gt;?&lt;/xsl:otherwise&gt;
 &lt;/xsl:choose&gt;
 &lt;/xsl:template&gt;
</pre>

Продолжение статьи <a href="http://easy4web.ru/?p=479" target="_blank">XML+XSLT на примере XML-погоды от gismeteo.ru</a> читайте на сайте <a href="http://easy4web.ru" target="_blank">Веб-разработка? Это просто!</a>
<!-- " ' --></td>
</tr>
</table>]]></description>
<guid isPermaLink="false">1048061</guid>
<pubDate>Thu, 06 Aug 2009 18:27:23 MSD</pubDate>
</item>
<item>
<title>&#x412;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430;? &#x42D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;! &#x41F;&#x430;&#x440;&#x441;&#x438;&#x43D;&#x433; XML &#x432; ActionScript 3.0
</title>
<link>http://archives.maillist.ru/55140/1019773.html?rss=1</link>
<description><![CDATA[<style type="text/css"><!-- p { 
     padding-left: 10px; 
     padding-right: 10px; 
     font: 14px/20px Veradana, Arial, sans-serif; 
} 
 
span.drop { 
     font: bold 60px /0.83em tahoma, sans-serif; 
     color: #0019ff; 
     float: left; 
     margin-right: 5px; 
     margin-top: 5px; 
} 
 
 .list { 
     background-color: #f5f5f5; 
     border: 1px solid #ededed; 
     padding: 10px; 
     margin: 10px 40px 10px 40px; 
     font-family: courier, monospace; 
} 
 
h1{ 
     font-family: Verdana, Arial, Sans-Serif; 
     color:#fcb300; 
     font-size:28px; 
     font-weight:bold; 
     padding: 10px 0 0 10px; 
     text-align:left; 
} 
 --></style>
<table summary="" cellspacing="5" cellpadding="5" border="0" bgcolor="#ffffff" style="background-color: #ffffff; background-image: ;">
<tr valign="top" align="left">
<td bgcolor="#ffffff" style="padding: 5px; background-color: #ffffff; background-image: ; border: solid 1px #dddddd;">Возникла у меня однажды задача - создать Flash-контрол, в котором постоянно сверху вниз прокручивается список неких сайтов, причем при наведении мыши на этот контрол прокручивание останавливается, а содержимое пункта списка, на который наведена мышь, разворачивается, и мы теперь можем наблюдать саму ссылку на сайт и краткое описание сайта внизу. Как-то так:<br/>

<a href="http://easy4web.ru/wp-content/uploads/2009/06/scroller.jpg"><img class="alignnone size-thumbnail wp-image-461" title="scroller" src="http://easy4web.ru/wp-content/uploads/2009/06/scroller-150x150.jpg" alt="scroller" width="150" height="150" /></a><br/>

Собственно, хотелось создать универсальный контрол, такой, чтобы и список сайтов и все цвета, и скорость прокрутки, и вообще все изменяемые параметры хранились бы где-то отдельно от самого Flash-контрола, чтобы, когда дизайнеру захочется поменять оформление этого котнрола или его содержимое, он бы меня не дергал лишний раз. Разумное желание. И решил я остановиться на хранении всех этих данных в <em>XML-файле</em>.<br/>

Файл этот имеет вот такой формат:<br/>

<pre class="xml" name="code">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;config&gt;
&lt;control speed="10" indent="24.9"/&gt;
&lt;sites&gt;
&lt;site name="веб-разработка" link="easy4web.ru"
url="http://easy4web.ru/" descr="веб-дизайнер и
веб-программист срывают оковы, освещают темные
места" height="38"/&gt;
&lt;site name="Яндекс" link="yandex.ru" url="http://yandex.ru/" descr="
Поиск от Яндекс. Найдется все!" height="38"/&gt;
&lt;site name="почта от google" link="gmail.com" url="http://gmail.com/"
 descr="Бесплатная почта от google. Попробуй, не пожалеешь."
height="38"/&gt;
&lt;/sites&gt;
&lt;/config&gt;
</pre><br/>
Здесь мы видим один корневой элемент &lt;config&gt; в который вложены: элемент &lt;control&gt; одержащий в себе атрибуты, касающиеся всего контрола в целом, и элемент &lt;sites&gt; содержащий в себе дочерние узлы &lt;site&gt;, каждый из которых описывает отдельный элемент прокручиваемого в контроле списка.<br/>

Осталось теперь разобраться как <em>разобрать </em>этот файл при помощи <em>ActionScript</em>.<br/>

Но для начала структурируем немного в виде классов информацию, хранящуюся в XML-файле.<br/>

Элемент &lt;site&gt; мы опишем следующим классом (файл SiteItem.as):<br/>

<pre class="javascript" name="code">package inc{
public class SiteItem extends Object {
public var pName:String;
public var pLink:String;
public var pURL:String;
public var pDescr:String;
public var pHeight:Number;
public function SiteItem(p_Name:String, p_Link:String, p_URL:String,
p_Descr:String, p_Height:Number){
pName=p_Name;
pLink=p_Link;
pURL=p_URL;
pDescr=p_Descr;
pHeight=p_Height;
}
}
}
</pre><br/>
Как видно, это просто класс с открытыми полями и одним конструктором. Ничего сложного.<br/>

А вот еще один класс, описывающий весь XML-файл (ScrollerParameters.as):<br/>

Полный текст статьи <a href="http://easy4web.ru/?p=458" target="_blank">Парсинг XML в ActionScript 3.0</a> Вы можете прочитать на сайте<a href="http://easy4web.ru/" target="_blank">Веб-разработка? Это просто!</a>
<!-- " ' --></td>
</tr>
</table>]]></description>
<guid isPermaLink="false">1019773</guid>
<pubDate>Sun, 21 Jun 2009 15:05:14 MSD</pubDate>
</item>
<item>
<title>&#x412;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430;? &#x42D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;! &#x425;&#x430;&#x43A;&#x438; &#x434;&#x43B;&#x44F; &#x431;&#x440;&#x430;&#x443;&#x437;&#x435;&#x440;&#x43E;&#x432;
</title>
<link>http://archives.maillist.ru/55140/983731.html?rss=1</link>
<description><![CDATA[<style type="text/css"><!-- p { 
     padding-left: 10px; 
     padding-right: 10px; 
     font: 14px/20px Veradana, Arial, sans-serif; 
} 
 
span.drop { 
     font: bold 60px /0.83em tahoma, sans-serif; 
     color: #0019ff; 
     float: left; 
     margin-right: 5px; 
     margin-top: 5px; 
} 
 
 .list { 
     background-color: #f5f5f5; 
     border: 1px solid #ededed; 
     padding: 10px; 
     margin: 10px 40px 10px 40px; 
     font-family: courier, monospace; 
} 
 
h1{ 
     font-family: Verdana, Arial, Sans-Serif; 
     color:#fcb300; 
     font-size:28px; 
     font-weight:bold; 
     padding: 10px 0 0 10px; 
     text-align:left; 
} 
 --></style>
<table summary="" cellspacing="5" cellpadding="5" border="0" bgcolor="#ffffff" style="background-color: #ffffff; background-image: ;">
<tr valign="top" align="left">
<td bgcolor="#ffffff" style="padding: 5px; background-color: #ffffff; background-image: ; border: solid 1px #dddddd;"><h1>Хаки для браузеров</h1>
<p>Сегодня мне хотелось бы поговорить о так называемых &laquo;css-хаках&raquo;. CSS-хаки используют тогда, когда один конкретный браузер надо заставить отображать некий блок разметки не так, как хотелось бы самому браузеру. Сразу оговорюсь, что использовать хаки нужно только тогда, когда это действительно необходимо. Скажем, всеми нами горячо любимый Internet Explorer (седьмой версии) имеет свои, сугубо специфичные представления о работе со списками. И иногда надо только ему объяснить, что он неправ:-)</p><p>
Вообще задача раздельных CSS для разных браузеров имеет несколько путей решения. Один из них &mdash; встроить в &lt;head&gt;&lt;/head&gt; php-, или java-скрипт, определяющий тип браузера, и отсылающий конкретный браузер к предназначенной для него стилевой таблице. Второй &mdash; если проблемы возникают только с IE &mdash; так называемые &laquo;условные комментарии&raquo;. В &lt;head&gt;&lt;/head&gt; задается конструкция вида: </p>
<div class="list">
<pre>
&lt;!&ndash;[if IE]>&lt;link rel=&rdquo;stylesheet&rdquo; href=&rdquo;css/ie.css&rdquo; type=&rdquo;text/css&rdquo; media=&rdquo;screen&rdquo; />&lt;![endif]&ndash;>

или для конкретных версий Explorer'а:
&lt;!&ndash;[if IE7]>&lt;link rel=&rdquo;stylesheet&rdquo; href=&rdquo;css/ie7.css&rdquo; type=&rdquo;text/css&rdquo; media=&rdquo;screen&rdquo; />&lt;![endif]&ndash;>
&lt;!&ndash;[if IE6]>&lt;link rel=&rdquo;stylesheet&rdquo; href=&rdquo;css/ie6.css&rdquo; type=&rdquo;text/css&rdquo; media=&rdquo;screen&rdquo; />&lt;![endif]&ndash;>
</pre>
</div>

<p>И, наконец, третий путь &mdash; CSS-хаки.</p>

<p>Самый удобный в плане хаков браузер - Firefox (и относящиеся к его семейству), так как имеет свою группу css-классов, начинающуюся с перфикса @-moz-
Например:</p>
<div class="list">
<pre>
 -moz-document url-prefix() {
  .style {background: #F00;}
}

css-rule, x:-moz-any-link{

}
</pre>
</div>

<p>Для Opera:</p>
<div class="list">
<pre>
 media all and (-webkit-min-device-pixel-ratio:10000),
not all and (-webkit-min-device-pixel-ratio:0) {
 .style {background: #F00;} /* только для Opera */
}

html:first-child {} /* только для Opera */
html:first-child .style {
background: #F00; /* только для Opera < 9.5 */
}

Также, можно создать специальный файл стилей для Opera и подключить его следующим образом:
&lt;head>
&lt;link rel=&rdquo;stylesheet&rdquo; href=&rdquo;css/opera.css&rdquo; type=&rdquo;opera/css&rdquo; media=&rdquo;screen&rdquo; />
&lt/head>
</pre>
</div>

<p>Google Chrome и Safari по способу работы с блочной моделью напоминают Opera и с высокой долей вероятности можно предполагать, что если ваша верстка нормально выглядит в Опере, то и в Хроме с Сафари с нею тоже все будет нормально. Однако, на всякий случай, хаки:</p>

<div class="list">
<pre>
body:last-child:not(:root:root) .style {
  background: #F00;
}
</pre>
</div>

<p>Ну, и наконец, хак для IE. Почему только один? По опыту решения конкретных задач могу сказать, что все проблемы верстки, с которыми мне приходилось сталкиваться, были одинаковыми у наиболее распространенных версий IE (6,7). Поэтому я пользовался (если пользовался) универсальным хаком, так называемым &laquo;holy hack&raquo;:</p>
<div class="list">
<pre>
html {
  background: #f00; (это понимают все браузеры)
  * background: #0f0; (а это только ослики)
}
</pre>
</div>

<p>Напоследок напомню, что практически все хаки влияют на валидность полученного кода, поэтому, если есть возможность - надо обходиться без них. А такая возможность есть почти всегда, и исключение составляет только горячо любимый всеми нами Internet Explorer:-)</p>
<p>Статью <a href='http://easy4web.ru/?p=451' target='_blank'>Хаки для браузеров</a> а также другие статьи, посвященные веб-разработке вы сможете на сайте <a href='http://easy4web.ru' target='_blank'>Веб-разработка? Это просто!</a></p>
<!-- " ' --></td>
</tr>
</table>]]></description>
<guid isPermaLink="false">983731</guid>
<pubDate>Tue, 21 Apr 2009 09:52:44 MSD</pubDate>
</item>
<item>
<title>&#x412;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430;? &#x42D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;! &#x41F;&#x430;&#x440;&#x441;&#x438;&#x43D;&#x433; XML &#x432; JavaScript &#x43D;&#x430; &#x43F;&#x440;&#x438;&#x43C;&#x435;&#x440;&#x435; XML-&#x43F;&#x43E;&#x433;&#x43E;&#x434;&#x44B; &#x43E;&#x442; gismeteo
</title>
<link>http://archives.maillist.ru/55140/965348.html?rss=1</link>
<description><![CDATA[<style type="text/css"><!-- p { 
     padding-left: 10px; 
     padding-right: 10px; 
     font: 14px/20px Veradana, Arial, sans-serif; 
} 
 
span.drop { 
     font: bold 60px /0.83em tahoma, sans-serif; 
     color: #0019ff; 
     float: left; 
     margin-right: 5px; 
     margin-top: 5px; 
} 
 
 .list { 
     background-color: #f5f5f5; 
     border: 1px solid #ededed; 
     padding: 10px; 
     margin: 10px 40px 10px 40px; 
     font-family: courier, monospace; 
} 
 
h1{ 
     font-family: Verdana, Arial, Sans-Serif; 
     color:#fcb300; 
     font-size:28px; 
     font-weight:bold; 
     padding: 10px 0 0 10px; 
     text-align:left; 
} 
 --></style>
<table summary="" cellspacing="5" cellpadding="5" border="0" bgcolor="#ffffff" style="background-color: #ffffff; background-image: ;">
<tr valign="top" align="left">
<td bgcolor="#ffffff" style="padding: 5px; background-color: #ffffff; background-image: ; border: solid 1px #dddddd;"><h1>Парсинг XML в JavaScript на примере XML-погоды от gismeteo.ru</h1>
<p>Итак, заинтересовала меня тема, <em>как распарсить XML-файл посредством JavaScript</em>. Немного порыскав в поисковиках наткнулся на весьма познавательную статью по этой теме <a href="http://www.webcorp.ru/page/xml_ie.html" target="_blank">XML в Microsoft Internet Explorer 5.0</a>. Есть у этой статьи маленький недостаток - она посвящена только IE, а мы в нашем блоге твердо решили писать только кроссбраузерный код. Однако, для начала хватило и этой статьи, сначала весь код был написан для IE, и затем была
осуществлена безуспешная попытка запустить его также в Opera, Mozilla, Chrome. Но как я уже говорил "не боги горшки обжигают", все некроссбраузерные баги были успешно найдены и исправлены. Это р-раз.
</p><p>
В качестве подопытного кролика был взят XML-файл, содержащий в себе данные о погоде на ближайшие сутки от <a href="http://informer.gismeteo.ru/xml.html" target="_blank">Gismeteo.ru</a>. Собственно, открыв эту страницу, и выбрав интересующий вас город, вы можете ниже на той же странице наблюдать содержимое этого XML-файла, и описание его структуры. Это д-два.
</p><p>
Сопоставив первые два пункта уже можно сваять свой собственный парсер XML-документов на JavaScript, однако если вам лень, то читайте статью дальше. В ней я расскажу о том, как провести анализ содержимого XML-файла и отобразить его в том виде, в котором вам хочется. Это т-три.
</p><p>
А вот сразу <a href="http://easy4web.ru/samples/gismeteo/" target="_blank">ссылка на результаты работы</a> моего скрипта. Не расстраивайтесь, что выглядит все так просто, скриптик позволяет посредством шаблонов задать собственный вид отображения результатов, и об этой возможности я расскажу ниже.
</p><p>
Сразу хочу предупредить, что ниже пойдет теоретическая и практическая часть работы с XML-файлами, и если вам не хочется вникать во все эти подробности, то вы можете сразу перейти в самый конец статьи и по предложенной там ссылке скачать готовый скрипт обработки XML-документа, содержащего прогноз погоды от gismeteo.ru. А теперь теория...
</p><p>
Итак, что же такое XML? <a href="http://ru.wikipedia.org/wiki/Xml" target="_blank">Wikipedia</a> утверждает, что:</p>
<blockquote><p><strong>XML</strong> (<em>eXtensible Markup Language</em> &mdash; расширяемый язык разметки) &mdash; рекомендованный консорциумом <em>W3C</em> язык разметки, представляющий собой свод общих синтаксических правил. <em>XML</em> &mdash; текстовый формат, предназначенный для хранения структурированных данных, для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки. Целью создания XML было обеспечение совместимости при передаче структурированных
данных между разными системами обработки информации, особенно при передаче таких данных через Интернет.
</p><p>
Визуально структура XML может быть представлена как дерево. Важнейшее обязательное требование состоит в том, что документ должен иметь только один корневой элемент (в нашем случае это элемент MMWEATHER). Это значит, что данные всего документа должны быть расположены между единственным начальным корневым тегом и соответствующим ему конечным тегом.
</p><p>
Остальная часть XML-документа состоит из вложенных элементов, которые могут иметь атрибуты и содержимое. Элемент обычно состоит из пары тегов (открывающего и закрывающего), обрамляющих другие элементы. Открывающий тег состоит из имени элемента в угловых скобках, например, &lt;FORECAST&gt; ; закрывающий тег состоит из того же имени в угловых скобках, но перед именем ещё добавляется косая черта, например, &lt;/FORECAST&gt;. Содержимым элемента называется всё, что расположено между открывающим и закрывающим тегами,
включая текст и другие вложенные элементы.
</p><p>
Кроме содержания у элемента могут быть атрибуты &mdash; пары имя-значение, добавляемые в открывающий тег после названия элемента. Например в случае &lt;PHENOMENA cloudiness="2" precipitation="10" rpower="0" spower="0"/&gt;
элемент PHENOMENA имеет 4 атрибута cloudiness, precipitation, rpower и spower имеющие соответственно значения 2, 10, 0, 0.</p></blockquote>
<p>
Итак, со структурой XML-файла более-менее разобрались. Осталось только понять, каким образом все это богатство обрабатывать в JavaScript. Собственно, в статье <a href="http://www.webcorp.ru/page/xml_ie.html" target="_blank">XML в Microsoft Internet Explorer 5.0</a> можно обо всем этом прочесть, но я намерен вкратце обрисовать ниже основные приемы анализа XML-файлов в контексте поставленной в начале статьи задачи - разбора XML-документа, содержащего прогноз погоды на сутки от gismeteo.</p>
<p>Продолжение статьи читайте на сайте <a href='http://easy4web.ru/?p=393'>Веб-разарботка? Это просто!</a></p>
<!-- " ' --></td>
</tr>
</table>]]></description>
<guid isPermaLink="false">965348</guid>
<pubDate>Fri, 20 Mar 2009 15:12:14 MSK</pubDate>
</item>
<item>
<title>&#x412;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430;? &#x42D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;! &#x41E;&#x431;&#x43B;&#x435;&#x433;&#x447;&#x430;&#x44F; &#x441;&#x435;&#x431;&#x435; &#x432;&#x435;&#x440;&#x441;&#x442;&#x43A;&#x443;.
</title>
<link>http://archives.maillist.ru/55140/963314.html?rss=1</link>
<description><![CDATA[<style type="text/css"><!-- p { 
     padding-left: 10px; 
     padding-right: 10px; 
     font: 14px/20px Veradana, Arial, sans-serif; 
} 
 
span.drop { 
     font: bold 60px /0.83em tahoma, sans-serif; 
     color: #0019ff; 
     float: left; 
     margin-right: 5px; 
     margin-top: 5px; 
} 
 
 .list { 
     background-color: #f5f5f5; 
     border: 1px solid #ededed; 
     padding: 10px; 
     margin: 10px 40px 10px 40px; 
     font-family: courier, monospace; 
} 
 
h1{ 
     font-family: Verdana, Arial, Sans-Serif; 
     color:#fcb300; 
     font-size:28px; 
     font-weight:bold; 
     padding: 10px 0 0 10px; 
     text-align:left; 
} 
 --></style>
<table summary="" cellspacing="5" cellpadding="5" border="0" bgcolor="#ffffff" style="background-color: #ffffff; background-image: ;">
<tr valign="top" align="left">
<td bgcolor="#ffffff" style="padding: 5px; background-color: #ffffff; background-image: ; border: solid 1px #dddddd;"><h1>Облегчая себе верстку.</h1>
<p>Всем нам давно известно, что каждый браузер имеет свои дефолтные значения CSS для многих объектов, таких как, скажем, список, параграф, границы и тому подобное (подробнее, например, <a href="http://zodios.net/examples/cssdefault/cssdefault.htm">тут</a>). Для того, чтобы верстать действительно кроссбраузерно нам необходимо сбросить стандартные значения на некий общий знаменатель, а потом прописать все заново.</p><p>

Некий сознательный гражданин Эрик Майер предложил следующую версию стилей для обнуления всех значений:</p><p>
<a href='http://easy4web.ru/?p=420' target='_blank'>Смотреть на сайте easy4web.ru</a>
</p><p>В принципе, само по себе это правило достаточно хорошо за парой исключений. А именно - спорным является убирание рамки для псевдокласса :focus (это который рисует рамку вокруг нажатых ссылок), так как такими ссылками нельзя будет управлять с клавиатуры, нельзя будет понять, что они в данный момент в фокусе. Также спорным выглядит использование парных кавычек "", так как в русской типографике используются обычно кавычки елочки &laquo;&raquo;, вызываемые кодами &#38#171; и &#38#187;
</p><p>
Правильное обнуление значений зачастую позволяет избежать использования CSS-хаков, о которых мы поговорим в следующий раз.
</p>
<!-- " ' --></td>
</tr>
</table>]]></description>
<guid isPermaLink="false">963314</guid>
<pubDate>Tue, 17 Mar 2009 12:16:05 MSK</pubDate>
</item>
<item>
<title>&#x412;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430;? &#x42D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;! &#x421;&#x43F;&#x443;&#x442;&#x43D;&#x438;&#x43A;&#x43E;&#x432;&#x44B;&#x435; &#x43A;&#x430;&#x440;&#x442;&#x44B; &#x43D;&#x430; &#x412;&#x430;&#x448;&#x435;&#x43C; &#x441;&#x430;&#x439;&#x442;&#x435;
</title>
<link>http://archives.maillist.ru/55140/955484.html?rss=1</link>
<description><![CDATA[<style type="text/css"><!-- p { 
     padding-left: 10px; 
     padding-right: 10px; 
     font: 14px/20px Veradana, Arial, sans-serif; 
} 
 
span.drop { 
     font: bold 60px /0.83em tahoma, sans-serif; 
     color: #0019ff; 
     float: left; 
     margin-right: 5px; 
     margin-top: 5px; 
} 
 
 .list { 
     background-color: #f5f5f5; 
     border: 1px solid #ededed; 
     padding: 10px; 
     margin: 10px 40px 10px 40px; 
     font-family: courier, monospace; 
} 
 
h1{ 
     font-family: Verdana, Arial, Sans-Serif; 
     color:#fcb300; 
     font-size:28px; 
     font-weight:bold; 
     padding: 10px 0 0 10px; 
     text-align:left; 
} 
 --></style>
<table summary="" cellspacing="5" cellpadding="5" border="0" bgcolor="#ffffff" style="background-color: #ffffff; background-image: ;">
<tr valign="top" align="left">
<td bgcolor="#ffffff" style="padding: 5px; background-color: #ffffff; background-image: ; border: solid 1px #dddddd;"><h1>Спутниковые карты на Вашем сайте</h1>
<p><span class='drop'>М</span>ногие из Вас видели на некоторых сайтах удобные спутниковые карты, на которых отмечены или магазины или кинотеатры или маршруты. Причем карту эту можно двигать мышкой, приближать, удалять, изменять внешний вид. Вот, например, <a href='http://tien-shan.ru/main.php?level=2&cid=1' target='_blank'>здесь</a>. Хотелось бы Вам организовать у себя на сайте нечто подобное? Это гораздо проще, чем может показаться на первый взгляд.</p>
<p>На данный момент <strong>API спутниковых карт</strong> предоставляют три крупных игрока: <a href='http://maps.yandex.ru/' target='_blank'>Яndex</a> , <a href='http://maps.google.com/' target='_blank'>Google</a>  и <a href='http://www.microsoft.com/virtualearth/' target='_blank'>Microsoft</a> . Возможно, есть и другие сервисы, имеющие собственные географические и спутниковые карты, но я не уверен, что они предоставляют полноценный API для использования карт в своих веб-приложениях.</p>
<p>Если сравнивать карты от Google и от Яndex, так мне больше нравятся буржуйские карты, на мой взгляд, у них и оптика лучше, и охват территории - шире.</p>
<p>В сегодняшней статье я расскажу о том, как без особых хлопот внедрить в свой сайт такую карту.</p>
<p>Итак, вашим первым шагом будет посещение вот этого адреса <a href='http://code.google.com/intl/ru/apis/maps/' target='_blank'>http://code.google.com/intl/ru/apis/maps/</a> . В принципе там все написано, но если читать не хочется, то я расскажу, что делать дальше.</p>
<p>Итак, для начала вам нужно иметь <em>аккаунт на google.com</em>. Чтобы создать аккаунт, нужно зайти на <a href='https://www.google.com/accounts/NewAccount/' target='_blank'>https://www.google.com/accounts/NewAccount/</a>, заполнить необходимые поля (причем, адрес почты может быть на любом почтовом сервере) и нажать <em>&laquo;Создайте мой аккаунт&raquo;</em>. Затем на указанный адрес будет выслано письмо с подтверждением, в котором нужно пройти по предложенной ссылке. Поздравляю! Теперь у вас есть аккаунт google
и вы можете переходить к следующему шагу.</p>
<p>Теперь на странице <a href='http://code.google.com/intl/ru/apis/maps/signup.html' target='_blank'>http://code.google.com/intl/ru/apis/maps/signup.html</a> вам необходимо получить <strong>ключ API</strong> для работы с картами google. Здесь вы ставите галочку &laquo;Я ознакомлен и согласен с условиями и положениями&raquo;, а в поле &laquo;URL-адрес моего веб-сайта&raquo; прописываете именно тот URL, на котором вы собираетесь использовать карты от google. Вводить весь путь к странице необязательно, достаточно указать
доменное имя сайта. Если вы собираетесь для начала отлаживать тестовую версию на локальном веб-сервере, то можете со спокойной душой ввести в этом поле &laquo;http://localhost&raquo;, вообще, вы можете на один google-аккаунт получить несколько API-ключей для работы с различными урлами. Не стесняйтесь, денег за это никто с вас не возьмет.</p>
<p>В результате этих операций вы получите длинную символьную строку, нечто вроде этого: <strong>ABQIAAAA0O8WpTAV74EwpOYF7DnLmxT2yXp_ZAY8_ufC3 CFXhHIE1NvwkxTqolPNY6dTVRyrkNKATBVv2oLB1A</strong>, которую сохраните пока в какой-нибудь текстовый файл, она вам еще пригодится.</p>
<p>На той же странице, где вы получили свой API, ниже можно увидеть текст JavaScript&rsquo;а, который вы можете использовать на ваших страницах, на которых планируете отображать карты google. Он выглядит приблизительно так:</p>
<div class='list'>
&lt;script src=http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true&amp;key=ABQIAAAA0O8WpTAV74EwpOYF7DnLmxT2yXp_ZAY8_ufC3CFXhHIE1N vwkxTqolPNY6dTVRyrkNKATBVv2oLB1A type="text/javascript"&gt;&lt;/script&gt;
</div>
<p>Этот скрипт загружает сам движок maps.google. Его нужно вставить в секции &lt;head&gt; тех страниц, на которых вы планируете отображать карты.</p>
<p>
Ну а вот собственно разметка страницы со встроенной в нее картой:
<pre>
<div class='list'>
&lt;!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"/&gt;
&lt;title&gt;Пример API Карт Google на языке JavaScript &lt;/title&gt;
&lt;script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=abcdefg"
type="text/javascript"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
function initialize() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
}
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body onload="initialize()" onunload="GUnload()"&gt;
&lt;div id="map_canvas" style="width: 500px; height: 300px"&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</div>
</pre>
</p><p>На этой странице присутствуют следующие элементы:
<ol>
<li>DIV map_canvas, который собственно и будет содержать карту. Карта будет иметь ровно те размеры, что были заданы этому DIV'у до инициализации карты. Кстати, размер карты можно изменить и после инициализации, но при этом после изменения размера контейнера нужно вызвать для объекта map метод checkResize().</li>
<li>Как видим в событии onload объекта BODY стоит вызов функции initialize(), которая объявлена выше.</li>
<li>Функция initialize() сначала проверяет, совместима ли версия браузера пользователя с картами google и если все в порядке, то создается объект map типа GMap2, в конструктор которого в качестве параметра передается объект-контейнер, то есть тот самый DIV, о котором шла речь в пункте 1. Затем центр карты устанавливается в некоторые координаты, чтобы пользователь увидел перед собой не бескрайнее синее море, а некий осмысленный объект. В функцию setCenter передаются два параметра: координаты центра в виде объекта
GlatLng(широта, долгота) и начальный масштаб карты, чем ближе это число у нулю, тем большая часть мира поместится на экране пользователя, чем больше это число тем подробнее пользователь увидит требуемый район карты. Максимальное значение масштаба 19.</li>
<li>В методе onunload объекта BODY вызывается функция GUnload(), которая корректно освобождает все ресурсы браузера, занятые под отображение карт.</li>
<li>И не забудьте вместо значения key=abcdefg вставить свой собственный API key, иначе работать ваша карта не будет.</li></ol></p>
<p>Ну что ж. В результате выполнения этого урока вы создали веб-страницу с внедренной в нее картой google, которую вы можете просмотреть при помощи мыши, используя обычный Drag&rsquo;n&rsquo;Drop, изменение масштаба карты осуществляется с помощью двойного щелчка на карте: левой кнопкой &ndash; приближение, правой кнопкой &ndash; отдаление.</p>
<p>В следующем уроке мы узнаем, как сделать работу с картой более удобной, научимся менять ее вид (спутниковая, географическая) и кое-что еще.</p>
<p>Прочитать статью <a href='http://easy4web.ru/?p=361' target='_blank'>Спутниковые карты на Вашем сайте</a>, а также другие статьи посвященные веб-разработке вы можете на сайте <a href='http://easy4web.ru/' target='_blank'>Веб-разработка? Это просто!</a></p>
<!-- " ' --></td>
</tr>
</table>]]></description>
<guid isPermaLink="false">955484</guid>
<pubDate>Tue, 03 Mar 2009 23:49:38 MSK</pubDate>
</item>
<item>
<title>&#x412;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430;? &#x42D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;! &#x41A;&#x440;&#x430;&#x441;&#x438;&#x432;&#x43E;&#x435; &#x432;&#x44B;&#x43F;&#x430;&#x434;&#x430;&#x44E;&#x449;&#x435;&#x435; &#x43C;&#x435;&#x43D;&#x44E;. &#x41F;&#x43E;&#x43B;&#x443;&#x43F;&#x440;&#x43E;&#x437;&#x440;&#x430;&#x447;&#x43D;&#x43E;&#x435; &#x438; &#x441; &#x442;&#x435;&#x43D;&#x44C;&#x44E;.
</title>
<link>http://archives.maillist.ru/55140/954648.html?rss=1</link>
<description><![CDATA[<style type="text/css"><!-- p { 
     padding-left: 10px; 
     padding-right: 10px; 
     font: 14px/20px Veradana, Arial, sans-serif; 
} 
 
span.drop { 
     font: bold 60px /0.83em tahoma, sans-serif; 
     color: #0019ff; 
     float: left; 
     margin-right: 5px; 
     margin-top: 5px; 
} 
 
 .list { 
     background-color: #f5f5f5; 
     border: 1px solid #ededed; 
     padding: 10px; 
     margin: 10px 40px 10px 40px; 
     font-family: courier, monospace; 
} 
 
h1{ 
     font-family: Verdana, Arial, Sans-Serif; 
     color:#fcb300; 
     font-size:28px; 
     font-weight:bold; 
     padding: 10px 0 0 10px; 
     text-align:left; 
} 
 --></style>
<table summary="" cellspacing="5" cellpadding="5" border="0" bgcolor="#ffffff" style="background-color: #ffffff; background-image: ;">
<tr valign="top" align="left">
<td bgcolor="#ffffff" style="padding: 5px; background-color: #ffffff; background-image: ; border: solid 1px #dddddd;"><h1>Красивое выпадающее меню. Полупрозрачное и с тенью.</h1>
<p>
Вот такое, как <a href='http://easy4web.ru/?p=334'>здесь</a>. Нравится?:-) Научить, как делать нечто подобное? Устраивайтесь поудобнее, мы начинаем.</p><p>
Начать следует с того, что сейчас большинство выпадающих меню (как горизонтальных, так и вертикальных) делают из несортированных списков (тег &lt;ul&gt; (сокращение от unordered list)). В совокупности с свойствами display:none и display:block (последнее для псевдокласса :hover, хотя, можно сделать и так, чтобы пункты меню прятались при наведении на них курсора мыши, да) получаются красивые и динамичные менюшки.</p><p>

В данном меню html код выглядит так:
<pre>
<div class="list">
&lt;div id="shad"&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="#"&gt;Главная&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;О нас&lt;/a&gt;
    &lt;div id="shad2"&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href="#"&gt;История&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="#"&gt;Команда&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="#"&gt;Офис&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;Услуги&lt;/a&gt;
    &lt;div id="shad1"&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href="#"&gt;Веб-дизайн&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="#"&gt;Интернет&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="#"&gt;Хостинг&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="#"&gt;Доменные имена&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;Контакты&lt;/a&gt;
    &lt;div id="shad3"&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href="#"&gt;Телефон&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="#"&gt;E-mail&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="#"&gt;Почта&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/div&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;
</div>
</pre>
</p><p>
Если посмотреть внимательно, то мы увидим, что основой меню является ненумерованный список (как я и говорил). В отдельные пунты меню вложены другие списки (это субменюшки, которые будут распахиваться при наведении курсора мыши). Оборачивающие &lt;div id="shade#"&gt; нам нужны для размещения теней от меню. Тут я использовал совсем простое визуальное оформление, просто чтобы донести идею. Естественно, ваша фантазия может быть безграничной:-)
</p><p>
Итак, после того, как мы сделаем само меню, нам необходимо запустить страницу в браузере и замерить высоту всех блоков экранной линейкой (скачать можно <a href="http://www.softforfree.com/programs/webtool-12033.html">тут</a>) - это пригодится нам для построения "теней", так как надо будет делать тень четко под размер блока.
</p><p>
Теперь откроем Photoshop и создадим новый файл высотой в 1 пиксель, а шириной равной ширине блоков нашего меню. Зальем его цветом и настроим прозрачность. А затем сохраним как png24 (с альфа-каналом). Это будет бэкграунд всех наших пунктов меню. Теперь создадим файлы по количеству блоков, а по ширине и высоте равные соответствующим блокам (вы ведь замерили высоту блоков?:-) ). Зальем их желаемым цветом, настроим прозрачность и мягкой стеркой дадим растушевку на краях, чтобы получились мягкие переходы. У меня
вышло 
<a href="http://easy4web.ru/wp-content/uploads/2009/02/bg_s.png">вот так</a>. Тени тоже готовы. Теперь нам осталось задать css-стили:
</p><p>
<pre>
<div class="list">
 #shad {
    background: url(./bg_s.png) bottom right no-repeat;
    padding: 0;
    width: 157px;
    height: 107px;
}

  #shad1 {
    background: url(./bg_s.png) bottom right no-repeat;
    padding: 0;
    width: 157px;
    height: 107px;
}

  #shad2 {
    background: url(./bg_s1.png) bottom right no-repeat;
    padding: 0;
    width: 157px;
    height: 83px;
}

  #shad3 {
    background: url(./bg_s1.png) bottom right no-repeat;
    padding: 0;
    width: 157px;
    height: 83px;
}

  ul {
    margin: 0;
    padding: 0;
    list-style: none;
    width: 150px;
    border-bottom: 1px solid #00ff3c;
}

ul li {
    position: relative;
}

li ul {
    position: absolute;
    left: 0px;
    top: 0;
    display: none;
}

li div {
    position: absolute;
    left: 149px;
    top: 0;
    display: none;
}

ul li a {
    display: block;
    text-decoration: none;
    color: #229922;
    font-weight: bold;
    background: url(./bg.png);
    padding: 5px;
    border: 1px solid #00ff3c;
    border-bottom: 0;
}

li:hover div {
    display: block; 
}

li:hover ul {
    display: block; 
}

</div>
</pre>
</p><p>
Итак, по пунктам. В моей стилевой таблице для начала заданы контейнеры, которые будут вмещать тени. Потом, мы сбрасываем на всех ненумерованных списках внешние и внутренние отступы, буллеты, задаем нижнюю границу нужного цвета. Далее, мы даем всем элементам списка position:relative, чтобы список вложенный в пункт вышестоящего списка наследовал его позицию в пространстве. Затем, спискам, вложенным в вышестоящий элемент списка даюм абсолютную позицию, чтобы они не раздвигали список-родитель, и задаем им позицию
относительно вмещающего элемента списка. А также скрываем их пока от любопытных глаз:-) Следующим шагом мы задаем позиционирование контейнерам div, вложенным в вышестоящий пункт списка, и тоже скрываем их (мы ведь не хотим, чтобы тени ото всех подменю постоянно мозолили нам глаза?:-) ). Настраиваем стиль ссылок. Даем отступы, границы и прописываем наш полупрозрачный фон. И, наконец, говорим браузеру, что при наведении курсора мыши на элемент списка нам хотелось бы увидеть все вложенные контейнеры. И, вуаля.
Наше меню работает.
</p><p>
Готовый пример можно <a href="http://easy4web.ru/wp-content/uploads/2009/02/1.zip">скачать</a>, и поковырять самостоятельно. Успехов!</p>
<!-- " ' --></td>
</tr>
</table>]]></description>
<guid isPermaLink="false">954648</guid>
<pubDate>Mon, 02 Mar 2009 19:13:46 MSK</pubDate>
</item>
<item>
<title>&#x412;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430;? &#x42D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;! &#x41D;&#x435;&#x43C;&#x43D;&#x43E;&#x433;&#x43E; &#x43D;&#x43E;&#x432;&#x43E;&#x441;&#x442;&#x435;&#x439;
</title>
<link>http://archives.maillist.ru/55140/947702.html?rss=1</link>
<description><![CDATA[<style type="text/css"><!-- p { 
     padding-left: 10px; 
     padding-right: 10px; 
     font: 14px/20px Veradana, Arial, sans-serif; 
} 
 
span.drop { 
     font: bold 60px /0.83em tahoma, sans-serif; 
     color: #0019ff; 
     float: left; 
     margin-right: 5px; 
     margin-top: 5px; 
} 
 
 .list { 
     background-color: #f5f5f5; 
     border: 1px solid #ededed; 
     padding: 10px; 
     margin: 10px 40px 10px 40px; 
     font-family: courier, monospace; 
} 
 
h1{ 
     font-family: Verdana, Arial, Sans-Serif; 
     color:#fcb300; 
     font-size:28px; 
     font-weight:bold; 
     padding: 10px 0 0 10px; 
     text-align:left; 
} 
 --></style>
<table summary="" cellspacing="5" cellpadding="5" border="0" bgcolor="#ffffff" style="background-color: #ffffff; background-image: ;">
<tr valign="top" align="left">
<td bgcolor="#ffffff" style="padding: 5px; background-color: #ffffff; background-image: ; border: solid 1px #dddddd;"><h1>Немного новостей</h1>
<p>
Здравствуйте, уважаемые друзья. Мы просим у вас прощения за отсутствие. В свое оправдание можем сказать, что все это время мы не маялись дурью, а создавали и запускали свою студию. Вот она: <a href="http://vision4web.ru/">vision4web.ru</a>. Теперь мы не только пишем о создании сайтов, но и создаем их:-)
</p><p>
Также, мы хотим сделать наш блог еще интереснее для читателей, поэтому в скором времени мы немного расширим его формат. Будут введены опросы, для того, чтобы знать, что интереснее всего читательской аудитории, а также различные тренинги и занятия будут проводиться для желающих. Следите за обновлениями и оставайтесь с нами, будет интересно, мы обещаем!</p>
<!-- " ' --></td>
</tr>
</table>]]></description>
<guid isPermaLink="false">947702</guid>
<pubDate>Thu, 19 Feb 2009 19:35:07 MSK</pubDate>
</item>
<item>
<title>&#x412;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430;? &#x42D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;! &#x41F;&#x430;&#x43B;&#x43A;&#x438; &#x438; &#x43F;&#x43B;&#x430;&#x448;&#x43A;&#x438;. &#x41E; &#x43C;&#x443;&#x441;&#x43E;&#x440;&#x435; &#x43D;&#x430; &#x441;&#x442;&#x440;&#x430;&#x43D;&#x438;&#x446;&#x435;.
</title>
<link>http://archives.maillist.ru/55140/940722.html?rss=1</link>
<description><![CDATA[<style type="text/css"><!-- p { 
     padding-left: 10px; 
     padding-right: 10px; 
     font: 14px/20px Veradana, Arial, sans-serif; 
} 
 
span.drop { 
     font: bold 60px /0.83em tahoma, sans-serif; 
     color: #0019ff; 
     float: left; 
     margin-right: 5px; 
     margin-top: 5px; 
} 
 
 .list { 
     background-color: #f5f5f5; 
     border: 1px solid #ededed; 
     padding: 10px; 
     margin: 10px 40px 10px 40px; 
     font-family: courier, monospace; 
} 
 
h1{ 
     font-family: Verdana, Arial, Sans-Serif; 
     color:#fcb300; 
     font-size:28px; 
     font-weight:bold; 
     padding: 10px 0 0 10px; 
     text-align:left; 
} 
 --></style>
<table summary="" cellspacing="5" cellpadding="5" border="0" bgcolor="#ffffff" style="background-color: #ffffff; background-image: ;">
<tr valign="top" align="left">
<td bgcolor="#ffffff" style="padding: 5px; background-color: #ffffff; background-image: ; border: solid 1px #dddddd;"><h1>Палки и плашки. О мусоре на странице.</h1>
<p><em>
Уважаемые подписчики. Прошу прощения за повтор этого выпуска. В прошлом выпуске не прикрепились изображения. 
</em></p>
<p>Сегодня мне хотелось бы поговорить о различных декоративных элементах, излишняя любовь к которым может значительно ухудшить внешний вид макета.
Это палки и плашки.</p><p>

Под палками я понимаю либо горизонтальные разделители (&lt;HR&gt;), которые были введены в спецификацию HTML в эпоху web1.0 (немногим позже вымирания динозавров, да-да) и предназначались для смысловой отбивки блоков текста (аналогично типографской линии, или звездочкам) друг от друга; либо css-свойство border (граница элемента), достаточно часто используемое не по назначению.</p><p>
Примеры плохого использования палок: пример <a href="http://s45.radikal.ru/i110/0902/b3/e946ee4efa4d.jpg" target="_blank">плохого использования палок<a/> и еще один пример 
<a href="http://i072.radikal.ru/0902/d8/7164e67628ec.jpg" target="_blank">плохого использования палок<a/>
</p><p>
Если на первой картинке вертикальную палку убрать совсем,  а горизонтальные уменьшить раза так в четыре, картинке полегчает. А в таком виде она полна мусора.
Во второй картинке можно вообще убрать все вертикальные палки, станет только лучше. Я, честно признаться, не понимаю, зачем они там вообще, но видел и такие примеры верстки.
</p><p>
Почти такая же беда и с плашками: пример <a href="http://s50.radikal.ru/i128/0902/c7/7345c099acb3.jpg" target="_blank">плохого использования плашек<a/> и еще один пример 
<a href="http://i057.radikal.ru/0902/0d/e38d258dcf06.jpg" target="_blank">плохого использования плашек<a/>
</p><p>
Плашка, это элемент также предназначенный для смысловой отбивки небольшого блока текста. Применять их нужно весьма осторожно. Если увлечься, то получится ужас, показанный на картинках выше. Да-да, я и такое видел. И даже, когда-то, делал:-)
В случае первой картинки у нас огромная плашка под основным текстом давит на зрителя и приводит его в уныние. Ее можно с легким сердцем удалить, оставив только мелкую плашку под меню. Она позволяет визуально отделить меню от основного текста и акцентирует на нем внимание зрителя.
В случае второй картинки от плашек надо вообще отказаться, обыграв визуальную отбивку блоков друг от друга более плотным межстрочным интервалом (line-height) и более разреженными отступами блоков друг от друга.
</p><p>
Я показал всего четыре достаточно простых примера, но если вы немного подумаете, вы легко сможете сами понять в каких еще случаях палки плашки могут мешать, а в каких - наоборот, - пригодиться. При условии соблюдения правильного баланса ваши макеты всегда будут легкими и изящными.
</p><p>
Прочитать полный текст статьи <a href='http://easy4web.ru/?p=308' target='_blank'>Палки и плашки. О мусоре на странице.</a>, а также другие статьи посвященные веб-разработке Вы можете на нашем сайте <a href='http://easy4web.ru/' target='_blank'>Веб-разработка? Это просто!</a>. Мы ждем Ваших комментариев.</p>
<!-- " ' --></td>
</tr>
</table>]]></description>
<guid isPermaLink="false">940722</guid>
<pubDate>Mon, 09 Feb 2009 23:57:30 MSK</pubDate>
</item>
<item>
<title>&#x412;&#x435;&#x431;-&#x440;&#x430;&#x437;&#x440;&#x430;&#x431;&#x43E;&#x442;&#x43A;&#x430;? &#x42D;&#x442;&#x43E; &#x43F;&#x440;&#x43E;&#x441;&#x442;&#x43E;! &#x412;&#x43B;&#x438;&#x44F;&#x43D;&#x438;&#x435; &#x441;&#x43E;&#x446;&#x438;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x445; &#x437;&#x430;&#x43A;&#x43B;&#x430;&#x434;&#x43E;&#x43A; &#x43D;&#x430; &#x43F;&#x443;&#x437;&#x43E;&#x43C;&#x435;&#x440;&#x43A;&#x438; &#x438; &#x43F;&#x43E;&#x441;&#x435;&#x449;&#x430;&#x435;&#x43C;&#x43E;&#x441;&#x442;&#x44C;.
</title>
<link>http://archives.maillist.ru/55140/939650.html?rss=1</link>
<description><![CDATA[<style type="text/css"><!-- p { 
     padding-left: 10px; 
     padding-right: 10px; 
     font: 14px/20px Veradana, Arial, sans-serif; 
} 
 
span.drop { 
     font: bold 60px /0.83em tahoma, sans-serif; 
     color: #0019ff; 
     float: left; 
     margin-right: 5px; 
     margin-top: 5px; 
} 
 
 .list { 
     background-color: #f5f5f5; 
     border: 1px solid #ededed; 
     padding: 10px; 
     margin: 10px 40px 10px 40px; 
     font-family: courier, monospace; 
} 
 
h1{ 
     font-family: Verdana, Arial, Sans-Serif; 
     color:#fcb300; 
     font-size:28px; 
     font-weight:bold; 
     padding: 10px 0 0 10px; 
     text-align:left; 
} 
 --></style>
<table summary="" cellspacing="5" cellpadding="5" border="0" bgcolor="#ffffff" style="background-color: #ffffff; background-image: ;">
<tr valign="top" align="left">
<td bgcolor="#ffffff" style="padding: 5px; background-color: #ffffff; background-image: ; border: solid 1px #dddddd;"><p><span class="drop">И</span>так, ваш свеженький сайт уже опубликован в сети, а посетителей - кот наплакал. И в душе поднимается обида на все человечество: &quot;Как же так! На мой отличный сайт никто не ходит?&quot;. А как иначе, ведь о нем еще пока мало кто знает. И теперь нам нужно добиться, чтобы люди узнали о нем. Понятное дело, на рекламу у нас денег нет.Чтобы люди имели возможность узнать о нас, есть несколько замечательных возможностей, одна из них &ndash; сервисы социальных закладок.

</p><p><strong>Закладка </strong>&ndash; ссылка на интересный, значимый по Вашему мнению сайт.
<strong></strong></p><p><strong>Сервис социальных закладок</strong><em> </em>&ndash; это интернет-сервис, где можно хранить такие ссылки. То есть теперь значимые для Вас ссылки хранятся не в библиотеке закладок браузера, и не в текстовом файле, а в интернете. И поэтому, с любого компьютера Вы имеете легкий доступ ко всем Вашим закладкам. Вы можете также обмениваться ссылками с Вашими знакомыми. Сохраняя закладку, Вы можете указать, чтобы она была публичной, то есть доступной всем пользователям данного закладочного
сервиса, а значит &ndash; и <em>поисковым роботам</em>.

</p><p>Итак, многочисленные эксперименты веб-мастеров с социальными закладками выявили несколько основных фактов:
</p><p>1)    Влияние прогона по социальным закладкам никак или почти никак не влияет на <em>тИЦ</em>. Мнения разных веб-мастеров относительно этого разнятся, кто-то утверждает, что достиг незначительного роста <em>тИЦ</em>, кто-то разочарованно сообщил, что после очередного апа яндекса <em>тИЦ </em>остался на прежнем нулевом уровне.</p><p>
2)    Прогон по социальным закладкам дает кратковременный рост <em>посещаемости</em> вашего сайта (3-5 дней), после чего <em>посещаемость </em>снова падает. Хотя здесь нужно учитывать то, насколько вообще интересен Ваш сайт. Ведь если пользователь, пришедший к Вам с закладок, обнаружит для себя что-то интересное, то он и впредь будет заходить к Вам. Если же ничего интересного для себя он там не обнаружил, попрощайтесь с ним навсегда.
</p><p>3)    Также не обнаружено существенное влияние прогона по закладкам на <em>PR</em> ресурса.
</p><p>4)    Прогон по закладочным сервисам помогает <em>поднять позицию</em> сайта в поисковиках. Причем, лучше всего показатели по Google, далее идет Yandex, затем Rambler.
</p><p>
Таким образом есть реальные шансы лишь увеличить посещаемость сайта. Чтобы всплеск посещаемости не носил кратковременного характера, необходимо периодически добавлять на сервисах новые закладки, причем не постить туда одну и ту же ссылку с одним и тем же описанием, а поступать творчески. То есть 2-3 раза в неделю публиковать новые закладки на разные страницы Вашего сайта. Если у Вас, например, блог, и Вы хотя бы два-три раза в неделю публикуете на блоге новый пост, то можете сразу же дублировать его ссылкой
на пост в социальных закладках. Обычно новые закладки публикуются наверху в списке закладок, пока их не вытеснят вниз более свежие, а значит, есть шанс, что Вас кто-нибудь успеет заметить и, заинтересовавшись предложенной темой, перейдет на Ваш сайт.</p><p>

С точки зрения тИЦ, постоянная публикация новых закладок &ndash; бессмысленна, ведь при его подсчете учитывается лишь факт наличия цитирования с домена, то есть всы ссылки с домена &laquo;клеятся&raquo;, на PR возможно слабое влияние, но больше +1 ждать не приходится.
</p><p>
Кстати, если Ваш сайт не обновляется настолько часто, чтобы Вы смогли 2-3 раза в неделю публиковать новые закладки с новыми ссылками, то есть смысл на каждом прогоне по закладкам создавать новый аккаунт, так как за ссылочный спам Ваш аккаунт очень быстро будет забанен вместе с Вашими закладками. Каждый раз необходимо менять описание и название закладки.

</p><p>А вот Вам список наиболее популярных в рунете закладочных сервисов:</p><p>

<a target="_blank" href="http://memori.ru/" title="http://memori.ru/">http://memori.ru/</a><br />
<a href="http://moemesto.ru/" title="http://moemesto.ru/">http://moemesto.ru/</a><br />
<a target="_blank" href="http://toodoo.ru/" title="http://toodoo.ru/">http://toodoo.ru/</a><br />
<a target="_blank" href="http://myscoop.ru/" title="http://myscoop.ru/">http://myscoop.ru/</a><br />
<a target="_blank" href="http://www.ruspace.ru/" title="http://www.ruspace.ru/">http://www.ruspace.ru/</a><br />
<a target="_blank" href="http://text20.ru/" title="http://text20.ru/">http://text20.ru/</a><br />
<a target="_blank" href="http://newblogs.ru/" title="http://newblogs.ru/">http://newblogs.ru/</a><br />
<a target="_blank" href="http://news2.ru/" title="http://news2.ru/">http://news2.ru/</a><br />
<a target="_blank" href="http://zakladki.yandex.ru/" title="http://zakladki.yandex.ru/">http://zakladki.yandex.ru/</a><br />
<a target="_blank" href="http://smi2.ru/" title="http://smi2.ru/">http://smi2.ru/</a><br />
<a target="_blank" href="http://www.gazeta.lv/published" title="http://www.gazeta.lv/published">http://www.gazeta.lv/published</a><br />
<a target="_blank" href="http://www.mister-wong.ru/" title="http://www.mister-wong.ru/">http://www.mister-wong.ru/</a><br />
<a target="_blank" href="http://webmarks.ru/" title="http://webmarks.ru/">http://webmarks.ru/</a><br />
<a target="_blank" href="http://www.ru-marks.net/" title="http://www.ru-marks.net/">http://www.ru-marks.net/</a><br />
<a target="_blank" href="http://bobrdobr.ru/main.html" title="http://bobrdobr.ru/main.html">http://bobrdobr.ru/main.html</a><br />
<a target="_blank" href="http://google.ru/Bookmarks" title="http://google.ru/Bookmarks">http://google.ru/Bookmarks</a><br />
<a target="_blank" href="http://www.100zakladok.ru/" title="http://www.100zakladok.ru/">http://www.100zakladok.ru/</a><br />
<a target="_blank" href="http://vaau.ru/" title="http://vaau.ru/">http://vaau.ru/</a><br />
<a target="_blank" href="http://newsland.ru/" title="http://newsland.ru/">http://newsland.ru/</a><br />
<a target="_blank" href="http://www.lopas.ru/" title="http://www.lopas.ru/">http://www.lopas.ru/</a><br />
<a target="_blank" href="http://myelect.ru/" title="http://myelect.ru/">http://myelect.ru/</a>

</p><p>А Вот здесь <a target="_blank" href="http://www.postquickly.com/" title="Пости быстро">Пости быстро</a> можно прочитать, как сделать добавление закладок во все эти сервисы быстрым и безболезненным.</p><p>Прочитать статью <a target="_blank" href="http://easy4web.ru/?p=301">Влияние социальных закладок на пузомерки и посещаемость</a>, и множество других полезных статей на тему веб-разработки Вы можете на нашем сайте <a target="_blank" href="http://easy4web.ru">Веб-разработка? Это просто!</a></p>
<!-- " ' --></td>
</tr>
</table>]]></description>
<guid isPermaLink="false">939650</guid>
<pubDate>Sun, 08 Feb 2009 01:23:43 MSK</pubDate>
</item>
</channel>
</rss>