• Что такое select?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Представьте себе, что вы пишите web сервер. И к нашему серверу подключено 100 юзеров. И это, к примеру, чатик.

    Так вот, наши юзеры - это живые люди, и они не могут физически загрузить весь канал информацией, а значит, что каждое соединение с пользователем большую часть времени.... будет просто висеть.

    Предположим что у нас есть массив дескрипторов сокетов (или просто массив сокетов для упрощения) и мы тупо в бесконечном цикле обходим каждый и спрашиваем "есть че? нет? Ну ладно, следующий". В этой ситуации у нас 90% времени цикл будет пускаться в холостую и просто бернить процессорное время. А этим процессорным временем мог между прочим воспользоваться другой процесс, который тоже что-то важное делает.

    Так вот, вместо того что бы бернить попросту процессорное время, мы можем загнать массив дескрипторов в функцию select, и она предоставит нам список сокетов, в которых мы можем отправлять данные, в которых есть что-то новенькое для чтения, и те, в которых произошли ошибки.

    Более того, эта функция ничто иное как просто системный вызов. Она реализована не в python даже а в операционной системе, а вы просто работаете с оберткой. И если мы делали все тупым перебором, то в современных операционках за это отвечают весьма хитрые и оптимизированные алгоритмы.

    Ну короч как-то так. Если вам хочется больше информации, не привязывайтесь к python, эта штука есть в любом языке программирования и работает одинаково. Так же помимо select есть еще poll и epoll.
    Ответ написан
    10 комментариев
  • Как сохранять и проверять наличие cookies?

    @pcdesign
    Обычно этим занимаются модули, которые отвечают за авторизацию юзеров.

    Но, если хотите на голом flask это реализовать. То тоже без проблем.
    session['user_id'] = user_id
    Таким образом записываются куки.
    Когда нужно прочитать куки с юзерского браузера, то вот так:

    user_id = session.get('user_id')
    if not user_id:
        # Перекидываем на страницу с авторизацией
        redirect(url_for('login'))


    Чтобы посмотреть что хранится в ваших локальных куках в браузере, можно использовать вот этот плагин
    https://chrome.google.com/webstore/detail/editthis...
    Ответ написан
    3 комментария
  • Как заставить Safari показывать ссылку при наведении?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Вид -> Показать меню статуса
    либо cmd+/
    Ответ написан
    3 комментария
  • Как получить практический опыт в управлении проектами?

    darqsat
    @darqsat
    PM
    Путь к успеху:
    0. Найти ментора где тебя обучат. На тематических форумах по АЙТИ часто есть топики о поиске менторов где можно оставить свой пост и надеятся на результат. Может повезти.
    1. Гуглим
    - Сюхари
    - Эмпиризм
    - Цикл Деминга
    2. Лирика
    Книги:
    - Черная Книга Менеджера (Слава Панкратов)
    - 45 Татуировок Менеджера (Макс Батырев)
    - Цель (Элияху Голдрат)
    - Идеальный руководитель (Ицхак Адизес)
    Фильмы:
    - Мне бы в небо (Жорж Клуни)
    - Уолт Стрит (1987)
    - Социальная Сеть (про фейсбук)
    - Steve Jobs (с эштоном катчером)
    - Марсианин (как мет деймон выращивал картошку)
    (смотри в любом порядке, но рекомендую начать с мне бы в небо, затем стив джобс и затем социальная сеть. когда будешь смотреть, каждые 5 минут задавай себе вопрос - почему то что я смотрю полезно мне как менеджеру. будешь замечать поразительно полезные вещи)

    2. Приобретаем теорию:
    - Agile
    - Kanban
    - Scrum
    - Lean Startup
    - Lean Production
    - PMBOK(6 издание) (для начала учим оглавление, и читаем описание каждого оглавления. затем читаем чуть глубже тот раздел который наиболее понятен. логику и порядок искать не нужно, его там нет. важно использовать эту книгу как пример для действия когда совсем непонятно что делать, и лучше уж как то чем никак, а не как конкретно план и единственно верный метод)
    3. Смотрим на ютюбе:
    - Эффективные коммуникации (например старые видосы Радислава Гандапаса за 2000 года. ни в коем случае не смотреть новые, он слился)
    - Если Вова их еще не стер, посмотреть MS Project 2013 видосы от Владимир Иванов
    - Поискать на торентах все видосы недавно двинувшего кони Стратоплана. Там кажись толи 500 толи 900 часов материала. Можно рандомно включать когда делать нечего, что бы просвещаться.
    4. Смотрим и тыкаем инструменты, ищем на ютюбе какие то гайды и лайфхаки
    - Gmail
    - Google Calendar
    - Word, Excel, Powerpoint (а так же всё тоже самое только гугловое)
    - Google Drive/Dropbox
    - Trello
    - Redmine
    - JIRA
    - Confluence
    - Slack
    - Hangouts/Skype/Join.me/Zoom
    5. Найти вакансию associate project manager или trainee project manager в какой то большой галере где хотя бы 1000+ человек. Если не получается, junior project manager, assistant project manager или project manager assistant. Если всё еще не получается, то знать Scrum, учиться ему и смотреть видосы по фасилитации. Когда поймешь и научишся фасилитировать, начинаешь искать работу скрам мастером (Scrum Master).
    Ответ написан
    Комментировать
  • Есть ли книга алгоритмы в примерах и задачах?

    ikryloff
    @ikryloff
    Full stack student
    Грокаем алгоритмы
    Ответ написан
    Комментировать
  • Есть ли в python готовый алгоритм для нахождения часто встречающихся последовательностей?

    longclaps
    @longclaps
    Слово длины n содержит (n+1)*n/2 непустых подстрок, на тексте из m слов верхняя оценка - m*(n+1)*n/2 разных подстрок.
    Задача PN-полная (ну то что ты написал - вообще черте-что, а не задача - что за хрень "наиболее часто встречающиеся" и как оно соотносится с "максимальной длины"?), так вот, задача решается полным перебором.
    Морда не треснет?
    ps вот грязненький код, который ищет максималные подстроки, встречающеся хоь в паре слов. Ужас-ужас.
    from collections import defaultdict
    from pprint import pprint
    
    data = [w.strip() for w in "BSNREORG, BSNWA010".split(',')]
    alphabet = set(c for w in data for c in w)
    
    nxt = {}
    for c in alphabet:
        tmp = [w for w in data if c in w]
        if len(tmp) > 1:
            nxt[c] = tmp
    pprint(nxt)
    while nxt:
        cur, nxt = nxt, defaultdict(set)
        for k, v in cur.items():
            for c in alphabet:
                for pattern in {k + c, c + k}:
                    nxt[pattern].update(w for w in v if pattern in w)
        nxt = {k: v for k, v in nxt.items() if len(v) > 1}
    pprint(dict(cur))
    Ответ написан
    1 комментарий
  • Как сделать сервис создания mind map?

    rockon404
    @rockon404
    Frontend Developer
    Если бы мне приспичило реализовать подобный проект, я бы первым делом заглянул Sources сервиса, затем посмотрел подобные реализации на github.
    Вот эта библиотека https://github.com/drichard/mindmaps , нашел название в комментарии в js файле.
    На сайте по ссылке в вопросе она скопирована в чистом виде с добавлением рекламного блока.
    Посмотрите как реализована она, посмотрите на аналоги. Скорей всего вам подойдет готовое решение.
    Ответ написан
    1 комментарий
  • Как Подсчитать количество предложений в тексте - Python?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    from textblob import TextBlob
    with open('tetxfile.txt') as f:
        text = f.read()
    blob = TextBlob(text)
    print(len((blob.sentences)))
    Ответ написан
    4 комментария
  • Как Подсчитать количество предложений в тексте - Python?

    aRegius
    @aRegius
    Python Enthusiast
    >>> import re
    >>> def sent_count(text):
    	        new_text = re.sub(r'[.!?]\s', r'|', text)
    	        sent_num = len(new_text.split('|'))
    	        print('В этом тексте {} предложения.'.format(sent_num))
    
    	
    >>> text = 'Чиполлино был сыном Чиполлоне. И было у него семь братьев: Чиполлетто и так далее – самые подходящие имена. Люди они были хорошие, да только не везло им в жизни.'
    >>> sent_count(text)
    В этом тексте 3 предложения.
    >>> text = "Чиполлино был сыном Чиполлоне?! И было у него семь братьев: Чиполлетто и так далее – самые подходящие имена. Люди они были хорошие, да только не везло им в жизни... Правда?"
    >>> sent_count(text)
    В этом тексте 4 предложения.
    Ответ написан
    Комментировать
  • Классы и объекты в python, self?

    longclaps
    @longclaps
    в него попадает название экземпляра класса
    Экземпляр может быть безымянным (например, лежать в списке), но идея в принципе верна - в self попадает id объекта:
    class A:
        def f(self):
            print(self)
            print(hex(id(self)))
    
    a = A()
    a.f()

    не понимаю зачем нужен атрибут self
    Не уверен, что понимаю вопрос - настолько очевиден ответ, к тому же следующий прямо за вопросом. Смотрите на это как на синтаксический сахар: при вызове метода вы пишете экземпляр.метод(аргументы), а в реализации def метод(экземпляр, аргументы). Имя первого аргумента вообще-то произвольное, обычно пишут "self", но python3 допускает даже русский идентификатор "экземпляр", можете попробовать.
    Ответ написан
    5 комментариев
  • Как исключить из диапазона число в языке Python?

    aRegius
    @aRegius
    Python Enthusiast
    Добрый день!

    Если чисел три:
    >>> a = 1
    >>> b = 5
    >>> c = 3
    >>> x_min, x_avg, x_max = sorted((a, b, c))
    >>> x_min
    1
    >>> x_max
    5
    >>> x_avg
    3

    Если больше трех:
    >>> a = 1
    >>> b = 5
    >>> c = 3
    >>> d = 2
    >>> x_min, *x_avg, x_max = sorted((a, b, c, d))
    >>> x_min
    1
    >>> x_max
    5
    >>> x_avg
    [2, 3]
    Ответ написан
    Комментировать
  • Как реализовать поиск вхождений разной длины в строку с большего к меньшей?

    @maxfox
    Вам нужно хранить правила замен не в словаре, а, например, в списке кортежей. Словарь не имеет смысла в данной задаче, т.к. вы будете перебирать все варианты замен, а не выбирать их по ключу. В итоге проходим по списку кортежей и делаем замену через .replace(). Две строчки кода.
    Ответ написан
    Комментировать
  • Как реализовать поиск вхождений разной длины в строку с большего к меньшей?

    @fireSparrow
    В модуле collections есть структура OrderedDict, которая является словарём, хранящим порядок элементов.
    Если заполнить его парами ключ-значение в порядке убывания длины ключа, то именно так их он и сохранит, и при итерации будет отдавать сначала длинные ключи.
    Единственное, что нужно помнить - после того, как такой словарь построен, при необходимости добавить новую пару, словарь нужно будет целиком заново перестраивать.
    Ответ написан
    Комментировать
  • В чем разница между Django, Flask и Angular, Backbone?

    Поиграйтесь если понимаете про фронт и бек derbyjs.com
    Ответ написан
    Комментировать
  • В чем разница между Django, Flask и Angular, Backbone?

    Везде можно подключить БД

    На фронтенде БД будет храниться в браузере, т.е. этим данным доверять нельзя. В БД на клиенте могут храниться данные, необходимые для оффлайн-работы приложения, например.

    можно сделать сайт отдельно на каждом из фреймворков

    Вы явно не понимаете про фронтенд и бэкенд. На Django или Flask можно сделать серверную часть сайта. На Angular или Backbone - клиентскую. И никак иначе. Поэтому если приложению нужен сервер - на одном ангуляре Вы его не напишете. Аналогично, если нужна сложная логика на клиенте, джанго тут ничем не поможет.

    Почему просто не сделать все на одном?

    Как минимум потому что языки на сервере и на клиенте зачастую разные (тот же Python на сервере и JS На клиенте например). Вообще, есть фулстек фреймворки типа Meteor, которые позволяют писать изоморфный код, но как-то особой популярности они не получили насколько я могу судить.
    Ответ написан
    Комментировать
  • Как выводить построенный график в отображение Django или Flask?

    @Themezv
    Js developer (React.js)
    Вы хотите открыт страничку и наблюдать изменения или обновлять страничку для просмотра изменений?
    Если первое, то нужен ajax или websockets.
    Ответ написан
    2 комментария
  • Почему падает ошибка "no such column"?

    @alex-t
    Прогр. в команде rco.ru
    В строке после исполнения format'а fff получится без кавычек, во так странно и реагирует. Лучше, естетсвенно "с вопросиками", тогда в одном операторе можно сразу много строк таблицы вставлять.
    Ответ написан
    1 комментарий
  • Почему падает ошибка "no such column"?

    cursor.execute("INSERT OR IGNORE INTO t1 (col1, col2, col3) VALUES (? ? ?)", (col1, col2, col3))
    Ответ написан
    3 комментария
  • Как округлить произвольное десятичное число без встроенных функций round и модуля math?

    @nirvimel
    Дело в том, что в математике не существует десятичных чисел.
    Существуют: натуральные, целые, рациональные, вещественные, комплексные, и.т.д. Но десятичных чисел НЕТ!
    Десятичная система счисления - это лишь форма записи для восприятия чисел человеком.
    Но сами числа не волнуют разные формы записи, в которой человек их может (или не может) воспринимать.
    В вычислительной технике все числа физически хранятся и обрабатываются в двоичной форме. Но это опять же только форма записи, это не делает сами числа "двоичными" (будто какими-то особенными). Десятичная система счисления в вычислительной технике используется кране редко. К вашему случаю это 100% не имеет никакого отношения, как и ко всем языкам высокого уровня (это число ассемблерные заморочки, которые были актуальны (минимум) лет тридцать пять назад).

    Теперь поговорим об округлении вещественных чисел:
    Дробная часть вещественного числа равна остатку от его деления на единицу. Целая часть соответственно равна разности самого числа и его дробной части.
    Чтобы сохранить определенное количество разрядов после запятой число следует сначала сдвинуть влево на соответствующее число разрядов, взять его целую часть и сдвинуть обратно в право на столько же разрядов. Сдвиг влево/вправо реализуется умножением/делением на основание системы счисления, возведенное в степень равную количеству сдвигаемых разрядов.
    Ответ написан
    Комментировать