Задать вопрос
  • Как записывать ход исследования?

    sarapinit
    @sarapinit
    Точу водой камень
    Копайте в сторону лабороторного журнала. Вот например.
    Адаптируйте под себя.
    Ответ написан
    1 комментарий
  • Как записывать ход исследования?

    @perevalovds
    Я пробовал tello, mind maps и другие специальные средства...
    Еще пробовал на бумажке...
    Но в итоге по каждому проекту создаю документ на cloud.mail.ru,
    и веду его таблицами - обычно в две колонки.
    Почему-то формат таблицы мне помогает - просто разметка на прямоугольники, без всяких подписей.

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

    А после плана - создаю уже таблицы по пунктам этого плана.
    Если накапливается больше 10 страниц - иногда создаю второй документ.

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

    Почему cloud.mail.ru - ну, просто у него нормально word поддерживается и мне нравится их прямая система показа папок. Яндекс, гугл драйв и дропбокс я тоже использую для работы, но пишу документы в mail.ru

    5eaa8397aca2c220754993.png

    5eaa83c8e2e33739353670.png
    Ответ написан
    Комментировать
  • Что такое инверсия зависимостей в 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 комментария
  • Как посмотреть writable layer контейнера?

    @q2digger
    никого не трогаю, починяю примус
    /var/lib/docker/volumes/
    туда он сохраняет volumes контейнеров.
    Если у вас их немного, легко вручную найдете нужный..
    Ответ написан
    4 комментария
  • Как использовать одну базу данных для нескольких сайтов, запущенных в Docker?

    @qq1
    Мой вопрос: можно ли текущую конфигурацию переработать так, чтобы при определённых переменных в .env (например, при DB_HOST не равном db), сервис db не запускался?

    Правильнее тут сделать отдельный docker-compose.prod.yml в котором не будет db сервиса.
    И как в таком случае сервисам web дать доступ к внешней базе данных силами docker-compose файла и переменных окружения (в докеровских networks я очень слаб)?

    База данных будет запускаться в отдельном стэке, со своим docker-compose.yml и в своей сети, которую нужно объявить в docker-compose.prod.yml как external:
    https://docs.docker.com/compose/networking/#use-a-...
    networks:
      default:
        external:
          name: db_default
    ...
    services:
      web:
        image: project-name
        networks:
          - default
          - db_default
    Ответ написан
    4 комментария
  • Как докер запускает другие операционные системы?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Контейнеры используют тоже ядро, что и хост. Если вы не имели в виду под "другими ОС" разные дистрибутивы Linux, то ответ - гипервизор + виртуалка с нужной ОС.
    Ответ написан
    Комментировать
  • Как в python3 регулярный выражениях запоминать?

    SagePtr
    @SagePtr
    Еда - это святое
    Помогут скобки вам, кода пример быстрый:
    >>> import re
    >>> re.sub(r"(\w+)", "@\\1", "This is a test")
    '@This @is @a @test'
    Ответ написан
    Комментировать
  • Как в Python сгенерировать наименование файла определенного формата?

    @mefisto
    from random import choice
    from string import ascii_uppercase
    
    
    other_four_symbols = ''.join([choice(list(ascii_uppercase)+map(str, range(0,10))) for _ in range(4)])


    list(ascii_uppercase)+map(str, range(0,10)) - делаем список из A-Z и 0-9
    choice() - вытаскиваем элемент из этого списка
    [choice() for _ in range(4)] - делаем выбор 4 раза
    ''.join - объединяем в строку

    Пример:
    In [35]: ''.join([choice(list(ascii_uppercase)+map(str, range(0,10))) for _ in range(4)])
    Out[35]: '9ZCD'
    Ответ написан
    Комментировать
  • Как настроить безопасный бекап?

    Удаленный сервер сам по крону может забирать бекапы.
    Ответ написан
    2 комментария