Задать вопрос
  • Как подправить регулярку?

    Spartak-2205
    @Spartak-2205
    Разработка и создание сайтов
    videoId всегда содержит 11 символов и всегда будет заканчиваться одним из следующих символов:
    A, E, I, M, Q, U, Y, c, g, k, o, s, w, 0, 4, 8

    Таким образом, регулярное выражение (RegEx) для videoId будет выглядеть следующим образом:
    [\w-]{10}[AEIMQUYcgkosw048]{1}

    И так как вариантов ссылок на видеоролик может быть много, то не всегда подойдёт парсинг URL (parse_url, parse_str итп), поэтому лучше использовать регулярное выражение в этом случае

    function getVideoID ($url)
    {
    	preg_match("%^(?:https?://)?(?:www\.|m\.)?(?:youtu\.be/|youtube(?:-nocookie)?\.com(?:/watch\?v=|/watch/\?v=|/embed/|/v/))([\w-]{10}[048AEIMQUYcgkosw]{1})($|\S+).*$%x", $url, $matches);
    	return $matches[1] ?? "";
    }
    
    echo getVideoID("https://youtu.be/DBXH9jJRaDk?t=11");
    //DBXH9jJRaDk
    
    echo getVideoID("https://www.youtube.com/embed/DBXH9jJRaDk");
    //DBXH9jJRaDk
    
    echo getVideoID("https://www.youtube.com/watch?v=DBXH9jJRaDk&t=30&feature=emb_logo");
    //DBXH9jJRaDk
    
    echo getVideoID("https://www.youtube.com/watch?v=DBXH9jJRaDk");
    //DBXH9jJRaDk
    
    echo getVideoID("https://m.youtube.com/watch?v=DBXH9jJRaDk&t=30");
    //DBXH9jJRaDk
    Ответ написан
    5 комментариев
  • Как вывести содержимое двухмерного массива без скобок?

    0xD34F
    @0xD34F
    print('\n'.join(map(', '.join, arr)))
    Ответ написан
    Комментировать
  • Как заменить гитовский проект целиком?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    Никак. Оставить эти проекты в своих раздельных репозиториях.
    При попытке соединить, если у вас совпадут имена бренчей (а как минимум мастер совпадет), будет жесть.

    Если очень надо - переименовать проект A в A_ARCHIVED а проект B в проект А.
    Ответ написан
    Комментировать
  • Как вывести unix timestamp сегодня(now) и 24 часа назад?

    milssky
    @milssky
    Координатор племени фиолетовых обезьянок
    Например, вычесть количество секунд в сутках из time.time()

    now = time.time()
    res = now - (24 * 60 * 60)
    time.ctime(now)
    'Wed Aug  5 12:57:04 2020'
    time.ctime(res)
    'Tue Aug  4 12:57:04 2020'
    Ответ написан
    Комментировать
  • Как повторно импортировать модуль?

    @Miit
    async awaiter
    Если вам нужно прям заново вызывать модуль, то сперва вам нужно удалить его из объекта modules в стандартной библиотке sys, а затем заново вызвать импорт. Либо можете использовать функцию reload из модуля importlib.
    Во всех остальных случаях, лучше просто объявить функцию в модуле, которую вам необходимо вызывать.

    Примеры

    import sys
    import some_module
    
    del sys.modules['some_module']
    import some_module

    from importlib import reload
    import some_module
    reload(some_module)

    Ответ написан
    Комментировать
  • Программирование деформирует человека как личность?

    glaphire
    @glaphire
    PHP developer
    У Вас был существенный дисбаланс в жизни (ничего помимо работы), я не согласна с теми, кто говорит что "разработка это не Ваше", скорее нужно пересмотреть приоритеты в жизни. Психолог может помочь, если Вы действительно созрели копаться в себе. Люди не выгорают, когда все их внутренние потребности закрыты, кому-то это закрывает кодинг, а кому-то спорт, путешествия, семья... Но это не значит, что нужно бросать разработку, просто подобрать работу покомфортнее) Говорю частично из своего опыта
    Ответ написан
    1 комментарий
  • Где можно поискать старые проекты?

    Adamos
    @Adamos
    Скачайте исходники Битрикса. Там копролиты десятилетней давности присутствуют до сих пор и, к сожалению, никак не закончат свой жизненный цикл.
    Ответ написан
    Комментировать
  • Кеширование view в Django/DRF с возможностью очищения кеша?

    tumbler
    @tumbler Куратор тега Django
    бекенд-разработчик на python
    django-cacheops в большей степени заточен на кэширования уровня ORM, зато инвалидация там навороченная. В целом, можно попробовать переиспользовать инвалидацию уровня ORM с помощью cached_as, но это будет замороченно с т.з. логики и тяжело в поддержке.
    По-сути вам придется продублировать автоматически работающие правила инвалидации ORM-а на уровне декораторов view, но уже вручную. И поддерживать консистентность между этими правилами и тем, как в действительности этот view формирует ответ.
    Мы остановились на том, что при необходимости облегчаем генерацию ответов DRF за счет values() и prefetch_related(), а инвалидацию оставили там где она лучше всего работает - на уровне ORM.
    Ответ написан
    2 комментария
  • Как побороть сонливость и апатию в течение дня?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Мне помогла ипотека, автокредит, трое детей и неработающая жена.
    Ответ написан
    9 комментариев
  • Что быстрее массив или объект?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Почему вы считаете, что обращение по ключу - не поиск?

    Ключ это прямой адрес в памяти?
    Нет, а значит наверное надо выполнить поиск по всем объектам, чтобы найти нужный по ключу?
    Нужно смотреть реализацию геттера, чтобы понять насколько там все сложно.
    Ответ написан
    1 комментарий
  • Что такое инверсия зависимостей в python?

    Ranc58
    @Ranc58
    Backend python developer
    По сути - как и везде. Пример- У бизнесс логики не должно быть зависимостей от конкретных реализаций. Сегодня у вас все хранится в постгрес а завтра в монге. Инверсия зависимостей позволяет более менее безболезненно совершить такой переезд, так как слой бизнесс логики понятия не имеет где вы храните данные. Ниже накидал грубый но вроде понятный кусок кода. Есть некая сущность блог, к которой можно добавлять пользователей и смотреть их. Блог должен откуда то тянуть данные и где то хранить их. Мы создаем некий интерфейс DBInterface ,который имеет стандартные методы добавить/удалить данные. Далее создаем класс SQLdb который реализует этот интерфейс.

    В самом классе блога мы реализуем функции получения/добавления пользователей без привязки к конкретной системе хранения: просто создаем экземпляр класса SQLdb и экземпляр класса Blog , передавая туда sqldb. Когда мы захотим переехать на монгу - нам не надо будет трогать класс блога. Мы всего лишь реализуем класс Mongodb для новой базы и будем опрокидывать его в блог вместо sqldb. Итог - блог не зависит от системы хранения вообще.
    Пример сильно упрощен и утрирован, но для понимания как оно работает думаю сойдет)

    from abc import ABC, abstractmethod
    import random
    
    
    class DBInterface(ABC):
    
        @abstractmethod
        def insert(self, data):
            pass
    
        @abstractmethod
        def get(self, id):
            pass
    
    
    class SQLdb(DBInterface):
    
        def insert(self, data):
            print(f"inserted {data} from mysql")
            return random.randint(0, 100)
    
        def get(self, id):
            print(f"get user {id} data from mysql")
            return {'id': id, "data": "some_data"}
    
    
    class Mongodb(DBInterface):
    
        def insert(self, data):
            print(f"inserted {data} from mongo")
            return random.randint(0, 100)
    
        def get(self, id):
            print(f"get user {id} data from mongo")
            return {'id': id, "data": "some_data"}
    
    
    class Blog:
    
        def __init__(self, db, blog_id):
            self.db = db
            self.blog_id = blog_id
    
        def add_user(self, name):
            self.db.insert(name)
    
        def get_users(self):
            return self.db.get(self.blog_id)
    
    
    if __name__ == '__main__':
        sql_db = SQLdb()
        mongo_db = Mongodb()
    
        blog_with_sql = Blog(db=sql_db, blog_id=1)
        blog_with_sql.add_user("test") # Выведет inserted test from mysql
    
        blog_with_mongo = Blog(db=mongo_db, blog_id=1)
        blog_with_mongo.add_user("test") # Выведет inserted test from mongo
    Ответ написан
    2 комментария
  • Как это называется ""?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Строковое представление объекта дескриптора свойства.
    Ответ написан
    7 комментариев
  • Чем нейронные сети отличаются от ИИ?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    5e7096d14cca5837411277.jpeg
    Искусственный интеллект — название всей области, как биология или химия.

    Машинное обучение — это раздел искусственного интеллекта. Важный, но не единственный.

    Нейросети — один из видов машинного обучения. Популярный, но есть и другие, не хуже.

    Глубокое обучение — архитектура нейросетей, один из подходов к их построению и обучению. На практике сегодня мало кто отличает, где глубокие нейросети, а где не очень. Говорят название конкретной сети и всё.

    источник
    Ответ написан
    Комментировать
  • Может ли новый абонент, купивший мой старый номер телефона, войти в мои мессенджеры?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Суть вопроса в том, что заново проданный номер уже не Ваш. Претензий к оператору быть не может.
    Получается остаются правоотношения Вас и информационных сервисов. Если Вы не уведомили сервис о смене способа контакта с Вами (телефонного номера), то это Ваша проблема.
    Ответ написан
    1 комментарий
  • Как проверить, встречаются ли какие-либо символы из одной строки в другой строке?

    Stasgar
    @Stasgar
    Обученная макака
    Можно проще (если без регулярки):

    allowed = set("abcd") # разрешенные символы
    
    password_ok = "babc" # валидный пароль
    password_bad = "baz" # невалидный пароль
    
    print(set(password_ok).issubset(allowed)) # true - пароль состоит только из символов allowed
    print(set(password_bad).issubset(allowed)) # false, в пароле есть другие не разрешенные символы


    В итоге функция:

    def password_valid(password, allowed):
        return set(password).issubset(set(allowed))
    Ответ написан
    1 комментарий
  • Можно ли двоим людям работать через Upwork с одного IP?

    Lucian
    @Lucian
    https://t.me/MakeFreelance
    Привет, бана не будет, это тоже самое что и работа из кафе через Wi-Fi и один ip.
    Ответ написан
    Комментировать
  • Как установить sip simple?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    это читали?

    wget download.ag-projects.com/agp-debian-gpg.key
    sudo apt-key add agp-debian-gpg.key
    Ответ написан
    2 комментария
  • С какой должности лучше начать искать работу среднему fullstack программисту, но только на удаленку на постоянной основе?

    20 лет ... универсал среднего уровня

    Все, что нужно знать о фуллстэках.

    С одной стороны мои знания проигрывают и тем и другим программистам.

    Само собой. Вы же фуллстэк. В общем-то, это и ответ: если хотите, чтоб ваши знания всегда проигрывали и тем, и другим программистам, ищите вакансию фуллстэка, в противном случае выбирайте приоритетное направление и углубляйтесь в него, затем вакансия миддла по laravel или vue.

    будешь уже ослабляться как универсал и получить меньше шансов разработать свой проект

    Время одиночек, которые на коленке могли коряво состряпать революционный проект, прошло. Сейчас все - или почти все - делается командами. И потом, чтобы сделать MVP, необязательно хорошо знать все технологии - можно подглядывать в мануал, можно говнокодить, костылить, забить на оптимизацию, это все можно. Ведь если первая версия будет настолько популярной, что будет виден потенциал и появится стимул ее развивать, можно будет найти работников \ партнеров \ инвесторов и постараться выйти на самоокупаемость.
    Ответ написан
    1 комментарий
  • Как преобразовать тип данных?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Как вариант:
    import json
    str1 = '"test":"test", "test":"test"'
    out = json.loads('{{ {} }}'.format(str1))


    {u'test': u'test'}
    >>> type(out)
    <type 'dict'>
    Ответ написан
    Комментировать