RedOS: обновление ядра Linux

Узнать текущую. версию ядра:

uname -a

Обновить текущее ядро:

dnf update kernel-lt

Удалить старые не используемые ядра, оставив последнее на всякий случай:

dnf remove --oldinstallonly --setopt installonly_limit=2 kernel

Уведомления пользователю в Astra Linux

Накопал несколько способов уведомить пользователя о чём-либо.

1) notify-send

notify-send --urgency normal --expire-time=10000 -i typing-monitor -h int:x:500 -h int:y:500 "Внимание!" "В ITIL висит задача срок которой скоро подходит к концу!"

2) fly-dialog

fly-dialog --passivepopup "В ITIL висит задача срок которой скоро подходит к концу!" 10

3) qdbus

qdbus org.kde.plasmashell /org/kde/osdService showText "" "Уважаемый, у тебя куча инцидентов не закрытых в ИТИЛ!"

На основе этого знания сейчас буду изобретать велосипед, который будет уведомлять сотрудников о не закрытых задачах. Ибо на почту получать всё это не удобно..

JavaScript: улучшаем понимание работы функций

Классически функция объявляется используется примерно так:

function Inc(s,n){
  return s+n;
};

Однако её можно объявить и так:

const Inc=(s,n)=>{
  return s+n; 
}

Кроме того! Можно еще короче, используя не явный return:

const Inc=(s,n)=>s+n;

Такие сокращения мне не очень нравятся (дело привычки больше), но тем не менее их удобно применять в некоторых случаях. Например если необходимо вернуть объект, как результат функции выйдет даже несколько понятнее:

const People=(name,soname,age,comment)=>({
  name:name,
  soname:soname,
  age:age,
  comment:comment
});

aa=People("Вася","Сидоров",18,"Вася обычный школьник")

Или например добавить событие onClick к кнопке на странице при помощи стрелочных функций:

but=document.getElementById('#button1');
but.onclick=()=>{
  console.log("Вася нажал кнопку");
}

Выглядит гораздо проще, чем если бы мы использовали «классическую» запись:

function VasyaPress(){
   console.log("Вася нажал кнопку");
};
but=document.getElementById('#button1');
but.onclick=VasyaPress();

Но! только если код внутри функции не сильно длинный. Иначе всё превращается в кашу.

1С: Поиск элемента справочника с одинаковыми кодами.

1С позволяет создавать элементы справочника (да и документа) с одинаковыми кодами (номерами), в этом случае поиск элемента по типичному:

 справочники.ГруппыПользователей.НайтиПоКоду("123");

Становится невозможным. Есть несколько вариантов решения данной проблемы:

1) Можно поискать по заведомо уникальному реквизиту (если есть):

 справочники.ГруппыПользователей.НайтиПоРеквизиту("Артикул","123");

2) Можно поискать по уникальному идентификатору (если известен):

доко.ТекущийЭтап=Справочники.itilprofЭтапыМаршрутов.ПолучитьСсылку(Новый УникальныйИдентификатор("149e1ab6-325f-11ec-9560-005056be733d"));

3) Можно поискать по сочетанию факторов, которые сделают элемент уникальным (в данном случае по владельцу):

ТекДок.ТекущийЭтап			= справочники.itilprofЭтапыМаршрутов.НайтиПоКоду("Регистрация",,,Справочники.itilprofМаршруты.НайтиПоНаименованию("Инцидент"));

Замена PHP Curl на Wget

Так получилось, что иногда пишу парсеры сайтов на PHP. Использую обычный PHP Curl, густо обмазанный различными вспомогательными классами. Всё было хорошо, но однажды один из скриптов перестал работать. Стал разбираться почему — PHP стал падать с ошибкой сегментирования (segmentation fault) при вызове:

$res=curl_exec($ch);        

Стал разбираться. Выяснил что перестаёт падать после комментирования строчки:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

Явно что-то не так с шифрованием. Вспомнил даже, что нечто подобное уже было. Проверил — точно сайт стал шифроваться по протоколу ГОСТ:

И собственно в тот раз проблема решилась а в этот раз таки уже нет. Когда попробовал добавить ключ с указанием версии шифрования, скрипт стал бесконечно висеть.

curl_setopt ($ch, CURLOPT_SSLVERSION , CURL_SSLVERSION_TLSv1_3);

И из консоли в том числе:

curl --insecure  --tlsv1.3  'https://кацукацук/'

Ну ладно. Пойдем другим путём. Проверив как открывается этот-же сайт при помощи wget, и убедившись, что с ним всё хорошо, понял что при помощи его работа в принципе будет даже проще. Всё свелось к комбинации сточек вида (конкретно тут для примера без обработки ошибок):

function reqwest($url,$param){
        $res=wget --save-cookies cookies.txt --keep-session-cookies --load-cookies cookies.txt '$url' -O tmp.html --post-data '$param' --header 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8';        
        $html= file_get_contents("tmp.html");
return $html
}

1 4 5 6 7 8 299