пятница, 12 июля 2013 г.

Рекурсия с помощью рекурсивного цикла в jinja2.

Код выводит "дерево-лесенку" в виде списка, каждая "ступенька" которой находится в списке parents.

{#
{% for parent in (0,) recursive %} это "def func():", а
{{ loop((0,)) }} - это func().
#}
{% for parent in (0,) recursive %}
  • {{ parents.pop() }}
    {% if parents %}
      {{ loop((0,)) }}

    {%- endif %}

  • {% endfor %}

    Cоздание собственных операторов в sqlalchemy

    В postgresql есть такие типы данных как INET, CIDR, но полноценно в sqlalchemy они не поддерживаются. То есть, например, запрос для поиска подсетей
    SELECT * FROM nets WHERE ip >> '10.10.10.10' так просто сформулировать на sqlalchemy не получится. Для этого нужно переопределить оператор >> у типа данных CIDR и создавать запросы с его помощью:

    class Cidr(postgresql.CIDR):
    '''
    Делаем свой тип колонки для того, чтобы была возможность использовать
    операторы >> и <<
    '''

    class comparator_factory(postgresql.CIDR.Comparator):
    def __lshift__(self, other):
    return self.op("<<")(other)

    def __rshift__(self, other):
    return self.op(">>")(other)

    class Net(Base):
    __tablename__ = 'nets'
    id = Column(Integer, primary_key=True)
    ip = Column(Cidr)

    db.session.query(Net).filter(Net.ip>>'10.10.10.10')

    четверг, 28 февраля 2013 г.

    http-снифферы.

    Только Windows:

    1. HttpAnalyzer - классный сниффер, есть все необходимые плюшки для http-сниффера: "pretty" отображение POST DATA; возможность открыть ответ на запрос в браузере; плюс, это не debugging proxy, а значит можно дебажить работу скриптов через прокси/соксы, т.к. перехватываются все запросы. Из минусов: платный; подвисает при остановке сниффинга; открытие ответа частенько тупит и открывается не браузер, а блокнот, разобраться почему так происходит у меня не вышло.

    2. Fiddler - это как раз таки debugging proxy, то есть является проксей через которую надо направлять запросы, которые хотим увидеть. То есть отдебажжить запросы скрипта через прокси не получится, зато нет остальных минусов HttpAnalyzer-а, а остальные плюшки присутствуют. После HttpAnalyzer-а перешел на этот сниффер, удобно, полностью устраивает.


    Linux (в общем то, кросплатформенное):

    1. Charles - неплохой proxy, если бы не одно "НО", нельзя открыть ответ запроса в браузере, приходилось брать ответ, сохранять его как html и открывать в firefox. Платный, если бы не извращение с сохранением html можно было бы даже купить.

    2. Paros proxy, burp proxy и т.д... - когда искал сниффер под Linux находил кучу этих проксей/снифферов, уже не помню что там и как, разве что burp proxy можно попробовать посмотреть.

    3. Webscarab - похоже вот оно, сниффер под Linux, не идеальный и не такой удобный как fiddler, но с которым вроде бы можно работать. Вроде бы - потому что практики с ним не было, пока только поверхностный обзор. Первый минус что бросился в глаза - нельзя очистить окно от запросов, а в остальном терпимо. А, ну, внешний вид УГ - Java чо)


    Прочее:

    1. HttpFox - плагин для фаерфокса, очень похожий на HttpAnalyzer, юзабелен, но снифит только браузер.

    2. CommView - прикольный сниффер общего назначения, начинал с него. Платный, windows only.

    3. Wireshark - классика вроде бы, кроссплатформенен, плотно работать с ним не приходилось.