• Как заставить двигаться анимацию в tkinter?

    @throughtheether
    human after all
    Предположу, что анимации вы не наблюдаете из-за того, что координаты центров маятников у вас практически не изменяются (целая часть постоянна). Думаю, дело в функции final_calculations. Её код можете показать?

    UPD: в этом коде, конечно, прекрасно всё. Ошибка, думаю, кроется здесь (см. комментарий в последней строке):
    i = 0
    ...
    class Pendulum(object):
        def __init__(self):
            ...
            self.root.after(0, self.animation, i)
        def animation(self, i):
            i = i # полагаю, i всегда равно 0

    исправить предлагаю так (не самый лучший способ, но он предполагает минимальные изменения в коде):
    i = 0
    ...
    class Pendulum(object):
        def __init__(self):
            ...
            self.root.after(0, self.animation)
        def animation(self):
            global i

    Однако, учитывая, мягко говоря, неординарную структуру кода, возможно, придется исправить текст программы еще в некоторых местах.
    Ответ написан
  • DigitalOcean: как до привязки домена вызывать не default.domain сайты?

    @throughtheether
    human after all
    Может есть какой другой способ проверить работу на DO без привязки доменного имени?
    Попробуйте прописать у себя на рабочей станции в файле hosts отображение 11.22.33.44 yourdomain.com,
    где 11.22.33.44 - IPv4-адрес вашего сервера, yourdomain.com - добавленное вами доменное имя.
    Ответ написан
    1 комментарий
  • Lenovo Thinkpad x230 на гарантии - выкинуть или можно что-то сделать?

    @throughtheether
    human after all
    Вопрос - как лучше поступить в такой ситуации?
    Поднять бурление в соцсетях/медиа. Думаю, при определенном градусе накала представитель Lenovo к вам сам обратится.
    Ответ написан
  • Будут ли иметь клиенты с ipv4 доступ к моему серверу, если у сервера ipv6?

    @throughtheether
    human after all
    Имеется сервер мощный, но к нему ведется только один белый ipv4 адрес, идея поднять на нем виртаульные машины с белыми ipv6.
    Если вам надо запустить несколько серверов и организовать доступ к каждому, то проще, на мой взгляд, докупить IPv4-адресов (если хостер предоставляет такую услугу) и настроить для виртуальных серверов бриджинг (лучше) или NAT (костыльнее).

    Если все же хочется поэкспериментировать с IPv6, то
    Вот, собственно, и вопрос, если на одной из таких машин будет стоять сайт, будут ли иметь к нему доступ клиенты у которых только ipv4 адрес?
    Думаю, нет. Чтобы IPv4-клиенты имели доступ к вашему IPv6-серверу, им (клиентам) будет необходимо воспользоваться неким IPv6-over-IPv4 решением, например, Teredo (в отличие от 6to4, Teredo инкапсулирует данные в UDP-датаграммы, тем самым упрощая взаимодействие с NAT, наличие которого у клиента вполне вероятно).

    И как я смогу проверить коннект к такому виртуальному серверу, например, зайти по ssh, если у меня самого ipv4?
    Так же, как и потенциальный клиент. Поднять соответствующий интерфейс (teredo), установить SSH-соединение, указав IPv6-адрес сервера.

    В этом комментарии я предполагал, что у вашего хостера есть IPv6-связность (т.е. он анонсирует в интернет свои IPv6-префиксы). Если предположение неверно, то и на сервере придется использовать некое IPv6-over-IPv4 решение.
    Ответ написан
    Комментировать
  • Как автоматически построить топологию сети имея CAP файлы?

    @throughtheether
    human after all
    Во-первых, хорошо было бы узнать, откуда задача возникла, и какой смысл в ее решении (т.е. что вам даст/должно дать знание топологии). Трафик снимается из одной точки сети или из нескольких? Пример дампа можете привести?

    Я предполагаю, что в сети используется IPv4, инкапсулированный в Ethernet. В таком случае, на мой взгляд, сначала имеет смысл построить граф взаимодействия Ethernet-хостов (аналог в wireshark: statistics -> conversations -> ethernet). Затем, для каждого ethernet-хоста (определяемого unicast MAC-адресом) ставите в соответствие IPv4-адрес инкапсулированного IPv4-пакета (MAC-адресу источника ставите в соответствие IPv4-адрес источника, аналогично с адресами назначения). У вас получается вид топологии сети из точки, в которой происходил захват трафика. На мой взгляд, если нужна топология всей сети, то и трафик захватывать надо с каждого L2-домена.
    Ответ написан
    Комментировать
  • Как победить зависание сессии посетителя при выполнении ping средствами PHP?

    @throughtheether
    human after all
    Выполняет пинг определённого адреса средствами exec
    Например:
    exec("ping 192.168.0.1 -n 1 -w 350", $output, $status);
    Команда для разных ОС одинаковая? Насколько мне известно, единичные значения параметра -w в windows и linux различны (миллисекунда и секунда соответственно).
    Какие есть мысли - что можно предпринять?
    Если команда одна и та же для разных ОС, то значение таймаута для linux-варианта предлагаю скорректировать.
    Ответ написан
    Комментировать
  • Ubuntu dhcp-server как запретить присвоение чужого ip?

    @throughtheether
    human after all
    Включаем комп, которому принадлежит этот адрес - у него нет интернета.
    Как исправить такое?
    IP source guard (основная функциональность) + DHCP Snooping (таблица соответствий адресов), все это на коммутаторе.
    Ответ написан
    Комментировать
  • Работа с анаграммами, как можно оптимизировать скрипт?

    @throughtheether
    human after all
    Функция возвращающая список анаграмм из заданного слова
    Рекомендую присмотреться к модулю itertools, в частности, функции permutations. Примерный код:
    import itertools
    def anagrams(word):
    	for permutation in itertools.permutations(word):
    		yield ''.join(permutation)
    
    for word in anagrams('car'):
        print(word)
    car
    cra
    acr
    arc
    rca
    rac

    В случае повторения букв в слове анаграммы тоже будут содержать дубли:
    >>> for word in anagrams('rar'):
    	print word
    rar
    rra
    arr
    arr
    rra
    rar

    Функция сравнивающая два списка и возвращающая совпадения
    Если я правильно понял, вы держите в памяти списки анаграмм и словарных слов и ищете (линейным поиском) их пересечение. Это, на мой взгляд, не вполне эффективно. Я бы поступил так:
    words=['car','arc','cat','map','toster']
    wordset=set(words)
    for word in anagrams('car'):
       if word in wordset:
            print ("word %s matched vocabulary" % word)

    Если и этого не хватит, то можно будет, на мой взгляд, подумать об использовании фильтров Блума.
    UPD: Как я понял, основная проблема в количестве анаграмм.
    Вводим слово
    Из введённого слова делаем анаграммы
    Вы можете с самого начала для каждого слова из словаря запомнить его 'отсортированный' вариант:
    words=['car','arc','cat','map','toster']
    sortedwordset=set(''.join(sorted(w)) for w in words)
    >>> sortedwordset
    set(['acr', 'eorstt', 'amp', 'act'])
    Тогда для каждого введенного слова можно проверить, имеет ли смысл составлять анаграммы:
    if ''.join(sorted(word)) in sortedwordset:
        #continue with anagrams

    UPD2: Можно, на мой взгляд, сделать так: для каждого слова из словаря формируется его 'отсортированная' форма. Эта форма будет ключом словаря, а значением - список словарных слов, являющихся анаграммами этой формы. Тогда за счет предварительных вычислений можно будет быстро искать словарные анаграммы:
    def sorted_string(s):
    	return ''.join(sorted(s))
    
    words=['car','arc','cat','map','toster']
    d={}
    for word in words:
    	sorted_word=sorted_string(word)
    	if sorted_word in d:
    		d[sorted_word].append(word)
    	else:
    	    d[sorted_word]=[word]
    >>> d
    {'acr': ['car', 'arc'], 'eorstt': ['toster'], 'amp': ['map'], 'act': ['cat']}
    >>> d.get(sorted_string('car'),[])
    ['car', 'arc']
    >>> d.get(sorted_string('cat'),[])
    ['cat']
    >>> d.get(sorted_string('perkele'),[])
    []
    Ответ написан
  • Как сохранить форматирование текста при записи в файл?

    @throughtheether
    human after all
    for line in f:
        read = f.readline()
        split = read.split()

    Если я правильно понял, то строки пропускаются здесь. Вы итерируете по строкам файла (for line in f) и зачем-то каждый раз в цикле считываете новую строку (f.realine()), пропуская текущую. Python 2.7, например, в таком случае порождает исключение (ValueError: Mixing iteration and read methods would lose data).

    Я бы на вашем месте исправил на:
    for line in f:
        split = line.split()
    Ответ написан
  • Как правильно настроить snmp trap mac-notification на cisco 2960 ?

    @throughtheether
    human after all
    Дело оказалось в том,что в одном трапе само устройство может передать несколько состояний mac-notification в объекте cmnHistMacChangedMsg.

    Если я правильно понял, то так и должно быть. Цитата Cisco SNMP object navigator:
    This object contains the information of a MAC change notification event. It consists of several tuples packed together in the format of '...'.
    several tuples
    several
    Полагаю, проблема в разборе (парсинге) сообщения.
    Ответ написан
    Комментировать
  • Как найти совпадение в списке python?

    @throughtheether
    human after all
    Нужно выделить все подсписки, которые подходят под [1,2,*] без перебора списка.
    Если вы хотите выбрать все элементы первого уровня вложенности ("подсписки"), удовлетворяющие условию, без рассмотрения каждого из них (без перебора), то никак. В случае, если список a большой, вы можете рассматривать каждый элемент при добавлении его в список a и, в случае выполнения условия, добавлять его (или его индекс) в другой список/множество, хранящий/хранящее совпадения. Общая "сложность" будет такой же, но она, при соответствующей организации кода, будет "размазана" во времени, что иногда может быть предпочтительно. Но в таком случае паттерн должен быть известен заранее.
    Ответ написан
    Комментировать
  • Python работа с Excel. как установить xlutils?

    @throughtheether
    human after all
    Если возможно подскажите похожие плагины для работы с xl в Python 3.4

    openpyxl
    Ответ написан
    Комментировать
  • Как спарсить значение src из html кода?

    @throughtheether
    human after all
    При помощи selenium:
    from selenium import webdriver
    url='https://vk.com/kostya__wolf?z=photo107790602_343297825%2Falbum107790602_00%2Frev'
    xpath='//a[@id="pv_open_original"]'
    browser = webdriver.Firefox()
    browser.get(url)
    print browser.find_element_by_xpath(xpath).get_attribute('href')
    browser.quit()

    При помощи requests и lxml:
    import requests
    import json
    import lxml.html
    
    url='https://vk.com/kostya__wolf?z=photo107790602_343297825%2Falbum107790602_00'
    r=requests.get(url)
    doc=lxml.html.fromstring(r.text)
    search_string=url[url.find('photo'):url.find('%2F')]
    xpath='//a[contains(@href, "%s")]' % search_string
    src=doc.xpath(xpath)[0].get('onclick')
    d = json.loads(src[src.find('{'):src.find('}}')+len('}}')])
    src=d['temp']['base']+d['temp']['z_'][0]+'.jpg'
    print src
    Ответ написан
    Комментировать
  • Что неправильно в коде?

    @throughtheether
    human after all
    Что этот код, по-вашему, должен делать? А что он по факту делает (т.е. что не нравится)?
    UPD:
    Ошибки кода:
    g.go('...') имя переменной g не объявлено, добавьте перед этой строкой g=grab.Grab()
    u = urllib.urlopen(src) имя переменной src не объявлено.
    Другие ошибки: xpath, скорее всего, неверный. То, что вы скопировали его из firebug/firepath, не гарантирует, что grab сможет его обработать. Скорее всего, браузер и grab видят немного разную страницу, это связано с обработкой javascript. Кроме того, мне (grab 0.4.13, pyton 2.7, windows 7) grab ругался, что метод xpath() более не поддерживается (deprecated).
    UPD2:
    рабочий код с использованием grab:
    import urllib
    import grab
    import json
    
    g=grab.Grab()
    url='https://vk.com/kostya__wolf?z=photo107790602_343297825%2Falbum107790602_00'
    search_string=url[url.find('photo'):url.find('%2F')]
    xpath='//a[contains(@href, "%s")]' % search_string
    g.go(url)
    src=g.doc.select(xpath).attr('onclick')
    d = json.loads(src[src.find('{'):src.find('}}')+len('}}')])
    src=d['temp']['base']+d['temp']['z_'][0]+'.jpg'
    urllib.urlretrieve(src,'bibit.jpg')
    Ответ написан
  • Как сделать доступ к сайту только с ip из России?

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

    Технически, я вижу следующие возможности:
    1) ACL на сетевом оборудовании. Составляете список "российских" префиксов, транслируете в ACL, навешиваете на необходимый интерфейс. Плюсы: line-rate (или близкая к line-rate) производительность. Минусы: не всякое оборудование подойдет (размер TCAM и т.д.), возможные исключения (клиент жалуется, что он из России, а сайт не открывается) придется прописывать в ACL каждый раз (может быть не очень удобно). Стоит применять, если объем нежелательного трафика велик (флуд и прочая) и этот трафик реально влияет на производительность вашего сервера.
    2) фильтрация на самом веб-сервере (модуль geoIP). Плюсы: больше гибкости. Минусы: производительность ограничена производительностью geoIP-базы.
    3) комбинация пп. 1) и 2). Грубая фильтрация при помощи ACL, более гибкая - на самом веб-сервере.
    4) самый простой - спрятаться за CDN-фронтэнд, предоставляющий подобную услугу.
    Есть конечно более специфичные варианты, но вам, думаю, хватит и этих (а точнее, второго или четвертого).
    Ответ написан
    Комментировать
  • Как создать LAN видеоресурс?

    @throughtheether
    human after all
    Каким образом можно создать аналогичный ресурс?
    Если надо только показывать видео (без загрузки его на сервер, учета статистики, рекомендаций и прочего), то можно все сделать на коленке:
    1) качаете видео
    2) верстаете html-страничку с использованием тега video
    3) раздаете все каким-либо веб-сервером
    4) просите администраторов сети, чтобы какой-либо хостнейм (funny-video.lan, например) разрешался в ваш IP-адрес
    5) ???
    6) профит! - люди смотрят смешное видео (без регистрации и смс), не тратя деньги на внешний трафик.

    Плюсы: дешево, сердито, быстро (см.скриншоты, потрачено минут 10), деревянно. Позволит оценить интерес публики без особых затрат.
    Минусы: крайне ограниченная функциональность.

    Если нужен функциональный клон youtube, поищите по ключевым словам "video sharing script", "video sharing cms" и прочая.
    В любом случае, вам потребуются:
    1) сервер в локальной сети, на котором все будет работать
    2) соответствующая DNS-запись
    3) запущенный веб-сервер, раздающий видео тем или иным образом (статика, стриминг)
    скриншоты
    985d1f8d4ea248f18dc641da939c9474.png879ef863f5704ab19ff3be65b65865c1.png
    Ответ написан
  • Какие книги посоветуете по безопасности сетей?

    @throughtheether
    human after all
    Вообще говоря, вопрос довольно общий, если вы его уточните (что и с какой целью вам необходимо изучить), будет проще ответить.
    По поводу безопасности, на мой взгляд, сначала следует изучить устройство самих сетей/протоколов, и лишь затем, как производную от этого, аспекты безопасности.
    Пара универсальных рекомендаций:
    1) Wendell Odom. Книги курса CCNA.
    2) Jeff Doyle. Routing TCP/IP. (хотя бы первые главы четыре тома I)
    3) Stevens. TCP/IP Illustrated, том I. В томе II рассказывается, в том числе и о программировании (имплементации) протоколов.
    4) Pearlman. Interconnections.
    Если опыта немного, то лучше прочесть меньше книг (рекомендую пп. 1,2), но провести больше практических работ.
    Ответ написан
    Комментировать
  • Что делает скприпт livestreamer-completion / twitch_channels.py?

    @throughtheether
    human after all
    Там же написано, составляет список каналов, на которые подписан пользователь, с целью использования для автодополнения команд в bash. Это реализовано путем составления запросов к API twitch.tv и обработки json-ответов. Или у вас есть более конкретные вопросы?
    Ответ написан
    Комментировать
  • Как парсить html страницы и его обрабатывать?

    @throughtheether
    human after all
    Держите отвратительный, кривой, но работающий код на python:
    from selenium import webdriver
    import time
    browser = webdriver.Firefox()
    url='http://vk.com/go_in_zp?z=photo-50824015_344878304%2Falbum-50824015_00%2Frev'
    browser.get(url)
    time.sleep(5) # this is bad
    img=browser.find_element_by_xpath('//a[@id="pv_photo"]/img')
    print img.get_attribute('src')
    browser.quit()

    вывод:
    http://cs624016.vk.me/v624016533/a226/owG51bJm59o.jpg

    Как этот код можно изменить:
    1) строку time.sleep(5) заменить на проверку нахождения элемента (ждем секунду, проверяем наличие элемента, если его нет, увеличиваем счетчик и продолжаем; при достижении счетчиком максимального значения - таймаут)
    2) заменить selenium на phantom.js (чтобы окно фаерфокса не появлялось)
    3) понять, что происходит при загрузке страницы браузером и имитировать это поведение при помощи requests.
    Третий путь, на мой взгляд, самый трудозатратный и самый многообещающий (в смысле скорости решения).

    UPD:
    решение при помощи requests:
    import requests
    from lxml.html import fromstring
    url='http://vk.com/go_in_zp?z=photo-50824015_344878304%2Falbum-50824015_00%2Frev'
    search_string=url[url.find('photo-')+len('photo-'):url.find('%2F')]
    r=requests.get(url)
    doc=fromstring(r.text)
    xpath='//a[contains(@onclick, "%s")]/img' % search_string
    print doc.xpath(xpath)[0].attrib['src']
    Ответ написан
    2 комментария