Задать вопрос
  • Как заменить текст в файле .csv с помощью PHP?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Угу. Сначала понаставим @, чтобы скрыть все ошибки, а потом будем голову ломать, почему ничего не работает и ошибок не показывает.

    А вообще, это делается в одну строку.
    file_put_contents($outfilename, str_replace('Российский рубль', 'RUB', file_get_contents($infilename)));
    Ответ написан
    Комментировать
  • Кто может разъяснить магию ssh agent forwarding?

    Lynn
    @Lynn
    nginx, js, css
    Так это буквально в документации написано


    -i identity_file
    [...] You can also specify a public key file to use the corresponding private key that is loaded in ssh-agent(1) when the private key file is not present locally.


    https://man7.org/linux/man-pages/man1/ssh.1.html
    Ответ написан
    2 комментария
  • Может ли соединение между 2 серверами на Linux быть одновременно и локальной сетью и мостом?

    Afranius
    @Afranius
    Из говорящих дольше живут те, что говорят меньше.
    А зачем такие извращения? Кабель от провайдера в свитч, а от свитча на оба компа.
    И устанавливай PPPoE - соединение по очереди хоть с первого, хоть со второго (если только пров привязку по маку не делает). Потому что одновременно с обоих PPPoE работать не будет.

    Вообще задача не понятна. Если первый комп настроен как шлюз, то при наличии локальной сети и поднятом PPPoE интернет и так будет на обоих. Зачем нужна другая сессия?
    Ответ написан
    1 комментарий
  • В чем разница между выводом шаблона через контролер и напрямую?

    nefone
    @nefone
    Junior PHP разработчик
    Я думаю если используется фреймворк, то и правильнее будет пользоваться его возможностями

    Примерно код контроллера должен выглядеть так:
    <?php
    
    namespace App\Controllers;
    
    class Account extends BaseController
    {
        public function index()
        {
            $data['title']   = 'Аккуант';
    
            return view('account_header_menu, $data);
        }
    }
    Ответ написан
    Комментировать
  • Генератор случайных чисел ИНОГДА (очень редко!) возвращает NaN?

    adeshere
    @adeshere Автор вопроса
    РАН, Фортран, временные ряды
    Спустя полтора года, завеса тайны все-таки начала спадать!
    Во-первых, благодаря вот этому совету Дмитрия Чернова, баг удалось локализовать. А именно, Дмитрий предположил, что проблему надо искать в контексте x87 FPU, и что добавление
    пары asm- команд
    Прямую вставку asm- команд в код мой фортран-компилятор не умеет, но все необходимое делает ключ Qfp-stack-check
    в подозрительных местах приведет к вылету программы по Access Violation именно в том месте, где что-то пошло не так. А не спустя какое-то время, когда я снова полезу в FPU и получу Nan, например, в ГСЧ. Эта идея сработала, и я получил Access Violation в совершенно безопасной (как мне казалось)
    функции
    SUBROUTINE SCREEN_PUTL0_TIME(TEXT)
    USE ABD_INC;  USE HEADERS
    character, intent(in) :: text*(*)
    integer*4, save :: isw=0
    c
    c     При самом первом вызове таймера isw=0, функция вернет 0
    c     При последующих (isw=1) - вернет интервал от момента инициализации
    t=timer_mm(5,isw) 
    isw=1
    if (t < $Screen_counter_time) return
    c    В крайнем  случае (если в момент начала внешнего цикла таймер уже
    c    инициализирован) функция первый раз напечатает % сразу при старте,
    c    а не через $Screen_counter_time после запуска цикла
    c   
       call screen_putl0(text)
       t=timer_mm(5,0)         ! Реинициализация таймера после печати строки
    end

    Эта функция печатает на экран % выполнения (он передается в строке TEXT), но с интервалом не менее $Screen_counter_time. Для проверки времени, прошедшего с прошлой печати, вызывается самодельный таймер t=timer_mm(5,isw) Первый параметр функции - это номер таймера (их там у меня целый массив для разных нужд). А второй параметр работает так: если isw=0, то таймер засекает время, а в остальных случаях возвращает число секунд, прошедших с момента инициализации счетчика. Ну вот так было когда-то сделано, чтобы обойтись одной функцией вместо двух....
    Таким образом, когда я дергаю инициализацию таймера, то его возвращаемое значение меня не интересует. Именно это и происходит в предпоследней строке кода выше:
    t=timer_mm(5,0)
    Результат выполнения функции как бы присваивается переменной t, но больше она нигде не используется . Как оказалось, именно здесь и была зарыта собака.

    А дальше уже было проще. В коде под спойлером у меня есть вызов функции типа real*4, от которого мне был нужен только побочный эффект (инициализация таймера), а вот возвращаемое значение функции нигде не используется. В принципе,
    это легально
    По идее, компилятор в такой ситуации должен после вызова функции восстановить стек x87 FPU, а возвращаемое значение никуда не копировать. В других местах кода у меня есть аналогичные вызовы (когда возвращаемое значение не используется), и это не приводит к каким-то багам. Ну и язык официально нигде не требует, чтобы возвращаемое значение функции обязательно было куда-то использовано ;-)

    Но как оказалось, именно это и провоцировало проблему. Этот фрагмент библиотеки у меня состоит из кучи очень небольших (5-10 строк) взаимосвязанных функций с частично повторяющимся кодом. Оптимизатор делал из них жуткое спагетти, дробя эти функции на еще более мелкие фрагменты и инлайня их направо и налево. И, видимо, где-то в ходе этих оптимизаций он "забывал" восстановить (очистить?) стек FPU.

    В общем, для исправления бага оказалось достаточно заменить локальную переменную t на глобальную. Про нее оптимизатор не знает - будет ли она нужна, или нет. Поэтому он просто вынужден извлекать из сопроцессора результат FP-вычисления, чтобы запихнуть его в это место ;-)

    Огромное спасибо Дмитрию, который сначала выдвинул правильную версию происхождения бага, а потом помог его точно локализовать и убрать! Тестовая программа работает уже час и пока ни одного Nan-а не появилось. ;-)
    Ответ написан
    Комментировать
  • Как передать и вывести кастомные переменные Docker Environment для WordPress?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Всё, что перечислено в environment (или другими способами), доступно внутри контейнера по тем же самым именам.
    Ответ написан
    Комментировать
  • Как определить время выполнения запроса post?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    import axios from 'axios';
    
    console.time('time');
    
    const response = await axios.post(
      'https://cs.money/1.0/market/purchase',
      {
        'items': [
          {
            'id': '28071254',
            'price': 0.02
          }
        ]
      },
      {
        headers: {
          ***
        }
      }
    );
    
    console.timeEnd('time');


    Запускаешь скрипт и в консоли видишь время выполнения
    Ответ написан
    Комментировать
  • Как вывести число столько раз, сколько написано в input?

    @garbagecollected
    var cnt = 3;
    var num = 8;
    
    console.log(Array.from({ length: cnt }).map(() => num).join` + `);


    либо можно вместо .map(() => num) писать .fill(num)
    вместо Array.from({ length: cnt }) можно писать так new Array(cnt)
    тогда получится

    var cnt = 3;
    var num = 8;
    
    console.log(new Array(cnt).fill(num).join` + `);
    Ответ написан
    Комментировать
  • Как вывести число столько раз, сколько написано в input?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Вот так можно повторить строку N раз, используя метод строки repeat():
    ' + 8'.repeat(3)
    // получится строка " + 8 + 8 + 8"
    Ответ написан
    2 комментария
  • Как добиться точного такого же треугольника?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега CSS
    В чём вообще сложность-то?
    div {
        width: 0px;
        height: 0px;
        padding: 0;
        border: none;
    }
    
    div:after {
        content: '';
        position: absolute;
        width: 0px;
        height: 0px;
        border-top: 200px solid transparent;
        border-bottom: 200px solid transparent;
        border-right: 360px solid #00FF00;
    }

    677b94d1a6c2a471185568.pngсмещение сделано, чтобы убедиться, что всё на месте; без него совпадение 100%
    Ответ написан
    Комментировать
  • Почему вместо 100, по проводу 95?

    @ElxkoT
    Потому что 100 мегабит у вас на канальном уровне. С учётом размера заголовков пакетов и прочих технических накладных расходов в 100мб линк как раз можно впихнуть в районе 94-95мб реальной полезной нагрузки
    Ответ написан
    16 комментариев
  • Как получить bitrix_sessid в js без подключения js-библиотеки Bitrix?

    @andry36
    на ум приходит несколько подходов:

    Парсинг HTML-страницы
    Bitrix обычно добавляет актуальный bitrix_sessid в скрытый input, либо в мета-тег. Например:

    <meta name="bitrix_sessid" content="abcd1234">

    Или:
    <input type="hidden" name="sessid" id="sessid" value="abcd1234">


    и в js получать:

    // Если используется мета-тег
    const bitrixSessid = document.querySelector('meta[name="bitrix_sessid"]').content;
    // Если используется скрытый input
    const bitrixSessid = document.querySelector('input[name="sessid"]').value;


    Если сервер настроен так, что сессия передаётся в cookies, возможно, bitrix_sessid можно извлечь оттуда:

    const cookies = document.cookie.split('; ').reduce((acc, cookie) => {
      const [key, value] = cookie.split('=');
      acc[key] = value;
      return acc;
    }, {});
    
    const bitrixSessid = cookies['bitrix_sessid'];


    если prolog_admin_before.php уже подключён, можно встроить передачу bitrix_sessid прямо в JS:

    <script>
      window.bitrixSessid = '<?= bitrix_sessid() ?>';
    </script>


    И потом использовать в JS: console.log(window.bitrixSessid)
    Ответ написан
    2 комментария
  • Как сделать так, чтоб бэкап одного устройства отправлялся на другое устройство?

    @Drno
    Rsync + bash скрипт + планировщик
    Ответ написан
    Комментировать
  • Как выполнять отладку на php?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Правильный подход - установка xdebug и пошаговая отладка.

    Есть и более простые методы, например:
    Использовать var_dump()/print_r() в нужных местах, чаще всего этого достаточно для отладки небольших скриптов.
    Включение вывода ошибок в аутпут тоже помогает(либо в пхп.ини меняем соответствующие настройки, либо в коде в начале добавляем
    ini_set('error_reporting',E_ALL);  ini_set('display_errors', 1);

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

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    В нативном ничуть не сложнее https://developer.mozilla.org/ru/docs/Web/API/Elem...
    btn.addEventListener('click' e=>{
      const modal = e.target.closest('.modal[data-modal=cart]');
    });
    Ответ написан
    Комментировать
  • Как выбрать максимальное значение во вложенных массивах?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    $array = [
                [
                    "label" => "Bad",
                    "number" => 0.99999895728755
                ],
                [
                    "label" => "Good",
                    "number" => 4.2713489950201E-8
                ]
            ];
    
    $max = array_reduce($array, fn($a, $i) => $i['number'] > $a['number'] ? $i : $a, $array[0]);
    
    var_dump($max);
    Ответ написан
    Комментировать
  • Как с помощью регулярного выражения найти все теги?

    @rPman
    Регулярные выражения не подходят для анализа html.

    Даже в очень простых случаях они будут неоправданно сложными. Страницу нужно предварительно разобрать на составные элементы, разобрать и отфильтровать их типы (атрибут, текст, теги,..) и уже по этому разбору что либо искать.

    Настоятельно рекомендую готовые анализаторы html, они есть подо все популярные и не очень языки и фреймворки. Например для php - штатные или рекомендую simple_html_dom, код будет простым, работать будет очень быстро, все встроено в php или простой include одного файла..
    Ответ написан
    1 комментарий
  • Как с помощью регулярного выражения найти все теги?

    vhood
    @vhood
    Не забывайте отмечать решения
    /<[^<>]+>/
    https://regex101.com/r/GA6w7j/2

    Только цель не ясна. Есть много кейсов, которые не решить такой регуляркой. Например, выделение парных тегов.
    Ответ написан
    7 комментариев
  • Как сделать сквозную нумерацию неупорядоченных списков?

    director-rentv
    @director-rentv
    Frontend-разработчик
    В этом участке кода получилось добиться сквозной нумерации таким кодом:
    ul:first-of-type {
      counter-reset: cnt 0;
    }
    
    li {
      counter-increment: cnt 1;
    }
    
    li::before {
      content: counter(cnt) ". ";
    }
    Ответ написан
    3 комментария