Задать вопрос
  • Как составить регулярное выражение для формулы?

    jasonOk
    @jasonOk
    Легче болтать, чем код писать
    Ответ написан
    Комментировать
  • Парсер html кода без библиотек, как?

    Stalker_RED
    @Stalker_RED
    Ну и правильно делает, что выводит весь сайт. Вы же запрашиваете по ссылке весь html и потом его выводите целиком.

    А процесс написания парсера "без библиотек" приведет к тому, что вы напишете самодельные библиотеки. Причем шансы того, что они будут лучше конкурентов, стремятся к нулю.

    И я вам по секрету скажу: cURL - это тоже библиотека. Перепишете может и ее на сокетах с нуля?
    Ответ написан
    6 комментариев
  • Сайт с БД поместить в file_get_contents?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    возможно
    Ответ написан
    Комментировать
  • Как поочередно заменить строки на уникальные значения используя регулярные выражения?

    0xD34F
    @0xD34F Куратор тега Регулярные выражения
    $str = '< p > text </p>';
    
    $count = 0;
    $str = preg_replace_callback('/< ?\/?\w+ ?\>/', function() use(&$count) {
      $count++;
      return "#p$count";
    }, $str);

    или, если разные тэги надо заменять независимо
    $str = '< p > text </p> <b> fdsgdfsg</b> <p>???</p> <div>hello, world!!< /div>';
    
    $count = [];
    $str = preg_replace_callback('/< ?\/?(\w+) ?\>/', function($matches) use(&$count) {
      $key = $matches[1];
      $count[$key] = isset($count[$key]) ? $count[$key] + 1 : 1;
      return "#$key$count[$key]";
    }, $str);
    Ответ написан
    Комментировать
  • Как лучше называть переменные $itemText или $item_text в php?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Есть всего 2 источника истины - PSR и Coding Standard конкретного проекта или команды.
    2. Конкретно PSR-1 говорит следующее:


    4.2. Properties

    This guide intentionally avoids any recommendation regarding the use of
    $StudlyCaps, $camelCase, or $under_score property names.

    Whatever naming convention is used SHOULD be applied consistently within a
    reasonable scope. That scope may be vendor-level, package-level, class-level,
    or method-level.

    Кратко: не важно какой стиль вы используете, главное использовать один и тот же. То есть, возвращаемся к второму варианту - стандартны проекта/команды.

    3. Что касается "industry standards", то в большинстве современных проектов уже используется camelCase для свойств и методов, PascalCase (StudlyCaps) для файлов, классов и пространств имен.

    P.s. я понимаю, что чисто технически нет ни какой разница, но я не хочу из-за такой мелочи превращать свою работу в говнокод :)

    Говнокод – это совсем про другое. Если проект использует везде snake_case и вы будете его всегда и везде использовать, на качестве кода это никак не отразится. Consistency matters.
    Ответ написан
    2 комментария
  • Поиск слешка в строке?

    p00h
    @p00h
    Фехтовальщик-стропальщик
    preg_match('/^[A-z0-9\/]{3,15}$/', $page)
    Ответ написан
    Комментировать
  • Как задать в nginx диапазон цифр(регулярным выражением)?

    Вероятно что-то типа такого

    location ~ "^/[\d]{2}" {
        # ...
    }
    
    location ~ "^/[\d]{3}" {
        # ...
    }
    
    location ~ "^/[\d]{4}" {
        # ...
    }


    Но это по разрядам
    Ответ написан
    1 комментарий
  • Как много переменных объединить в одну (цикл for)?

    flapflapjack
    @flapflapjack
    на треть я прав
    <form action=2.php>
    <input name="idoffers[]">
    <input name="idoffers[]">
    <input name="idoffers[]">
    <input name="idoffers[]">
    <input name="idoffers[]">
    </form>


    2.php :

    if(!empty($_GET['idoffers']))
    {
    foreach($_GET['idoffers'] as $key => $value)
    {
    print "$id = $value <br>";
    }
    }
    Ответ написан
    Комментировать
  • Почему скрипт работает по разному?

    @SimasikS
    Я есть
    If(Math.round(Math.random()) == 0){
    console.log("It's working")
    } else {
    console.log("It isn't working")
    }

    Вот такое ищите)
    Ответ написан
    Комментировать
  • В чём ошибка php когда использую else if?

    @karminski
    Senior React.JS Developer
    У вас в коде полная беда с if ... else. Простая проверка кода выдает кучу синтаксических ошибок.

    Попробую предположить, что код должен выглядет так:
    $token = $_POST['token'];
    $wall = $_POST['wall'];
    $group = $_POST['group'];
    $albom = $_POST['albom'];
    $tm = $_POST['time'];
    $time = time() + $tm * 60 * 1;
    $dub = mysql_query("SELECT group FROM `poster` WHERE `group`='$group'", $link);
    $ret = mysql_num_rows($dub);
    $sql1 = mysql_query("SELECT `group` FROM `poster` WHERE `group`='$group' AND `user`='$login'", $link);
    $pgr = mysql_num_rows($sql1);
    
    
    if (isset($_POST['time'])) {
        //Добовляем либо обновляем запись в БД, либо выводим ошибку
    }
    else if (($ret) > 0) {
        // Проверяем есть ли группа уже в БД
    }
    else if (($pgr) > 0) {
        //Проверяем кому пренадлежит добавленная группа
        $qz = mysql_query("UPDATE `poster` SET `token`='$token',`wall`='$wall',`albom`='$albom',`time`='$tm',`update`='$time' WHERE `group`='$group' AND `user`='$login'"); //Если этому же пользователю, то обновляем инфо
        echo "Данные для вашей группы обновлены";
    }
    else if (...) { // <!-- вот тут у вас просто else - но он может быть ТОЛЬКО ОДИН на всю конструкцию
        //Если нет, то выводим ошибку
        echo '<center><span style="font-size:20px;">Данная группа уже есть у нас в сервисе под другим пользователем!</span></center>';
    }
    else {
        //Если ничего из перечисленого, то добовляем группу в сервис
        $zq = mysql_query("INSERT INTO `poster`(`user`, `token`, `wall`, `group`, `albom`, `time`, `update`, `status`) VALUES ('$login','$token','$wall','$group','$albom','$tm','$time','1')", $link);
        echo "Ваша группа добавлена в сервис";
    }


    Как рекомендация, используйте IDE - она вам сразу покажет миллион-другой ошибок в вашем коде. В том числе, что функции mysql_* давно устарели. Пора бы на PDO переходить.
    Ответ написан
    2 комментария
  • Почему toFixed так округляет?

    Lynn
    @Lynn
    nginx, js, css
    https://learn.javascript.ru/number#%D0%BD%D0%B5%D1...
    Потому что эти числа не представимы точно в формате double (см. IEEE 754)

    > 0.755.toFixed(20)
    '0.75500000000000000444'
    > 0.7555.toFixed(20)
    '0.75549999999999994937'
    > 0.75555.toFixed(20)
    '0.75555000000000005489'


    Т.е. когда вы пишете 0.755 на самом деле в компьютерном представлении это число чуть-чуть больше чем 0.755, а для 0.7555 наоборот чуть-чуть меньше.
    Ответ написан
    1 комментарий
  • Как сделать реверс строки без использования стандартных методов?

    Xuxicheta
    @Xuxicheta
    инженер
    let str = 'abcdefg';
    for (let i = 0; i < str.length; i ++) {
      str = str.slice(1, str.length - i) + str[0] + str.substr(str.length - i); 
    }
    console.log(str);

    Никаких переменных, кроме счетчика цикла

    Но вообще так писать не надо :)
    Надо так
    str.split('').reverse().join('');
    Ответ написан
    Комментировать
  • Как сделать реверс строки без использования стандартных методов?

    Stalker_RED
    @Stalker_RED
    UPD: подходящие варианты:
    https://jsfiddle.net/1mcLfbdh/
    https://jsfiddle.net/tfyfdbch/

    неподходящие:
    let x = [];
    'Hello world!'.split('').forEach(s => x = [s].concat(x))
    console.log(x.join(''))
    https://jsfiddle.net/e2x7c463/

    ололо!
    let x = '', i = 'hakuna Matata!'.split('')
    while (x+= i.splice(-1, 1), i.length) {}
    x+=i
    
    console.log(x)
    https://jsfiddle.net/dc9fkdot/

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

    @McBernar
    А рекурсия вам не подходит?

    function func(str) {
    	if(str === '') {
    		return '';
    	}
    	return func(str.substr(1)) + str.charAt(0);
    }
    Ответ написан
    2 комментария
  • Как правильно работать с исключениями?

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

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

    Рассмотрим пару примеров:
    1. Представим, что модуль "генератор превьюшек для фоточек", который верой и правдой трудился многие месяцы, однажды наталкивается на непреодолимую для него преграду и бросает исключение - "капец, место на диске кончилось, я так больше не работаю!"

    Если ваш код не может ничего с этим поделать - вы пропускаете это исключение выше, пускай Глобальный И Великий Обработчик показывает юзеру красивую табличку "извините, у нас перерыв обед", и шлет письма админу в три часа ночи. А если у вас облачный хостинг, например, и вы можете на лету подключить больше дискового пространства, или может снести какой-то ненужный кэш освободив место, то можно перехватить это исключение, показать юзеру "извините, за задержку, ваши фоточки будут обработаны через пару минут", а админу прислать не красный алерт, а желтый.

    2. Виджет, который показывает самых рейтинговых котиков с ютуба не смог подгрузить очередную порцию котиков, т.к. ютуб забанен роскомнадзором. Если ваш код ничего не может с этим поделать - Глобальный И Великий Обработчик Исключений покажет пользователю "ой все". Или вы перехватите это событие на более низком уровне и покажете табличку "свежих котиков нет, но вот есть рейтинг за прошлую пятницу". Или, если котики должны быть обязательно свежие, то можете предусмотреть экстренное подключение через vpn или tor, или может возьмете котиков с vimeo вместо ютуба, например.

    В итоге, общие правила такие:
    1. пропускаете наверх все исключения, которые не можете обработать.
    2. обрабатываете те, которые вот прям обязательно нужно и важно обработать, и у вас действительно есть для этого возможность.

    Важно в этом не переусердствовать, и не основывать бизнес-логику на исключениях. Этот механизм для редких, исключительных ситуаций, которые не получается обработать другим способом. Если модуль ресайза фоточек написан индусами, и его, внезапно, нечем заменить. Но если есть возможность (и необходимость) перевести эту проблему из разряда исключительной в обычную рабочую ситуацию - лучше так и сделать. Если у вас место кончается два раза в неделю - лучше настроить какой-то мониторинг, который будет следить за этим показателем и заранее разруливать такие ситуации. В случае с недоступностью сервера можно на уровне бизнес логики проверять доступность и подключать резервные каналы или источники данных, вместо того, чтобы падать с ошибкой "ой 500!".
    Ответ написан
    3 комментария
  • Как сделать сортировку объекта?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Сделайте из объекта массив и сортируйте его как вам нужно:

    const sortedData = Object
      .entries(data)
      .map(([ key, val ]) => ({ ...val, id: key }))
      .sort((a, b) => b.id - a.id);
    Ответ написан
  • Как сделать сортировку объекта?

    @mortyy
    нужно поменять ключи на не числовые
    Ответ написан
    1 комментарий
  • Как скрыть ip делая запрос через CURL (PHP)?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Интересует в основном можно ли замаскировать не используя proxy?

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

    можно поменять X-Forwarded-For и некоторые неправльно написанные веб приложения будут учитывать именно этот IP, но это скорее исключение, обычно этот баг пихают в CTF'ы, но на практике ни разу не встречал
    Ну а если нельзя то можно ли при запросе использовать какие-то постоянные proxy, желательно конечно бесплатные,

    Да, есть сайты, которые предоставляют такие прокси, а у меня есть программа для сбора проксей по таким сайтам https://github.com/DevAlone/proxy_py много проксей мрут, но есть такие, которые работают стабильно, самая надёжная работает уже 42 дня.
    так же интересует можно ли сделать запрос через сервера tor.

    Да, на ubuntu установить тор `sudo apt install tor`, запустить `sudo service tor start` и использовать его как socks прокси с адресом `localhost:9050`, адрес можно поменять в настройках, также можно поднять несколько таких проксей и у каждой будет свой IP адрес.
    Ответ написан
    Комментировать