Perl: работаем с XML и JSON
Date September 13th, 2010 Author Vitaly Agapov
— Ты, что, с ума сошёл? А в чём же ещё?
— «Малыш и Карлсон»
Не буду производить тонну выкладок в стиле “Что лучше: XML или JSON?”. Дело это неблагодарное, более девяти тысяч раз обмусоленное в статьях. Стоит только разок обратиться в Гугл с вопросом “JSON vs XML” и окунуться в разнообразие мнений. Тем более, что, как это обычно бывает, однозначного ответа здесь нет и не будет, так как разные бывают ситуации и разные задачи. Так, например, в информационно-ориентированных web-приложениях для AJAX-обмена наиболее оптимальным выбором видится JSON , а вот для хранения больших объемов формализованных иерархических данных или для использования в качестве конфигов, наверное, всё же лучше брать XML. Так или иначе столкнуться придётся с каждым из этих форматов, и с каждым из них надо будет работать. И вот на тот случай, если работать придётся на Perl, пишу эту статейку-напоминалку.
Когда я использую Perl, всегда держу в голове золотое правило “Есть задача – стопудово есть и модуль на CPAN”. Срабатывает безотказно. Так и здесь: для работы с JSON и XML существует множество модулей, из которых я для себя выбрал соответственно модули JSON и XML::Twig. Модули большие, навороченные, умеют всё, о чём можно пожелать. Ну, разве что не “грабят корованы”. Но опишу только основное.
Категория: Perl | Нет комментариев »
Галопом по Тавриде
Date September 5th, 2010 Author Vitaly Agapov
Таврические приключения двух обалдуев
Tags: Beyond IT
Категория:
Beyond IT |
Нет комментариев »
Traffic Control. Шейпинг трафика в Linux
Date August 25th, 2010 Author Vitaly Agapov
— «Чайка Джонатан Ливингстон»
Так уж получается, что те или иные задачи возникают иногда неожиданно, я бы даже сказал: спонтанно. Не всегда возможно быть готовым к мгновенному решению – частенько надо почитать мануалы, погуглить, почесать репу и разобраться. Ещё частенько для решения совсем маленькой и проходной подзадачи требуется умение пользоваться некоторыми инструментами, создававшимися для более вдумчивого, комплексного и “профессионального” использования. Так было, например, с netfilter/iptables. Так случилось и с утилитой tc для управления трафиком в ядре Linux. Возникла задача (в рамках более крупной) ограничить сетевой трафик между двумя серверами некоторой полосой. Сделать это надо было как можно более просто, прозрачно и быстро. Задача была решена, а заодно выявилась необходимость набросать ещё одну памятку на будущее.
Итак, управляем сетевым трафиком в Linux.
Tags: iptables, Linux
Категория:
Linux |
2 Комментариев »
Редирект после запроса HTTP POST
Date July 15th, 2010 Author Vitaly Agapov
Протокол HTTP подразумевает выполнение редиректа на новую страницу после обработки данных, полученных от пользователя методом POST. Само собой, это не обязательно. А на страницах, где методом POST отправляется некоторый поисковый запрос, это вообще ни к чему. Нужен он лишь в случаях, когда отправленные данные где-то на сервере сохраняются – тогда редирект позволяет избежать двойной отправки данных при перезагрузке страницы по F5 или при возврате на неё.
Если следовать протоколу, то согласно RFC 2616 сервер на запрос POST должен отвечать статусом 303 See Other, так как обычный для редиректа статус 302 Found должен использоваться по стандарту только для запросов GET или HEAD. Единственным подводным камнем можно считать то, что существуют юзер-агенты, не понимающие стандарта HTTP/1.1 и, следовательно, не знающие статуса 303. Впрочем, я склонен думать, что это раритет и ориентироваться на него не стоит. Тем более, что получение статуса 302 в ответ на POST-запрос может заставить некоторые браузеры, свято блюдущие букву стандарта, выдать пользователю предупреждение.
Вот как реализую редирект я.
Читать далее »
Tags: Perl, Web-dev
Категория:
Perl, Web-dev |
Нет комментариев »
Nginx, часть 1: Начало
Date June 30th, 2010 Author Vitaly Agapov
— «Достучаться до небес»
Некоторые статистические данные показывают нам, что Nginx – это второй по популярности web-сервер в сети, держащий что-то около 35% рынка. Но мы-то с вами знаем, что на самом деле статистика эта собирается элементарным парсингом http-заголовков Server в ответах от серверов, и из этих 35% львиная доля Nginx’ов – это всего-навсего прокси-серверы, перекидывающие всю “нестатику” (удивительное дело!) спрятанному в бэк-энд Apache. Но стоит отметить, что как прокси-серверу Nginx’у практически нет равных (если, конечно, вам не хочется, например пообщаться с Tomcat’ом в бэк-энде по AJP13 – тут уж Nginx сядет в лужу), поэтому разберёмся с ним поближе.
В первой небольшой заметке по Nginx посмотрим, как Nginx поставить фронт-эндом перед Апачем и научить его отдавать статичный контент самостоятельно, оставив Апачу лишь разбираться с cgi. Преимущества такой схемы лежат на поверхности: мы разгрузим Apache за счет статики, а также за счет отсутствия необходимости поддерживать тред во время получения запроса и отправки ответа по медленному каналу. Плюс к этому, Nginx считается более легким и быстрым, чем Apache с его префорками, и скорее всего сможет дать выигрыш по скорости отдачи статичных элементов.
Tags: Nginx
Категория:
Linux, Nginx, Web-dev |
Нет комментариев »
Карельское огребалово
Date June 20th, 2010 Author Vitaly Agapov
Tags: Beyond IT
Категория:
Beyond IT |
Нет комментариев »
Поездка в Финикию
Date June 20th, 2010 Author Vitaly Agapov
Tags: Beyond IT
Категория:
Beyond IT |
Нет комментариев »
Покатушки в Саблино
Date June 20th, 2010 Author Vitaly Agapov
Tags: Beyond IT
Категория:
Beyond IT |
Нет комментариев »
Делаем новостной календарь
Date June 2nd, 2010 Author Vitaly Agapov
— Благодарю за напоминание, Вальтер. Я, представьте, каждый день заглядываю в календарь. По утрам.
— «17 мгновений весны»
Одной из стандартных фич на любом веб-портале является календарь новостей, позволяющий быстро выбрать новости за определённый день. Вот и я заинтересовался этой штукой и разобрался, как её реализовать. Как выяснилось, для этого потребуются лишь небольшие знания JavaScript, а также плагин jQuery-UI для фреймворка jQuery.
Что конкретно мы хотим получить? Мы хотим симпатичный календарик на сайдбаре страницы с новостями. Он должен выделять дни, за которые есть новости и давать пользователю кликать только на них. Он должен подгружать информацию о днях с новостями за каждый новый месяц, открываемый пользователем, а также сохранять в кэше уже подгруженную информацию. Да и хватит, пожалуй… Само собой, клик на дате в календаре должен вызывать переход на страницу с новостями за выбранный день.
Tags: Ajax, jQuery, Perl, Web-dev
Категория:
Web-dev |
8 Комментариев »
Заметки об Apache, часть 2: Прячем лишнюю информацию из заголовков
Date May 25th, 2010 Author Vitaly Agapov
— «Ёжик в тумане»
Не то чтобы наличие в заголовках ответов от web-сервера информации, скажем, о версии Apache или об установленной операционной системе являлось такой уж большой уязвимостью. Тем более не скажу, что удаление этой информации сразу сделает сервер защищенным. Но тем не менее даже если сервер станет надежнее хотя бы на сотую долю процента (не знаю уж от какой величины считать), то усилия явно не напрасны. Тем более, что информация о вашей версии web-сервера и тем более об операционной системе рядовым пользователям нужна как мне, например, третье ухо. Но зато эта информация очень нужна всяким любителям статистики навроде того, что Apache стоит на x% серверов, IIS – на y%, а nginx – на z%, а также всевозможным деструктивным элементам.
Стоит, естественно, отдавать себе отчёт в том, что атаки на сервер производятся в основном ботами, которым недосуг смотреть заголовки ответов – они могут спокойно перепробовать все известные эксплойты, инъекции и прочее. Так что защита в основном для самоуспокоения. Но все же…
Tags: Apache
Категория:
Apache, Security |
1 Комментарий »