• Как вести базу знаний всех обновлений, исправлений и изменений, вносимых в проект?

    dmitriylanets
    @dmitriylanets
    веб-разработчик
    1. Формировать задачи в трекере, например gitlab
    2. Использовать релизы
    3. С выходом релиза фиксировать задачи/фикс багов, релиза в CHANGELOG.md
    Ответ написан
    Комментировать
  • Есть ли реализации на Django SSO?

    DAVIDhaker
    @DAVIDhaker
    Ответ написан
    Комментировать
  • Foreign key в микросервисах?

    @nApoBo3
    1. Каждый микросервис отдельно законченное приложение. Т.е. user_id для chat ровно такое же поле как, например user_message или message_utcdatetime. Никакой "связывающей" нагрузки оно не несет.
    2. Микросервис, не должен иметь проблем внутри себя, если user_id не корректный.
    3. Да, у вас будут отдельные сервисы имеющие поле user_id не контролируемое на уровне целостности базы данных. Его целостность вам следует обеспечить иными механизмами. Например вовсе отказаться от контроля целостности этого поля, по большому счету какая вам разница в сервисе chat, что именно в это user_id записано.
    Ответ написан
    Комментировать
  • Как пофиксить проблему с Singleton при работе Django приложения запущенном под Gunicorn с более, чем одним воркером?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    В современном мире грешно писать сервисы с состоянием.
    Ответ написан
    3 комментария
  • Как спроектировать базу данных?

    В таблице transactions хранить тип транзакции и её id (то есть у вас должно получиться как минимум три колонки id, transaction_type (символьный или цифровой код, как больше нравится), transaction_id). Остальные колонки в зависимости от поставленной задачи. Далее, в зависимости от типа транзакции, делать соответствующий join.
    Ответ написан
    5 комментариев
  • Для чего нужны эти строчки?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Если коротко, то формировать корректный урл для статики в браузере на время пока идет разработка и проект запускается через встроенный сервер.
    В реальных условиях этим занимается сервер (nginx/apache...)
    Подробнее:
    https://stackoverflow.com/questions/56352489/what-...
    Ответ написан
    1 комментарий
  • Изменение прав доступа у определенной группы в Linux?

    robux
    @robux
    1. Права на исполнение файла группе "staff":

    Дать права группе "staff":
    chown :staff /home/user/scripts/script.sh
    Дать права на запуск группе:
    chmod g+x /home/user/scripts/script.sh
    Дать права на запуск всем (в том числе группе):
    chmod a+x /home/user/scripts/script.sh

    2. Право на изменение файла пользователю "user":
    chown user /home/user/scripts/script.sh
    chmod u+rw /home/user/scripts/script.sh

    3. Право на чтение файла группе "staff":
    chown :staff /home/user/scripts/script.sh
    chmod g+r /home/user/scripts/script.sh

    4. Право на изменение и создание файлов в каталоге ~/scripts группе "staff":
    chown -R :staff /home/user/scripts
    chmod -R g+rw /home/user/scripts


    Подробности здесь:
    man chown
    man chmod
    Ответ написан
    Комментировать
  • Где посмотреть примеры архитектур/связей БД?

    @Barmunk
    https://drawsql.app/templates

    Collection of real world database schemas from open-source packages and real-world apps that you can use as inspiration when architecting your app.


    На любой вкус.
    Ответ написан
    Комментировать
  • Функции по "Чистому коду" - нужно ли это?

    sabone
    @sabone
    beginner developer
    Посоветую вам одну "рецензию" на эту книгу, сам читал
    Ответ написан
    Комментировать
  • Git: объясните «на пальцах» разницу между rebase и cherry-pick?

    @Nkly777
    git chery-pick - ты забираешь комиты из одной ветки в другую, это бывает полезно когда изменения сделаные другим разработчиком в его ветке, прямо сейчас нужны тебе в твоей ветке, и что бы не писать этот код заново, ты забираешь его комит себе в ветку

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

    git merge - обычно используется когда у вас 2 и более master ветки (к примеру master и prototype) в этих ветках очень много комитов (и rebase здесь не подходит) и обчно через пару недель, maintainer репозитория наработки из prototype ветки "сливает" в master ветку по средствам этого самого git merge

    P.S. Что бы легче предствить разницу между git merge и git rebase. Представь что merge как собачка на молнии у одежды - "сшивает" комиты по дате их создания.
    В то время как git rebase как пожарная лестница - при применении твои коммиты крепится на конец родительской ветки

    git merge используйте для мержа фич и фиксов в master ветку (как и делает это Github)
    а git rebase используется для своей ветку в которой вы работаете над фичей что бы забрать последние изменения с master ветку (для этого есть очень удобная команда `git pull --rebase origin master`, аналог 3х команд (`git checkout master; git pull origin master; git checkout mybrach; git rebase master`)
    Ответ написан
    2 комментария
  • Какие есть способы кросс-авторизации между микросервисами?

    @antonwx
    Если все микросервисы висят как поддомены на одном домене, то делаете авторизацию, например, на example.com, устанавливаете куку на домен ".example.com" - внимание на точку в начале - и эту куку можно читать с любого поддомена. Если домены разные, то только делать единый центр авторизации, собственно, как на здесь на тостере сделано например.
    Ответ написан
    Комментировать
  • Как провести конкатенацию в цикле for PYTHON?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    1. Форматируйте код с указанием языка программирования.
    2. Аккуртано работайте с отступами, иначе и себя запутаете и всех вокруг и работать будетнекорректно.
    3. Приводите полный код, ччтобы не приходилось гадать что там за пределами ваших обрезков. Где присваивается add_url? Может там пусто вообще всегда было и ничего не теряет.
    4. Читайте, блин, внимательно свой вопрос после написания! Вам что лень перечитать? Вот нам не лень ответить, а вам лень читать? Что за наглое неуважение к сообществу? Какая такая "add_ur"? Где она у вас в коде, блин?!
    5. Используйте форматные строки для сборки таких вещей по шаблону. В них сложнее ошибиться и накосячить.

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

    Замените
    'http://site.com/' + add_url + '?=' + str(i)
    на
    f'http://site.com/{add_url}?={i}'
    для третьего питона или для второго:
    'http://site.com/{add_url}?={i}'.format(i=i, add_url=add_url)


    Печатайте add_url прямо там, где поставляете и рядом печатайте результат подстановки. И вы увидите что у вас там не все гладко
    Ответ написан
    Комментировать
  • Возможно в Python сделать многоуровневые if / как сделать задачку с калькулятором Stepik?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    def calc(a,b,op):
        if op in ['/', 'mod', 'div'] and b == 0:
            return 'Деление на 0!'
        else:
            return({
                  '+': a+b,
                  '-': a-b,
                  '*': a*b,
                  '/': a/b,
                  'mod': a//b,
                  'div': a%b,
                }.get(op, 'Неизвестная операция!'))

    print(calc(1,2,'+'))
    print(calc(1,2,'/'))
    print(calc(2,0,'mod'))
    print(calc(0,2,'$'))
    
    3
    0.5
    Деление на 0!
    Неизвестная операция!
    Ответ написан
    3 комментария
  • Как проще всего загрузить cookies в python из файла и отправить с помощью request?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    import requests
    s = requests.session()
    s.get('https://www.google.com', cookies = {'cookieKey':'cookieValue'})
    Ответ написан
    Комментировать
  • Как связать домен третьего уровня с Django?

    alternativshik
    @alternativshik
    В мидлваре в зависимости от домена подставлять нужные данные - будь то урлы или какие-то другие штуки.
    Ответ написан
    Комментировать
  • Есть ли обучающие материалы по BPMN?

    @Kotskin
    Сайт https://bpmn2.ru
    Ответ написан
    Комментировать
  • Как устранить ошибку ssl сертификата в Python?

    npanuhin
    @npanuhin Автор вопроса
    В этой ситуации код должен быть следующим (модулями для python3, позволяющими "проще" взаимодействовать с VK API лучше не пользоваться):

    import requests
    r = requests.get("url", params={"key_1": "value_1", "key_N": "value_N"}, verify=False)


    "verify=False" говорит requests, что не нужно проверять сертификат при выполнении запроса.

    Возможны предупреждения со стороны python, но они не влияют на ход выполнения программы.
    Как отключить уведомление безопасности

    До выполнения запросов с "verify=False" вставьте:
    from urllib3 import disable_warnings, exceptions
    disable_warnings(exceptions.InsecureRequestWarning)

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

    Robur
    @Robur
    Знаю больше чем это необходимо
    Интенсивной работы в день 5-6 часов максимум. Больше - только на ограниченное время, с обязательной компенсацией отдыхом. В офисе 9-18 работают в целом так же, кулер, поболтать, что-то обсудить 10 раз в день, почитать статьи. По моим личным ощущениям на удаленке работа интенсивнее, даже с учетом меньшего количества часов. Поэтому работаю по часам и на ставке больше чем в офисе на 8 часовом рабочем дне.
    Пробовал помодоро - не зашло.
    Бывает что накапливается и какие-то дни работа вообще не идет - даю себе отдохнуть, могу поработать часа два-три.
    Что-то новое изучаю иногда в формате перерывов - поработал - почитал. Так как график и учет времени гибкий, это не считается рабочим временем, и совесть не мучает. Могу посередине дня отдохнуть пару часов если совсем не идет, или сходить прогуляться или еще что.
    Свои проекты сначала пилил "по вечерам и выходным", особенно когда работал 9-18 потом понял что так не пойдет, на долгий срок это провальный подход, поэтому сейчас больше работаю как часть рабочего времени. Уменьшаю основную работу (при этом естественно уменьшается доход).

    Самое главное - правильно оценить свои силы и исходя из этого решать сколько куда их потратить. Может у вас сил хватит и на работу и на проекты и на хобби и еще перед сном почитать - без проблем, делайте все это. А если их не хватает даже на 8 часовой рабочий день - стоит это признать и не пытаться себя нагрузить сверх меры, получите новый срыв. Или отказаться от чего-то или искать другие способы кроме как "работать больше". Тут главное быть честным с собой и не "добавлять себе очки".

    В целом выгорание не зависит от объема работы - объем работы влияет на усталость, на выгорание влияет нервное напряжение и оно может быть и при 2 часах работы в день а может и не быть при 10.
    Если у вас реально начинается истощение - то определитесь это усталость или выгорание, если усталость - то организовать рабочее время и контролировать нагрузку, может даже в ущерб доходу, свое состояние очень важно.
    Если выгорание - то надо искать причины, если их не устранить - то ничего не поможет.

    Если вы уже один раз проходили через все это - ищите общее, анализируйте и поймите что вы сейчас делаете так же как и тогда и что надо поменять.
    Ответ написан
    2 комментария