Firefox открывает сайт по не по тому IP который прописан в hosts

В силу специфики своей работы, иногда бывает необходимо чтобы страница по DNS имени открывалась не по тому IP по которому ресолвится DNS сервером. Ну например есть два сервера: dev и prod, и что-бы переключиться между ними можно поправить запись в файле host. Годами всё работало корректно, и тут вдруг неожиданно перестало. Ларчик открывается просто: Firefox с очередным обновлением стал включать сервис DNS over HTTPS по умолчанию. Отключив её, всё встало на свои места

pgsql: функция генерации пароля

Задача: сбросить у всех пользователей пароль

Решение: воспользуемся функцией генерации пароля:

DECLARE
   vPassword text;
   chars text;
BEGIN
   vPassword := ''; 
   chars := 
'@#$%*abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  WHILE((select COALESCE(substring(vPassword from '.*[a-z]+.*'),'')) = '' OR (select COALESCE(substring(vPassword from '.*[A-Z]+.*'),'')) = '' OR (select COALESCE(substring(vPassword from '.*[0-9]+.*'),'')) = '') LOOP
  vPassword := '';
   FOR i IN 1..12 LOOP
     vPassword := vPassword || SUBSTRING(chars, ceil(random()*LENGTH(chars))::integer, 1);
  END LOOP;
   END LOOP;
   return vPassword;
END;

NetBeans 14 и поддержка Python

Начиная с версии 8.1, python плагины не поддерживаются официально и установить из самой IDE их нельзя, однако неофициальные плагины таки существуют.

Скачать пакет с плагинами можно здесь

Установка: Tools -> Plugins -> Downloaded -> Add Plugins

PostgreSQL: вывод числа в виде значения часы:минуты:секунды

Задача: в одной из колонок хранятся секунды в виде значения int, необходимо при выводе преобразовать их по маске hh:mm:ss

Решение:

TO_CHAR((docs_charge.duration || ' second')::interval, 'HH24:MI:SS') as duration

Selenium: дождаться окончания всех закачек в браузере

К сожалению стандартного API нет для того чтобы получить данные о текущих закачках. Потому как вариант можно отслеживать наличие файлов с расширением crdownload:


save_path="X:\\new\\";

async function sys_sleep(ms) {
  return new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
};

(async () => {
    const fs = require('fs');
    yet=true;
    while (yet==true) {
        console.log("--ждём пока не закончатся все закачки...");
        fs.readdir(save_path, (err, files) => {
          cnt=0;  
          files.forEach(file => {
            console.log(file);
            if (file.indexOf('down')>0){cnt++;};
          });
          if (cnt==0){
            console.log("Дождались..");  
            yet=false; 
          };
        });
         await sys_sleep(1000);
    };
})();
1 10 11 12 13 14 55