LINUX.ORG.RU

Сообщения I-Love-Microsoft

 

Как вывести многострочную переменную в файл?

 

Есть Makefile файл в котором я добавил такой блок:

ifeq ($(GUI),1)
	echo "$(MY_WAVES)" >> $@
	echo "add wave -recursive /*" >> $@
	echo "run -all" >> $@
else
	echo "run -all" >> $@
	echo "quit" >> $@
endif
А именно вывод переменной MY_WAVES в файл. Когда одна строка - всё работает как надо, вот скрипт который вызывает make:
MY_WAVES="add wave -color Red -analog-step -height 100 -radix decimal /real_nco_in"

echo "-----"
echo "$MY_WAVES"
echo "-----"
export MY_WAVES

export VSIM_ARGS=" -L altera_mf_ver -L lpm_ver "
linux32 make ARCH=i686 SIM=modelsim
-----
add wave -color Red -analog-step -height 100 -radix decimal /real_nco_in
-----

Проблема в том что если задать многострочное значение:

read -d '' MY_WAVES <<EOF
add wave -color Yellow -analog-step -height 100 -radix decimal /sig_in
add wave -color Red -analog-step -height 100 -radix decimal /real_nco_in
add wave -color Green -analog-step -height 100 -radix decimal /imag_nco_in
EOF
то сама переменная становится многострочной:
-----
add wave -color Yellow -analog-step -height 100 -radix decimal /sig_in
add wave -color Red -analog-step -height 100 -radix decimal /real_nco_in
add wave -color Green -analog-step -height 100 -radix decimal /imag_nco_in
-----
но весь процесс ломается:
/bin/sh: 1: Syntax error: Unterminated quoted string
make[1]: *** [sim_build/runsim.do] Ошибка 2
make: *** [sim] Ошибка 2

Как можно сделать так, чтобы внутри Makefile команда echo выводила многострочник в файл?

echo "$(MY_WAVES)" >> $@
Или хотя бы делала подстановки \n в спец символы переноса строки? Может есть способ просто вывалить содержимое файла в другой файл? Я тогда напишу все эти строки в отдельном файле...

I-Love-Microsoft
()

добавить отступы от осей

 , ,

Рисую графики с помощью pylab.plot и pylab.savefig. От краев изображения сами оси отступают, чтобы были видны надписи.

А вот сами графики если они допустим на уровне нуля или максимума - сливаются с осями, оси рисуются поверх. График синий, а оси черные, создается иллюзия что график прерывается, или переполняется (выше максимума).

Есть ли способ добавить автоматическое увеличение пределов осей чтобы они не заслоняли собой график? А может вручную можно выставить, я пока не нашел как, хотя документации завались http://matplotlib.org/contents.html но я нуб и не могу этого найти. Или чтобы график рисовался поверх осей?

На десерт: можно ли изменить пропорции графика, чтобы он был не прямоугольным (например 4:3) а очень широким и невысоким?

I-Love-Microsoft
()

установить на 64-битной Ubuntu 14.04

 ,

Есть программы, которые уже успешно работает в 32-битном режиме на этой установке. Требуется установить python 32-битный.

sudo apt-get install python2.7:i386 предлагает снести пол системы

Я собрал Python вручную и софт что его требует именно 32-битным - работает. Встала проблема собрать NumPy и SciPy под этот 32-битный Python.

В общем, и штатный из реп не ставится, и сборка из исходников не проходит - мешаются системные либы.

I-Love-Microsoft
()

что просить от разработчика

 , ,

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

Может есть какие-то общепринятые стандарты, что и как должно быть описано и в каком объеме подробности...

I-Love-Microsoft
()

опасно ли хранить

 , вздутый

Лежит аккум от старого смарта, хочу выкинуть его в экобокс но пока времени нет дойти. Он несколько вздут, опасно ли его хранить дома? При условии что он просто лежит, без каких либо зарядок разрядок?

В интернете как-то расплывчато пишут. Одни что опасно такой заряжать - может воспламениться при нарушении герметичности.

А если он просто лежит?

I-Love-Microsoft
()

Массив модулей комплексных чисел

 , ,

Есть массив комплексных чисел на выходе fft = scipy.fft(signal), signal - вещественные числа, без мнимой части:

fft len= 100 type= <type 'numpy.ndarray'>

При попытке pylab.plot(xs, signal) оно выводит неверный график, но честно предупреждает:

/usr/lib/python2.7/dist-packages/numpy/core/numeric.py:460: ComplexWarning: Casting complex values to real discards the imaginary part
  return array(a, dtype, copy=False, order=order)
т.е. тупо отсекает мнимую часть, которая и составляет как раз весомую долю сигнала.

Вопрос: как сформировать из массива комплексных чисел - массив модулей комплексных чисел?

I-Love-Microsoft
()

две строки в заголовке таблицы

 ,

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

Кто-нибудь из местных Qt-специалистов такое делал? Есть вот еще такая инфа: ссылка. Но мне кажется там какой-то совсем уж жутки хак, хотелось бы иначе, может есть идеи?

I-Love-Microsoft
()

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

 

Ранее была тема десятичный логарифм элементарными действиями.

Для любого языка программирования доступна математическая функция возведения в произвольную степень, например в степень 3.412. Но, к сожалению, это не для всех ЯП. В языке Verilog есть возможность работать с числами с плавающей точкой (для несинтезируемых тестбенчей), не более того.

Интересует способ реализации возведения в дробную степень (обратное действие логарифмирование) используя элементарные операции с числами с плавающей точкой.

Например увеличение напряжения в 1.5 раза это 20×log(1.5) = 3,5218 дБ. Чтобы получить обратно эти 1.5 нужно 10^(3.5218÷20) = 10^0.17609 ~ 1.5

Я пока не представляю как возвести число в степень 0.1, для меня это как представить 5-мерное пространство. В интернете объясняют только через дроби, либо предлагают «калькулятор онлайн»...

I-Love-Microsoft
()

убрать фон маркированного списка

 

Не первый год замечаю что если в Libre Office пометить какую-то часть текста цветом фона в маркированном списке, то потом эти кружки, которые слева от каждого пункта могут окраситься с этот цвет и вообще весь список таким станет. И у меня не получается снять с них цвет, как бы ни пытался.

С текста цвет фона снимается, сам текст можно сделать черным опять, а вот слева эти значки (кружки) всё остаются залитыми хоть тресни.

Как это решается? Если не совсем ясно о чем мой вопрос, я могу уточнить.

I-Love-Microsoft
()

десятичный логарифм элементарными действиями

 логарифм,

Как вычислить десятичный логарифм при помощи элементарных арифметических операций? Не важно на каком языке. Может даже через вычисление логарифмов по другим основаниям...

P.S. Готовые функции не предлагать, просто в Verilog нет готовых функций на эту тему, но есть конечно готовые громоздкие IP-core. Мне же надо это не для синтеза схемы, а просто для тестбенча, где доступен императивный подход.

I-Love-Microsoft
()

раздача IP по номерам физических портов

 ,

Исходные данные: Linux, поднят isc-dhcp-server и выдаются данные устройству - это работает, минимально работающий DHCP-сервер по факту есть.

Есть коммутатор у которого есть DHCP Relay agent (DHCP option 82). Еще есть компьютер с Linux на котором можно поднять isc-dhcp-relay.

Вопрос: как в настройках isc-dhcp-server (файл dhcpd.conf) указать что такой то порт должен получать конкретный IP-адрес? Причем как для случая коммутатора, так и компьютера (где интерфейсы именуются eth*).

В интернете находил примеры, однако способ определения физического порта так и не был мной понят. Как вообще называется эта нотация номера порта коммутатора? А для Linux выступающего в роли DHCP Relay тоже сохраняется это именование портов?

Приветствуется простейший пример с двумя устройствами (одно воткнуто в порт [3/2] и у него адрес 192.168.2.32, а другое в порт [4/5] и должно всегда получать адрес 192.168.2.45 будучи воткнуто в этот порт).

I-Love-Microsoft
()

НДФЛ и договор подряда

 

Если работник выполнил работы по договору подряда, ему подписали акт и перечислили деньги, и с его согласия за него заказчик уплатил 13% НДФЛ от суммы в договоре, то каким образом можно выяснить что 13% пошли в налоговую, а не ему в карман? т.е. нужен другой источник информации, нежели бухгалтерия заказчика (а порой таковая отсутствует).

I-Love-Microsoft
()

как собрать GStreamer в отдельный каталог с плагинами

 ,

Ubuntu 14.04.3 64-bit, пытаюсь собрать последнюю версию (из официальных релизных tar.gz, не из git) GStreamer 1.6.1 а в системе болтается старая 1.2.4.

Плагины требуют чтобы в системе была версия именно 1.6.1. Если удалить пакет gstreamer-1.0 то девелоперские файлы оно убирает, и позволяет собрать сам gstreamer и плагины base и bad, даже sudo make install срабатывает, однако 1.2.4 болтается и мешает вызывать нужную версию, получается каша.

Однако, если собрать gstreamer-1.6.1 и указать --prefix= то оно туда и собирает. НО! Как указать когда собираются плагины что готовый gstreamer или его исходники лежат в определенном каталоге??? Плагины смотрят его в системе, а там старая версия болтается!

Попробую переиначить, как собрать пакеты autotools которые зависят от другого пакета, которые установлен в нестандартный prefix?

I-Love-Microsoft
()

эмулятор маршрутизатора

 ,

Разрабатываю ПО для работы с маршрутизаторами, так то с живыми наэкспериментировался и есть достаточно кода, но дома железа нет. Поэтому такой вопрос: есть ли готовые дистрибутивы, которые имитируют маршрутизатор, ну там чтоб консоль по последовательному порту висела, по telnet-у управлялся, SNMP висел сразу, чтоб можно было DHCP настраивать через CLI, чтобы каналы агрегировать (LACP) и LLDP работал.

Хочется так сказать «живое погружение», чтоб зарядить на виртуалках 10-15 маршрутизаторов, у каждого по 10 например портов. Знаю что всё вышеперечисленное можно вручную нарулить, но может есть готовый дистр чтоб не париться? Наверняка есть...

Вот например список: http://27sysday.ru/linux/linux-router только я не уверен что это то что мне надо...

I-Love-Microsoft
()

минимизация потерь ФС при внезапном выключении

 ,

Есть устройство с ОС Linux. Оно пишет архив данных 2 мегабайта в секунду (16 Мбит/с) на SSD накопитель с интерфейсом SATA. Тест dd показывает что в принципе накопитель может принимать до 20 мегабайт в секунду.

Файловая система - NTFS-3G, ОС - OpenEmbedded Fido.

Суть задачи сделать так чтобы потери были меньше секунды, однако в реальности они достигают чуть ли не 30-ти секунд.

Была опробована идея с опцией sync - да, так хвост данных не теряется в момент выключения, однако много данных просто теряется из-за чудовищно низкой скорости работы с накопителем.

т.е. без sync всё быстро но пол минуты просто теряется (поток 2 мегабайта), а с sync слишком медленно пишет. Моя программа получает поток по сети, а когда пишет - буферизует 512 КБайт и когда в буфере больше этого числа - пишет на диск в отдельном потоке.

Как быть? Может перейти на exFAT? А может поставлять драйвер для ext если смена ФС тут поможет в принципе? А может настроить размеры буферов? Или надо применять какой-то особый прием когда работаешь в режиме sync? Подскажите, у кого опыт есть?

I-Love-Microsoft
()

не приходит сигнал readyRead

 ,

Совершенно невероятная проблема, я работал с QSerialPort не один год, а сейчас даже если порт открывается, сигнал коннектится, то readyRead не срабатывает. Чудовищно простой код, запускается консольная программка, запускается a.exec, должно же приходить. Если открыть порт при помощи minicom то всё прекрасно работает, т.е. в плане железа всё окей. Более того, на оффтопике с Qt 5.4+ тоже всё хорошо уже с этой самой программой.

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

Смешно, но мой коллега тоже сейчас бьется уже несколько дней с проблемой, с этой же самой. В другом софте пашет, в винде Qt 5.4+ пашет, а на Linux нет.

Код: http://paste.org.ru/?jms2g2

#include <QCoreApplication>
#include <QDebug>
#include <scan.h>

int main(int argc, char *argv[])
{
	QCoreApplication a(argc, argv);

	int delay = 100;
	QString rs485_pn = "/dev/ttyUSB0";
	if(argc >= 2)
	{
		for(int i = 1; i < argc; i++)
		{
			QString arg(argv[i]);
			qDebug() << "arg=" << arg;
			if(arg.contains("/dev/")) rs485_pn = arg;
			if(arg.contains("COM")) rs485_pn = arg;
		}
	}

	QList<short> devs;
	devs.append(0x2001);
	devs.append(0x2002);
	for(int i = 0; i < 5; i++)
	{
		devs.append(0x3001 + i);
		devs.append(0x4001 + i);
	}
	for(int i = 0; i < 5; i++)
	{
		devs.append(0x1001 + i);
		devs.append(0x1011 + i);
	}
	for(int i = 0; i < 3; i++)
	{
		devs.append(0x6001 + i);
	}
	foreach(short dev, devs) qDebug("dev %04X", dev);

	qDebug() << "-----";
	qDebug() << "scan port=" << rs485_pn;
	qDebug() << "delay=" << delay << "ms";
	qDebug() << "-----";
	scan sc(devs, rs485_pn, delay);
	return a.exec();
}
I-Love-Microsoft
()

установка загрузчика в raw-образ

 ,

dd if=/dev/zero of=$IMAGE_FILE bs=1M count=128
sudo parted $IMAGE_FILE mktable msdos
sudo parted $IMAGE_FILE mkpart primary 1 110M
sync
partprobe

sudo kpartx -a $IMAGE_FILE
sleep 1
sudo mkfs.ext3 -L "shit" /dev/mapper/loop0p1

sudo mount /dev/mapper/loop0p1 $INSTALL_DIR
sudo chmod 777 $INSTALL_DIR
mkdir $INSTALL_DIR/boot

GRUB=grub-install
sudo $GRUB --boot-directory=$INSTALL_DIR/boot --modules="ext2 part_msdos" /dev/loop0

Так вот, в результате я вижу ошибку grub-install: error: disk `lvm/loop0p1' not found. Это в версии из git, а от Ubuntu там hostdisk/loop0p1 not found.

Но ведь и разделы создаются (что видно по fdisk -l $IMAGE_FILE), и файловая система прекрасно создается и монтируется (что видно по mount).

Неделю-две назад, видимо до обновления системы, всё РАБОТАЛО с (GRUB) 2.02~beta2! Собрал grub даже из git а всё то же самое (там тоже в master 2.02~beta2). Что могло поломать работу? У меня Ubuntu 14.04.3 LTS 64-bit.

I-Love-Microsoft
()

у кого есть опыт проброса порта в виртуалку?

 ,

Есть VirtualBox, создаю порт так:

RS485=~/rs485
VBoxManage modifyvm "my_vm" --uart1 0x3E8 4 --uartmode1 file $RS485
touch $RS485
Всё что я вываливаю в /dev/ttyS2 в виртуалке успешно попадает в файл. Но мне нужна двусторонняя связь из своего ПО!
VBoxManage modifyvm "my_vm" --uart1 0x3E8 4 --uartmode1 tcpclient localhost:25000
Запускаю nc -l 25000 и из виртуалки всё вываливается на экран - хорошо, но обратная связь не работает!
VBoxManage modifyvm "my_vm" --uart1 0x3E8 4 --uartmode1 tcpserver 25000
И так тоже не работает, на этот раз nc 25000 - тут уже ни туда ни сюда не идут данные.

Пробовал как <тут> и как тут <тут> - не помогло.

У кого есть реальный опыт проброса порта? У меня Ubuntu 14.04.3 ядро 3.19.0-26-generic VirtualBox 5.0.2...

I-Love-Microsoft
()

декодировать поток НЕ Annex B

 ,

У меня есть поток с камеры Samsung SNB-5004P, кодек H264, однако там судя по всему без Annex B. Принимаю по RTSP (при помощи live555/OpenRTSP). Вот как кадры начинаются:

raw= "67640028ACB402802DC8"
frame 0 sz= 10 decoded= false
raw= "68EE01AE2C00"
frame 1 sz= 6 decoded= false
raw= "65B845DFDAB69E13D5876BE6876E81503656D987E459CDF4"
frame 2 sz= 14771 decoded= false
raw= "21E220DBB22B0001ED8FB94F74340D6CE9441EA80E0AABE6"
frame 3 sz= 6005 decoded= false
raw= "21E420D3C06600D23D43F9738DECB0E68FC0AAEF86B2545D"
frame 4 sz= 20843 decoded= false
raw= "21E620C3B7AD83175C0FFFB44BDF0AAC6ADC010E03D0350E"
frame 5 sz= 25359 decoded= false

У меня есть свой код на базе libav и avcodec_decode_video2 не может декодировать такие кадры. Если они Annex B то может без проблем.

Вопрос: можно ли преобразовать поток, добавить заголовки к каждому NAL чтобы был формат Annex B? А может avcodec_decode_video2 можно заставить кушать такой поток?

I-Love-Microsoft
()

поиск утечки памяти

 

Есть встраиваемая система на базе x86 и в ней OpenEmbedded крутится. Со временем, в течение часа, потребление памяти системой возрастает на 10 Мб, и так всё время, видимо до исчерпания.

Есть ли какой-то способ выявить процессы в системе, потребление памяти которыми (не обращая внимания на периодические колебания) имеет тенденцию к увеличению?

Кто как решает эту проблему?

P.S.

Всякими профилировщиками для поиска утечек памяти относительно единичной программы своей разработки пользоваться умею, а вот как с системой поступить?

I-Love-Microsoft
()