Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

GeKskill

  • 0
    вклад
  • 54
    вопроса
  • 10
    ответов
  • 60%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • WGET конвертирует кириллицу?

    kisaa @kisaa
    Попробуйте поиграться с кодировками в файле images_url.txt. Начать с cp1251, продолжить UTF8 с BOM/без BOM, ну и далее по списку на бубне.
    Ответ написан вчера
    1 комментарий
    1 комментарий
  • WGET конвертирует кириллицу?

    2utm @2utm
    коментарии кончились у меня - еще такой попробуйте --trust-server-names=on
    Ответ написан вчера
    2 комментария
    2 комментария
  • Выбрать строку из БД по значениям связанной таблицы?

    Akina @Akina
    Сетевой и системный админ, SQL-программист.
    SELECT rule.id, rule.path, rule.content, rule.cat_id 
    FROM rule
    JOIN rule_options ON rule.id = rule_options.rule_id
    WHERE rule_options.option IN (4670, 5492)
    GROUP BY 1,2,3,4
    HAVING COUNT(DISTINCT rule_options.option) = 2;
    Ответ написан 29 янв.
    2 комментария
    2 комментария
  • Строка из БД как условие сравнения в if?

    ThunderCat
    ThunderCat @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Вообще можно использовать eval() (хотя я бы не стал), но по хорошему это лечится пенделем проектировщику такого чудесного функционала.
    Ответ написан 21 дек. 2022
    10 комментариев
    10 комментариев
  • Строка из БД как условие сравнения в if?

    ksnk @ksnk
    У меня где-то использовался `язык фильтров` - строка с условиями, которую удобно вписывать в область фильтра в столбик таблицы с данными. Постим на сервер - получаем фильтрованное.
    Сама строка условий выглядит примерно так
    count=2,<2;count=3,<300,>44
    условия соединяются запятой, по AND, точкой с запятой - по OR, у OR более низкий приоритет. Операция сравнения соединяет 2 операнда, если один из операндов пустой - берется "сравниваемое значение", если число - то число, иначе ищем во внешних "данных".
    Если записать строку на php - будет что-то вроде
    $current=45; // значение, которое сравниваем
    $data=['count'=>3]; // внешние данные
    if( ($data['count']==2 && $current<2) || ($data['count']==3 &&$current>44 && $current<300)){
        // ...
    }

    Удобно в языке то, что парсер его компактен и легко допиливается напильником по месту.
    function evaluate($current,$cond,$data=[]){
        $res=false;
        foreach(explode(';',$cond) as $or){ //or
            foreach(explode(',',$or) as $and) { //and
                if(preg_match('/^(.*?)(<=|>=|<|>|=)(.*?)$/',$and,$m)){
                    $a=trim($m[1]);$b=trim($m[3]);
                    if(empty($a)) $a=$current;
                    else if(is_numeric($a)) $a=0+$a;
                    else if(isset($data[$a])) $a=$data[$a];
                    else {
                        $res=false; break;
                    }
                    if(empty($b)) $b=$current;
                    else if(is_numeric($b)) $b=0+$b;
                    else if(isset($data[$b])) $b=$data[$b];
                    else {
                        $res=false; break;
                    }
                    if($m[2]=='<=') $res=$a<=$b;
                    else if($m[2]=='>=') $res=$a>=$b;
                    else if($m[2]=='>') $res=$a>$b;
                    else if($m[2]=='<') $res=$a<$b;
                    else if($m[2]=='=') $res=$a==$b;
                } else {
                    $res=false;
                    //throw new \Exception('Некорректное условие в строке '.$and)
                }
                if(!$res) break; // выход по AND
            }
            if($res) break; // выход по OR
        }
        return $res;
    }
    
    $data=['count'=>3];
    
    var_dump(true===evaluate(45,'count=2,<2;count=3,<300,>44', $data));
    var_dump(true===evaluate(1,'<2'));
    var_dump(true===evaluate(1,'>3;<2,>1;<2'));
    Ответ написан 23 дек. 2022
    1 комментарий
    1 комментарий
  • Почему переданный в функцию параметр меняется?

    sergiks
    Сергей Соколов @sergiks Куратор тега JavaScript
    ♬♬
    Потому, что Number.MAX_SAFE_INTEGER в JavaScript это 2^53 - 1
    9007199254740991 // максимальное безопасное целое
    17848907461544179 // ваш ID больше – происходят округления


    TL&DR; передавайте такие post_id в кавычках, как строки.
    Ответ написан 08 окт. 2022
    3 комментария
    3 комментария
  • Как максимально быстро пробежаться по массиву объектов?

    HistoryART
    Владимир @HistoryART Куратор тега JavaScript
    Вы глупеете быстрее, чем мы учимся.
    const lang_arr = array.map(el => el.person.text.language.lang.indexOf('en') > -1);
    Ответ написан 03 окт. 2022
    3 комментария
    3 комментария
  • Круглые кавычки Regex, что изменить?

    sotvm
    SVM @sotvm
    Умный поймёт, а дураку и так всё равно.
    есть ещё ≈100питсот милььёнов
    Ответ написан 20 сент. 2022
    Комментировать
    Комментировать
  • Круглые кавычки Regex, что изменить?

    AUser0 @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    $re = '/(?P<shortcode>\[(?P<name>[\w\-]{3,})(?:\s+(?P<attrs>[\w\d,\s="\'\-+#%!~`&.:\/()?|]+))?\](?:(?P<content>[\w\d\s,!@#$%^&*(\\)="\'\-+&.:\/?|<>]+)(?:\[\/[\w\-\_]+\]))?)/m';

    Значится где-то вооо-о-о-о-ооо так!
    Ответ написан 19 сент. 2022
    1 комментарий
    1 комментарий
  • JS setTimeout рекурсия?

    miraage
    Mikhail Osher @miraage
    Старый прогер
    На коленке набросал, вроде работает. Сравните с Вашим решением.

    const root = document.getElementById('root');
    
    function writeText(text, delay) {
      if (!text) {
        return;
      }
      
      const char = text[0];
      const remaining = text.slice(1);
      
      setTimeout(() => {
        root.textContent = root.textContent + char;
        writeText(remaining, delay);
      }, delay);
    }
    
    function run() {
      writeText('hello world', 50);
    }
    Ответ написан более года назад
    Комментировать
    Комментировать
  • CSS увеличить зону действия кнопки не изменяя размер?

    delphinpro
    Сергей delphinpro @delphinpro Куратор тега CSS
    frontend developer


    Зеленую рамку оставил для демонстрации области клика. Сделайте ее прозрачной. Фактически кнопка будет большого размера, но визуально - маленькой.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Присвоение через ссылку JS?

    alexalexes @alexalexes
    У ссылки на объект можно менять только скалярные значения, избегая замены всего объекта. Тогда у data будет работать эффект ссылки на this.data.htmlBlocks[elementClass].views. Для переприсваивания объектов нужно брать сам this.data.htmlBlocks[elementClass].views.
    viewsHandler(elementClass){
        let data = this.data.htmlBlocks[elementClass].views;
        let now = new Date().getTime();
        if ( data.lastView && now - data.lastView / 1000 > 15 ) {
          data.views = views.count++; // views который справа за пределами функции?
          data.lastView = now;
          }
        } else {
          data.views = 2;
          data.lastView = 1;
          }
          
        }
      }
    Ответ написан более года назад
    1 комментарий
    1 комментарий
  • 'posts_per_page" => -1 ошибка SQL?

    Prec @Prec
    По крайней мере на гитхабе в описании функции wc_get_products нет параметра 'posts_per_page', есть параметр 'limit'
    Ответ написан более года назад
    Комментировать
    Комментировать
  • PHP preg_match_all и большая строка (760к)?

    bkosun @bkosun
    Измените настройки PCRE:

    ini_set('pcre.backtrack_limit', 10000000); // Лимит обратных ссылок


    https://www.php.net/manual/ru/pcre.configuration.php
    Ответ написан более двух лет назад
    5 комментариев
    5 комментариев
  • PHP preg_match_all и большая строка (760к)?

    Stalker_RED
    Stalker_RED @Stalker_RED
    Регулярки всегда плохо работали на длинных строках. Медленно, много памяти жрут, вот это все. Есть, конечно, специально модифицированные библиотеки для больших объемов, но с урезаными возможностями.

    В вашем случае проще обработать файл построчно.
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Regex выделить строки?

    dodo512 @dodo512
    ([^|]*1004[^|]*)
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • CSS стили по условию JQuery?

    Psixodelik
    Никита Михайлов @Psixodelik
    Преподаватель на Hexlet
    Работа с DOM само по себе дорогостоящее занятие. Любые повторяющиеся события внутри DOM могут приводить к проблеме с производительностью.

    В чём смысл каждый раз устанавливать стили для .ucity при условии, что scrollTop не добрался до нужного значения? Эти стили можно задать изначально в CSS. Уже одним изменением меньше. Всё остальное уберите в отдельные классы. Проверяйте, есть ли такой класс при scrollTop() < ucity_prop.pos.top и если что — удаляйте класс

    Кстати можно ещё дополнительно посмотреть в сторону https://developer.mozilla.org/ru/docs/Web/CSS/will...
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Async/Await в цикле (JS)?

    Xuxicheta
    Антон Швец @Xuxicheta
    инженер
    Записать все получившиеся промисы в массив, а потом await Promise.all(promisesArray)
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Разбить массив на части (JS)?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    const numChunks = 6;
    const chunkLen = arr.length / numChunks | 0;
    const chunks = Array.from({ length: numChunks }, (n, i) => {
      return arr.slice(i * chunkLen, i === numChunks - 1 ? arr.length : (i + 1) * chunkLen);
    });
    Ответ написан более двух лет назад
    5 комментариев
    5 комментариев
  • JS убрать спецсимволы а пробелы заменить на "-"?

    TAbrahamyan
    Тигран Абрамян @TAbrahamyan
    .replace(/[^\w\s]/g, '')
    Ответ написан более двух лет назад
    3 комментария
    3 комментария
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • Следующие →
Самые активные сегодня
  • sasmoney
    sasmoney
    • 9 ответов
    • 0 вопросов
  • Drno
    • 8 ответов
    • 0 вопросов
  • nedosekinstanislav
    Stanislav
    • 6 ответов
    • 0 вопросов
  • GNUBack
    • 5 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 4 ответа
    • 0 вопросов
  • Sanes
    Sanes
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации