• Как заменить строки в колонке на новые с определенной длиной?

    Fernus
    @Fernus
    Техник - Механик :)
    UPDATE `table` SET `field_code` = SUBSTR(`field_code`, -6, 6) WHERE LENGTH(`field_code`) > 6;


    Перед этим запросом обязательно сделайте бекап, т.к. в случае ошибки - старые данные вернуть не получится...
    Ответ написан
    2 комментария
  • Как распарсить сложный заголовок?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    <?php
    
    $xHeader = 'timestamp=1563105451261; nonce=a07bfa17;value=E4YeOsnMtHZ6592U8B9S37238E+Hwtjfrmpf8AQXF+c=';
    
    preg_match_all('!([^=; ]+)=([^;]+)!si', $xHeader, $out);
    
    $parsedHeader = array_combine($out[1], $out[2]);
    
    print_r($parsedHeader);


    результат
    Array
    (
        [timestamp] => 1563105451261
        [nonce] => a07bfa17
        [value] => E4YeOsnMtHZ6592U8B9S37238E+Hwtjfrmpf8AQXF+c=
    )
    Ответ написан
    Комментировать
  • Какой наиболее простой способ сделать на nginx логгер запросов?

    @sand3001
    Всего по немногу
    Директивы access_log и error_log, например:
    server {
            server_name _;
            access_log /var/log/nginx/my.site.access.log;
            error_log /var/log/nginx/my.site.error.log notice;
            ...
    }
    Ответ написан
    5 комментариев
  • Как не останавливать выполнение скрипта после trap?

    saboteur_kiev
    @saboteur_kiev Куратор тега bash
    software engineer
    while sleep 10
    do
        echo Sleeping
    done

    Вы прерываете команду sleep 10
    после этого ваш цикл завершается

    Сделайте так
    while true; do
       sleep 10
       echo Sleeping
    done
    Ответ написан
    Комментировать
  • Security websocket JS with Python?

    @MEDIOFF
    Python Developer
    Я конечно не эксперт, но логично предположить
    start_server = websockets.serve(server.ws_handler, 'localhost', 8765, ssl=ssl_context)
    что вы не можете подрубиться к localhost из вне, попробуйте заменить localhost на 0.0.0.0

    P.S: Либо проксируйте запросы на localhost, с помощью того же Nginx
    Ответ написан
    1 комментарий
  • Что не так я сделал с burp suite?

    Target1
    @Target1
    Eсли я правильно понял, то зайди в Proxy - Intercept и отключи Intercept is on или нажимай forward
    Ответ написан
    1 комментарий
  • Как установить WoeUsb на Linux Ubuntu 20.04?

    @dicebsd
    1. wget mirrors.kernel.org/ubuntu/pool/universe/w/wxwidget...
    2. sudo dpkg -i libwxgtk*_amd64.deb
    3. sudo apt update
    4. sudo apt install woeusb
    Ответ написан
    6 комментариев
  • Нужно ли проверять каждое обращение к БД на php?

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

    Большинство складывателей букв на РНР об этом не задумываются вообще, и очень хорошо что тебе пришел в голову этот вопрос. А ответ на него очень простой:

    Проверять обращения к БД не нужно вообще

    (за исключением нескольких специальных случаев, когда есть определенный сецнарий обработки ошибки)
    Если же такого сценария нет, то никак проверять не нужно. Просто потому, что обращения к БД ничем не отличаются от любого другого кода.
    И поскольку ты не проверяешь каждый include или там оператор деления, то не нужно и проверять запросы к БД. Их надо оставить в покое. И первый, и каждый по отдельности, и все 5 разом.

    А вот что нужно сделать - это договориться с РНР, чтобы он сам сообщал тебе об ошибках в запросах. Для mysqli надо написать перед коннектом
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    Для ПДО при соединении выставить в настройках соединения

    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION

    Всё. Больше ничего для обращений к БД делать не надо.

    А вот обработчик ошибок, общий для всего кода, а не только для работы с БД, настроить желательно.
    Чтобы AJAX-скрипт подписки получал соответствующий НТТР статус при любой ошибке, которая может возникнуть на сервере.
    Ну и разумеется AJAX-скрипт подписки должен проверять НТТР статус, и обрабатывать ответ только если статус= 200
    Пример обработчика можно посмотреть здесь

    Если же надо убедиться, что все пять запросов выполнились без ошибок, то для таких целей служат транзакции.
    Суть транзакции именно в том, что либо выполнияются либо все запросы, либо ни одного.
    Если заключить все 5* запросов в транзакцию, то если при выполнении одного из них произойдет ошибка, то изменения, сделанные остальными, автоматически откатятся!

    *На самом деле в транзакцию имеет смысл заключать только запросы, изменяющие данные. То есть все, кроме первого.

    Соотсветственно, если ПДО настроен на выброс исключений, то при ошибке запроса
    - пдо выбросит ислючение
    - которое будет поймано обработчиком ошибок
    - который выведет код ошибки и завершит работу РНР скрипта
    - при завершении скрипта РНР закроет соединение с БД
    - БД при закрытии соединения автоматически откатит незавершенную транзакцию

    причем без обработчика ошибок будет всё то же самое, только клиенту уйдет код не 500 а 200

    то есть для того чтобы убедиться в том что все запросы выполнились корректно, надо

    1. выставить для ПДО режим исключений
    2. перед первым запросом написать $pdo->begin();
    3. после последнего запроса написать $pdo->commit();
    Ответ написан
    4 комментария
  • Почему не работает php код?

    @FasterTans
    Жесть какая-то
    $login = filter_var(trim($_POST['login']), FILTER_SANITIZE_STRING)
    
    $name = filter_var(trim($_POST['name']), FILTER_SANITIZE_STRING)
    
    $pass = filter_var(trim($_POST['pass']), FILTER_SANITIZE_STRING)

    В конце потеряли ;
    } else if(mb_strlen($name) < 3  mb_strlen($name) > 12){

    Добавте оператор, скорей всего &&
    Чтоб получилось
    } else if(mb_strlen($name) < 3 && mb_strlen($name) > 12){

    Во втором else if тоже самое

    $mysql = new mysqli('***', '***', '***', '***')
    Опять упустили ;
    Используйте нормальную IDE
    Ответ написан
    Комментировать
  • Можно ли проитерироваться по мапе в Solidity?

    @Tyavochka
    Solidity Developer
    В текущем варианте контракта нет способа узнать всех хранящих средства на кошельке, т.к. из mapping никак не вытащить индексы (их там нет), поэтому надо дополнительно хранить массив всех владельцев.
    В цикле метода kill - перебрать всех владельцев и отправить средства. Помимо этого нужна защита от reentrancy - вытащить значение balances, далее обнулить значение в mapping и только после этого вызвать transfer.

    Еще один совет: когда есть цикл по неопределенному количеству элементов, то можно встрять на слишком большом потреблении газа для одной транзакции. В таком случае выход - разделить kill() на два метода. Один метод будет возвращать заданному числу владельцев средства, второй метод собственно вызывать selfdesctruct при выводе всех средств.
    Ответ написан
    Комментировать
  • OpenVpn. скорость падает в 0. Что делать?

    @voleg4u
    http://www.voleg.info/
    Может вам в этот ovpn запихали default route через туннель. А там аплинк не очень. Вот и накушались.
    Ответ написан
    8 комментариев
  • Как перейти на локальный site.com?

    Это стандартная практика.
    Еще нужно прописать настройки для хоста в веб сервере(Nginx, Apache)
    Ответ написан
    5 комментариев
  • Как правильно реализовать сохранение последних просмотров?

    twobomb
    @twobomb
    function addProductView(id){
    let lastProducts = [];
      try{
          lastProducts = localStorage.getItem("last_products");
        if(lastProducts == null)
          lastProducts = [];
         else
         lastProducts = JSON.parse(lastProducts);
      }catch(e){
        lastProducts = [];
      }
      lastProducts = lastProducts.filter(e=>e.id !=id);
      lastProducts.push({
        date:Date.now(),
        id:id
      });
      localStorage.setItem("last_products",JSON.stringify(lastProducts.sort((c,n)=>n.date - c.date).splice(0,20)));
    }
    
    function getLastViews(){
    let lastProducts = [];
      try{
          lastProducts = localStorage.getItem("last_products");
        if(lastProducts == null)
          lastProducts = [];
         else
         lastProducts = JSON.parse(lastProducts);
      }catch(e){
        lastProducts = [];
      }
      return lastProducts.sort((c,n)=>n.date - c.date).map(e=>e.id);
    }
    Ответ написан
    Комментировать
  • Можно ли получить имя файла и mimeType по img.src?

    Seasle
    @Seasle Куратор тега JavaScript
    \( ゚ヮ゚)/
    Если картинка приходит от пользователя через <input type="file">, то всё это Вы можете получить. Если нет такой возможности - mime-types.
    Ответ написан
    Комментировать
  • Какие есть инструменты чтобы автоматизировать деплой приложений с Docker и Nginx?

    @q2digger
    никого не трогаю, починяю примус
    Вам нужен nginx-proxy , вот один из самых клевых. https://hub.docker.com/r/jwilder/nginx-proxy/dockerfile
    Вы просто указываете при запуске контейнера VIRTUAL_HOST и VIRTUAL_PORT и оно само прописывается где надо и просто начинает проксироваться на запущенный контейнер.
    Ответ написан
    2 комментария
  • Как мне получить первое значение?

    bitniks
    @bitniks
    Go/PHP/Symfony developer
    doc.Find(".new span").First().Text()

    https://play.golang.org/p/Ti1houS29fJ
    Ответ написан
    Комментировать
  • Возможно ли скрыть колонку при помощи js в gridview yii2?

    myks92
    @myks92 Куратор тега Yii
    Нашёл решение — пометь вопрос ответом!
    'headerOptions' => ['class' => 'hidden-xs'],
    'filterOptions' => ['class' => 'hidden-xs'],
    'contentOptions' => ['class' => 'hidden-xs'],
    //'footerOptions' => ['class' => 'hidden-xs'],

    Далее на класс навешивайте обработчик JS. В данном случае, при использовании bootstrap 4 будет столбец скрыт на маленьких версиях экрана.
    Ответ написан
    Комментировать
  • Актуален ли Yii2 Фреймворк в 2020?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Хорошие или плохие - это программисты) Yii2 как Symfony, как и Laravel - инструмент. Выбирай то что тебе больше подходит. Я видел как прекрасные, так и жуткие уродства на всех 3х фреймворках
    Ответ написан
    1 комментарий
  • Как рекурсивно заменить пробелы в ключах массива на нижнее подчеркивание?

    @oxidmod
    При помощи рекурсии же.

    function replaceKeys(array $data, string $original, string $replacement): array
    {
        $result = [];
        foreach($data as $key => $val) {
            $result[str_replace($original, $replacement, $key)] = is_array($val) ? replaceKeys($val, $original, $replacement) : $val;
        }
    
        return $result;
    }
    Ответ написан
    1 комментарий
  • Куда уходят наработки и код от неудачных стартапов?

    sim3x
    @sim3x
    /dev/null
    Ответ написан
    Комментировать