• Как вытащить файлы из docker?

    vader666
    @vader666
    Посмотреть список работающих контейнеров:
    docker ps
    Подключение к контейнеру:
    docker exec -t -i <container_name> /bin/bash
    Смотрится структура директорий, находится где лежит проект и запоминается его путь. Выходим из контейнера

    Копируем данные из контейнера:
    docker cp <container_name>:<пусть к проекту> <путь куда копируем на текущем сервере>
    Ответ написан
    Комментировать
  • Какие CMS на Python посоветуете?

    pinkevich
    @pinkevich
    Developer
    Я бы посоветовал django-cms. Я его недавно использовал как паблик часть для основного проекта (лендинг, новости и т.д.). Другие не использовал, не подскажу.
    Ответ написан
    2 комментария
  • Как удалить водяной знак с помощью Python?

    deepblack
    @deepblack Куратор тега Python
    Плохо искал:
    https://stackoverflow.com/a/50800425/2981702
    https://stackoverflow.com/a/55811304/2981702

    https://github.com/marcbelmont/cnn-watermark-removal
    https://github.com/LJSthu/Python-Remove-Watermark

    А вообще плохая затея удалять вотермарки с чужих изображений.
    Купить нужные картинки не так уж и дорого. IMHO
    Либо брать с unsplash.com
    Ответ написан
    1 комментарий
  • Как удалить водяной знак с помощью Python?

    deeppsycoder
    @deeppsycoder
    клинический психолог
    Создать свой датасет и обучить на нём нейросеть, которая будет генерировать из чужой фактически уже свою картинку.
    Ответ написан
    Комментировать
  • Что такое инверсия зависимостей в 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 комментария
  • Как узнать точное время включения компьютера с Ubuntu?

    egor_nullptr
    @egor_nullptr
    ps -o lstart 1 | tail -n 1
    Вместо lstart также можно bsdstart или start, смотрите сами какой формат вывода вам более удобен.

    Ещё можно так:
    dmesg | grep "RTC time" | awk -F"RTC time:" '{print $2}' | sed s@date:@@
    это будет дата и время в UTC (первый способ выдаёт локальное время).
    Ответ написан
    2 комментария
  • Как обучать нейронную сеть по одной картинке за раз?

    @pi-null-mezon
    При такой постановке вопроса, уже понятно, что ничего хорошего не получится. Хотя, формально ответы такие:
    1) да
    2) да
    Но, повторю, так делать НЕ надо (сеть либо переобучится, либо не будет никакой сходимости функции потерь, в обоих случаях сеть превратится в бесполезный генератор псевдослучайных чисел). А что тогда делать? Хорошо бы точно определиться с задачей. Насколько я понял, речь о самой простой классификации (у нас есть M классов (твоих иероглифов) и каждая картинка принадлежит только одному из них). Это так называемая multi-label classification. Если так, то обучать лучше минибатчами (это набор из нескольких картинок). Минибатчи формируются путём случайного отбора примеров из обучающей выборки. Тонкостей и здесь довольно много. Например, минибатчи лучше делать несмещёнными (т.е. отбирать примеры так, чтобы метки всех классов были представлены в минибатче в одинаковом количестве). Если обучающих данных мало (1 пример на один класс это конечно вообще не для нейронных сетей задача, но тем не менее...), то данные дополняют искусственно. Можно случайный шум к картинке добавлять, поворачивать её немного, масштабировать, смещать параллельным переносом, цвет менять и ещё разные искусственные преобразования делать (см. https://github.com/albu/albumentations ).
    Ответ написан
    Комментировать
  • Добавлять ли virtualenv в git?

    idegree
    @idegree
    Senior Workaround Developer
    Лучше писать зависимости в requirements.txt и уже этот файлик добавлять в git.
    Пример файла (можно с указанием версий через ==, можно без):
    Django==1.8.5
    django-flat-theme==1.1.1
    mysql-python==1.2.5
    gunicorn==19.4.1
    pytz==2015.6
    python-memcached==1.57
    django-debug-toolbar==1.4


    При клонировании репозитория на другой компьютер или сервер выполните (предварительно создав и активировав нужное виртуальное окружение):
    $ pip install -r requirements.txt
    Таким образом, вы разом установите все необходимые пакеты.
    Ответ написан
    3 комментария
  • Как избежать закрытия командной строки при нажатии на Enter?

    Stalker_RED
    @Stalker_RED
    Можно запускать как-то так cmd /c ping.exe & pause (вместо ping ваша программа)
    Ответ написан
    1 комментарий
  • Как избежать закрытия командной строки при нажатии на Enter?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    запускайте сперва командную строку, а затем в ней уже выполняйте команду.

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

    Поэтому выход - сперва запустите консоль (cmd.exe), а из нее уже запускайте консольные программы.
    Ответ написан
    Комментировать
  • Логгирование Python, как быстро сделать вывод ошибок в файл?

    qlkvg
    @qlkvg
    python backend developer
    прикрутите logging, пока не поздно. Один раз создать логгер и поменять все print на logger.info - дело где-то 5 минут. Взамен получите возможность быстрого переключения логирования в файл/консоль, разбивку сообщений по уровням (очень удобно отделять дебажные сообщения от информационных и диагностических), полноценное логирование исключений и еще кучу всяких плюшек.
    Ответ написан
    Комментировать