LINUX.ORG.RU

Сообщения panter_dsd

 

Зависание в сторонней библиотеке

Для чтения потока с камеры по протоколу RTSP юзаю OpenCV. Есть такая проблема - если камеру перезагрузить, то, в большинстве случаев, происходит зависание на методе

videoCapture_->read (frame);

Как быть? Попробовал решение в лоб - удалять экземпляр класса (он вынесен в отдельный QThread), в котором читаю поток, но это вызывает краш. Вот бэктрейс при падении Как правильно поступить?

======================================================

Решили вынести чтение в отдельный процесс и убивать его при зависании.

 , , ,

panter_dsd
()

Система приемочного тестирования

Есть фирма, производящая приборы. Приборы представляют из себя железки с камерами, на которых крутятся под Линухом некие сервисы.

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

Сейчас стоит выбор: взять что-то готовое или велосипедить что-то свое. Собственно, вопрос - есть ли готовая система, которую можно заточить под наши нужды? Jenkins и Bamboo не подходят. Сейчас смотрю QAComplete, но пока не могу с ним разобраться.

 , ,

panter_dsd
()

В буфер обмена не копируется часть текста

Вот пример. Исходный тест был:

h5. Изображение камеры.
скопировалось (Ctrl + Ins)
h5. Изображен�

Причем, если вызвать копирование несколько раз, то скопируется весь текст.

OS: gentoo

WM: awesome-3.5.5

Началось давно. Кто-нибудь сталкивался с подобным?

Да, если выделять и вставлять текст средней клавишей мыши, таких проблем нет.

 ,

panter_dsd
()

Рабочая среда «Деодар» для Линукс

Вбросили, так вбросили.

Это Norton Commander? Это Volkov Commander? Это Dos Navigator? Это Far Manager? Нет, это «Деодар» — новая рабочая среда для Линукс. Деодар хостится на GitHub, основан на Node.js, написан на JavaScript плюс немного C++. Распространяется по антилицензии Unlicense.org. Безвозмездно, то есть даром. В данной статье на большом количестве картинок и малом количестве пояснений вы можете ознакомится с тем, что уже есть. Да, «Деодар» — это такое дерево, Cedrus Deodara растёт высоко в горах, очень красивое.

http://habrahabr.ru/post/218073/

https://github.com/exebook/deodar

Особенно смешно комменты читать.

panter_dsd
()

Отслеживать в rss

Хорошо бы иметь такую кнопку, чтобы в rss сообщения из темы приходили, но в уведомлениях не появлялись.

 

panter_dsd
()

Как в Gentoo установить справку для Qt5?

В каком она нынче пакете? Все обыскал, найти не могу.

 ,

panter_dsd
()

Qt5 + CMake

Кто работает с данной связкой? Сборку я победил, даже сделал так, чтобы можно было как с Qt4 собирать, так и с Qt5. Проблема появилась с install частью. Для Qt4 я юзал следующий код:

FOREACH(LANG ${LANGUAGES})
    INSTALL(FILES ${TRANSLATIONS_DIR}/${TARGET}_${LANG}.qm DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/)
    INSTALL(FILES ${QT_TRANSLATIONS_DIR}/qt_${LANG}.qm DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/)
ENDFOREACH(LANG ${LANGUAGES})

IF(WIN32)
    INSTALL(FILES ${QT_BINARY_DIR}/QtCore4.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    INSTALL(FILES ${QT_BINARY_DIR}/QtNetwork4.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    INSTALL(FILES ${QT_BINARY_DIR}/QtXml4.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    INSTALL(FILES ${QT_BINARY_DIR}/QtSql4.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)

    INSTALL(FILES ${QT_QJPEG_PLUGIN_RELEASE} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/plugins/imageformats)
    INSTALL(FILES ${QT_QGIF_PLUGIN_RELEASE} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/plugins/imageformats)

    INSTALL(FILES ${CMAKE_BINARY_DIR}/3rdparty/QtSolutions/src/qtservice/libQtService.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)

    FIND_PATH (MINGW_PATH "libstdc++-6.dll")
    INSTALL(FILES ${MINGW_PATH}/libgcc_s_dw2-1.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    INSTALL(FILES ${MINGW_PATH}/libstdc++-6.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    #INSTALL(FILES ${MINGW_PATH}/mingwm10.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
    INSTALL(FILES ${MINGW_PATH}/libwinpthread-1.dll DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
ENDIF(WIN32)

Вот только для Qt5 QT_TRANSLATIONS_DIR, QT_BINARY_DIR и остальные данные пусты. Как теперь их доставать?

 ,

panter_dsd
()

Гуглопочта с чувством юмора

Изображение

В гугле работают волшебные кролики. :)

 

panter_dsd
()

Перенос субмодуля на другой адрес

Есть развернутый gitlab, есть несколько проектов в глобальном нэймспейсе, которые используются в виде субмодулей в других проектах. С версии 6.0 глобальный нэймспейс в gitlab запретили, теперь нужно перенести проекты в нэймспейсы, но тогда у них изменится адрес. Как правильно поправить ссылки на эти проекты в других проектах?

Я вижу такие варианты:

Первый вариант: править в истории тот коммит, в котором добавлен субмодуль. Придется push -f делать и появляется проблема с ветками.

Второй вариант: поправить адрес и закоммитить. Тут проблема возникает со сборкой старых коммитов - придется править после каждого пула.

Как правильнее всего сделать?

 ,

panter_dsd
()

Не получается настроить QSslSocket

Как вот такую команду

openssl s_client -connect 192.168.8.203:22 -psk 1a2b3c4d5e6f7081 -psk_identity "Search PC-Suite"
реализовать через QSslSocket? Конкретно, я не знаю куда psk_identity указать.

 ,

panter_dsd
()

Ищу книгу по TDD

Кент Бек. Экстремальное программирование: разработка через тестирование. — «Питер», 2003. ISBN 5-8046-0051-6, ISBN 0-321-14653-0

Все электронные варианты в интернете плохого качества, в бумажном не нашел. Кто-нибудь может продать или дать почитать?

 ,

panter_dsd
()

Запуск юниттеста в консоли

Есть прога и юниттест к ней. Причем прога юзает QtGui. Соответственно, при запуске без иксов я получаю провал юниттеста с

cannot connect to X server
. Как правильно запускать юниттест из консоли?

 ,

panter_dsd
()

Настройка сети в qemu

Пытаюсь тут поднять на серваке виртуалку. Все происходит под ubuntu 12.10. Вот /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
	address 192.168.2.251
	netmask 255.255.255.0
	network 192.168.2.0
	broadcast 192.168.2.255
	gateway 192.168.2.1
	dns-nameservers 192.168.2.1
	dns-search simicon
	bridge_ports eth0
#        bridge_stp on
#        bridge_maxwait 0
        bridge_fd 9
        bridge_hello 2
	bridge_maxage 12

Виртуалку поднимаю вот так:

sudo kvm -boot c -m 2048 -hda /home/user/some.qcow2 -net nic,vlan=0,macaddr=53:55:01:13:35:52,model=e1000 -net tap,vlan=0,ifname=tap0,script=/etc/qemu-ifup_new -vnc :1 -usb

Вот /etc/qemu-ifup_new

#!/bin/sh

echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
/sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
/sbin/brctl addif br0 $1
sleep 2

Вот вывод ifconfig на серваке:

br0       Link encap:Ethernet  HWaddr 00:23:54:f3:3c:50  
          inet addr:192.168.2.251  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::223:54ff:fef3:3c50/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:38582 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14367 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2339076 (2.3 MB)  TX bytes:31240970 (31.2 MB)

eth0      Link encap:Ethernet  HWaddr 00:23:54:f3:3c:50  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:126307 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14367 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:13360920 (13.3 MB)  TX bytes:31240970 (31.2 MB)
          Interrupt:16 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:41 errors:0 dropped:0 overruns:0 frame:0
          TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:3360 (3.3 KB)  TX bytes:3360 (3.3 KB)

tap0      Link encap:Ethernet  HWaddr fe:f1:e6:c2:9b:56  
          inet6 addr: fe80::fcf1:e6ff:fec2:9b56/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:1 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Вот, что на виртуалке. http://rghost.ru/44118293 Как правильно настроить сеть в виртуалке?

 

panter_dsd
()

std::auto_ptr и плохой тон

Хай, пиплы. Выполнял тут тестовое задание, вот, что написали в ответе:

Применение std::auto_ptr<> считается плохим тоном

Сижу думаю, с каких это пор auto_ptr считается плохим тоном. Кто-нибудь в курсе? Да, депрекейтед состояние не в счет, ибо с++11 использовать было нельзя.

 

panter_dsd
()

Применение части diff

Как правильно применить часть диффа? Допустим, есть

diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index f5bead0..c59088f 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -1,10 +1,10 @@
 SET(TARGET Core)
 ADD_SUBDIRECTORY(database)
-FIND_PACKAGE(Qt4 REQUIRED QtCore QtGui QtNetwork)
+FIND_PACKAGE(Qt4 REQUIRED QtCore QtGui)
 INCLUDE(${QT_USE_FILE})
 ADD_DEFINITIONS(${QT_DEFINITIONS})
 FIND_PACKAGE(SimiconLibs REQUIRED Network DataFormats Image)
 INCLUDE_DIRECTORIES(${SIMICONLIBS_INCLUDE_DIR})
@@ -33,15 +33,11 @@ SET(SOURCES
     imagescache.cpp
 )
 QT4_WRAP_CPP(MOC_SRCS ${MOC_HEADERS})
-ADD_LIBRARY(
-    ${TARGET}
-    ${SOURCES}
-    ${MOC_SRCS}
-)
+ADD_LIBRARY(${TARGET} ${SOURCES} ${MOC_SRCS})
 TARGET_LINK_LIBRARIES(
     ${TARGET}
     ${QT_LIBRARIES}
     ${SIMICONLIBS_LIBRARIES}

Как применить только первую часть патча?

panter_dsd
()

Как узнать, какой бранч мержился?

При возникновении конфликта при мерже, git gui выдает удобное коммитное сообщение вида:

Merge branch 'develop' into feature/AddRecognition

Conflicts:
	src/gui/Journals/CMakeLists.txt

Как он узнает название бранча, который мержился? Прошерстил маны по show, status, merge, но ничего не нашел.

 , snoutgit

panter_dsd
()

Не могу войти в джаббер

Внезапно перестал коннектиться к jabber.ru, причем на gmail.com коннект нормально проходит. Юзаю Leechcraft (пишет, что удаленный хост закрыл соединение), или Vacuum (пишет, что обнаружено неверно закодированное содержимое или что ждет открывающий тэг).

Есть подозрение, что все пришло с каким-то апдейтом. Что проверить?

Перемещено JB из talks

 ,

panter_dsd
()

Система фризится при интенсивнм IO

Пресловутый 12309? Сегодняшний однострочник для проверки grep'а поставил систему рак^Wколом.

Достало уже. Вообще, если системе нужно уйти в своп, наблюдаются нехилые фризы. Может быть проблема в винте (WDC WD5000AAKX-001CA0)? Какие конфиги выложить?

vm.swappiness=20%

mount

/dev/root on / type reiserfs (rw,noatime,nodiratime)
/dev/sda5 on /boot type ext2 (rw,noatime,nodiratime)
/dev/sda9 on /home type reiserfs (rw,noatime,nodiratime,user_xattr)
/dev/sda7 on /usr/src type btrfs (rw,noatime,nodiratime,compress)
/dev/sda8 on /var type reiserfs (rw,noatime,nodiratime)
/dev/sda10 on /mnt/archives type reiserfs (rw,noatime,nodiratime)
/dev/sda11 on /mnt/work type reiserfs (rw,noatime,nodiratime)
/dev/sda13 on /mnt/ccache type btrfs (rw,noatime,nodiratime,compress=zlib)
/dev/sda14 on /mnt/portage type btrfs (rw,noatime,nodiratime,compress=zlib

uname -a                                      12:06 pts/1
Linux simicon.com 3.7.1-pf #1 SMP Mon Dec 24 10:19:24 MSK 2012 x86_64 Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz GenuineIntel GNU/Linux

 ,

panter_dsd
()

Как избежать краша в libjpeg при открытии некорректного файла?

Вот файл

Вот код:

static void error_exit (j_common_ptr cinfo)
{
	Q_UNUSED (cinfo)
	qDebug() << Q_FUNC_INFO;
}

static void output_message (j_common_ptr cinfo)
{
	Q_UNUSED (cinfo)
	qDebug() << Q_FUNC_INFO;
}

static void emit_message (j_common_ptr cinfo, int msg_level)
{
	Q_UNUSED (cinfo)
	Q_UNUSED (msg_level)
	qDebug() << Q_FUNC_INFO;
}

static void format_message (j_common_ptr cinfo, char *buffer)
{
	Q_UNUSED (cinfo)
	Q_UNUSED (buffer)
	qDebug() << Q_FUNC_INFO;
}

static void reset_error_mgr (j_common_ptr cinfo)
{
	qDebug() << Q_FUNC_INFO;
	cinfo->err->num_warnings = 0;
	cinfo->err->msg_code = 0;
}
bool JpegFormat::load (const QByteArray &data, const QSize &size)
{
	Q_UNUSED (size)
	qDebug() << Q_FUNC_INFO;

	jpeg_decompress_struct decompressStruct;
	jpeg_error_mgr error;

	decompressStruct.err = jpeg_std_error (&error);
	jpeg_CreateDecompress (&decompressStruct,
			        JPEG_LIB_VERSION,
				sizeof (decompressStruct));
	error.error_exit = error_exit;
	error.emit_message = emit_message;
	error.output_message = output_message;
	error.format_message = format_message;
	error.reset_error_mgr = reset_error_mgr;

	auto inBuf = reinterpret_cast<const unsigned char *> (data.constData());
	jpeg_mem_src (&decompressStruct,
			const_cast<unsigned char *> (inBuf),
			data.size());

	if (jpeg_read_header (&decompressStruct, true) != JPEG_HEADER_OK) {
		jpeg_destroy_decompress (&decompressStruct);
		return false;
	}

	decompressStruct.out_color_space = JCS_GRAYSCALE;
	jpeg_start_decompress (&decompressStruct);

	size_ = QSize (decompressStruct.image_width, decompressStruct.image_height);
	data_.fill (0,
				decompressStruct.image_width * decompressStruct.image_height
			   );
	auto outBuf = reinterpret_cast<unsigned char *> (data_.data());

	while (decompressStruct.output_scanline < decompressStruct.image_height) {
		jpeg_read_scanlines (&decompressStruct, &outBuf, 1);
		outBuf += decompressStruct.image_width;
	}

	jpeg_finish_decompress (&decompressStruct);
	jpeg_destroy_decompress (&decompressStruct);

	return true;
}

В jpeg_start_decompress происходит падение, как этого избежать?

 ,

panter_dsd
()

Затер исходник python программы

Программа в данный момент запущена. Можно как-нибудь восстановить исходник?

 ,

panter_dsd
()

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