Ãëàâíàÿ

Главная


IIS 7.0 404 В своем посте "Как правильно создать страницу 404 или один слуга для двух хозяев" я писал, что правильная страница "404" должна не только содержать сообщение, понятное пользователю, но и действительно возвращать 404 код ошибки. Подробно об этом можно почитать в самом сообщении, но если в двух словах, то 404 код ошибки нужен поисковым серверам. Пока поисковики не научились распознавать текст, им нужно явно указывать, что запрошенной страницы нет. Иначе такие ссылки будут долго болтаться в индексе, а сам сервер будет жаловаться, что у нескольких страниц вашего сайта не только одинаковые заголовок и мета-теги, но еще и все содержимое.

Все было хорошо до тех пор, пока я случайно не увидел, что происходит на рабочем сервере. В ответ на ошибочный url браузер отобразил стандартную страницу IIS 7.0 "Page not found". IIS 7.0 page not found

Полез разбираться. На моем компьютере с Windows Vista и IIS 7.0 все работает отлично - возвращается именно моя страница, прием код возврата - 404. А вот на рабочем сервере с Windows Server 2008 и IIS 7.0 возвращается стандартная страница IIS.

В результате получается, что сначала ASP.NET приложение корректно обрабатывает 404 ошибку и возвращает ответ браузеру. После чего этот ответ перехватывает IIS, видит 404 код и заменяет его на на свое стандартное сообщение. Я не скажу точно, было ли это изначально в Windows Server 2008 или, скажем, появилось вместе с Service Pack 2 - но налицо вот такой неприятный сюрприз. Проявляется он только в IIS Integrated mode, в Classic mode все работает как и раньше. Кстати, это заставляет задуматься о том, что для качественного тестирования желательно иметь среду, аналогичную production server, а не Windows 2000 с IIS 6.0 :)

[читать дальше]

Visual Search Suggestions - одна из новых возможностей поиска в IE 8.0. Она позволит пользователям искать что-нибудь на вашем сайте, не переходя на его страницы. А если вы добавите к провайдеру favicon, ваш бренд (скорее брендик 16 на 16) всегда будет вместе с пользователем. Мини игры на Play2Game.ru А главное, она позволит разбавить сухой текст результатов поиска симпатичными картинками, например вот так:

А еще, вы сможете рассказать о своем провайдере, выложив его в галерею расширений IE 8.0. Или выиграть плазменный телевизор, поучавствовав в конкурсе дополнений к IE 8.0, который проводится в рамках конференции ReMIX09. конкурс расширений для IE 8.0

Между прочим, сейчас там зарегистрировано всего 3 визуальных провайдера, а сам конкурс продлится до 31 мая 2009. Так что если у вас есть что искать, а еще лучше - сайт с верной аудиторией, готовой поддержать его в конкурсе - давайте попробуем? [читать дальше]

формат robots.txt


Я читал, что поисковый сервер перебирает все правила в robots.txt и останавливается на первом подходящем. Поэтому, я наивно полагал, что если разместить блок "User-agent: *" в начале файла, его правила будут использоваться в любом случае. То есть, мой robots.txt выглядел так:


# Общие правила для всех поисковиков: служебные страницы для логина и пр.
User-agent: *
Disallow: /login
Disallow: /signup
...

# Указание на файл с картой сайта
Sitemap: http://{доменное имя}/sitemap.xml

# Дополнительные правила для Google (используя расширенный синтаксис)
User-agent: Googlebot
Disallow: /*/edit$

# То же самое для Yandex
User-agent: Yandex
Disallow: /*/edit$
Однако, случайно я обнаружил, что страница "/login" вполне доступна для индексирования (проверял в инструментах веб-мастера Google и Yandex). Оказалось, что если в robots.txt есть секция для конкретного поискового севера (например, "User-agent: Yandex"), этот сервер вообще не обращает внимания на остальные секции, в том числе и на "User-agent: *". Единственное правило, которое они обнаруживают в любом месте, это "Sitemap:" - он доступен всем и везде не смотря на строки "User-agent:". [читать дальше]

формат robots.txt Файлы robots.txt просты как угол дома и используются со времен, когда 3" дискеты считались прорывом в технологии :) Именно по этому я думал, что в них нечего и разбираться. Так что обходился копи-пастом какого-то образца, который переходил у меня из проекта в проект уже несколько лет.

Но вот однажды, затеял я эксперимент с индексацией сайта. Выложил его в инет, добавил в "Инструменты для веб-мастеров" Google и ... увидел сообщение "Страницы вашего сайта недоступны для Google из-за огранчений в robots.txt". А файл-то был простейший, создавался он ради одной строчки "Sitemap: http://доменное имя/sitemap.xml", чтобы лишний раз указать поисковикам где искать карту сайта.

Между прочим, robots.txt кешируется Google примерно на день, так что после исправления пришлось ждать более суток. Вобщем я вздохнул и полез разбираться с темой.

Robots.txt был придуман в далеком 1994 году и был предназначен для того, чтобы указать поисковикам, что не следует индексировать на вашем сайте. [читать дальше]

Web Slices IE 8 Если вы слушали доклады или читали статьи о новинках IE 8, то должны помнить, что добвить web slices (веб-фрагменты) к своему сайту проще простого. Легкий взмах руки (добавление 2-3 аттрибутов в html) - и вы смело можете утверждать, что ваш сайт по полной использует возможности новой версии браузера!

Но так ли все просто на самом деле? Конечно, в наше время верить в чудеса стало легче. Кто-то еще помнит, сколько усилий и времени нужно было потратить, чтобы заставить общаться клиентскую и серверную части кода по DCOM? Чувствуете разницу, реализуя все то же сейчас на WPF? (кстати, намного больше усилий приходилось тратить не на реализацию, а на поддержку этого рершения в локальных сетях заказчиков; в десяти случаях все нормально, в одиннадцатом - нет; и сеть такая же, и руки админ мыл - а не работает. Ладно, это так, лирика :)

Знаете, в программировании, да и в любой другой высокотехнологичной среде, вместо ответов "да" и "нет" практически всегда звучит "да, но ..." и "нет, хотя ...". И это правильно, ведь для того, чтобы правильно задать вопрос, нужно знать большую часть ответа. Вот и сейчас, можно смело сказать, "да, легко, но ...".

Ну что, посмотрим, что скрывается за этим многоточием?

Для наглядности возьмем пример, на котором я разбирался с web slices сам: модуль, выводящий последние результаты футбольных матчей. Для web slices это практически идеальный кандидат - часть страницы с постоянно обновляющейся информацией, которая интересна многим пользователям.

В лучших традициях инкапсуляции сам модуль выглядит у нас так:
<common:LiveResults ID="lr" runat="server"/>
Итак ...

Web slices - взгляд первый

Web Slices FanNet.org Легкий взмах руки:
  • Выделяем нужную нам область тегом div, отмечаем его классом "hslice" и придумываем какой-нибудь id (это обязательное условие для web slices, не важно какой, но id нужен)

  • Внутрь div-а добавляем тег, помеченный классом "entry-title". Он нужен для того, чтобы IE мог определить название нашего веб-фрагмента. Устанавливаем ему стиль "display:none", чтобы сделать невидимым для пользователя.

    Кончно, можно прекрасно использовать и тег с заголовком внутри нашего модуля. Я вынес заголовок, чтобы полностью изолировать логику web slice от user control и оставить ему только отрисовку результатов. А будут они отображаться на странице или как web slices - не user control-ного ума дело.
Получаем вот что:
<div id="liveRes" class="hslice">
    <span class="entry-title" style="display:none">Online-результаты</span>
    <common:LiveResults ID="lr" runat="server"/>
</div>
И все действительно работает. Наводим на модуль мышкой, выбираем "Добавить на панель избранного" и получаем симпатичную кнопку с последними матчами.

Часть ответа со словом "да" мы честно отработали. Теперь посмотрим, что у нас означает "но". [читать дальше]

Браузеры, кнопка Back и кеширование страниц Это - браузеры. Они отображают наши станицы.
А это - кеш браузера. Он старается, чтобы наши страницы отображались быстрее.
А это - AJAX. Он тоже старается, чтобы наши страницы отображались быстрее.
Но иногда, приходится стараться, чтобы они так не старались. Об одном таком случае и пойдет речь.

Итак, представте, что на вашем сайте есть страница, которая сама периодически обновляет список с online-информацией. Да через тот же AJAX. Чтобы представлять было проще, возьмем конкретный пример - текущие результаты футбольных матчей, которые обновляются примерно раз в две минуты. Online-результаты футбольных матчей на FanNet.org Болельщик открывает страницу - и на ней всегда актуальная информация. Теперь, он уходит на другую страницу, скажем, посмотреть описание какого-то матча. А потом ему хочется вернуться и он нажимает кнопку "Back". И видит, что последний раз результаты матчей обновлялись в момент, когда он уходил с этой страницы.

На первый взгляд - ничего страшного. Ясное дело, браузер взял страницу из кеша и поправить это - дело минуты.

Как вы уже догадались, все немного сложнее, иначе бы этого поста просто не было.

Первым делом, я решил запретить кеширование страницы. Результат был несколько странным - под IE все работало нормально, под FF - ничего не изменилось.

Ну вот, опять приходится читать документацию, вздохнул я и начал читать.

[читать дальше]

Entity Framework Сегодня Сергей Байдачный начал выкладывать видео докладов с Дней разработчиков 2008 в Украине.

В том числе и мой - Введение в ADO.NET Entity Framework (я писал о нем в одном из предыдущих сообщений "Мой доклад на Developer Days 2008").

Жалко, что в ролики не вошли вопросы и ответы - обычно это самая живая часть докладов. А еще, пересматривая видео, я понял, почему доклад прошел минут за 40, хотя дома, когда я рассказывал его своей стенке, на это уходил положенный час. Если бы мой темп немного замедлить - получилось бы и спокойнее и понятнее. Но тем не менее, если выставить громкость на полную - смотеть его вполне можно :)

Приятного! [читать дальше]

"А что тут сложного?" удивитесь вы. А потом, подумав "вряд ли он ответит 'ничего' и этим закончит статью", спросите - "а в чем подвох?".

Подвох конечно есть. Но давайте сначала посмотрим, что вообще можно сделать. Самый просто вариант - ничего. Ваш сайт честно отошлет пользователю код возврата 404 и тот увидит в браузере что-то вроде:

страница 404

Внешний вид зависит от конкретного браузера и настроек провайдера пользователя. Например, вместо страницы по умолчанию, пользователю могут показывать какую-то рекламу, а это еще обиднее :)

Разработчики сайтов конечно понимают, что так поступать нельзя. Если это не ваш постоянный посетитель - после такого ответа вы его потеряли. Поэтому на сайте создается специальная страница, которая выводится, когда никто не знает что делать с этом странным адресом. Она имеет такой же внешний вид как и остальные страницы сайта и должна сказать посетителю "Все замечательно и под контролем! Да, вот этой информации у нас нет, но вы можете поискать здесь, или перейти вот сюда".

Вот так это, например, выглядит на сайте "сами знаете кого":

страница 404

А теперь, посмотрим чуть дальше. Да, с пользователем мы разобрались. А вот что будет с поисковыми серверами? [читать дальше]

 
 
Microsoft Chart Есть несколько типов элементов управления, которые очень часто используются в интерфейсе веб-приложений, но не входят в Visual Studio. Кто из вас не искал "симпатичный, но простенький календарик"? Или текстовое поле с минимальными возможностями форматирования (bold, italic, alignment)? Да, в сети полно таких компонент, многие бесплатны, многие являются OpenSource проектами, но их нужно искать ... выбирать ... проверять. Среди таких компонент попадаются отличные варианты, но за решениями от Microsoft стоят сотни и тысячи часов усилий по реализации и поддержке. А это значит - функциональность, все преимущества VS и IntelliSense и надежность (да-да, что бы там не говорили, у Microsoft очень жесткая политика разработки и тестирования; если вы пользовались сторонними компонентами Sheridan, Components Arts или Stingray то можете сравнить bug-листы и скорость их исправления).

Вот поэтому я всегда радуюсь, когда узнаю, что в составе VS появилось что-то новенькое. Хороший пример - библиотека jQuery. Она будет поставляться с 10-й версией Visual Studio и уже входит в инсталляцию ASP.NET MVC Beta. А недавно, семейство элементов управления от VS пополнилось еще одним очень полезным компонентом - Microsoft Chart Control. [читать дальше]

Microsoft Это событие произошло еще в сентябре. Но в то время блог пребывал во временно-вечном состоянии "не пишу, потому что еще чуть-чуть - и будет новая версия, а новой версии нет - потому что нужно пусть и чуть-чуть, но времени" :) А похва рассказать очень хочется ...

Дело в том, что мне предложили прочитать один из докладов на Киевском Developer Days 2008, которые периодически устраивает Microsoft. Можно было даже выбрать одну из тем, всего их было 4:
  • Internet Explorer 8: нові можливості для розробників
  • Розробка застосувань за допомогою Windows Presentation Foundation 3.5 SP1 (из двух частей)
  • SilverLight 2: архітектура застосувань, створення елементів керування
  • .NET Framework 3.5 SP1: ADO.NET Entity Framework

Ближе всего мне была последняя - Entity Framework. Дело в том, что до недавнего времени все мои проекты были по сути интернет порталами. А значит новинки IE 8.0 там использовать пока бесмысленно - очень важно, чтобы приложение одинаково хорошо работало под всеми браузерами (а в случае IE - с целой линейкой, начиная с 6-й версии) Кстати, подружить 6-ю и 7-ю версии на одном компьютере мне так и не удалось, так что о существовании 6-й я вспоминаю только когда слышу фразу "да у вас весь дизайн поехал" :(. WPF к веб-приложениям прикручивать вроде некуда, а SilverLight не прикрутишь именно к порталам - поисковые сервера до сих пор не могут найти, что же там можно проиндексировать :)

А вот Entity Framework вполне можно использовать для создания объектной модели. Так что я запустил Power Point и набрал на первой странице "ADO.NET Entity Framework".

[читать дальше]