• Как сделать выпадающее меню с checkbox?

    erge
    @erge
    Примус починяю




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

    erge
    @erge
    Примус починяю
    select *
      from tbl
      where JSON_CONTAINS(filters, '{"1":["0"]}') = 1
         OR JSON_CONTAINS(filters, '{"1":["3"]}') = 1


    пример на dbfiddle

    работает начиная с MySQL 5.7
    Ответ написан
    Комментировать
  • Как в одном белом IP сделать несколько сайтов?

    erge
    @erge
    Примус починяю
    настроить записи поддоменов 3го уровня в DNS сервере
    настроить IIS на эти поддомены.

    как-то так.
    https://support.microsoft.com/ru-kz/help/324260

    в гугле есть подробнее и поновее, принципе тот же.
    Ответ написан
  • Как декодировать текст из unicode в xml файле?

    erge
    @erge
    Примус починяю
    Dunno2018,
    • вставляйте тексты - текстом, а не картинками, тут есть специальные тэги
    • декодировать естестсвенно можно!


    Кириллица и не должна отображаться, это НЕ UTF-8, это Unicode, как бы это разные вещи.

    вопрос каким средствами вы располагаете??
    от этого зависит каким образом декодировать!


    т.к. исходных данных нет, то, как пример - онлайн декодировщик:
    https://unicode-table.com/ru/tools/decoder/

    для того чтобы текст привести в нормальный вид и декодировать необходимо заменить все
    ;&#x на \u0 и &#x на \u0

    полученный текст подставляете в декодер.

    UPD:
    Вот пример декодирования первой строки на Python
    a = u'\u041a\u0432\u0430\u0440\u0442\u0438\u0440\u044b \u043D\u0430'
    print a.encode('UTF-8')

    результат:
    Квартиры на

    UPD2:
    Написал однострочный перекодировщик на bash + python
    Перекодировка текста в xml из unicode в utf-8
    cat /tmp/1.xml | sed 's/\&#x\([^;]\{1\}\)\([^;]\{2\}\);*/\\u0\1\2/g' | python3 -c "import sys; s = sys.stdin.read(); print (s.encode('UTF-8').decode('unicode-escape'))" > /tmp/2.xml


    PS: вроде работает :)
    Ответ написан
    Комментировать
  • Как автоматически задать высоту фрейма?

    erge
    @erge
    Примус починяю
    Про Размеры и прокрутка страницы
    Про Общение между окнами

    Политика «Одинакового источника» говорит, что:

    • если у нас есть ссылка на другой объект window, например, на всплывающее окно, созданное с помощью window.open или на window из и у этого окна тот же источник, то к нему будет полный доступ.
    • в противном случае, если у него другой источник, мы не сможем обращаться к его переменным, объекту document и так далее. Единственное исключение – объект location: его можно изменять (таким образом перенаправляя пользователя). Но нельзя читать location (нельзя узнать, где находится пользователь, чтобы не было никаких утечек информации).



    и есть решение по кроссдоменным iframe
    Автоматическая кросс-доменная установка высоты Iframe

    PS: но скрипты должны интегрироваться на обе стороны, на странице хосте и на странице в ифрейме.

    PPS:
    <iframe src="<?= $link ?>?partnerID=<?= $partnerID ?>" width="100%" height="100%" scroll="no" marginheight="0" frameborder="0" id="<?=$code?>" name="<?=$code?>"></iframe>

    если размеры известны, то их можно и задать в пикселях.
    Ответ написан
    Комментировать
  • Как сделать grep в строке которая содержит точку с запятой; ?

    erge
    @erge
    Примус починяю
    • awk '{print $9}' PPP_genes.gff3.txt | head -3 | cut -d";" -f 3

    • awk '{print $9}' PPP_genes.gff3.txt | head -3 | grep -oP ";\KName=[^;]+"

    • awk '{print $9}' PPP_genes.gff3.txt | head -3 | sed 's/.*\(Name=[^;]*\).*/\1/'

    • [[ '`awk '{print $9}' PPP_genes.gff3.txt | head -3`' =~ .*(Name=[^;]+) ]] &&
          echo ${BASH_REMATCH[1]}

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

    erge
    @erge
    Примус починяю
    • В аттрибут src элемента script нельзя записывать массив!
    • Вы передаете два параметра (адреса), соответственно необходимо создать два элемента script и оба добавить в body


    как-то так:

    function loadScripts(arrScr) {
      arrScr.forEach((src) => {
        var scr = document.createElement('script');
        scr.src = src;
        document.body.appendChild(scr);
      })
    }
    
    if (window.location.href.indexOf('index') != -1) {
         loadScripts(['js/scripts.js', 'js/scripts2.js']);
    }
    Ответ написан
  • Как сделать UI на Bash?

    erge
    @erge
    Примус починяю
    беглый уткопоиск дает сразу же ответ - ui на bash !
    Zenity !

    причем как выяснилось он(а) еще, и уже, установлен(а) (в Linux Mint 18.3)

    и все не просто а очень просто, вот пример окна с формой:
    zenity --forms --title="Add Friend" \
    	--text="Enter information about your friend." \
    	--separator="," \
    	--add-entry="First Name" \
    	--add-entry="Family Name" \
    	--add-entry="Email" \
    	--add-calendar="Birthday"


    zenity-forms-screenshot.png

    результат вовзращается в stdout в csv формате.

    смотрите Руководство Zenity

    UPD:

    так же есть Whiptail для текстовых пользовательских интерфейсов (TUI)
    так же уже есть в системе.

    advmenu.gif

    Bash GUI Whiptail Menu Tutorial Part 1

    А так же Glade
    см. ролики на youtube - BASH Tutorial - Advanced GUI Interface
    Ответ написан
    1 комментарий
  • Почему не редактируются данные в БД?

    erge
    @erge
    Примус починяю
    первичный ключ, которым должен быть по идее id, у вас не указан как primary key, во все строках равен 0 - почему!?

    необходимо поле id сделать первичным ключем, но прежде необходимо либо удалить все строки, либо в каждой строке прописать id инкрементально.

    правда все строки у вас идентичные и их никак не различить...
    поэтому можно сделать так:

    set @i = 0;
    
    update `grey_csgo_gifts_list`
      set id = @i := @i + 1;
    
    alter table `grey_csgo_gifts_list` modify `id` int(11) auto_increment primary key;


    см. пример на dbfiddle
    Ответ написан
    Комментировать
  • Как реализовать поиск подстроки без учёта спец. символов и пробелов?

    erge
    @erge
    Примус починяю
    SELECT *
      FROM tbl
      WHERE replace(replace(replace(replace(name, '.', ''), '/', ''), '-', ''), ' ', '') = '10075153123А310РR';


    если у вас MySQL 8, то можно так.

    SELECT *
      FROM tbl
      WHERE REGEXP_REPLACE(name, '[.\/-[:space:]]', '') = '10075153123А310РR';


    пример на dbfiddle
    Ответ написан
    Комментировать
  • Два переноса строки и как написать update с использованием REPLACE sql?

    erge
    @erge
    Примус починяю
    • зачем вы знак % вставляете?
      PS: знак % работает только в LIKE
    • строка должна заключаться в ' ' (одинарные кавычки), хотя для MySQL может это и не критично
    • вы точно хотите 3 тэга заменить на 1 ?
    • имхо, это вообще не критично - 2 переноса строки, или это требование по феншую? ))


    Все работает
    select
        replace(
           text
          ,CONCAT('</table>', CHAR(10), CHAR(10),'</li>',CHAR(10),'</ul>')
          , '</table>'
        ) as text
      from tbl;
    
    set @a = CONCAT('</table>', CHAR(10), CHAR(10),'</li>',CHAR(10),'</ul>');
    
    update tbl
      set text = replace(text, @a, '</table>');


    пример на sqlfiddle

    UPD:

    Solodukha,
    Если update не обрабатывает строки, это значит только одно:
    • что там переносы строк не CHR(10), либо посмотрите какие там переносы, либо попробуйте CHR(10), CHR(13) = Это один перенос строки (либо наоборот), либо еще как вариант, только CHR(13),
    • либо.. скорее всего после </table> или в тэгах есть побельные символы (пробел, табуляция и пр.) и/или "белые пробелы".


    (но нам то это неизвестно, данные у ВАС)


    Поэтому:
    • Либо разбор текста будет более сложный, необходимо строчными функциями искать table внутри li , сабстринг и пр. что как бы заморочно, оформлять это скорее всего хранимой процедурой.
    • Либо писать скрипт на чем угодно (bash, php, perl, python ... etc), выбирать записи и построчно: обрабатывать регуляркой, записывать обратно в бд.
    • Либо, ЕСЛИ у вас MySQL 8, все это можно сделать в БД, одним запросом используя REGEXP_REPLACE():

      примерно так:
      update tbl
        set text = REGEXP_REPLACE(
           text
          ,'<[[:blank:][:space:]]*\/table>[[:blank:][:space:]]+<[[:blank:][:space:]]*\/li>[[:blank:][:space:]]+<[[:blank:][:space:]]*\/ul>[[:blank:][:space:]]*'
          ,'</table>'
          )

      см. на dbfiddle



    другого, имхо, не дано...
    Ответ написан
    7 комментариев
  • Как хранить в терминале ubuntu только уникальные команды?

    erge
    @erge
    Примус починяю
    longclaps либо настроить хистори - Руслан Федосеев
    + так же, полезная штука:
    в консоли можно нажать Ctrl+r
    появится приглашение
    (reverse-i-search)`':
    вводите часть названия команды или кусок параметров какой либо команды которую вы вызывали раньше и вам выдаст всю команду целиком
    повторное нажатие Ctrl+r выдача следующей совпадающей команды
    нажатие стрелок влево вправо - выходим в консоль с найденной командой, можем поправить параметры вызова например.
    нажатие enter - соответственно сразу выполнить
    Ответ написан
    Комментировать
  • Как сделать группировку запроса с пустыми записями?

    erge
    @erge
    Примус починяю
    Необходимо было чтобы в правой таблице, которая райтджойнится, были ВСЕ значения по которым вы хотите получить данные и которые группируются, т.е. в ней должны быть все user_id и все возможные (нужные для выборки) mode
    для этого делается что?
    делается декартово произведение (cross join), чтобы получить такую "матрицу"
    venn-cross-join1.png

    SELECT * FROM
      (SELECT user_id FROM tbl GROUP BY user_id) u,
      (SELECT 1 as mode UNION SELECT 2) m
    ;


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

    в итого запрос будет такой:
    SELECT t2.user_id, t2.mode, SUM(COALESCE(f1,0)) as f1, SUM(COALESCE(f2,0)) as f2
      FROM tbl t1
      RIGHT JOIN (
        SELECT * FROM
          (SELECT user_id FROM tbl GROUP BY user_id) u,
          (SELECT 1 as mode UNION SELECT 2) m
        ) t2 ON t2.user_id = t1.user_id AND t2.mode = t1.mode
      GROUP BY t2.user_id, t2.mode
      ORDER BY t2.user_id, t2.mode
    ;


    работающий пример на sqlfiddle

    как-то так.

    UPD
    PS:

    скорее всего имеется некая таблица users, тогда в кроссджойн не надо использовать саму же таблицу (SELECT user_id FROM tbl GROUP BY user_id) u1, а к таблице user закроссить (SELECT 1 as mode UNION SELECT 2) m и залефтджойнить подопытную таблицу.

    получим как-то так:

    SELECT u.user_id, u.name, m.mode, SUM(COALESCE(f1,0)) as f1, SUM(COALESCE(f2,0)) as f2
      FROM
        users u
      CROSS JOIN (SELECT 1 as mode UNION SELECT 2) m
      LEFT JOIN tbl t ON u.user_id = t.user_id AND m.mode = t.mode
      GROUP BY u.user_id, u.name, m.mode
    ;


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

    см. пример на sqlfiddle
    Ответ написан
  • Сортировка по просмотрам за день / неделю / месяц - как построить запрос?

    erge
    @erge
    Примус починяю
    Примерно, как-то так, если не ошибаюсь:

    SELECT
          `ID`
        , `post_title`
        , pv30.cnt_month
        , COALESCE(pv7.cnt_week, 0) cnt_week
        , COALESCE(pv1.cnt_day, 0) cnt_day
      FROM `wp_posts` AS p
      INNER JOIN (
        SELECT id, count(id) cnt_month
          FROM `wp_post_views` pv
          WHERE pv.time >= CURDATE() - INTERVAL 30 DAY
          GROUP BY pv.id
        ) AS pv30
        ON pv30.id = p.id
      LEFT JOIN (
        SELECT id, count(id) cnt_week
          FROM `wp_post_views` pv
          WHERE pv.time >= CURDATE() - INTERVAL 7 DAY
          GROUP BY pv.id
        ) AS pv7
        ON pv7.id = p.id
      LEFT JOIN (
        SELECT id, count(id) cnt_day
          FROM `wp_post_views` pv
          WHERE pv.time >= CURDATE() - INTERVAL 1 DAY
          GROUP BY pv.id
        ) AS pv1
        ON pv1.id = p.id
      ORDER BY pv30.cnt_month DESC, pv7.cnt_week DESC, pv1.cnt_day DESC
      LIMIT 10;
    Ответ написан
    1 комментарий
  • Как удалить содержимое тега через mysql?

    erge
    @erge
    Примус починяю
    1. версия MySQL ???
    2. Александр Пунченко, а как же
    itemprop="name"
    ??

    Можно удалить используя регулярные выражения, если ваш MySQL их поддерживает.
    Если у вас MySQL 8
    то можно так:

    UPDATE wp_posts
      SET post_content = REGEXP_REPLACE(
        post_content,
        '<h1[^>]+>[a-zа-я[:space:][:digit:][:punct:]]+</h1>[[:space:]]*',
        ''
        );

    PS: удалит ВСЕ тэги h1 с содержимым.
    если надо иначе поправьте.


    пример выполнения на dbfiddle.

    см. MySQL Regular Expressions

    Если нет, то все будет долго и муторно...

    примерно так...
    - читаете запись.
    - определяете строчными функциями где начинается тег в тексте, где заканчивается.
    - вырезаете.
    - записываете
    все это можно реализовать в хранимой процедуре.
    либо на внешнем языке и тогда второй-третий пункт так же на регулярках сделать.
    Ответ написан
    3 комментария
  • Можно ли в JQuery (или чистом JS) создать переменную, которая будет соответствовать DOM? То есть, если элемента больше нет в DOM, то и length равен 0?

    erge
    @erge
    Примус починяю
    // Выдает 1, а должно 0.


    Не должно!
    Потому что .remove()
    Remove the set of matched elements from the DOM.
    т.е. удаляет набор соответствующих элементов из DOM

    что успешно и выполняется.
    но т.к. вы сделали ссылку на этот элемент
    let $elem_1 = $('.elem-2').prev();
    он продолжает существовать и будет удален когда исчезнет последняя ссылка на него.

    нужно удалить ссылку на объект, например так:
    $elem_1 = null;

    т.е. при удалении из DOM, удалять так же и ссылку из переменной:
    $('.elem-1').remove();
    $elem_1 = null;


    так же, если вы объявите саму переменную как свойство какого либо объекта, то ее можно удалить.
    если за функцией то достаточно это сделать без var или let/const, тогда эта переменная будет свойством window
    либо в функции как window.$elem_1
    см. delete

    т.е. в коде вы должны удалять не только из DOM методом .remove(), но и само свойство ("переменную").

    $(function() {
      window.$elem_1 = $('.elem-2').prev();
    
      delete window.$elem_1;
      $('.elem-1').remove();
    
      console.log(window.$elem_1.length);
      // TypeError: window.$elem_1 is undefined
    });


    PS: можно создать объект с соответствующими свойствами и методами и пользоваться методами этого объекта.

    например как-то так:

    $obj = {
    	$elem: null,
      set: function (el) {
      	this.$elem = el;
      },
      del: function() {
      	$(this.$elem).remove();
      	delete this.$elem;
      },
      isExists: function() {
      	return !!this.$elem;
      }
    }
    
    $obj.set( $('.elem-2').prev() );
    
    console.log($obj.isExists(), $obj.$elem.text());
    
    $obj.del();
    
    console.log($obj.isExists());


    объект можно переделать и хранить массив элементов, соответственно переделать и методы манипуляции.

    похожие механизмы реализованы например в React.js
    там есть свой виртуальный DOM с которым и производится манипуляция, которая в последствии переносится на реальный DOM методом render
    Ответ написан
    Комментировать
  • Можно ли как-нибудь получить селектор из JQuery объекта? Или как еще решить такую задачу?

    erge
    @erge
    Примус починяю
    $clone.find($block).css('color', 'red');

    не работает, потому что $block это ссылка на JQuery объект, которого нет в $clone, потому что это копия - новый другой объект и он != $original, поэтому в нем нет объекта $block
    $clone и $original это два объекта, которые равны лишь по innerHTML, но это два разных объекта.

    можно получить индекс элемента $block в наборе и работать в клоне с индексом:
    $clone.children().eq($block.index()).css('color', 'red');


    либо хранить в переменной не объект $('.block:nth-of-type(2)'), а сам селектор '.block:nth-of-type(2)'
    и соответственно работать с ним:

    const block = '.block:nth-of-type(2)';
      
    // ........
    
    $clone.find(block).css('color', 'red');
    
    $original.find(block).css('color', 'green');
    Ответ написан
    Комментировать
  • Как создать такой ховер эффект?

    erge
    @erge
    Примус починяю


    PS: решение не мое, найдено и сохранено :)
    Ответ написан
    5 комментариев
  • Как вывести элемент веб-страницы на форму?

    erge
    @erge
    Примус починяю
    примерно как-то так

    • получить снимок экрана браузера
    • получить позицию изображения
    • вырезать captcha из скриншота с помощью opencv
      browser.save_screenshot('screenshot.png')
      img = browser.find_element_by_xpath('//*[@id="captcha"]')
      loc = img.location
      image = cv.LoadImage('screenshot.png', True)
      out = cv.CreateImage((150,60), image.depth, 3)
      cv.SetImageROI(image, (loc['x'],loc['y'],150,60))
      cv.Resize(image, out)
      cv.SaveImage('out.jpg', out)


    • разместить полученную картинку на вашей форме.
    Ответ написан
    Комментировать
  • Как отсортировать полученный массив и создать таблицу?

    erge
    @erge
    Примус починяю
    получаете список этажей
    SELECT floor FROM $pndid GROUP BY floor

    фетчите в массив
    далее цикл по массиву

    в цикле: {
    выводите надпись этажа из элемента массива
    делаете запрос к базе вида:
    SELECT * FROM $pndid WHERE floor = $floor
    фетчите запрос и формируете "клиентскую" таблицу.
    }

    как-то так.

    PS: либо можно обойтись одним запросом, выбрать все что необходимо в JSON
    и далее уже обойти этот JSON
    Ответ написан
    Комментировать