LINUX.ORG.RU

Избранные сообщения aol

КуМир на Pop_OS и qt4

Форум — Desktop

Добрый день!

На каникулы к девушке в гости приехали сёстры шеольного возраста и, в рамках курса информатики, им необходимо разобраться с КуМир. Пошёл на оф сайт, качнул архив, но проблема в том, что для работы ему требуется некромантия в лице qt4. В репах есть только 5 и 6. Порыл интернет и выяснил, что необходимые пакеты – libqtcore4 libqtgui4 libqt4-svg libqt4-xml и libqt4-script. Подскажите, пожалуйста, откуда бы это всё взять? Интересны также любые советы по теме)

Большое спасибо!

 ,

kirich
()

fproxy v80 — локальный прокси-сервер для фильтрации http(s)-трафика

Новости — Интернет
Группа Интернет

Опубликована 80-я версия кэширующего и антиспамного прокси-сервера для персонального использования c гибкими настройками.

( читать дальше... )

>>> Подробности

 , , ,

firkax
()

В Нижнем Новгороде пройдёт открытая встреча по PostgreSQL

Новости — Конференции и встречи
Группа Конференции и встречи

21 сентября в Нижнем Новгороде пройдёт PGMeetup.NN - открытая встреча пользователей СУБД PostgreSQL. Организует мероприятие компания Postgres Professional, российский вендор PostgreSQL, при поддержке ассоциации iCluster, Международного IT-кластера Нижегородской области. Встреча начнётся в культурном пространстве DKRT в 18:00, вход по регистрации: https://pgconf.ru/202209

Доклады мероприятия:

  • «New TOAST in town. One TOAST fits all» - Олег Бартунов, генеральный директор и сооснователь Postgres Professional;
  • «Способы сжатия данных в PostgreSQL» - Михаил Жилин, руководитель группы производительности департамента внедрения и технической поддержки, Postgres Professional;
  • «Как Common Table Expressions превращает язык SQL в настоящий язык программирования» - Иван Панченко, заместитель генерального директора, сооснователь Postgres Professional.

>>> Подробности

 , , , ,

Stacy
()

Ричард Столлман опубликовал «Введение в GNU C»

Новости — Разработка
Ричард Столлман опубликовал «Введение в GNU C»
Группа Разработка

Ричард Столлман опубликовал электронную книгу «Введение и справочное руководство по GNU C».

Труд за авторством Столлмана, Трэвиса Ротвелла и Нэльсона Биба распространяется по лицензии GFDL-1.3 и позиционируется одновременно и как введениие в язык C, и как справочник непосредственно по диалекту GNU C (т.е. включающему gnu-расширения gcc).

RMS просит сообщать о найденных ошибках, неточностях и непонятных, либо неоднозначно написанных пассажах.

>>> Подробности

 , , , ,

Quote
()

Посоветуйте книгу про алгоритмы

Форум — Development

Сидел себе, говнокодил на всякой скриптухе, но вдруг осознал, что даже процедурную пирамидку в консоль вывести не могу, ибо сложно. А ещё не знаю про всякие пузырьковые сортировки. Посоветуйте книгу, в которой собраны важные/популярные/интересные алгоритмы. Желательно без привязки к языку, а то на условном Brainfuck писать желания нет вообще, мне ближе сишно-паскальное.

 ,

Original_1
()

Написать скрипт для создания HLS в мультиразрешении

Форум — Job

Нужно что-то вроде: https://ottverse.com/hls-packaging-using-ffmpeg-live-vod/ https://docs.peer5.com/guides/production-ready-hls-vod/

Только рабочее.

Необходимо иметь возможность явно задавать:

  • Используемый кодек (нужны и H264, и H265).
  • Количество вариантов сжатия видео (разных разрешений и битрейтов, с этим у меня проблем нет).
  • Аналогично для аудио. AAC с разными битрейтами.

На выходе должен быть плейлист и каталоги с вложенными вариантами.

https://hls-js.netlify.app/demo/ Подобный плеер должен показывать переключения между потоками и т.п.

Я кое-как собрал скрипт способный это делать без звука, но при попытках добавить еще и звук - «Stream map ‘a:0’ matches no streams. To ignore this, add a trailing ‘?’ to the map.» И я хз что с этим делать.

Хочется уже кому-то более умному заплатить денег.

 ,

dk__
()

Сделать копию-бекап строки конфига и изменить активную строку конфига

Форум — Admin

На примере файла /etc/default/grub надо добавить забекапить строку в значение переменной

GRUB_CMDLINE_LINUX
добавить текст
console=tty0 console=ttyS0,115200
.

Текущий вариант решения

sed -e 's/^GRUB_CMDLINE_LINUX=.*/&\n#&/' -e 's/^GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="text2 /' grub

Сейчас получаю такое по результату

GRUB_CMDLINE_LINUX="text2 text1"
#GRUB_CMDLINE_LINUX="text1"

Помогите поправить/сделать красивее.

Спасибо.

 

targitaj
()

QT Статика

Форум — Development

Знаю тема не новая. Много информации как делать статическую сборку QT проекта. Но оно все какое-то старое, и не всегда работает. Хочу уточнить есть ли сейчас более современный способ? Который работает без танцев с бубном. Буду рад если поделитесь ссылками.

 ,

ifuser
()

TDDшники, а расскажите про свою религию?

Форум — Development

Мя тут немного почитал, немного посмотрел и немного поговнокодил, и что-то не складывается каменный цветок. Выглядит оно это ваше TDD как учебная методика, форсирующая приобретение навыков создания тестируемого дизайна и на своём примере показывающая, насколько больно поддерживать хрупкие тесты, но не как реальный способ разрабатывать сложный функционал.

В целом, вопросные тезисы и тезисные вопросы таковы:

  • С чего начинать? Как выбрать фичу, к написанию теста на которую приступить в первую очередь? Как не попасть в ситуацию «написал приёмочный тест вместо красивого чёткого TDD, ну ты лох», о которой многие упоминают, но не рассказывают, как правильно? Практически все мануалы показывают написание теста сразу для фичи верхнего уровня, что, КМК, приёмочным/дымовым тестом и является.
  • Написание теста для функционала, решение которого нетривиально, вынуждает писать тонны заглушек просто чтобы «скомпилируйся наконец уже пожалуйста». Количество заглушек умножается на количество «baby steps» при рефакторинге и добавлении новых тестов, генерируя адский объём механической работы. Определённо, значительная часть таких затыков порождена моей дизайнерской криворукостью, но мя не вижу способа полностью избежать этого рака.
  • Как TDD предлагает «пробивать» инкапсуляцию, когда функционал под тестом оказывается нетривиальным и требует вынесения части функционала в новую сущность? Многие статьи демонстрируют погрузку болта на внутреннюю сложность реализации, тестируя только контракт, что выглядит очевидно неправильным. Имеет ли концептуально реализация право порождать новый тест? Нужно ли, когда в ходе рефакторинга или позеленевания тестов требуется создать что-то новое, откладывать текущую работу над реализацией и идти писать новый тест для свежеобозначившейся проблемы? Что делать, когда поймёшь, что погряз в огромном объёме некомпилируемого кода и незапускающихся тестов?
  • Некоторые авторы предлагают следующий рекурсивненький жизненный цикл: ставим задачу верхнего уровня, решаем её. Если не удаётся за вменяемое время написать тест/реализацию, дропаем текущие наработки, собираем митап и распиливаем её на подзадачи, далее работаем с ними. Это выглядит минимально-рабочим, но вызывает вопросы: как планировать время на реализацию фичи, как рефакторить функционал более верхнего уровня, если он окажется концептуально неправильным, как избежать лавинообразного рефакторинга с проблемой кучи некомпилируемого кода, чем безумно дорогая по времени перековка какашки в конфетку лучше, классического предварительного планирования с UML и быстрого написания прототипов отдельных штуковин.

TLDR: «под капотом» TDD очень сильно напоминает наивное «не надо ничего планировать, щас что-нибудь в процессе выдумаю», прикрытое сверху идеологией тестирования и горстью баззвордов. При попытке использовать его на не-совсем-тривиальном-проекте, который уже нельзя полностью держать в памяти, количество забытых нереализованных фунций и количество неожиданно всплывающей работы по рефакторингу и реимплементации превышают все мыслимые пределы. Это выглядит полезным для обучения, но не для реальной разработки.

Change my mind, как говорится, если есть желание. Мя ещё не зафиксировал какого-то конечного мнения о сабже, но первые впечатления смешанные.

 , ,

izzholtik
()

Sender address rejected: not owned by auth user

Форум — Admin

Добрый день. Имеется проблема при отправки системных сообщений с одного из серверов:

otrs@otrs.local: Sender address rejected: not owned by user support@ex.ru

Как я понимаю происходит проверка на принадлежность имени хоста и пользователя. Хост otrs@otrs.local Отправка письма от support@ex.ru

Можно ли обойти этот момент созданием исключений или еще каким-либо способом?

Используется Postfix 2.9.3

сейчас используется такая проверка: smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch, reject_sender_login_mismatch, permit_sasl_authenticated, permit_mynetworks, check_sender_access hash:/etc/postfix/sender_access, reject_non_fqdn_sender, reject_unkn own_sender_domain

Системные сообщения за пределы домена не планирую отсылать.

 

svdvovan
()

kubernetes развернуть с нуля

Форум — Admin

всем привет.

подскажите плиз.

перечитал много статей и какая то каша в голове.

как развернуть с нуля kubernetes?

что лучше для продакшна?

 

carter
()

Pi-KVM вышел на Kickstarter

Новости — Hardware and Drivers
Pi-KVM вышел на Kickstarter
Группа Hardware and Drivers

Спустя год после первого релиза, Pi-KVM представил свое собственное железо на Kickstarter.

Pi-KVM - это проект, объединяющий в себе софт и инструкции, которые позволяют превратить Raspberry Pi в полностью функциональный IP-KVM. Это устройство подключается к HDMI- и USB-портам сервера, и позволяет управлять им удаленно по сети, независимо от операционной системы. Можно включить, выключить или перезагрузить сервер, настроить BIOS и даже полностью переустановить ОС с образа на эмулированном виртуальном носителе. Вся функциональность (в том числе и передача видео) доступна через веб-интерфейс, не требующий никаких дополнительных плагинов и апплетов, и реализованный только средствами HTML5.

( читать дальше... )

>>> Подробности

 , , , ,

liksys
()

Самодельная UNIX-сокетная шина vs DBUS

Форум — Development

Добрый день! Есть встраиваемый сетевой девайс на linux kernel 4.14.40. Есть небольшое число микросервисов (userspace-бинарей, всего их 4-6 программ). Нужно организовать между ними IPC. Есть ли смысл интегрировать DBUS если количество микросервисов небольшое? Или легче сделать что-то самодельное через UNIX-сокеты или может пайпы, shared memory. Что посоветуете? Заранее спасибо!

 , , , ,

Andy041292
()

Чем пользуетесь из F-Droid?

Форум — Mobile

Собственно сабж. Третий андрофон. В первый раз ставил из него судоку. Во второй: блокнот. В этот раз: «Транзистор» для прослушивания радио.

А кто чем ещё пользуется?

 ,

AlexVR
()

Немонстроузный web-проигрыватель бесконечного DASH потока с IP камеры.

Форум — Web-development

Все говнобраузеры до сих пор не умеют в RTSP и даже не умеют нормально проигрывать бесконечный поток. Какое-то позорище натуральное. Бесконечный поток с камеры, например, поставленный на паузу вообще ни разу не должен продолжаться с той самой секунды когда его остановили. Внезапно. А должен продолжаться при снятии с паузы с самого последнего принятого keyframe. И браузеру нахер не нужно сжирать всю память пытаясь сохранить всё, что было передано с момента нажатия на паузу. Но, видимо, для браузерописцев эти элементарные вещи совершенно недоступны для понимания, и в результате реализация HTMLVideoElement’а, что в хроме, что в фаерфоксе является полным говном.

Для проигрывания таких потоков вебмакаки используют монстроузные жирнющие жабоскриптные плееры, которые фактически с ложечки кормят HTMLVideoElement загружаемыми кусочками видео, обычно DASH или HLS.

Оказалось что самый маленький плеер умеющий проигрывать multiple-file-DASH видео (openplayer.js) весит 167 килобайт, сцуко! И это минифицированный вариант! Чему там можно столько весить я нихрена не понял. Про «референсный» dash.js я вообще молчу. Это лютейший звездец размером больше полмегабайта в минифицированном виде. Мелкософтовский пример жабоскриптного DASH-плеера заточен на single-file-DASH. А ffmpeg c -single_file 1 пишет поток на диск бесконечно, засирая диск далеко не всегда нужным видеомусором.

Разумеется, как всегда, когда дело касается вебни, чтобы решить элементарную проблему, вместо того, чтобы взять какой-нибудь эталонный микроскопический плеер, пришлось быстренько изобрести велосипед. Разумеется, всё легко влезло в смешные 5 килобайт, причём в неминифицированном виде.

Вот велосипед:

Жабоскрипт:

'use strict'

function Dash( id )
{
    var _ = this;
    _.v = document.getElementById( id );
    var url = _.v.src;
    _.v.src = undefined;
    var slash = url.lastIndexOf("/");
    _.path = url.substring( 0, slash + 1 );
    _.mpd = url.substring( slash + 1 );
    _.init = true;
    _.xhr = [];
    _.load_mpd( false );
    _.video_update  = function() { _._video_update(); };
    _.video_updated = function() { _._video_updated(); };
    _.video_updating = false;

    _.v.addEventListener( 'click', _.toggle.bind(_), false );

    _.v.addEventListener( 'pause', function ()
    {
        console.log( 'paused' );
        this.removeEventListener( 'timeupdate', _.video_update );
        if( _.videoSource.updating ) _.videoSource.abort();
        _.xhr.forEach( function ( xhr ) { xhr.abort(); } );
    }, false);

    _.v.addEventListener( 'play', function()
    {
        console.log( 'playing' ); 
        this.addEventListener( 'timeupdate', _.video_update, false );
    }, false);

    _.v.addEventListener( 'ended', function()
    {
        console.log( 'ended' );
        this.removeEventListener( 'timeupdate', _.video_update );
    }, false);

    _.v.addEventListener( 'error', function(e) { console.log( 'video error: ' + e ); }, false );
    _.v.addEventListener( 'emptied', function() { console.log( 'emptied' ); }, false );
}

Dash.prototype.play = function() { this.load_mpd( true ); }
Dash.prototype.stop = function() { this.v.pause(); }
Dash.prototype.toggle = function()
{
    if( this.v.paused == true ) this.play();
    else                        this.stop();
}

Dash.prototype.mpd_parse = function( data )
{
    var _ = this, e, g;
    e = data.querySelectorAll("Representation")[0];
    g = e.getAttribute.bind( e );
    _.id        = g( 'id' );
    _.mimetype  = g( 'mimeType' );
    _.codecs    = g( 'codecs' );
    _.width     = g( 'width' );
    _.height    = g( 'height' );

    e = data.querySelectorAll( 'SegmentTemplate' )[0];
    g = e.getAttribute.bind( e );
    _.timescale = g( 'timescale' );
    _.ini       = g( 'initialization' );
    _.seg       = g( 'media' );
    _.start     = g( 'startNumber' );

    _.ini = _.ini.replace( '$RepresentationID$', _.id );
    _.seg = _.seg.replace( '$RepresentationID$', _.id );

    _.duration = [];

    data.querySelectorAll("S").forEach( function( v, i )
    {
        _.duration[i] = v.getAttribute( 'd' ) / _.timescale;
        if( i == 0 ) _.ts = v.getAttribute( 't' );
    } );
}

Dash.prototype.load_mpd = function( start )
{
    var _ = this;
    _.xhr[0] = new XMLHttpRequest();
    _.xhr[0].onreadystatechange = function ()
    {
        if( this.readyState != this.DONE ) return;
        if( this.status != 200 ) return;

        var parser = new DOMParser();
        var xmlData = parser.parseFromString( this.response, 'text/xml' );

        _.mpd_parse( xmlData );

        if( start )
        {
            _.video_updating = false;
            _.num = parseInt( _.start ) + 1;
            _.ts_current = _.v.currentTime;
            _.load_seg();
        }

        if( _.init )
        {
            _.v.width  = _.width;
            _.v.height = _.height;
            _.mediaSource = new window.MediaSource();
            _.mediaSource.addEventListener( 'sourceopen', function (e) {
                _.videoSource = _.mediaSource.addSourceBuffer( _.mimetype + '; codecs="' + _.codecs + '"' );
                _.videoSource.mode = 'sequence';
                _.videoSource.addEventListener( 'updateend', _.video_updated, false );
                _.load_ini();
            }, false );
            _.v.src = URL.createObjectURL( _.mediaSource );
        }
    }
    _.xhr[0].open( 'GET', _.path + _.mpd );
    _.xhr[0].send();
}

Dash.prototype.append = function( f )
{
    var _ = this;
    _.xhr[1] = new XMLHttpRequest();
    _.xhr[1].responseType = 'arraybuffer';
    _.xhr[1].onreadystatechange = function ()
    {
        if( this.readyState != this.DONE ) return;
        if( this.status != 200 ) return;
        _.videoSource.appendBuffer( new Uint8Array( this.response ) );
    };
    _.xhr[1].open( 'GET', _.path + f );
    _.xhr[1].send();
}

Dash.prototype.load_ini = function()
{
    this.append( this.ini );
}

Dash.prototype.load_seg = function()
{
    var n = this.num.toString();
    if( n.length < 5 ) n = ( '0000' + n ).slice( -5 );
    this.append( this.seg.replace( '$Number%05d$', n ) );
}

Dash.prototype._video_update = function()
{
    var _ = this;
    if( _.video_updating ) return;
    var i = _.num - _.start;
    if( _.v.currentTime >= _.ts_current - _.duration[i] * 0.5 )
    {
        _.video_updating = true;
        _.load_seg();
    }
}

Dash.prototype._video_updated = function()
{
    var _ = this;

    if( _.init ) { _.init = false; return; }

    if( _.v.paused == true )
    {
        _.v.currentTime = _.ts_current;
        _.v.play();
    }
    _.ts_current += _.duration[ _.num - _.start ];
    _.num++;
    if( _.num - _.start >= _.duration.length - 1 ) _.load_mpd( false );
    _.video_updating = false;
}

Страничка:

<HTML>
<HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" content="no-cache">
<META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8">
<SCRIPT src="tiny-dash.js" type="text/javascript"></SCRIPT>
<SCRIPT>
var dash;
window.addEventListener( 'load', function() { dash = new Dash( 'dashvideo' ); }, false );
</SCRIPT>
<TITLE>Camera stream</TITLE>
</HEAD>
<BODY bgcolor="#000000" text="#c0c0c0">
<VIDEO id="dashvideo" src="media/manifest.mpd" preload="none">No video available</video>
</DIV>
</BODY>

На серваке из-под nobody запустить

#!/bin/sh

stream="rtsp://host:port/ch0_264"
target="/где.там.страничка.лежит/media/manifest.mpd"

/usr/bin/ffmpeg \
-probesize 32 \
-loglevel quiet \
-i "${stream}" \
-an \
-c:v copy \
-f dash \
-window_size 4 \
-extra_window_size 1 \
-min_seg_duration 2000000 \
-remove_at_exit 1 \
"${target}"

В /где.там.страничка.лежит/media лучше примонтировать tmpfs - и шустро, и диск не трогает.

Длительность сегмента и размер окна можно подкрутить, если канал убогий.

Для руления плеером из жабоскрипта есть методы Dash.play(), Dash.pause() и Dash.toggle(). Всякие кнопки и украшательства добавляются по вкусу.

Работает в хроме и фаерфоксе. Задержка, разумеется есть, но без неё, увы, при воспроизведении DASH не обойтись.

Решение отлично подходит для камер, которые нафиг не нужно куда-то записывать, но которые хотят смотреть много (и даже очень много) людей одновременно. HTTP сервер всего лишь раздаёт не особо большие файлики из tmpfs, так что нагрузка минимальна.

В принципе, это всё несложно использовать для организации self-hosted zoom при минимальной доработке - нужно только организовать передачу потоков с вебок на сервер (да хоть через netcat), а там их так же раскладывать в сегменты ffmpeg’ом.

Лицензия - WTFPL

ЗЫ: Хотел в теги добавить ещё «копрофилию» но ограничение на 5 тегов испортило всю малину.

ЗЗЫ: Это, кстати, эксклюзив специально для ЛОР. :) Нигде больше публиковать это я не собираюсь.

 , , , ,

Stanson
()

Выбор принтера в офис в 2021

Форум — General

HP совсем лютовать стали. Чипы стали лютейшие, совместимок нет. Цены конские. Модели меняют раз в пол года…

Киасера - очень хлипкие, не удобные.

Есть что-то годное сейчас? Что-то на подобии hp 3015 dn.

 ,

DALDON
()

Встречайте свободного убийцу MessagEase: 8VIM

Форум — Mobile

На самом деле это клон заброшенного проприетарного 8Pen, которому уже лет 10 в обед, ага.

Программа весьма сыровата, но в целом уже юзабельна, и метит в полноценную клавиатуру со всеми нужными хацкерам кнопками.

Буквально на днях случайно обнаружили, когда заглянули в F-Droid за Vi IMproved Touch :P

https://www.8vim.com/

cast --multiple @t184256, @Yareg, @Tweaker, @I60R, @zl0y, @vsn, @HerrWeigel

 , , , ,

mertvoprog
()

Представлено MyCompany - бесплатное и открытое решение для небольшого бизнеса

Новости — Open Source
Группа Open Source

Несколько дней назад было представлено открытое и бесплатное решение MyCompany, которое реализует основные бизнес-процессы малого бизнеса. Оно полностью бесплатно, выпускается под Apache лицензией, и ее исходники находятся на Github. Решение легко устанавливается и поддерживает российское законодательство.

В качестве системы управления базой данных используется PostgreSQL. На сервере решение устанавливается и запускается как Java приложение, состоящее из сервера приложений и веб-приложения под управлением Apache Tomcat. В качестве GUI может использоваться как веб-интерфейс, так и десктоп-клиент, запускающийся через Java Web Start.

Демо-версию с заполненными данными можно посмотреть по адресу https://demo.lsfusion.org/mycompany-ru. Авторизация по указанной ссылке отключена.

В решении реализован складской учет, управление заказами поставщиков и покупателей, учет платежей и задолженностей, фиксация производства и спецификаций, интерфейс POS, скидки, прайс-листы и многое другое.

Поддерживается несколько валют и собственных компаний. Реализованы печатные формы УПД, ТОРГ-12 и ТОРГ-13, интеграция с ЧЗ, КриптоПро, сервисом DaData.

Решение разработано на базе открытой и бесплатной платформы lsFusion (лицензия LGPL), имеет модульную архитектуру и легко дорабатывается под необходимые требования.

>>> Подробности

 erp-системы, , mycompany, бизнес-приложения

CrushBy
()

КриптоПро (cptools) не запускается у второго пользователя

Форум — Admin

Доброго времени суток.

На ПК установлена ОС AltLinux P9 с ISO alt-p9-cinnamon-20201212-x86_64.iso

На данный дистрибутив, по статье с wiki был установлен КриптоПро. Использован дистрибутив КриптоПро 5 (5.0.11455, последняя Сертифицированная версия КриптоПро CSP 5.0.11455 (Fury) от 8.05.2019) , полученный из личного кабинета КриптоПро. Была установлена ГУИ cptools (apt-get install cprocsp-cptools-gtk*).

На ПК сотрудники будут работать в несколько смен (не подразумевается одновременная работа, а поочередная работа пользователей, с авторизацией каждого пользователя под своей учетной записью).

После установки запускаем утилиту у пользователя «Пользователь1» через «Пуск» -> «Параметры» -> «Инструменты КриптоПро» - утилита cptools запускается, всё в порядке.
Заходим на данную машину под другим пользователем «Пользователь2», запускаем утилиту через «Пуск» -> «Параметры» -> «Инструменты КриптоПро» - утилита cptools НЕ запускается.
При попытке запуска у пользователя «Пользователь2» утилиты cptools через терминал видим вывод у терминале:

double free or corruption (top)
Аварийный останов

Запускаем у пользователя «Пользователь2» утилиту cptools воспользовавшись strace и видим, что cptools пытается обратиться к файлам в каталоге /var/opt/cprocsp/tmp/. Так как файлы уже созданы и владельцем созданных файлов является «Пользователь1», то у пользователя «Пользователь2» возникает ошибка «Операция не позволена (1)».

Если под пользователем «root» очистить каталог /var/opt/cprocsp/tmp/ от содержащихся файлов, то у пользователя «Пользователь2» утилита cptools успешно запустится, но при этом перестанет запускаться у пользователя «Пользователь1». Ну далее последовательность вы поняли.

Задал вопрос на форуме AltLinux - как бороться с данной проблемой, ответ пока не получил.
Задал вопрос на форуме КриптоПро - как бороться с данной проблемой, ответ так же пока не получил.

Кто-нибудь сталкивался с такой проблемой? Как можно вылечить данную ситуацию?

 

ivanlex
()

Анонс платы IcepeakITX ELBRUS-8CB

Новости — Hardware and Drivers
Группа Hardware and Drivers

Тихо и незаметно загадочная группа неустановленных лиц готовит к выходу ориентированную на безопасность материнскую плату на базе процессора Эльбрус-8СВ.

( читать дальше... )

>>> Подробности

 ,

alexanius
()