Задать вопрос
  • Какой тайм-трекер выбрать для фрилансера?

    kawabanga
    @kawabanga
    Apploye - 5 баксов вроде за аккаунт, и чуть больше если надо фиксировать активность (и скриншоты, аля upwork)
    Trackingtime - для личного контроля времени.

    В целом, полезная вещь для анализа своего времени или сотрудника, к примеру по задачам получать срез. Но крайне неэффективная штука, если говорить, что работник напечатал 10 символов за час.
    Для фрилансера - самое адекватное решение описания стоимости работы.

    Руководитель поставил задачу подобрать тайм-трекер

    Уточните у руководителя, какую цель он преследует? Если вы в найме, то кол-во часов никак не влияет.
    И я даже больше скажу, условные 4 часа фрилансера -> часто больше, чем полноценный рабочий день сотрудника.
    Ответ написан
  • Какой тайм-трекер выбрать для фрилансера?

    AndreyKeer
    @AndreyKeer
    Сталкивался с похожей ситуацией на фрилансе в одной компании. Вначале воспринял в штыки и крайне саботировал установку ПО. Вопрос с остановкой мониторинга проработал досконально, там есть такая функция, должна быть версия, которая запускается и останавливается по вашему желанию. В начале это немного напрягало, а потом как привыкаешь и все идет на автомате. Да я и парится не стал из штанов выпрыгивать, работал, как работал вроде претензий не было. Так как не указан функционал тайм трекера рекомендую ознакомиться с возможность представленных приложений в данной статье: https://bitcop.ru/blog/top-24-tajm-trekerov-dlja-k...
    Ответ написан
    2 комментария
  • Как сделать так чтобы CBV-функция DetailView в Django принимала объект по slug?

    datka
    @datka
    slug_field

    slug_field¶
    The name of the field on the model that contains the slug. By default, slug_field is 'slug'.

    slug_url_kwarg¶
    The name of the URLConf keyword argument that contains the slug. By default, slug_url_kwarg is 'slug'.


    urlpatterns = [
        path("<slug:slug>/", ArticleDetailView.as_view(), name="article-detail"),
    ]


    Точнее можете глянуть тут
    Ответ написан
    Комментировать
  • Django.objects.all() не работает, как решить?

    @yaseliwanoff
    django пишет, что у тебя ошибка связная с импортом (попытка повторного импорта без знания родительского пакета). это происходит потому что Python не знает, где найти родительский пакет. Посмотри указали ли ты приложение в инсталах настроек проекта, проверь структуру проекта, (выполни миграции если не сделал) используй другие виды импортов from myapp.models import Articles
    Ответ написан
    Комментировать
  • Как посчитать количество комментариев под постом с помощью annotate()?

    Seletach
    @Seletach Автор вопроса
    Начинающий бекендер
    Вот решение этой задачи:
    class PostListView(ListView):
    '''Список постов'''
        model = Post
        template_name = 'blog/index.html'
        ordering = 'pub_date'
        paginate_by = 10
    
        def get_queryset(self):
            return super().get_queryset().filter(
                category__is_published=True,
                is_published=True,
                pub_date__lte = timezone.now()
                ).annotate(comment_count=Count("comments"))

    С помощью get_queryset достаём из модели Post все посты, далее фильтруем посты (посты и их категория должны быть опубликованы) и добавляем аннотацию, которая считает комментарии в этих постах.
    Ответ написан
    Комментировать
  • Как решить проблему с авторизацией Django?

    @Everything_is_bad
    for a staff account.
    судя по сообщению, при логине проверяется наличие is_staff, оно выдано тестовым пользователям?
    Ответ написан
    3 комментария
  • Как удалить лишнее с БД mysql имея более 7000 id, которые удалять не надо?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе нужно эти id загрузить во временную табличку и сделать этот запрос

    delete from tab1 where WHERE guildid not in (select id from temp_table)
    Ответ написан
  • Как извлечь топ 15 очков из таблицы чтобы игроки не дублировались?

    @rPman
    так?
    SELECT user_id, name, MAX(points) as max_points
    FROM `games`
    GROUP BY user_id, name
    ORDER BY max_points DESC
    LIMIT 15;
    Ответ написан
    1 комментарий
  • Один сервер VPS и несколько сайтов каждый в своём docker контейнере, как настроить глобальный nginx?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Посмотрите на Traefik. Самое то под вашу задачу.
    Ответ написан
    Комментировать
  • Почему при операциях с БД из под Docker-контейнера возникает ошибка?

    @chemdev
    Если я правильно понял, в контейнере у тебя аирфлоу, а постгрес еще где-то но не в данной докер-сети. Если это так, необходимо либо в cmd, либо в конфиге пробросить порт из докеровской сети наружу.
    Об этом можно почитать здесь
    Проблема связана с тем, что у докера внутри свой локалхост.
    Ответ написан
    1 комментарий
  • Как пробросить SSH на сервер без внешнего ip?

    martin74ua
    @martin74ua Куратор тега Linux
    Linux administrator
    поставьте эту задачу перед тем самым вашим админом
    Ответ написан
    Комментировать
  • Хорошая ли стратегия разбивать монолит джанго на микросервисы джанго?


    этот монолит очень тяжело поддерживать, обновлять код и дебажит.

    Распилив его на два микросервиса ты получишь два микросервиса, которые ещё тяжелее поддерживать, обновлять, и дебажить.

    В твоём случае будет лучше разобраться с первопричиной, тк монолитность сама по себе очень редко приводит к описанным проблемам.

    Дело пахнет скорее масштабным рефакторингом, чем разделением.
    Ответ написан
    1 комментарий
  • Хорошая ли стратегия разбивать монолит джанго на микросервисы джанго?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Смотри. Уже прошло время когда все пилили монолиты на микросервисы. Щас пошло переосмысление.
    Объективно есть 2 причины пилить. Первое - организационная. Команда по какой-то причине не хочет
    или не может поддерживать приложение. Или там что-то с бизнесом. Слияние. Поглощение. Передача
    проекта другой команде в поддержку. Тогда берут и ставят задачу раздела отвественностей.
    Конвей про это писал еще.

    И второе - это баланс нагрузки и децентрализация. Про failover тут еще даже речи нет. Это
    тяжелая тема и распилить монолит так чтобы его части были отказоустойчивы очень трудно. Более
    того в случае синхронных взаимодействий между частями микросервисов может быть даже падение
    перформанса
    . Да. Теоретики которые там пишут восторженные отзывы - совершенно игнорируют
    накладные на RPC. И не упоминают что в монолите цена RPC была равна нулю. Иногда RPC заменяют
    на MQ - но это новая архитектура и это надо полностью переделывать бизнес.

    И что делать с базой данных? Это тот еще вопрос. Я почти готов спорить что вы базу пилить не будете.
    И что в результате будет? Иммитация микро-сервисов? Где слабая связность?

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

    Но имеет смысл сделать модуляризацию монолита. Например что там...
    application
    - sales
    - hiring
    - userprofiles

    Тоже очень полезно для управления сложностью. И пускай себе будет монолит зато будет сильный
    контроль за изменениями.
    Ответ написан
    6 комментариев
  • Как хранить характеристики товаров в БД и делать поиск по ним?

    @dimoff66
    Кратко о себе: Я есть
    Характеристики относятся к товарам? То есть у одного товара только один набор характеристик или один товар может приходить и продаваться с разными наборами характеристик, например кроссовки адидас, цвет: Белый, размер: 37 и кроссовки адидас, цвет: Синий, размер: 39. Если второй, более сложный случай, то делаем следующие таблицы

    1) Таблица Properties (id, name, valueType) - здесь просто храним список возможных свойств
    2) Таблица PropertyValues (id, propertyId, value) - здесь храним возможные варианты значений для свойств, у которых не простой тип, то есть не строка, не число, не булево, не дата
    3) CharacteristicsSet (id, productId, name) - здесь будет храниться набор свойств для конкретной позиции товара на складе, name будет составляться автоматически как строка из свойств и их значений, указанных для позиции товара
    4) CharacteristicsValues (chartacteristicSetId, propertyId, valueType, value) - здесь будут храниться значения свойств для конкретной характеристики.

    Например нам пришли партии кроссовок со свойствами цвет: белый, размер: 37й и цвет: синий, размер: 39й. (например 100 и 50 штук соответственно)

    Тогда наши таблицы будут выглядеть следующим образом:

    Properties:
    id: 1, property: 'Цвет', valueType: 'set'
    id: 2, property: 'Размер', valueType: 'number'

    PropertyValues:
    id: 1, propertyId: 1, value: 'Белый'
    id: 2, propertyId: 1, value: 'Красный'
    id: 3, propertyId: 1, value: 'Синий'

    CharacteristicsSet:
    id: 1, productId: 777, name: 'Цвет: белый, размер: 37'
    id: 2, productId: 777, name: 'Цвет: синий, размер: 39'

    CharacteristicsValues
    chartacteristicSetId: 1, propertyId: 1, valueType: set, value: 1(ссылка на белый цвет)
    chartacteristicSetId: 1, propertyId: 2, valueType: number, value: 37
    chartacteristicSetId: 2, propertyId: 1, valueType: set, value: 2(ссылка на синий цвет)
    chartacteristicSetId: 2, propertyId: 2, valueType: number, value: 39

    Ну и в таблице склада можно будет хранить записи в виде:
    productId: 777, characteristicsSetId: 1, quantity: 100
    productId: 777, characteristicsSetId: 2, quantity: 50

    Если же различный набор свойств для одного товара нам не нужен, то все то же самое, но обходимся без таблицы CharacteristicsSet: а в CharacteristicsValues ссылаемся на сам товар. Соответственно весь поиск будет проходить по одной таблице CharacteristicsValues с индексированными полями. Например чтобы найти любые товары с цветом Белый, мы делаем поиск

    select * from CharacteristicsValues where propertyId = 1 and value = 1


    ну и с соответствующим соединениям по таблицам характеристик и(или) товаров
    Ответ написан
    Комментировать
  • Зачем в примере нужны фигурные скобки и функция format?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    По сути, я так же могу поменять значение в переменной без всяких кавычек и функции format


    Имеется в виду зачем применили два способа форматирования? Скорее всего для демонстрации того, что строки можно объединить несколькими способами. Зачем конкретно это сделал автор - вопрос скорее к нему.

    А вообще, строки через + как правило не объединяют. Лучше это делать через format или f-строки. Но знать все способы всё равно полезно
    Ответ написан
    1 комментарий
  • Зачем в примере нужны фигурные скобки и функция format?

    Mi11er
    @Mi11er
    A human...
    Методы работы со строкой.

    name = "Tuti"
    # Форматная строка
    a = f"Hello {name}"
    print(a) # Hello Tuti
    
    # Метод формат
    a = "Hello {}".format(name) 
    print(a) # Hello Tuti
    
    #конкатенация строк
    a = "Hello " + name 
    print(a) # Hello Tuti


    Выбор способа, всегда за вами
    Ответ написан
    8 комментариев
  • Как при запуске сервера, запустить CRON с нужным окружением python?

    @ceytnot
    Работаю не по специальности (:
    У меня в Кроне вот такая запись:
    */10 * * * * /var/py_proj/polikliniki_bot/bin/python3.9 /var/py_proj/polikliniki_bot/main_inform_user.py

    Первым идет путь к виртуальному окружению, потом уже путь к скрипту.
    У вас судя по всему наоборот. У меня Debian и у меня нет cd и &&, но возможно вам это необходимо т.к. является особенностью Убунты.
    Ответ написан
    Комментировать
  • Как происходит работа с api?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не нужно тебе брать таких заказов. Просто если ты задаешь такой вопрос - то ты находишся где-то на самом старте Web API. И сколько у тебя вопросов еще будет если ты вдруг возьмешь аванс и приступишь к работе?

    Отвечая на вопрос - никто не знает. Надо читать информацию на самом сайте. Там обычно есть описание
    этого API и обычно его использование стоит денег.
    Ответ написан
    4 комментария
  • Как закрыть доступ к старым commit для разработчиков на ветке master?

    Как не удалив историю коммитов в master предоставлять доступ разработчикам к актуальной версии приложения без доступа к коммитам содержащим конф. данные в коде?

    Раз уже данные скомпрометированы, то их нужно изменить (старые отозвать, новые выпустить).

    А историю можно переписать, чтобы убрать ненужное.
    Ответ написан
    Комментировать