• Как разделить строку на части?

    @AlbertForest
    import re
    l = re.findall('(.{5}|.+$)' , '123456789')
    for i in l:
        print(i)
    Ответ написан
    Комментировать
  • Какой курс выбрать для нуля в дизайне?

    IonDen
    @IonDen Куратор тега IT-образование
    JavaScript developer. IonDen.com
    Увы в современном мире это так не работает. В айти огромнейшая конкуренция среди новичков (как в дизайне, так и в разработке).

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

    Единственная разумная стратегия для взрослого человека - работать где-то еще и параллельно заниматься образованием.

    P.S. не верьте в курсы, ни одни курсы не дают навыков достаточных для полноценной работы. Все они хватают по верхам и позволяют лишь привести знания в какую-то структуру. Все знания же можно получить лишь учась самостоятельно.
    Ответ написан
    3 комментария
  • Как настроить backup VDS на Яндекс.Диск?

    @mureevms
    Предисловие.
    Вы должны смонтировать Ядиск как описано в этой статье в каталог /mnt/yadisk, туда будут копироваться все бэкапы
    Для бэкапа всей системы лучше пользоваться инструментами которые предлагает хостер. Если таких нет или планируется переезд всей системы, то используйте п.1.
    Специально оставляю одну копию каждого бэкапа на VDS для удобства восстановления какого-либо файла.
    Прокомментирую только первый файл, остальные сделаны по подобию.
    Каталоги в /home/backup/... и /mnt/yadisk/... должны быть созданы.
    Скрипт бэкапа разбит на 4 штуки намеренно для удобства использования и запуска по крону с разными временными интервалами, что и надо будет сделать отдельно.
    Так же, советую предварительно перед бэкапом проверять смонтирован ли Ядиск, иначе место может внезапно закончится на сервере. Если интересно, то потом дам ссылку как это сделать.

    Бэкап

    1. Бэкап системы осуществляется при помощи команды tar
    Файл system_backup.sh:
    #!/bin/sh
    TIME=`date +%Y-%m-%d`
    # Что бэкапить
    WHAT=/
    # Куда класть бэкап
    WHERE=/home/backup/system
    # Куда копировать бэкап
    COPY=/mnt/yadisk/system
    # Бэкап системы. Файл бэкапа исключает системные каталоги и каталоги куда кладутся сами бэкапы
    tar -cpzf $WHERE/$TIME.tgz --exclude=/dev --exclude=/proc --exclude=/lost+found --exclude=/home/backup --exclude=/mnt /
    # Скопировать на файл бэкапа на Ядиск 
    cp $WHERE/$TIME.tgz $COPY
    ### Удалить старые файлы бэкапов
    # Оставить на VDS только последний
    find $WHERE -mtime +1 -print -delete
    # Удалить с Ядиска бэкапы месячной давности
    find $COPY -mtime +30 -print -delete


    2. Бэкап конфигов осуществляется так же при помощи команды tar (при текущих исходных данных все конфиги лежат в /etc)
    Файл etc_backup.sh:
    #!/bin/sh
    TIME=`date +%Y-%m-%d-%H:%M`
    WHAT=/etc
    WHERE=/home/backup/etc
    COPY=/mnt/yadisk/etc
    tar -cpzf $WHERE/$TIME.tgz $WHAT
    cp $WHERE/$TIME.tgz $COPY
    find $WHERE -mtime +1 -print -delete
    find $COPY -mtime +30 -print -delete


    3. Бэкап сайтов осуществляется аналогично (предполагаю, что они лежат в /var/www/)
    Файл www_backup.sh:
    #!/bin/sh
    TIME=`date +%Y-%m-%d-%H:%M`
    WHAT=/var/www
    WHERE=/home/backup/www
    COPY=/mnt/yadisk/www
    tar -cpzf $WHERE/$TIME.tgz $WHAT
    cp $WHERE/$TIME.tgz $COPY
    find $WHERE -mtime +1 -print -delete
    find $COPY -mtime +30 -print -delete


    4. Бэкап MySQL осуществляется при помощи команды mysqldump
    Файл mysql_backup.sh
    #!/bin/sh
    TIME=`date +%Y-%m-%d`
    # Логин пользователя мускула
    USER=root
    # Пароль пользователя мускула
    PASS=root_password
    WHERE=/home/backup/mysql
    COPY=/mnt/yadisk/mysql
    ### Базы которые надо бэкапить
    for base in base_name1 base_name2
    do
    # Сделать дамп баз
    mysqldump -u$USER -p$PASS -B $base > $WHERE/$base-$TIME.sql
    done
    cp $WHERE/$base-$TIME.sql $COPY
    find $WHERE -mtime +1 -print -delete
    find $COPY -mtime +30 -print -delete


    Восстановление

    Восстановление сайтов и конфигов осуществляется простым копированием в место назначения.
    Восстановление баз:
    mysql -u root -p root_password -f base_name1 < /home/backup/mysql/base_name1.sql
    mysql -u root -p root_password -f base_name2 < /home/backup/mysql/base_name2.sql


    Восстановление системы более сложный процесс, но суть сводится к одному - сделать чистую установку аналогичной ОС, загрузится с LIVE CD, подмонтировать Ядиск и распаковать архив в root директорию (root директорией называют корень файловой системы - / ), за исключением каталога /boot
    ОБЯЗАТЕЛЬНО заранее проделать восстановление на отдельной виртуалке.

    Вместо послесловия
    Такой бэкап, как говорится, и палкой не убить. Единственное, что надо делать - время от времени руками проверять архивы бэкапов на читаемость и прохождению нормального разархивирования. К сожалению, архивы бывают битыми.
    Ответ написан
    16 комментариев
  • Как хранить IP в базе?

    @mletov
    На не очень больших объемах, вероятно, без особой разницы, по крайней мере, я обычно храню строкой.

    Но когда я заглядывал внутрь чужих достаточно серьезных проектов с большими объемами данных, там хранилось именно числом через INET_ATON, так что подозреваю, что именно этот вариант считается правилом хорошего тона. Например, из-за производительности.
    Ответ написан
    Комментировать
  • Как хранить IP в базе?

    IP-адрес это число. Для IPv4 - это 4 байта. Для IPv6 - это 16 байт.
    Если нужен только v4 - тогда можно взять INT. Если нужно и то и другое, то
    а) советую хранить оба адреса независимо, на время перехода они обычно доступны одновременно (если какой-то останется неизвестным - ничего страшного, пометите как NULL)
    б) хранить в виде строки смысла не вижу вообще, БД это место для хранения данных, а не для интерфейс для просмотра, и ориентироваться надо на хранение. Кто хочет красиво вывести - пусть строит нужный запрос с препобразованиями, выше уже привели отличные функции.
    в) храните в binary(4) и binary(16) чтобы иметь унифицированный подход (мне так было удобнее, советую и вам)
    г) только не надо varbinary - размер адреса постоянен, никакого var быть не может. Типы данных с фиксированным размером (даже binary) намного легче в хранении и обработке, чем с переменным. Не мучайте СУБД не по делу.
    Ответ написан
    Комментировать
  • Как хранить IP в базе?

    MaxDukov
    @MaxDukov
    впишусь в проект как SRE/DevOps.
    OK google
    INET_NTOA()
    INET6_NTOA()
    Ответ написан
    Комментировать
  • Как сделать ссылку на Viber?

    @SVZhidkow
    Бэкенд-разработчик
    У меня в 2020 сработало следующее:

    <a href="viber://chat?number=%2B***********">Viber</a>

    И на ПК, и на смартфоне (и Андроид и iOS).

    Где %2B - это "плюс", дальше идёт номер в международном формате (с кодом страны), например %2B79876543210.
    Ответ написан
    2 комментария
  • Должен ли WEB-разработчик уметь настраивать VPS/сервер?

    kamalynx
    @kamalynx
    Погромист-самомучка
    Навыки настройки сервера для написанного приложения/сайта -- большой плюс для разработчика. Опять же, не требуется поднимать крутой кластер из контейнеров и виртуальных машин. Но уметь настроить базовые вещи, на которых будет работать сайт (веб сервер, сервер баз данных, бэкап важных данных), нужно.

    Тем более, как разработчик, вы сами будете знать, что лучше нужно вашему приложению: apache или nginx, MySQL или postgres. И т.п.

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

    Лично мне навыки администрирования очень пригодились, когда начал учиться программировать на Питоне. ;)
    Ответ написан
    Комментировать
  • В чем проблема высокой загрузки процессора при включении ssl?

    kamalynx
    @kamalynx
    Погромист-самомучка
    Для начала:
    1. Включить кэш сессий https://nginx.org/ru/docs/http/ngx_http_ssl_module...
    2. Включить http2 https://nginx.org/ru/docs/http/ngx_http_v2_module.html

    А нагружает процессор что: nginx или uwsgi? SSL на стороне uwsgi включён (бывает и такое :)?
    Ответ написан
    3 комментария
  • В чем проблема высокой загрузки процессора при включении ssl?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    Без использования кипалайва каждый коннект проходит все стадии SSL-хэндшейка - скорее всего нагрузка именно из-за этого. Попробуйте включить кипалайв и сравнить результаты.
    Ответ написан
    8 комментариев
  • Как изменить цвет svg при наведени?

    @ForSureN1
    frontend dev
    .topline__arrow:hover path {
        fill: red;
    }
    Ответ написан
    Комментировать
  • Стоит ли вложить все рубли в покупку пк, чтобы их хоть как-то сохранить?

    @kalapanga
    Комп и в обычное-то время - плохое вложение, если только он не Ваш основной инструмент зарабатывания денег. Сейчас и тем более. А если он ещё и использоваться не будет....
    По большому счёту, когда коллапс уже случился, поздно метаться.
    Ответ написан
    Комментировать
  • Почему у меня не работает условие?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    a = {'num': 1, 'num': 2, 'num': 3}
    print(a)
    # {'num': 3}

    Думаю, - сами теперь сможете ответить

    А вот так уже отработает:
    [{'num': 1}, {'num': 2}, {'num': 3}]
    Осталось исправить ошибку в коде в вопросе, и расставить правильно скобки.
    Ответ написан
    4 комментария
  • Как сделать видео из тысячи картинок?

    @dideas
    VideoMach позволяет склеивать кадры в видео, и наооброт
    gromada.com/videomach
    Ответ написан
    Комментировать
  • Как подключить Python к Postgresql внутри Docker-а?

    @antares4045
    host = "172.22.0.2"
    Замените на
    server="db"
    Или
    host="db"
    (Точно пайкопгвский синтаксис не помню)
    И это вам не помешает, но явным созданием бридж сети и биндом сервисов к ней вы воспроизвели поведение по умолчанию, тоесть написали много всего лишнего.
    Ответ написан
    3 комментария
  • Git, как обновить проект ?

    ghaiklor
    @ghaiklor
    NodeJS TechLead
    Если вы хотите обновить у себя
    git pull
    Если вы хотите залить изменения на удаленный git-репозиторий
    git push
    Ответ написан
    Комментировать
  • Есть ли «тайм-трекеры» для учета работы сотрудников не за компьютерами?

    @12rbah
    Тут очевидно нужно повесить трекеры на человека, замерить показатели вроде пульса, давления, мозговой активности в состоянии когда он работает, и когда он не работает, если показатели опустились ниже рабочих, то для начала стоит предупредить, а потом уже наносить усиливающиеся разряды тока, до тех пор пока человек не поймет что он на работе, а не на диване дома.
    Ответ написан
    Комментировать
  • Как сайту узнать, что цены на сервере обновились?

    rpsv
    @rpsv
    делай либо хорошо, либо никак
    Варианта 2:
    1. CRON задача на основном сервере, которая 1 раз в сутки отправляет на дочерние сайты запрос со свежими ценами;
    2. CRON задача на дочерних сайта, которые 1 раз в сутки запрашивают данные на основном сервере;

    Ну а вообще не страдайте фигней с php файлами и используйте БД (на крайняк SQLite если какие-то проблемы со всеми любимой MySQL). Все сайты могут быть со своими базами отдельными, но цены запрашивают в 1 общей базы. Ну либо дублируют структуру таблицы с основного сервера и синхронизируются раз в сутки.
    Ответ написан
    Комментировать
  • Как развернуть django на одном сервере и домене с gitlab?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Развернуть django на любом порту и сделать reverse proxy в nginx для домена, выбранного для django - на этот порт.
    Ответ написан
    Комментировать