Below is the text of the page https://livedev.org/articles/2007/4 stored 2008-06-09 by archive.org.ua. The original page over time could change. View as original html

Archives for April 2007 : Веб-разработка «по-русски» | livedev.o

livedev.org [http://livedev.org] Веб-разработка «по-русски» Проверка HTTP-запроса на аяксовость (ajax) 4 Posted by dobrych Wed, 25 Apr 2007 09:43:00 GMT При написании приложения по принципам MVC с использованием Ajax, часто для одного и того же запроса нужно получить данные в двух отличных друг от друга вариантах—в чистом HTML и в XML /json для Ajax запроса. А т.к. один и тот же контроллер в MVC обрабатывает оба типа запроса и скорее всего было бы удобно для его обработки использовать один и тот же URL , надо как-то отличать их, чтоб знать в каком формате отдать данные. Если это POST -запрос то можно просто создать дополнительное поле/переменную в запросе, а если GET , то нужно или отдельный URL для каждого типа данных или дополнительный заголовок в запросе (см. ниже почему). Проблема мне кажется больше именно в GET запросе. Если следовать правилам ReST , то контент полученный по URL должен быть кеширован, а в нашем случае будет кеширован первый формат, в котором контроллер отдаст контент. Было бы удобно чтоб контроллер делал проверку на наличие каких-то заголовков и отдавал в зависимости от них ответ в нужном виде, но вот кеширование этому помешает. Т.к. кеш скеширует контент на первый попавшийся запрос (Ajax/HTML) и для следующего отличного запроса может быть отдан контент в неверном формате. Конечно можно с помощью заголовков вообще отключить кеширование, но это неоправдано, т.к. в протоколе HTTP не зря предусмтрена такая функциональность. В общем решением была бы возможность реагирования кеша на определенные заголовки от сервера. И да, это указано в стандарте HTTP и реализовано как клиентами так и серверами. Есть такой заголовок в стандарте HTTP — Vary: , обычно его называют Vary Header . Он необходим как раз для осуществления правильного кеширование в зависимости от его значения. По большому счету он нужен чтоб указать кешу для какого заголовка запроса скеширован данный URL . Т.е. контент в кеше теперь будет идентифицироваться не только по URL , но по URL + заголовок указанный директивой Vary. Например, если пользователь залогинен на сайт с использованием Cookie, тогда заголовок Vary должен выглядеть так Vary: Cookie . URL в это случае, например, будет /profile/ (профиль пользователя) и два разных пользователя, попав на страницу из одного кеша будут проверены с помощью директивы Vary на предмет Cookie и получат разный контент. Или например кеширование должно производиться с учетом языка пользователя, тогда директива будет выглядить так Vary: Content-Language . Зачем это нужно в нашем случае? Все просто—практически все Javascript Toolkits используют заголовок HTTP _X_REQUESTED_WITH со значением ‘XMLHttpRequest’. Так что если мы поставим Vary: HTTP _X_REQUESTED_WITH , то оба запроса к одному URL но от разных инициаторов (сам браузер или javascript/ajax код) будут скешированы отдельно. Вот такой интересный нюанс. Может кому-то пригодится в деле. Posted in статьи Tags ajax , cache , header , http , mvc , vary Meta no trackbacks , 4 comments , permalink , rss , atom Подкасты про webdev 1 Posted by dobrych Wed, 18 Apr 2007 14:06:00 GMT Последнее время стал увлекаться подкастами . К сожалению русскоязычных качественных очень мало. А на тему веб-разработок вообще нет (поправьте если ошибаюсь). Хочу привести свою подборку англоязычных подкастов, которые слушаю. Начну с наиболее интересного для меня— Hivelogic Radio . В этом подкасте автор концентрируется на веб-разработке, как на дизайне так и на программировании. Очень интересные интервью с интересными людьми. В разработке есть акцент на Ruby on Rails. Со стороны аудио, подкаст сделан очень качественно. Приятно слушать. Следующий подкаст я слушаю не так давно, но у него довольно большой авторитет— FOO Casts: Podcasts from O’Reilly & Friends В нем освящается много технических вопросов, необязательно связанных с вебом, но все равно полезных для любого гика и разработчика. Качества звука тоже на высоте. Inside Silicon Valley —Подкаст, состоящий в основном из интервью с монстрами и просто успешными людьми из Силиконовой Долины. Качество хорошее, слушать интересно. Python411 Podcast —для фанов Python. Качество звука не впечатляет, но темы и интервью довольно интересные. Так что подкаст пожалуй действительно для фанатов Python. Освящаются вопросы не только веб-разработки, но и других специализаций в программировании. WebDevRadio —Действительно настоящий подкаст именно для веб-разработчика. Обсуждение новых технологий в вебе, интервью, относительно часты обновления. Советую. The Mac Attack —Подкаст про Mac, MacOSX и все что с ним связано. Как известно многие современные веб-разработчики и дизайнеры выбирают платформу Apple в качестве рабочей станции. Так что думаю будет просто интересно, а некоторым и полезно. Posted in обзоры Tags podcast , python , rails , ruby , webdev Meta no trackbacks , 1 comment , permalink , rss , atom Typo 4.1 — обновляемся Posted by dobrych Sun, 15 Apr 2007 14:09:00 GMT Обновление моего блога. На днях обновил свой блог на движке typo , до весрии 4.1 Впечатления пока что только приятные. Сразу бросается в глаза подчищенная админка. Большой плюс еще, что блог движок работает на rails 1.2 и заметный прогресс в том, что есть встроенная возможность локализации. Процесс переезда прошел прозрачно, почти без бубна и плясок :-) Итак пошагово, для тех, кто будет повторять: Бекапим базу в двух вариантах— SQL -дамп и сериализованный YAML вариант. Первое делается через mysqldump или phpmyadmin, а второй вариант командой rails-backup в директории с rails-проектом блога. Обновляем rails и typo . Т.к. у меня все работает через rubygem , я просто запустил sudo gem update . После чего получил последние стабильные gems. Останавливаем текущий процесс typo . Переименовываем директорию проекта и создаем заново проект с typo— typo install my_typo_dir Переносим конфиги из старой в новую директорию (обычно это database.yml и mongrel_cluster.yml ). И обновляем базу rake db:migrate . После чего запускаем проект (у меня он работает через mongrel cluster), логинимся в админку и первым делом нам предлагается поменять контент в базе на новый лад. Нужно просто согласиться и блог готов к работе. Если появились трудности при апдейте—пишите, чем смогу помогу. PS: В рассылке видел, что у одного человека возникли проблемы при переезде с базой. У него полечилось через rails-backup и rails-restore Posted in заметки , обзоры Tags backup , mongrel , mysql , rails , restore , ruby , typo , update Meta no trackbacks , no comments , permalink , rss , atom Searching... О блоге Мысли, идеи, задачи и решения по веб-разработке. Взгляд с персональной позиции автора. Об авторе Зовут меня Илья. В рабочее время занимаюсь веб-разработкой. Интересуюсь новыми и модными веб-технологиями. Нерабочее время посвещаю семье, по возможности фотографии и музыке . Подробнее. Tags 2008 ajax conference css development django downshifting exception javascript kiev life python rails ruby syntax typo uaweb update web xml Блогролл Amazon byteflow Маниакальный Веблог Подробно Appleworms Андрей Ясинецкий Собираю блогролл Свежие комментарии by krovati-gostinichnye on Мультисайтовость в django trunk by mybryco on Линкотека №2 by krovati-gostinichnye on Мультисайтовость в django trunk by farinaska on Не изобретая велосипед by semicon on Линкотека №2 Archives May 2008 (2) April 2008 (2) March 2008 (5) February 2008 (2) January 2008 (4) December 2007 (2) November 2007 (2) October 2007 (3) September 2007 (2) August 2007 (4) June 2007 (1) May 2007 (1) April 2007 (3) February 2007 (1) January 2007 (3) December 2006 (4) November 2006 (4) October 2006 (4) September 2006 (3) del.icio.us/dobrych/webdev Design Stencils - Yahoo! Design Pattern Library Набор wireframe для созданию web ui прототипов от Yahoo Natural Docs Софт для генерации документации из кода. Юзабельная дока получается js-ria-tools - Google Code Набор утилит для оптимизации и тестирования JavaScript, возможность минимизации файлов JS mapfish Готовое приложение (клиент и сервер) для работы с гео-данным. Построено на базе Pylons и ExtJS/Openlayers Resizable Polygons Пример создания полигонов с возможностью ресайзинга на Google maps (javascript) Python Package Index : virtualenv 1.0 Скрипт для создания варитуального окружения (модули итп) для Python-приложений Google Maps JavaScript API Example - Snap to Polyline Пример кода для привязки курсора к полигонам и полилиниям Take Control of Your Maps (A List Apart Article) Отличный обзор картографического (GIS) софта для построения веб-приложений Mapstraction - a javascript library to hide differences between mapping APIs. Библиотека JS для работы с многими картографическими сервисами через единый API Modest Maps Библиотека для ActionScript (2/3) и Python для работы с картографическими сервисами Плюшки © livedev.org / powered by typo / styled with clerkly