• Откуда неадекватный размер ext4.vhdx?

    @sl0 Автор вопроса
    Разобрался. Пишу тут для тех, кто столкнется с той же проблемой.

    Решение для очистки в Docker Desktop.
    1. Устанавливаем libguestfs-tools в wsl.
    2. sudo mkdir -p /mnt/wsl
    3. sudo guestmount -o allow_other --add mnt/c/Users/username/путь_к_/ext4.vhdx -i /mnt/wsl
    4. Чистим лишнее в /mnt/wsl
    5. После этого из винды уже запустить
    wsl --shutdown
    optimize-vhd -Path путь_к_\ext4.vhdx -Mode full
    Ответ написан
    Комментировать
  • Как настроить 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 комментариев
  • Вывод данных из БД через pdo?

    @Hellows
    Как я использую PDO. Создаю файл dbсonnection.php и помещаю следующий код
    $host = 'localhost';
    	$database = 'dbname';
    	$user = 'user';
    	$pass = 'root';
    
    	$dsn = "mysql:host=$host;dbname=$database;";
    	$options = array(
    	    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    	    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    	);
    	$pdo = new PDO($dsn, $user, $pass, $options);

    Как можно заметить, PDO::FETCH_ASSOC будет по умолчанию для всего. Очень удобно + редактировать проще.
    Затем создаю функцию. Вот ваш пример:
    function user() {
      global $pdo;
      $stmt = $pdo->query('SELECT * FROM users');
      $data = $stmt->fetchAll();
      return $data;
     }
     $datas = user();
     var_dump($datas);


    UPD. №1: Решение задачи. Можно через функцию как выше, можно и без функции. Решайте сами
    $stmt = $pdo->query('SELECT * FROM users');
    $data = $stmt->fetchAll();
    Ответ написан
    21 комментарий
  • Что закинуть в портфолио PHP-разработчику?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Создать гитхаб-профиль со своими модулями/компонентами/библиотеками/composer-пакетами

    • Проекты желательно не полными сайтами, а именно модулями, чтобы легче и понятнее было понять суть, а не пролистывать туеву хучу стандартного для фреймов кода
    • Код комментируйте, делайте максимально подробные описания и инструкции установки (какие миграции, какая версия пакета актуальная, как его подключить и как конфигурировать), кое-где и видео можно присобачить
    • Как вариант — сделать свой сайт, который бы более наглядно рассказал о ваших навыках, и более удобоваримо рассказал бы о ваших преоктах

    Неправильно: https://github.com/Maksclub/trendtech
    Правильно: https://github.com/Maksclub/parser
    Ответ написан
    3 комментария
  • Woocommece. Как добавить действие в поле "заказ действия"?

    maxxannik
    @maxxannik
    Сайты на WordPress + Интернет магазины WooCommerce
    Возможно. Надо исходники читать. 99% что есть хук который позволяет это сделать.
    Перед этим научиться использовать хуки. Либо нанять программиста с этими знаниями.
    Ответ написан
    2 комментария
  • Как убрать лишние страны доставки в WooCommerce?

    politon
    @politon
    HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
    В ПУ WooCommerce > Настройки > Доставка
    Полный список здесь wp-admin/includes/continents-cities.php
    Ответ написан
    1 комментарий
  • Как убрать убрать .html в конце веб-страницы (CMS Modx)?

    @alvisX
    В админке "Система" —> "Типы содержимого" —> Убрать расширение у HTML.
    Ответ написан
    1 комментарий
  • Как связать контакт и сделку в amoCRM?

    @pkr95
    Мы сначала создаем сделку, а затем создаем контакт.
    Получается, что мы сделки привязываем к контакту, а не наоборот.

    linked_leads_id - список с айдишниками сделок контакта
    https://developers.amocrm.ru/rest_api/contacts_set.php
    Ответ написан
    Комментировать
  • Как связать контакт и сделку в amoCRM?

    DeveloperKZ
    @DeveloperKZ
    Программист
    Если делаете все как в мануале но при этом привязка не работает, попробуйте в параметр 'linked_leads_id' добавить (int) перед значением, в файле contact_add.php

    fde63c5d6c2143669eb346b3a1e495c7.png
    Ответ написан
    Комментировать
  • Как можно сделать такое подчеркивание при hover?

    У ссылок уберите боковой padding, и добавьте его к li

    а для плавного выпадающего меню нужно задействовать max-height и transition. У раскрытого max-height: 1000px у свёрнутого max-height: 0;

    codepen.io/anon/pen/ZeKpqj
    Ответ написан
    5 комментариев
  • Если верстаешь несколько страниц, в которых есть повторяющиеся блоки, то как их инклюдить?

    smidl
    @smidl
    WordPress-разработчик
    <html> 
      <head> 
        <script src="jquery.js"></script> 
        <script> 
        $(function(){
          $("#includedContent").load("b.html"); 
        });
        </script> 
      </head> 
    
      <body> 
         <div id="includedContent"></div>
      </body> 
    </html>


    Тут о функции load
    Ответ написан
    4 комментария
  • Почему PHP не выводит никаких ошибок?

    mcmraak
    @mcmraak
    php+sql+js+bicycle+crutches
    PHP : Включить показ предупреждений и ошибок PHP

    Включение вывода всех ошибок и предупреждений в файле php.ini
    error_reporting = E_ALL
    display_errors = On
    display_startup_errors = On

    Включение вывода всех ошибок и предупреждений в коде PHP-скриптов
    Включить вывод уведомлений и предупреждений можно, добавив в начало нужного .php файла следующие строки:

    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);

    Включение вывода всех ошибок и предупреждений в файле .htaccess
    php_value display_errors 1
    php_value display_startup_errors 1
    php_value error_reporting E_ALL
    Ответ написан
    3 комментария
  • Почему у PHP плохая репутация?

    nalomenko
    @nalomenko
    Руководитель отдела разработок в студии «Lava»
    Это Вам сказали те, кто пишут на .NET C# под IIS? :) Или большие поклонники Java Server Pages? У каждого своя религия, и каждый будет бросаться камнями в тех, кто её не исповедует.
    Ответ написан
    Комментировать