Веб-программинг

Интересное и полезное про PHP, JS, MySQL, PostgreSQL, Docker, Git...

Ctrl + ↑ Позднее
2018   docker

Если Opera перестала воспроизводить видео h264

Такая проблема возникает если плеер в html5.
Установим необходимое расширение:

sudo apt install chromium-codecs-ffmpeg-extra

Далее переходим в директорию chromium-browser и скопируем библиотеку в директорию opera:

cd /usr/lib/chromium-browser
cp libffmpeg.so /usr/lib/x86_64-linux-gnu/opera/

Теперь открываем Opera и проверяем что все работает

Найти все дублированные строки в PostgreSQL

Допустим задача: найти дубли не просто по одному полю, а сразу по нескольким полям. Например, в таблице есть поля user_id и link

id name user_id link
1 Первая запись 226 яндекс.ру
2 Вторая запись 67 гугл.ру
3 Третья запись 315 рамблер.ру
... ... ... ...
3116 Последняя запись 226 яндекс.ру

и необходимо найти все дубли, чтобы совпадали поля user_id и link. В нашем случае, это строки под id=1 и id=3116.
Можно применить следующий sql:

SELECT user_id, link, string_agg(CAST(id AS TEXT), ', ') AS ids, count(user_id) AS count
FROM our_table
GROUP BY user_id, link
HAVING count(user_id) > 1
ORDER BY user_id DESC;

Строка string_agg(CAST(id AS TEXT), ', ') AS ids необходима для того, чтобы конкатенировать id дублированных строк

Как сортировать в PostgreSQL согласно списку конструкции WHERE

Если необходимо осуществить поиск по нескольким ID, например (4, 6, 3, 12). Видно, что список имеет неупорядоченную сортировку, и вывод результата в PostgreSQL необходимо построить согласно этому списку.
Что-то вроде того:

SELECT *
FROM "table"
WHERE id IN (4, 6, 3, 12)
ORDER BY (4, 6, 3, 12)

Т. е. чтобы конечный результат сохранил сортировку id

В данном случае нам поможет следующая конструкция:

SELECT *
FROM "table"
JOIN unnest('{4, 6, 3, 12}'::int[]) WITH ORDINALITY t(id, sort) USING (id)
ORDER  BY t.sort;

Как исключить несколько слов в регулярном выражении

Например, вам необходимо составить выражение, которое разрешит любые нечисловые символы.
Это несложно:

/\D/

или

/[^0-9]/

А если необходимо исключить из поиска определенные слова? Тогда лучше применить Negative Lookaround — позиционную проверку. Подробнее можно узнать здесь.

Если наши слова red и black, то регулярное выражение может выглядеть так:

/^(?!.*(?:red|black))[\D]+$/

Пример можно посмотреть здесь

2018   Lookaround   regexp

Быстрый update всех строк для поля JSONB

Если в поле с типом JSONB необходимо поменять только значения определенного ключа, то быстрая команда:

update "tableName" set columnName = jsonb_set("columnName",'{"ip"}','"192.168.0.1"');
2018   jsonb   jsonb_set   PostgreSQL
2018   git   git pull

Разрешить вводить в input только цифры

Например, если поле для ввода номера телефона, без спец.символов, при этом если не нужно создавать поле с type=number.

Вот вполне рабочий вариант:

<input type="text" oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" >

при этом все неразрешенные символы будут просто игнорироваться

2018   input   oninput   regexp   [^0-9.]
Ctrl + ↓ Ранее