10 апр. 2014 г.

Поддержка CORS в django-rest-framework

Во время реализации RESTful API для нашей админки я столкнулся с интересной особенностью.
Как оказалось, браузер перед отправкой PUT (а также POST и DELETE) запроса к ресурсу отправляет запрос OPTIONS, ожидая, что в заголовке ответа сервера Access-Control-Allow-Methods будут указаны допустимые методы доступа к данному ресурсу. Но django-rest-framework указывает допустимые методы в заголовке Allow, который описывает методы, которые вообще можно вызывать для данного ресурса, этот заголовок не воспринимается браузерами.
Поэтому, для поддержки CORS в RESTful API необходимо написать небольшой middleware, который будет писать необходимые заголовки.
Например, это можно сделать так:
class CORSMiddleware(object):
    def process_response(self, request, response):      
        """
        Этот метод выполняется после формирования ответа клиента перед его выдачей.
        Здесь формируются заголовки ответа для поддержки CORS
        """
       
        """
        Если запросили OPTIONS, то надо скопировать допустимые методы из
        Allow в Access-Control-Allow-Methods
        """
        if request.method.upper()=='OPTIONS':          
            response["Access-Control-Allow-Methods"]=response["Allow"]
       
        #Проверяем, есть ли запрашивающий домен в списке доверенных и добавляем его в Access-Control-Allow-Origin
        if request.META.get("HTTP_ORIGIN","") in settings.ALLOW_ORIGIN:
            response["Access-Control-Allow-Origin"] = request.META.get("HTTP_ORIGIN","")
           
        #Можно пересылать куки с другого домена (дыра - лучше не используйте)
        response["Access-Control-Allow-Credentials"] = "true"      
                   
        return response


Как видно из кода, middleware просто копирует содержимое заголовка Allow в заголовок Access-Control-Allow-Methods.
Домен, который произвёл запрос сверяется со списком допустимых и записывается в Access-Control-Allow-Origin. Так нужно делать, чтобы не светить весь список допустимых доменов, а представлять потребителю только сам факт допустимости запросов с его домена.
Access-Control-Allow-Credentials позволяет браузеру пересылать куки кросс-доменно. Это потенциальное решето, но нам необходимо поддерживать legacy-авторизацию на куках CodeIgniter'а, так что пока оставили.

Всем добра и джанги.

10 февр. 2014 г.

Новая система регистрации ТС

Вчера я познал, что такая структура как ГИБДД может работать быстро и не создавая лишних проблем.
Как оказалось, теперь можно внести изменения в регистрационные данные ТС без замены номеров, т.е. перевыпустить свидетельство о регистрации и внести изменения в ПТС, сохранив номера, которые оставил на машине предыдущий владелец.
Для этого надо с утра пораньше (7:45 - идеально) в любой день (даже в воскресенье) подъехать к отделению МОГТОРЭР №3 ГИБДД ГУ г. Москвы по адресу Сигнальный проезд, д.9, взять талончик в автомате и следовать написанным на нём инструкциям.
Предварительно стоит оплатить госпошлину в размере 500р. (я сделал это в банкомате сбера). С собой нужно иметь экземпляр договора купли-продажи, копию ПТС (две стороны), оригинал ПТС, свидетельство о регистрации ТС, гражданский паспорт и страховой полис ОСАГО.
У меня вся процедура заняла полтора часа. Никакие заявления заполнять не надо, просто берёшь талон, ждёшь, подаёшь в свою очередь документы в окошко, получаешь заполненное заявление, катишься на площадку, в свою очередь предъявляешь авто к осмотру, возвращаешься с документами в другое окошко, отдаёшь их, через 15 минут получаешь ПТС и свидетельство о регистрации.
Короче, лучей любви тем, кто разработал эту систему, а также сотрудникам отделения на Сигнальном, которые посылают всяких хитрожопых дедов, прущихся вне очереди.

23 дек. 2013 г.

Песнь костыля и быдлокода

В игре престолов нет победителя


26 авг. 2013 г.

Хер собачий

Всё, что выросло на даче.

Мутинус собачий, если что.

07 авг. 2013 г.

Перья

Недавно я решил попробовать писать перьевыми ручками. Натолкнул меня на эту идею LOR, на котором шло очередное охренительно связанное с Linux'ом обсуждение в talks'ах.
Найти дешёвую перьевую ручку "на пробу" в Москве оказалось сперва не так просто. Поиск по инету практически ничего не дал. Нашёлся лишь магазин Комуса, в котором торгуют ученическими ручками Schneider School. Эту ручку я и приобрёл в ближайшем Комусе, заодно прихватив чёрные картриджи к ней и баночку фиолетовых чернил "Радуга-2".
Первые попытки писать Schneider'ом показали, что ручка даёт неплохую неширокую линию, не очень удобно лежит в руке (что странно, для ученической) и, что совсем печально, нихрена не пишет.
Под "нихрена не пишет" я подразумеваю неспособность ручки исписать лист А4, не запнувшись хотя бы пяток раз.
Несколько разочаровавшись в приобретении, я наткнулся при очередном посещении Ашана на noname китайскую перьевую ручку рублей за 20, к которой прилагались 2 синих картриджа.
Эта ручка сразу стала писать отлично, в руке лежит удобнее Schneider'а, но даёт довольно широкую линию. Ну и китайские чернила имеют неприятный тёмно-синий цвет.
К тому моменту в Schneider'е благополучно закончился родной картридж, и я заправил его "Радугой". Моему удивлению не было предела: ручка записала абсолютно непрерывно. Правда, она продолжает шкрябать по бумаге, но это уже не вылечишь.
Таким образом, можно сделать вывод, что картриджи Schneider - говно.
А ещё ко мне приехал китаец по имени Hero 3266. Это такая симпатичная металлическая тонкая ручка с паркеровской стрелкой на колпачке. Пишет очень тонко, ровно, без пропусков, стартует сразу (как и её китайский noname-побратим, в отличие от Schneider'а, требующего предварительных ласк). Недостатка у неё два: блестящее гладкое покрытие грип-секции, из-за чего ручку приходится держать крепко, чтобы не скользила, и очень тугой колпачок (это беда всех китайцев).
Ниже прилагаю пример письма всеми тремя ручками:
Ну и напоследок: "нахрен это надо?".
Письмо перьевой ручкой не сравнить по лёгкости с шариком и гелькой, близко лежат разве что роллеры, но их ещё поискать надо. С моим почерком надпись шариковой ручкой порой вообще невозможно разобрать, а перьевая даёт какую-то "плавность" письму, что ли, которая выправляет слегка почерк.
Ну и главная причина: на работе пишу в тетради, по которой не пишут ни шариковые ручки, ни даже гелевые, а перьевые спокойно выводят закорючки.

Upd. В первом китайце закончился родной картридж - заменил на Schneider'овский. Так вот, он пишет в этой ручке. Так-то.

25 июня 2013 г.

Band of Brothers

На днях я досмотрел замечательный мини-сериал Band of Brothers (Братья по оружию) за авторством неких Спилберга и Хэнкса. Этим двум товарищам было мало снять одно только "Спасение рядового Райана" и они решили пройтись по двум славным темам американской военной истории: похождениям 101-й воздушно-десантной на западном фронте (собственно они и показаны в этом сериале) и боевому пути морпехов на тихоокеанском фронте (Pacific).
В Band of Brothers всё внимание уделено бойцам роты E 101-й воздушно-десантной дивизии. Показан весь их путь от учебки в Куррахи, через высадку в Нормандии, операцию Маркет Гарден, бои за Бастонь и до Орлиного гнезда.
От фильма я не ожидал никакого откровения, предполагая, что это просто такой длинный "Райан". Но не тут-то было. В этом сериале и сценаристы, и режисёры и актёры выложились по полной.
Такой-то ужас войны, такое-то боевое братство.
А ещё совершенно не ожидал увидеть настолько пробирающее изображение освобождения концлагеря, как это было показано в 9й серии "За что мы сражаемся":

Очень удачно был проведён кастинг: большинство актёров очень похожи на свои реальные прототипы.
Кстати, о прототипах: я очень удивился, узнав, что Билл Гарнье, потерявший ногу в Арденнской операции, ещё жив - ему уже 90 лет.
Основной же недостаток фильма, который прямо-таки бросается в глаза: эдакая "фанерность" фрицев. Немецкие солдаты показаны не людьми, а подвижными, агрессивно себя ведущими, мишенями. Исключением стал лишь диалог с американо-германским пленным перед расстрелом во второй серии.
А, ну ещё создатели сериала допустили один значительный косяк: в фильме показано, что рядовой Альберт Блайт был ранен в шею во время битвы за Карентан и, так и не оправившись от ранения, умер в 1948 году. Но это не так, Блайт был ранен в плечо, оправился после ранения и был отправлен с Пурпурным сердцем домой. Умер он в 1967 году от перитонита.
Короче, расписывать здесь можно долго, лучше просто посмотреть этот отличный фильм.

Pleer.ru

Итак, Pleer.ru.
Длинно писать про это дерьмо нет никакого желания, поэтому я просто перечислю:
- проверка товара за баблос
- торговля серым леваком и возвращённым браком
- магазин в самой жопе Москвы
- очередь в пункте возврата в две дюжины человек
- большая часть из этих людей открыто матерится  на сотрудников плеер.сру и угрожает физической расправой ("Я эту, блять, скороварку уже 4й раз к вам вожу, я её щас тебе переебу, пиздюк!" как-то так (с) счастливый покупатель pleer.ru )
Короче, не ходите дети в африку гулять.