LINUX.ORG.RU

Сообщения dmitryshm

 

подработка для сисадминов

Требуются 2 системных администратора для поддержки распределённой системы одного предприятия с более 10 филиалами по всей Москве. Стабильная подработка на весь 2022 год за 150000р. каждому с регулярными местными командировками с целью выполнения SLA.

Ниже перечень ПО, применяемого в системе. CISCO IOS v12, Windows Server 2003 R2, Windows Server 2008, Windows 7, VMWare vSphere Client, VMWare VCenter Server, VMWare ESXi, Veeam backup, Intel Shared LUN, Intel Modular Server Control, ASDU Shell, ASDU TEC.G32, ASDU NPS.G32, ASDU K.G32, ASDU CTP.G32, ASDU RDP.G32, ASDU SwitchDWX, ASDU PPU.G32, ДЭП WinDecont, ДЭП WDeConfig, ДЭП WDeveloper, ServEn.UPS.RDP, ICONICS GraphWorX32, ICONICS TrendWorX32, ICONICS TrendWorX32 Viewer, ICONICS AlarmWorX32, ICONICS DataWorX32, ICONICS GenBroker, ICONICS Licensing, ICONICS Security, различное служебное ПО для тестирования и отладки протоколов OPC, различное служебное ПО для работы с камерами слежения.

 , , , ,

dmitryshm
()

cvsd loginfo не отрабатывает

Одна контора до сих пор использует CVS. Чтобы автоматизировать проверку коммитов в main trunk мне необходимо прописать команды в CVSROOT/{commitinfo,verifymsg,loginfo}. Это сделал коммитом с cvs-клиента и убедился, что файлы попали на cvs-сервер.

Для имитации окружения, используемого в разработке, сделал стенд с виртуалкой Debian 9 amd64, куда поставил cvsd (работает в chroot) с аутентификацией pserver.

Команды commitinfo и verifymsg отрабатывают, а в loginfo - нет. И ошибок не выдаёт, будто команд вообще нет. Вопрос - почему? Если кто сталкивался - пожалуйста направьте.

 

dmitryshm
()

использование библиотек с несколькими архитектурами на одной машине

Имеется необходимость собирать ПО в Ubuntu 16.04 с библиотеками под i386 и amd64. Но есть проблема, что некоторые библиотеки конфликтуют, если пытаться ставить под обе архитектуры. Например у меня не получилось установить libnet-dev:i386 вместе c libnet-dev:amd64.

Т.к. для сборки используем docker, то проблему решили использованием 2 разных контейнеров, созданных из образа ubuntu:16.04, каждый из которых предоставляет своё окружение для сборки: для i386 и amd64.

Вопрос. Есть ли более красивое решение вышеописанной задачи?

 , ,

dmitryshm
()

tcpdump и вывод с выбором порядка байт

Каким образом при использовании tcpdump с выводом в бинарный файл обеспечить определённый порядок байт, задавая в параметрах ключи соответственно для big endian или little endian?

 

dmitryshm
()

как проиграть стерео, чтобы было слышно только в каналах BL+BR

Имеется файл на диске в контейнере wav, в котором содержится стерео-аудио. К компьютеру подключены 4 колонки, соответствующие каналам FL+FR (первая пара колонок) и BL+BR (вторая пара колонок).

Если с помощью ffplay проиграть вышеописанный файл, то звук будет слышно во всех 4 колонках. Если оставить только колонки, соответствующие каналам FL+FR, то стерео будет слышно в них. Если подключить моно-колонку, то аудио смешается и будут слышны все звуки стерео в эту моно-колонку.

Теперь вопрос. С помощью какой команды надо проиграть файл со стерео, чтобы при подключенных 4 колонках все звуки стерео было слышно в каналах BL+BR без потерь звука (т.е. не просто заглушать FR и FL, а проигрывать как если бы было подключено только FL и FR)?

 

dmitryshm
()

программное разбиение стерео и объединение с ещё одним аудиопотоком через ffmpeg

Есть две задачи с аудиопотоками.

Первая задача. Имеется два аудиопотока закодированных ac3, один стерео, другой моно (источники не так важны: файлы, rtsp, микрофоны). Требуется закодировать и записать эти потоки в файл таким образом, чтобы там было 3 аудиопотока: два моно-аудиопотока от стерео и один поток от моно.

Вторая задача. Имеется файл на диске с 3 моно-аудиопотоками (A,Б и В), закодированный ac3. Требуется проигрывать эти аудиопотоки таким образом чтобы получалось стерео (А + В, Б + В). Причём по командам извне какие-либо из потоков (А или Б или В) заменялись тишиной.

Хочу решить эти задачи написанием кода с использованием библиотек ffmpeg. Читать, декодировать, проигрывать, кодировать и записывать я, кажется, научился. Вот только не умею составлять фильтр-графы для решения проставленных задач. Подскажите пожалуйста, какие фильтр-графы подойдут для решения моих задач (за примеры вызовов из libavfilter отдельное спасибо).

Похоже я должен каким-то образом (с какими-то параметрами) соединить abuffer, abuffersink, amerge и channelsplit.

 

dmitryshm
()

как из медиа-файла получить его описание в виде SDP-файла

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

$: ffmpeg -re -i videofile.mp4 -map 0:0 -f rtp rtp://192.168.0.1:11501
Поток начинает идти, и я пробую воспроизвести его при помощи проигрывателя VLC. Открываю VLC, указываю ему проиграть URL rtp://192.168.0.1:11501. Но VLC ругается, что не может угадать формат данных из потока, и что-то пишет про SDP-заголовок.

Вопрос. Как из моего видеофайла получить корректный sdp-файл? Если бы я его получил, то командой

$: ffmpeg -re -i videofile.mp4 -map 0:0 -sdp_file videofile.sdp -f rtp rtp://192.168.0.1:11501
у меня бы наверное получилось создать поток, который можно было бы проиграть через VLC.

 ,

dmitryshm
()

Как загрузить другой образ ядра через u-boot?

Имеется флешка с разделами для U-Boot, DTB (device tree) и RootFS. При загрузке с этой флешки запускается U-Boot. Этот U-Boot, как мне кажется, монтирует RootFS и из каталога /boot берёт zImage, распаковывает его и грузит как ядро Linux.

Перед загрузкой ядра Linux я могу выйти в консоль U-Boot и через setenv/saveenv работать с переменными uboot. Одной из таких переменных является zimage, по умолчанию равная строке «zImage».

Теперь вопрос. Имея другой образ ядра, скажем zImage-2, я же могу записать его в /boot и как-то заставить U-Boot из консоли загрузить именно его?

Я пробовал менять переменную через «setenv zimage zImage-2; saveenv», пробовал задавать переменную kernel напрямую. Но всё равно грузит старое ядро. Не получается.

 

dmitryshm
()

непонятный код на javascript

Всем привет.

В коде библиотеки cocos2d-js в файле CCBoot.js нашел такой вот код на javascript.

/** @expose */
window._p;
_p = window;
/** @expose */
_p.gl;
/** @expose */
_p.WebGLRenderingContext;
/** @expose */
_p.DeviceOrientationEvent;
/** @expose */
_p.DeviceMotionEvent;
/** @expose */
_p.AudioContext;
/** @expose */
_p.webkitAudioContext;
/** @expose */
_p.mozAudioContext;
_p = Object.prototype;
/** @expose */
_p._super;
/** @expose */
_p.ctor;
delete window._p;

Подскажите пожалуйста, зачем такое вообще нужно писать, и что этот код делает.

 

dmitryshm
()

обнаружение некорректных вызовов close

Подскажите пожалуйста утилиту, которая подсказывала бы неправильные вызовы close на уже закрытых дескрипторах. Недавно в проекте очень неприятный баг нашли, когда данные «читались» из файла, дескриптор которого ранее был ошибочно закрыт.

Последовательность воспроизведения ошибки такая. В некой забагованной библиотеке вызывается open для работы с портом ввода-вывода устройства. Когда работа завершается, вызывается соотв. close. Потом тот же самый дескриптор (по значению) перевыдается по вызову fopen в другой части программы, там читаются данные из файла. Во время чтения этих данных, по ошибке, в забагованной бибилиотеке вызывается close по тому же (по значению) дескрипотру. Из файла начинает читаться мусор.

Было бы неплохо иметь утилиту, которая обнаруживала подобные ошибке в заданном процессе. Например мы не нашли опции у valgrind, которые находили бы такие огрехи.

 , ,

dmitryshm
()

XGetDeviceProperty для «Evdev Axis Calibration» возвращает четыре нуля

Есть необходимость получения информации о калибровке сенсорного экрана. Ну я запрашиваю через XGetDeviceProperty информацию для атома «Evdev Axis Calibration», а он мне возвращает 4 числа, равных 0 (как если запускать код под обычным пользователем, так и под root). Если заглянуть в «man evdev», то там пишется следующее.

man evdev

Evdev Axis Calibration 4 32-bit values, order min-x, max-x, min-y, max-y or 0 values to disable in-driver axis calibration.

Т.е. эти четыре нуля вроде бы корректные значения, но когда вызываю команду

«xinput list-props <имя моего устройства сенсорного экрана а ля 'HID 1234:5678'>»

то выводит ненулевую информацию (понятно что некалиброванную).

xinput list-props

Evdev Axis Calibration (258): 0, 0, 32985328, 49

Мне непонятно несоответствие полученной информации из libX11 (libXi) и через «xinput list-props».

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

 

dmitryshm
()

максимальный размер строки, на которую указывает XDeviceInfo::name

Подскажите пожалуйста, какой максимальный размер строки, на которую указывает XDeviceInfo::name из <X11/extensions/XInput.h>.

 ,

dmitryshm
()

как сделать в XLib неперемещаемое и незакрываемое окно

Как на xlib, имея заполненные display и windowId окна, задать ему, чтобы пользователь не мог это окно передвинуть мышкой, не мог изменить его размер, не мог закрыть, нажав на крестик в заголовке.

Пока разбираюсь с этим API, вызовами XWindowAttributes, XSelectInput и прочими, может кто уже это хорошо помнит. Хороший ответ сэкономил бы мне время на разбор доков.

Также читал, что некоторые вызовы не работают на FVVM и/или KDE. Поэтому было бы неплохо получить кросс-DE ответ.

 

dmitryshm
()

как получить доступ к окну запускаемого процесса

В приложении под Linux, написанном на Qt, нужно использовать виртуальную клавиатуру, т.к. планируется использовать это приложение на компьютерах с сенсорным экраном. Пользоваться компонентом QtVirtualKeyboard не хочу, т.к. это возможно лишь в Enterprise-лиценции, а пишется пока что прототип. Поэтому решил пользоваться готовой виртуальной клавиатурой типа xvkbd, matchbox-keyboard или florence.

Мне необходимо запустить процесс и запретить окну, созданному запущенным всяческие перемещения по экрану и изменения размеров по воздействию пользователя на сенсорный экран.

Прошу подсказать, как это лучше реализовать, и стоит ли вообще реализовывать. Может имеются более красивые решения этой задачи под linux, а не то, какое я вознамерился реализовать.

 , ,

dmitryshm
()

RSS подписка на новые темы