LINUX.ORG.RU

Сообщения panter_dsd

 

Проверка на изменение членов класса

Форум — Development

Допустим, есть какой-то класс у которого реализованы копирующий конструктор и оператор присваивания. Необходимо сделать «защиту от дурака», чтобы при последующем изменении мемберов разработчик отхватил ошибку, если забыл реализовать копирование и присваивание этих новых мемберов. Сейчас мысль сравнивать через static_assert размер класса с расчитанным размером, но тут мешает выравнивание. Какие есть варианты?

 ,

panter_dsd
()

Оптимизация вызова методов

Форум — Development

Пишу в основном на c++ и привык разбивать все на небольшие методы/функции с выразительными названиями. Точно так же делаю на питоне, но оказалось, что такая разбивка намного медленнее, чем все в одном методе. Есть ли какая-то возможность бить на методы, но чтобы не страдала скорость работы или нужно смириться и писать все в одном методе?

All in one More methods

 , ,

panter_dsd
()

Линковка двух библиотек с конфликтом имен

Форум — Development

Есть 2 либы, у которых имеется один класс с одинаковым именем, но различной реализацией. Я эти либы собираю и линкую в свое приложение. Сборка проходит нормально, но происходит падение в рантайме, из-за того, что в одну либу подгружается реализация из второй либы, не совместимая с ней. Как принято решать такие проблемы? В либы я не могу влезть, ибо они сторонние и периодически обновляются.

 ,

panter_dsd
()

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

Форум — Development

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

videoCapture_->read (frame);

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

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

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

 , , ,

panter_dsd
()

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

Форум — Development

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

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

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

 , ,

panter_dsd
()

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

Форум — Desktop

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

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

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

OS: gentoo

WM: awesome-3.5.5

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

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

 ,

panter_dsd
()

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

Форум — Talks

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

Это 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

Форум — Linux-org-ru

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

 

panter_dsd
()

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

Форум — Development

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

 ,

panter_dsd
()

Qt5 + CMake

Форум — Development

Кто работает с данной связкой? Сборку я победил, даже сделал так, чтобы можно было как с 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
()

Обновогодненное рабочее место

Галерея — Рабочие места

Ёлочка, шкатулка и кофейное дерево саморучно произведены и подарены женой.

На мониторе Gentoo, с которой мы уже несколько лет в мире и согласии, lilyterm и Leechcraft.

Собственно, вот так мы и программируем.

panter_dsd
()

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

Форум — Talks

Изображение

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

 

panter_dsd
()

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

Форум — Admin

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

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

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

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

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

 ,

panter_dsd
()

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

Форум — Development

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

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

 ,

panter_dsd
()

Ищу книгу по TDD

Форум — Development

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

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

 ,

panter_dsd
()

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

Форум — Development

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

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

 ,

panter_dsd
()

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

Форум — Admin

Пытаюсь тут поднять на серваке виртуалку. Все происходит под 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 и плохой тон

Форум — Development

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

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

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

 

panter_dsd
()

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

Форум — Development

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

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
()

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

Форум — Development

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

Merge branch 'develop' into feature/AddRecognition

Conflicts:
	src/gui/Journals/CMakeLists.txt

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

 , snoutgit

panter_dsd
()

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