Задать вопрос
  • Реализация long2ip(). Как конвертировать ip с long в string?

    @throughtheether
    human after all
    Если хотите изобретать велосипед, по при помощи модуля struct запакуйте 32-битное значение в строку и распакуйте результат как 4 байта.

    Если хотите решить задачу без излишних усилий, можете воспользоваться модулем netaddr:
    >>> import netaddr
    >>> int(netaddr.IPAddress('77.88.21.8'))
    1297618184
    >>> str(netaddr.IPAddress(1297618184))
    '77.88.21.8'


    UPD:
    у меня была задача именно самому выполнить эти преобразования,
    Держите тогда два модных однострочника:
    def long_to_dotted_decimal(val):
        return '.'.join(map(str,[val%256**idx/256**(idx-1) for idx in xrange(4,0,-1)]))
    
    def dotted_decimal_to_long(strval):
        return sum(map(lambda (power,octet):256**power*int(octet),enumerate(reversed(strval.split('.')))))

    Пример использования:
    >>> long_to_dotted_decimal(dotted_decimal_to_long('127.0.0.1'))
    '127.0.0.1'
    >>> long_to_dotted_decimal(dotted_decimal_to_long('255.255.255.255'))
    '255.255.255.255'
    >>> long_to_dotted_decimal(1297618184)
    '77.88.21.8'
    >>> dotted_decimal_to_long('77.88.21.8')
    1297618184
    Ответ написан
    3 комментария
  • Как определить публичная ли сеть?

    @throughtheether
    human after all
    Все IPv4 и IPv6 префиксы, кроме некоторых зарезервированных (список здесь), а именно тех, у которых параметр global задан как false, являются глобально маршрутизируемыми. Вероятно, именно их вы называете публичными.
    Ответ написан
    Комментировать
  • На каком ЯП лучше реализовать небольшое приложение для работы с веб-данными?

    @throughtheether
    human after all
    Если это не контролируемый вами сайт, и по сути вам надо зайти браузером на сайт и ввести комментарий через форму, то подойдет python с модулями requests (если все просто) или ghost.py/selenium (если нужна какая-то сложная работа с javascript)
    Ответ написан
    1 комментарий
  • Как с помощью python подсветить слова в документе не ломая DOM?

    @throughtheether
    human after all
    Навскидку, делал бы так:
    1) нашел бы интересующий элемент (текстовую ноду)
    2) обратился бы к его родителю (непосредственному предку)
    3) интересующий элемент разделил бы на три: до ключевого слова, ключевое слово и после него.
    4) запомнил бы индекс элемента из п. 1) среди потомков родителя из п. 2), удалил его, на его место вставил три потомка из п. 3), при чем средний из них должен быть обернут в span с нужным форматированием.
    UPD:
    не python, но посмотрите на этот проект.
    Ответ написан
    Комментировать
  • Как реализовать такую схему?

    @throughtheether
    human after all
    Безграничные IP адреса.
    Если вы подразумеваете количество, то так не бывает.

    Если необходимо, чтобы разные браузеры обращались к некоему ресурсу с разными IP-адресами источника, используйте прокси или ssh-туннели (по сути, через прокси).
    Ответ написан
  • Murmurhash3.. Почему два значения?

    @throughtheether
    human after all
    Почему два значения то?
    Если правильно помню, murmurhash3 генерирует 32- или 128-битный хэш. Два 64-битных числа - это, видимо, две половины результирующего хэша.

    Если нужно одно 128-битное число, используйте функцию hash128. Здесь есть пример.

    Если нужно одно 64-битное число, берите то, которое больше понравится.
    Ответ написан
    Комментировать
  • Как расчитать рапределение значений?

    @throughtheether
    human after all
    Попробуйте использовать Counter. Пример на python 2.7:
    >>> from collections import Counter
    >>> d={'a':2,'b':2,'c':5}
    >>> Counter(d.values())
    Counter({2: 2, 5: 1})
    >>> Counter(d.itervalues())
    Counter({2: 2, 5: 1})
    Ответ написан
    Комментировать
  • Cisco ASA как победить тормоза в сети?

    @throughtheether
    human after all
    Проблема в следующем. Возникли жутки тормоза при печати документов. Они могут ставится в очередь и обрабатываться по несколько минут, а то и больше.
    Проверьте при помощи wireshark, какие протоколы (в т.ч. номера портов TCP/UDP) используются при печати и соотнесите эти данные с настроенными правилами инспекции, может быть, дело в этом.
    Ответ написан
    Комментировать
  • Python, начало работы, что делать с кодировкой?

    @throughtheether
    human after all
    Он мне ни в какую не пишет русскими буквами,
    Проблемная буква - не русская, а греческая.

    Подскажите, что делаю не так?
    Выводите в консоль символы, которые она не поддерживает. Здесь есть некоторые варианты решения проблемы. Но я вам рекомендую использовать другие возможности отображения информации (т.е. писать в файл или показывать на веб-странице).
    Ответ написан
    Комментировать
  • Почему Python Requests медленно работает на ubuntu 14.04?

    @throughtheether
    human after all
    Задержку разрешения имен (DNS) сравните.
    Ответ написан
    Комментировать
  • Почему не получается inter-vlan routing на коммутаторе D-Link DGS-3120 (RI)?

    @throughtheether
    human after all
    ситуация одинаковая:
    - ПК не пингует ноут;
    - ноут пингует ПК
    для обоих случаев
    Если от перемены машин по вланам ситуация не меняется, то, полагаю, маршрутизация тут ни при чем. Пока наиболее вероятными причинами видятся функциональность "безопасности" или какая-то специфичная проблема форвардинга (дублирующиеся MAC-адреса, проблемы с ARP).
    Можно порекомендовать:
    1) загрузить liveCD с ОС Linux на ноутбуке и пронаблюдать поведение
    2) проверить отправление и доставку/блокирование пакетов при помощи сниффера трафика (wireshark, tcpdump).

    Ethernet adapter Подключение по локальной сети:

    Состояние среды. . . . . . . . : Среда передачи недоступна.
    DNS-суффикс подключения . . . . . :
    Описание. . . . . . . . . . . . . : Realtek PCIe GBE Family Contr
    Физический адрес. . . . . . . . . : 48-5B-39-1A-5C-5C
    DHCP включен. . . . . . . . . . . : Нет
    Автонастройка включена. . . . . . : Да

    Вот здесь не понял. Как должен ноутбук взаимодействовать с другой машиной, если на его интерфейсе (неактивном, кстати) не задан адрес?
    Ответ написан
  • Какие есть типы RIP обновлений?

    @throughtheether
    human after all
    Можете уточнить, в связи с чем возник вопрос?
    Если вкратце, то они бывают обычные, т.е. периодические (regular update) и обусловленные неким событием (triggered), см. подробнее. Кроме того, маршрутизатор может ответить на специфичный запрос, этот ответ тоже можно считать обновлением. Речь о второй версии протокола.
    Ответ написан
    Комментировать
  • Установка zabbix 2.4 на debian?

    @throughtheether
    human after all
    /etc/apt/sources.list можете показать?
    И вывод
    apt-get update
    Ответ написан
  • Почему до сих пор пользуются протоколом RIP?

    @throughtheether
    human after all
    Во-первых, наследие прошлого (legacy-системы). Сети, как и любую инфраструктуру, сложно модернизировать, поэтому совместимость стоит сохранять.

    Второй, более тонкий момент. Например, вы - провайдер. У клиента есть множество устройств, которым нужна динамическая маршрутизация. Что делать? BGP, допустим, они не потянут. EIGRP проприетарный (жду разоблачающих комментариев про RFC). При использовании OSPF довольно затруднительно фильтровать префиксы, да и пускать посторонних в OSPF-домен чревато. RIP здесь вполне органичен.
    Ответ написан
    4 комментария
  • Что за настройка у коммутаторов Cisco ip subnet-zero?

    @throughtheether
    human after all
    Добавлю к уже сказанному.

    Команда имеет смысл при классовом выделении адресов. В примере, который привел Валентин, получается, что классовая сеть и ее "нулевая" подсеть имеют одинаковый номер (192.168.1.0). Видимо, по этой причине в RFC950 рекомендуется:
    It is useful to preserve and extend the interpretation of these special addresses in subnetted networks. This means the values of all zeros and all ones in the subnet field should not be assigned to actual (physical) subnets.


    Классовая маршрутизация работает примерно так:
    1) при получении пакета с адресом назначения, например, 192.168.1.1, определяется номер его (классовой) сети, 192.168.1.0.
    2) маршрутизатор проверяет, есть ли сеть в таблице маршрутизации
    3) маршрутизатор проверяет, есть ли в таблице маршрутизации соответствующая адресу назначения подсеть (192.168.1.0/27) и перенаправляет пакет в соответствии с записью next-hop.

    Команда ip subnet-zero влияет на п.3 этого процесса, в случае ее активации нужная подсеть будет присутствовать в таблице маршрутизации и пакет будет соответствующем образом перенаправлен. Без этой команды пакет будет отброшен (если имеется запись, соответствующая классовой сети, но нет записи о подсети).

    В нынешних условиях, когда маршрутизация производится на основе поиска наиболее точно совпадающего префикса (longest prefix match), команда неактуальна, т.к. решаемая ей проблема не возникает (192.168.1.0/24 и 192.168.1.0/27 - это разные префиксы, путаницы не возникает, соответственно и запрещать использовать "нулевые подсети" не имеет смысла).
    Ответ написан
    Комментировать
  • Как правильно разделить сеть на сегменты?

    @throughtheether
    human after all
    Я читал, что VLAN'ы как раз и предназначены для решения данной задачи, у меня даже есть управляемый коммутатор hp 2650, где я могу группировать порты в VLAN, но что мне это дает? Ну разделил я порты на 1-10, 11-20, 21-30, 30-40 а дальше то что делать? Как мне разрешить трафик между VLAN'ами?

    Переводите нужные порты в нужные вланы в access-режиме (untagged). Создаете для вланов L3-интерфейсы. Включаете роутинг. Теперь трафик между вланами должен маршрутизироваться.
    Есть минус - насколько помню, 2650 не поддерживает ACL, так что фильтрацию трафика средствами коммутатора, полагаю, организовать не получится.
    Ответ написан
    Комментировать
  • Может ли у колонки ухудшаться звук?

    @throughtheether
    human after all
    Может ли у колонки ухудшаться звук?
    Конечно может, энтропия-то возрастает.
    В вашем случае, возможно, произошла деградация диффузора.
    Ответ написан
  • Как подменить ip адрес?

    @throughtheether
    human after all
    Я прочитал что это можно сделать с помощью маршрутизации от источника, и в теории все просто, но как осуществить это на практике?
    Никак. Маршрутизация от источника использует IP options. Пакеты, содержащие IP options (в частности, LSRR/SSRR), рекомендуется по умолчанию фильтровать (BCP186, например), что и происходит в действительности.

    Для вашей задачи подойдет использование пула прокси-серверов.
    Ответ написан
  • Почему алгоритм Дейкстры корректен?

    @throughtheether
    human after all
    После выполнения алгоритма, мы получим, что кратчайшее расстояние до второй вершины равно 10.
    Вот здесь непонятно, поясните вашу мысль.

    Изначально (стартуем из вершины 1) у вас вершина 1 имеет ассоциированное число (длину пути, d[1]) 0, она же находится во множестве посещенных вершин. Длина пути до других вершин - бесконечность.
    Для всех ребер, соединяющих множества посещенных и непосещенных вершин (т.е. для ребер 1-2 и 1-3) рассмотрим суммы d[u]+w(u,v), где d[u]-длина кратчайшего пути до вершины u, w(u,v) - вес (длина) соответствующего ребра. Минимальная сумма наблюдается для ребра 1-3, соответствующего пути 1,3. Добавляем 3 в посещенные.
    Снова, для всех ребер, соединяющих множества посещенных и непосещенных вершин (т.е. для ребер 1-2, 3-2) рассматриваем соответствующие суммы (10 и 2), выбираем минимальную, т.е. добавляем вершину 2 в путь (и во множество посещенных вершин), имеющий вид 1,3,2. Так как непосещенных вершин не осталось, завершаем работу алгоритма.
    Ответ написан
    2 комментария