• Какой есть простой дебаггер PHP?

    glaphire
    @glaphire Куратор тега PHP
    PHP developer
    xdebug+phpstorm (или другая ide, но со штормом лучше). Один раз надо отмучаться и разобраться, дальше будет легче. В качестве API клиента - Postman (там можно настроить, чтобы запрос из него активировал xdebug)
    Ответ написан
    2 комментария
  • Как передать заголовки в POST запросе через CURL?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    пишешь в адресной строке своего браузера, Как передать заголовки в POST запросе через CURL?
    и получаешь миллион ответов
    неужели это так трудно и надо специально идти на тостер и задавать этот вопрос в миллион первый раз ?
    Ответ написан
    Комментировать
  • Как объединить похожие строки в массиве в одну?

    glaphire
    @glaphire Куратор тега PHP
    PHP developer
    SELECT MIN(id), napryazhenie, moshnost, tip-nagryz FROM example_table GROUP BY napryazhenie, moshnost, tip-nagryz

    потом через
    while ($row = $result->fetch_assoc()) {
            //получить каждый $row и сохранить его в массив или что-то другое сделать
        }
    Ответ написан
    Комментировать
  • Что нужно знать начинающему сисадмину?

    paran0id
    @paran0id
    Умный, но ленивый
    Вы один и совсем без опыта? Ищите работу, где будет наставник. Без него вы мало чему научитесь, и, вероятно, крепко накосячите.
    Ответ написан
    Комментировать
  • Как в renderAjax определить текущий язык?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый день.
    Получить можно из cookies.
    Ответ написан
    Комментировать
  • Текущий уровень громкости как в вк?

    Stalker_RED
    @Stalker_RED
    Примерно так


    Стили еще нужно допиливать и добавить throttle/debounce наверное.
    Можно еще transition, и скрывать через opacity.
    Ответ написан
    Комментировать
  • Как посчитать самых активных юзеров, которые писали посты за текущую неделю?

    @jazzus
    User::withCount(['posts' => function($query) {
             $query->whereDate('created_at', '>=', now()->startOfWeek());
          }])
          ->orderByDesc('posts_count')
          ->take(3)
          ->get();
    Ответ написан
  • В чем моя ошибка с миграциями?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый день.
    Для advanced укажите путь к миграциям --migrationPath="@frontend/migrations".
    Чтобы не указывать путь - помещайте миграции в предназначенную для этого директорию(если не ошибаюсь - console/migrations для advanced).
    И зачем через gii генерировать миграции, если для этого есть специальная консольная команда
    php yii migrate/create migrate_name? Если делать миграции при помощи этой команды, то файлы будут складываться куда положено.

    p.s. Через gii не создают миграции)))
    Ответ написан
    Комментировать
  • Что должно быть сначала код ревью или тестирование?

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

    Исходя из этого - сначала ревью.
    Ответ написан
    Комментировать
  • Как получит минимальный пинг между Москвой и Хельсинки?

    @iddqda
    network engineer, netdevops
    Можно теоретически снизить пинг на треть
    Известно, что скорость света в оптоволокне 0,69с (с - скорость света)
    Кроме того оптоволокно как правило проложено не по кратчайшему расстоянию,
    Хотя на участке между Москвой и Питером оптика зарыта вдоль ЖД, которую Николай I рисовал линейкой, так что много тут выиграть не получится

    Итак нам нужен радиоканал. Во первых скорость в воздухе близка к с
    а во вторых так мы получим минимальное расстояние по кратчайшему пути

    Единственный момент - нам нужно учесть кривизну земли.
    У Unifi есть такая клевая утилита https://link.ui.com
    с помощью нее вычисляем высоту на которой нужно установить радиопередающие устройства:
    5f3e76e7610c4801338493.png

    Оказывается чтобы снизить пинг на треть достаточно построить в Москве и Хельсинки радиовышки высотой в 15500 метров. Впрочем, на первое время, можно обойтись аэростатами.

    И кстати, это будет не кратчайшее расстояние.
    Для кратчайшего нам нужно прорыть абсолютно прямой тоннель прям через толщу планеты.
    Но боюсь на данном этапе развития науки и техники этот проект невозможен.
    Ответ написан
    10 комментариев
  • Как распарсить скрипт JS при помощи phpQuery?

    Stalker_RED
    @Stalker_RED
    phpQuery не нужен.

    $str = 'hlsList: {"1080":"https://m1.rumer.club/manifest/MTc4LjE1OS4yMTYuMTQy/?video=https%3A%2F%2Fhls-t001-l001-c086-s001.intravideo.net%2F04_01_20%2F04%2F01%2F16%2FAYLFV5VV%2FAVEHPEEI.mp4%2Ftracks%2Fv1-a%2Fmaster.m3u8",
    "480":"https://m1.rumer.club/manifest/MTc4LjE1OS4yMTYuMTQy/?video=https%3A%2F%2Fhls-t001-l001-c086-s001.intravideo.net%2F04_01_20%2F04%2F01%2F16%2FAYLFV5VV%2FAVEHPEEI.mp4%2Ftracks%2Fv2-a%2Fmaster.m3u8",
    "720":"https://m1.rumer.club/manifest/MTc4LjE1OS4yMTYuMTQy/?video=https%3A%2F%2Fhls-t001-l001-c086-s001.intravideo.net%2F04_01_20%2F04%2F01%2F16%2FAYLFV5VV%2FAVEHPEEI.mp4%2Ftracks%2Fv1-a%2Fmaster.m3u8"}';
    
    $json = str_replace('hlsList: ', '', $str);
    $links = json_decode($json, true);
    echo $links['720'];
    Ответ написан
    Комментировать
  • Проблема с checkboxList. Yii2?

    slo_nik
    @slo_nik Куратор тега Yii
    У Вас данные размеров хранятся не очень удобно.
    Пока можно сделать вот так.
    // Ваш статический метод в модели SizeOneHelper
        public static function getSizeList(): array
        {
            return [
                'S (55/56)',
                'M (57/58)',
                'L (59/60)',
                'XL (61/62)',
            ];
        }
    
    // если в $model->size данные хранятся в виде строки, то надо привести к массиву и передать в checkboxList()
    $select = explode(',', $model->size);
    echo $form->field($model, 'size')->checkboxList(SizeOneHelper::getSizeList(),[
       'item' => function($index, $label, $name, $checked, $value) use ($select){
          if(in_array($index, $select)){
             $checked = 'checked';
          }
          return Html::checkbox($name, $checked);
       }
    ])

    Но я бы не хранил это в виде строки. Скорей всего создал бы отдельную связующую таблицу, где хранил бы размеры и id товара.

    p.s. Сделал "на коленке", но если подумать, то можно и это улучшить.

    p.s.s. Для того чтобы выводился label checkbox в функцию передаётся нужный параметр в переменной $label. Используйте его и будет выводится название checkbox-a.
    return Html::checkbox($name, $checked, ['label' => $label]);


    p.s.s.s. В DetailVeiw можно вывести нужные данные таким образом
    // метод в модели SizeOneHelper
        public function getSizeName()
        {
            return ArrayHelper::filter(self::getSizeList(), explode(',',$this->size));
        }
    
    // в DetailView получаем строку по названиям размеров
    echo DetailView::widget([
      'model' => $model,
      'attributes' => [
         [
           'attribute' => 'size',
           'value' => function($model){
              return implode(',',$model->getSizeName());
           }
         ]  
      ]
    ]);


    p.s.s.s.s. Создайте дополнительный метод в модели SizeOneHelper
    public  function getSelectSizeList()
        {
            return explode(',',$this->size);
        }

    Метод getSizeName изменится на такой
    // метод в модели SizeOneHelper
     public function getSizeName()
        {
            return ArrayHelper::filter(self::getSizeList(), $this->getSelectSizeList());
        }


    Тогда вывод размеров может быть таким:
    // в checkboxList
    echo $form->field($model, 'size')->checkboxList(SizeOneHelper::getSizeList(),[
       'item' => function($index, $label, $name, $checked, $value) use ($model){
          if(in_array($index, $model->getSelectSizeList())){
             $checked = 'checked';
          }
          return Html::checkbox($name, $checked, ['label' => $label, 'value' => $value]);
       }
    ])
    Ответ написан
    8 комментариев
  • Установка PHP плагина вручную (без Composer)?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    https://github.com/googleapis/google-api-php-clien...
    1. скачиваете release под свою версию PHP
    2. инклудите autoload.php который идёт вместе с релизом
    Ответ написан
    1 комментарий
  • Как обработать sql-запрос с условием php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Для этого надо забыть все то чему тебя учили в отстойных видеокурсах, снова сесть за парту и учиться с нуля.
    В частности узнать, что
    - Дата в БД хранится в формате Y-m-d и никаком другом
    - количество строк функция mysqli_query не возвращает
    - открыть для себя индексы, поставить уникальный индекс на поле даты и все делать одним запросом

    $query = "INSERT IGNORE INTO stats (datevar, one, two, three) VALUES (NOW(), 0, 0,0)";
    $result = mysqli_query($link, $query);
    if ($result->affected_rows) {
        echo "Создали строку";
    } else {
        echo "Найдено";
    }
    Ответ написан
    Комментировать
  • Как сделать пазл на js?

    twobomb
    @twobomb
    Крч грубо сделал, разбивает на квадратные части и колизия тож по квадратам,а не по контуру. Количество частей разбивки можно переменной настроить. Зато без всяких библиотек
    Ответ написан
    1 комментарий
  • Как спарсить html и вытащить список элементов?

    datka
    @datka
    1) Скачиваете Python
    2) Устанавливаете Beautifulsoup pip install bs4 . а также requests pip install requests, через Win+R или cmd
    3) Вот документация BeautifulSoup, вот requests. Вот примеры кода.
    4) Путем проб и ошибок пишите код.
    5) Профит.

    Таким образом можно получить ссылки
    item = soup.find('a', class_="sih-inspect-magnifier")
    print(item[href])

    Дальше запихнуть это все в цикл.
    Ответ написан
    Комментировать
  • Как сделать проверку ссылки на битость перед переходом?

    @zkrvndm
    Софт для автоматизации
    Не существует способов проверить работоспособность ссылки, без обращения к ней. Соответственно, чтобы убедится в том, что переданная ссылка не битая, нужно попытаться ее открыть, допустим, через тот же curl.

    Для этого создайте в корне своего сайта файл 1.php и поместите в него код:
    Нажмите здесь, чтобы развернуть код
    <?php
    
    header('Access-Control-Allow-Origin: *'); // Разрешаем запросы с любых доменов
    header('Content-Type: text/html; charset=utf-8'); // Указываем тип документа и кодировку
    
    // Включаем отображение ошибок:
    
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    
    // Если мы получили GET-запрос:
    
    if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    	
    	// Если переменная со ссылкой существует и не пуста:
    	
    	if (isset($_GET['url']) and !empty($_GET['url'])) {
    		
    		check(); // Запускаем функцию для проверки действительности ссылки
    		
    	}
    	
    	// Если переменная со ссылкой не существует:
    	
    	else {
    		
    		echo 'Отсутсвует переменная url со ссылкой для проверки!';
    		
    	}
    	
    }
    
    // Если мы получили НЕ GET-запрос, а допустим POST-запрос или любой другой:
    
    else {
    	
    	echo 'Метод не поддерживается!';
    	
    }
    
    // Функция для проверки переданной ссылки:
    
    function check() {
    
    	// Определяем параметры запроса:
    	
    	$url = $_GET['url']; // Получаем адрес запроса
    	
    	// Создаём новый сеанс:
    	$curl = curl_init();
    	
    	// Указываем адрес целевой страницы:
    	curl_setopt($curl, CURLOPT_URL, $url);
    	
    	// Устанавливаем таймаут для запроса в 10 секунд:
    	
    	curl_setopt($curl, CURLOPT_TIMEOUT, 10);
    	
    	// Устанавливаем User-Agent чтобы имитировать браузер:
    	$headers = [ 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36' ];
    	curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    	
    	// Разрешаем переадресацию:
    	curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    	
    	// Запрещаем прямой вывод результата запроса:
    	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    	
    	// Делаем сам запрос:
    	$result = curl_exec($curl);
    	
    	// Завершаем сеанс:
    	curl_close($curl);
    	
    	// Смотрим, есть ли ответ:
    	
    	if ($result == '') {
    	    echo 'Передана не рабочая ссылка!'; // Выводим ошибку, если ответ пустой
    	}
    	
    	else {
    	    header('Location: ' . $url); // Переадресуем, если ответ не пустой
    	}
    
    }

    Проверить работу скрипта можно сделав GET-запрос на файл 1.php:
    https://site.ru/1.php?url=https://yandex.ru
    Где https://site.ru ваш сайт, а вместо https://yandex.ru подставляйте ссылку, которую надо проверить.
    Ответ написан
  • Какие книги начать читать для веб хакинга?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    Внимание! Изменился адрес почты!
    Очень понадобится вот это
    Также не менее понадобится это
    (хотя читать лучше наоборот - сначала вторую ссылку, потом первую - так будет больше впечатлений :) )
    Ответ написан
    Комментировать
  • Почему Emmet в PHPStorm не открывает тег?

    GomelHawk
    @GomelHawk
    PHP / Symfony developer
    File -> Settings -> Editor -> Live Templates -> "+" (add new live template) with params:
    Abbreviation: php
    Template text: <?php $END$ ?>
    Context: HTML
    Ответ написан
    Комментировать