LINUX.ORG.RU

Сообщения art_corp

 

Not handling exceptions in background threads

Добрый день!

Читаю статью:
http://www.acodersjourney.com/2017/08/top-20-cplusplus-multithreading-mistakes/
ошибка под номером 12: Exceptions thrown in one thread cannot be caught in another thread.
Лично мне не нравится пример «правильной» обработки
исключительной ситуации с глобальным объектом и повторной
генераций исключения.
Подскажите, как правильно работать с исключениями в «дочерних» нитях.
P.S.
Понятно, что по уму - исключение не должно покидать нить,
но все же, если это произошло, как быть?
P.S.S.
Может у кого завались ссылки на объяснение как работают
исключения в многопоточной среде и как стек
разворачивается при этом.
Спасибо!

 ,

art_corp
()

ошибка компиляции vector<PointF>::push_back(Value)

дано:
ubuntu 14.04
clang++3.5

class PointF
{
    void InitQPointF() const;
    void CopyMembersFrom(const Gdiplus::PointF& point);    
    PointF(const Gdiplus::PointF& point) noexcept;
    PointF& operator=(const Gdiplus::PointF& point);
public:
    QPointF getQPointF() const;

    PointF() noexcept;
    PointF(REAL x,REAL y) noexcept;    
    PointF(const Gdiplus::SizeF& size) noexcept;    
    PointF(Gdiplus::PointF&&) = default;
    BOOL Equals(const Gdiplus::PointF& point) const;
    PointF operator-(const Gdiplus::PointF& point) const;
    PointF operator+(const Gdiplus::PointF& point) const;    
    PointF& operator=(Gdiplus::PointF&&) = default;
    REAL X;
    REAL Y;
    ~PointF();
};
...
 static PointF Cvt(const POINTF& p)
    {
        returnPointF(p.x, p.y);
    }
...

std::vector<Color> gcolors;
....
 gcolors.push_back(Cvt(*i));

проблема в принципе понятна, нет специализации для
false std::__uninitialized_copy<false>

1)не понятно, почему нет реализации false?
2) по правилам с++ не помню должна ли быть для false специализация или должен использоваться общий шаблон?

на g++4.7 проблем нет, все собирается

сообщение об ошибке:

/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_uninitialized.h:125:2: error: no member named '__uninit_copy' in 'std::__uninitialized_copy<false>'
        __uninit_copy(__first, __last, __result);
        ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_uninitialized.h:278:19: note: in instantiation of function template specialization
      'std::uninitialized_copy<std::move_iterator<PointF *>, PointF *>' requested here
    { return std::uninitialized_copy(__first, __last, __result); }
                  ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_uninitialized.h:299:19: note: in instantiation of function template specialization
      'std::__uninitialized_copy_a<std::move_iterator<PointF *>, PointF *, PointF>' requested here
      return std::__uninitialized_copy_a
                  ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/vector.tcc:421:15: note: in instantiation of function template specialization 'std::__uninitialized_move_if_noexcept_a<PointF
      *, PointF *, std::allocator<PointF> >' requested here
              = std::__uninitialized_move_if_noexcept_a
                     ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/vector.tcc:101:4: note: in instantiation of function template specialization 'std::vector<PointF,
      std::allocator<PointF> >::_M_emplace_back_aux<PointF>' requested here
          _M_emplace_back_aux(std::forward<_Args>(__args)...);
          ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_vector.h:932:9: note: in instantiation of function template specialization 'std::vector<PointF,
      std::allocator<PointF> >::emplace_back<PointF>' requested here
      { emplace_back(std::move(__x)); }
        ^
note: in instantiation of member function 'std::vector<PointF, std::allocator<PointF> >::push_back' requested here
            gpoints.push_back(Cvt(*i));

код из stl 4.9
#if __cplusplus < 201103L
      const bool __assignable = true;
#else
      // trivial types can have deleted assignment
      typedef typename iterator_traits<_InputIterator>::reference _RefType;
      const bool __assignable = is_assignable<_ValueType1, _RefType>::value;
#endif

      return std::__uninitialized_copy<__is_trivial(_ValueType1)
				       && __is_trivial(_ValueType2)
				       && __assignable>::
	__uninit_copy(__first, __last, __result);

добавил ассерты в код, падают ....
static_assert(__is_trivial(Gdiplus::Color));
static_assert(__is_trivial(Gdiplus::Color*));

 , ,

art_corp
()

RHEL 6.1 - RHEL 6.6

Добрый день!

Есть установленный RHEL 6.1, как известно, RHEL периодически выпускает обновления по подписке(лицензии).
Вопросы следующие:
6.2, 6.3, 6.4 - это отдельные версии RHEL которые нужно покупать/обновляться или это аналог сервис паков в Windows ?
т.е. 6.2 это 6.1 с последними обновлениями или отдельный дистрибутив?
Есть ли смысл переходить на 6.2 с 6.1 или по лицензии все что нужно в 6.1 попадает в рамках обновлений?

 

art_corp
()

Copy Past в свой не свободный код из gcc

Добрый день!

Планирую скопировать часть кода из gcc (из хедера) новой версии в свой проект, для поддержки новых фич языка.
Собираю код старой версией gcc без необходимого мне функционала.
Теперь я должен открыть свой код под GPL3?

P.S.
Возможности перейти на новую версию gcc пока нет.

 ,

art_corp
()

Минск. Тестирование кроссплатформенного ПО.

1) Опыт работы с любым дистрибутивом Linux
2) Опыт работы в консоли на уровне опытного пользователя
3) Опыт работы под OS Windows
4) Технический английский
5) Знание языков C#,C++,Python
6) опыт работы с системами контроля версий
7) опыт работы с Postgresql, Oracle.
8) Опыт написания простых выборок из Oracle, postgresql.
9) Внимательность, самостоятельность, обучаемость.

Желательно:
1) Знание JSON/XML/SOAP
2) опыт работы с Valgrind, perf
3) опыт работы с Eclipse, Visual Studio.
4) опыт работы с TFS, git.
5) опыт работы с httpd,tomcat.
6) опыт работы с Load runner.

Обязанности:
Тестирование тонкого клиента, прогон/доработка существующих тестов.


По ЗП информации у меня нет. (отвечаю за техническую часть в проекте).

Уровень организации - средняя-крупная
Писать в личку.

art_corp
()

apache2:i386 on Ubuntu 12.04 amd64

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

Есть установленный ubuntu 12.04 x64, на него нужно установить из репозитория apache2:i386

 apache2:i386 : Depends: apache2-mpm-worker:i386 (= 2.2.22-1ubuntu1.4) but it is not going to be installed or
                         apache2-mpm-prefork:i386 (= 2.2.22-1ubuntu1.4) but it is not going to be installed or
                         apache2-mpm-event:i386 (= 2.2.22-1ubuntu1.4) but it is not going to be installed or
                         apache2-mpm-itk:i386 (= 2.2.22-1ubuntu1.4) but it is not going to be installed
                Depends: apache2.2-common:i386 (= 2.2.22-1ubuntu1.4) but it is not going to be installed

проблема в отсутствующем в репозитарии mime-support:i386, perl:i386

The following packages have unmet dependencies:
 apache2.2-common:i386 : Depends: mime-support:i386 but it is not installable
                         Depends: perl:i386 but it is not going to be installed
                         Recommends: ssl-cert:i386 but it is not installable
E: Unable to correct problems, you have held broken packages.

при попытке установки mime-support:i386

# apt-get install mime-support:i386
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package mime-support:i386 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'mime-support:i386' has no installation candidate

  • Как обычно вы решаете проблему с i386 пакетами?
  • Можно конечно поставить с игнорированием зависимостей и подложить нужные библиотеки, но необходимо промышленное решение

 ,

art_corp
()

gcc + cmake и precompiled headers перегенерация *.gch после изменения *.h

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

Возникает следующая проблема - использую cmake, подключил precompiled headers. Но вот беда, если меняется какой нибудь заголовочный файл, перегенерация *.gch не происходит:

т.е. есть след код:

// stdafx.h
#include "main.h"
#include "test.h"
#include 100500 других заголовочных файлов
CMakeLists.txt
cmake_minimum_required (VERSION 2.6)

project(test)

include_directories(
    ${CMAKE_CURRENT_BINARY_DIR}
)

set(SOURCES
	main.cpp
	test.cpp
)

set(HEADERS
    stdafx.h    
    main.h
    test.h
)

set(RESOURCES
)

	
# Создаем приложение
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS} ${RESOURCES})

#Генерируем прикомпилинг хеадер
include(PCHSupport)
if(PCHSupport_FOUND)
	add_precompiled_header(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/stdafx.h)
endif(PCHSupport_FOUND)

add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD COMMAND rm ARGS -rfv ${CCOPY_DST} )
add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD COMMAND ln ARGS -sv ${CCOPY_SRC} ${CCOPY_DST} )
запускаю make в бинарном каталоге - все ок - сгенерировалось, собралось, работает.

Если поменять в каталоге с исходниками my.h, то в .../stdafx.h.gch/Debug.gch - лежит старый (видно по дате, размеру, командной строке в eclipse) т.е. я ожидал что он перестроится заного.

Теперь, собственно, вопрос: Как заставить пересобирать *.gch-ки с помощью cmake, может волшебные ключи есть какие? Как вы в своих проектах решили такую проблему?

Спасибо!

art_corp
()

Cоответствие шрифтов в Linux и Windows (c++)

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

Может кто занимался проблемами идентичного отображения шрифтов выводимых с помощью GDI+ и любыми другими открытыми библиотеками С++? Пробовал выводить с помощью Cairo (anti-aliasing,hinting и т.п.), качество не очень устраивает - буквы разной толщины, пиксели затенения не совпадают и т.п. артефакты ...

поделитесь опытом, на сколько удалось добиться идентичности с Windows?


Спасибо за помощь!

art_corp
()

Mono - Cairo CompositingQuality

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

Под Windows в GDI+ есть CompositingQuality, в Mono выполняю следующий ккод, он генерирует идентичный изображения. Хотелось бы знать вообще Cairo поддерживает Гамма корекцию? Гугл ничего внятного поэтому поводу не возвращает. Может кто сталкивался?


System.Drawing.Image img = new System.Drawing.Bitmap(500, 500);               
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(img);
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.GammaCorrected;
         
g.Clear(System.Drawing.Color.Black);
         
const float scale = 2;                                 
         
Image pImg = Image.FromFile(«convert.jpg»);

int width = pImg.Width;
int height = pImg.Height;

System.Drawing.Rectangle r = new System.Drawing.Rectangle(0,0,(int)(width/scale),(int)(height/scale));
g.DrawImage(pImg,r,0,0,width,height,GraphicsUnit.Pixel);
Console.WriteLine(«compositing = » + g.CompositingQuality.ToString());
img.Save(«compositing1.png»);

art_corp
()

QT сборка 32х и 64х битной версии приложения

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

Существует следующая проблема - есть приложение написанное на QTCreator. Машина 64х битная. Библиотеки стоят соотв. 64х и 32х битные. 64x битная версия собирается без проблем. В настройках проекта выбираю пути к библиотекам (32х и 64х).
в строке Tool chain: указываю gcc+ 32x но все равно собирается 64х битная версия ....
1) может ключи make где указать надо?
2) может qmake что то надо скормить?

Спасибо за помощь!

art_corp
()

GLIB - 2.0 32х и 64х битные версии на одной машине.

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

Проблема в следующем:
Есть 64х битная машина (сервер сборок), есть приложение которое тянет glib.
Необходимо собирать на этой машине две версии приложения 32х и 64х. Вопрос:
1) Возможна ли установка двух версий GLIB 32х и 64х битную.
2) Как это сделать, что прописать?

Приложение написано на QT, на машине установлена QT 64x и 32х версий.
Спасибо за помощь!

art_corp
()

Suse 10.0 и XMMS

Здравствуйте ! Надеюсь я рубрикой не ошибся, вроде не относится данная проблема к инсталяции. Проблема в следующем Поставил Suse 10.0 всё замечательно работает, только XMMS на прочь отказывается играть MP3 файлы - и вообще отказывается их проглатывать, а вот AMAROK просто замечательно работает, только процессорное время уж больно много ест, что делать ? может из исходных кодов ставить XMMS в Fedora Core 3,4 по каким то соображениям помню исключён код отвечающий за MP3 проигрывание может быть и здесь также ?

art_corp
()

Linux на USB винт

Здравствуйте ! Хочу поставить Linux на USB винт, дома комп хороший(поддерживает USB 2.0 а вот в других местах скорее всего только USB 1) вопрос такой Нормально ли будет работать (т.е. тормозить не будет ? комп CELERON 400 32-видео 168 - обычная оперативка ? Через IDE вроде работает нормально )Linux на USB 1, и как организовать загрузку Linux например с дискеты (а затем с винта USB)

art_corp
()

Загрузка Linux через USB НDD

Здравствуйте ! Хочу поставить Linux на USB винт, но проблема в том, что дома у меня комп поддерживает загрузку с USB устройств, а вот на работе нет. Можно ли как нибудь (например загружаться с дискеты а потом, с USB винта), если можно то как. (C CDROM не хотелось бы так как можно использовать KNOPPIX, а хотелось бы грузиться хотя бы с floppy). Спасибо за внимание.

art_corp
()

Сохранение объектов из контейнера в потоке.

Здравствуйте ! Есть лабораторка - один из пунктов такой

6) Сохранение объектов из контейнера в потоке. 7) Загрузка объектов из потока в контейнер.

Методические указания: 11) Для сохранения объектов в файле и загрузки их из файла используется потоковый ввод-вывод.

В качестве задания: контейнер map

Тип потокового класса: istrteam-для ввода ostream- для вывода

Вопрос такой: Я знаю как сохранить в файл с помощью классов порождённых от fstream а как в файл сохранить с помощью istream и ostream? (лаба не моя поэтому у препода спросить немогу !)

art_corp
()

AverMedia TV 307 & Fedora Core 3

Решил поставить тюнер скачал с bytesex.org патч (почти все закачал какие там были) с компилировал с горем (какие-то ошибки выдавал) статью читал с http://nshmyrev.narod.ru/aver/aver_tv_307.html всёравно не пашет, может кто ставил ? ядро 2.6.9 - xxx сейчас точно не скажу пишу не из дома.

art_corp
()

Чистка после установки Fedora Core 3

Поставил недавно Fedora Core 3. Одна проблема, как убрать Gnome, и вообще как половину пакетов убрать а то места столько жрут, а по идее мне только средства разработки нужны. Не подскажете ссылки на информацию об обрезании установленных пакетов (а то 4 Gb - забито а чем чёрт его знает) и вообще об настройке этого дистрибутива. Заранее спасибо !

art_corp
()

QTextEdit & QSyntaxHighlighter

Здравствуйте если не лень скинте пару ссылок на примеры работы с QSyntaxHighlighter нужно добавить в приложение подсветку синтаксиса заранее спасибо

art_corp
()

KDevelop:Добавление файлов flex & bison

Проблема следующая - как заставить KDevelop (у меня 2.1.5 )автоматически компилировать файлы *.l
и *.y (*.ypp)
причем *.y - содержит код на с++
пример 
-------------------------------------------------
//p.ypp
%{
.....
#include <iostream>
.....
%}
%defines
...
token NUM 
...
%%
start: NUM {cout << "THIS IS NUM" << endl;}
%%
-------------------------------------------------

-------------------------------------------------
//p.l
%%
%%

%c++

%%
[0-9]+ return NUM;
[ \t\n]+
%%
-------------------------------------------------

Если можно ответ по подробнее(что где прописать (добавлял в свойствах проекта проверку на flex(lex) и yacc(bison) не помогает (покрайней мере у меня))).
Заранее спасибо!!!
art_corp
()

Создание Компиляторов:программа проверки типов


email: art_copr@list.ru

Проблема в следующем: требуется написать программу проверки типов.
в книге Ахо,Сети,Ульмана "Компиляторы - Принципы,Технологии,инструменты" написана глава "Идентификация типов", но законченных примеров там нет (или скорее всего я плохо искал).

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

Хотел написать по примеру 6.1:

Конструктор типа Кодирование

pointer 01
array 10
function_return 11


Конструктор типа Кодирование

boolean 0000

char 0001

integer 0010

real 0011

Результат:

Выражение типа Код

char 000000 0001

function_return(char) 000011 0001

pointer(function_return(char) 000111 0001


array(pointer(function_return(char) 100111 0001

Для примера что - то типа такого кода есть в tiny c compiler (tcc)

Вопрос: как реализовать это под bison:

%token ARRAY

%token POINTER

%token F_RETURN

%token REAL

%token CHAR

%token BOOLEAN

у кого какие предложения?

код пишется на с++ хотелось бы реализовать всю проверку ввиде класса

который является членом класса CParser (уже написан).

CParser
{
public:

....

const int Run () const{ return yyparse ();}


const int call_function (const char* lpszName,параметры вызова)
{

symrec* pSym = (*pSymTable)[lpszName];

/* здесь вызов проверки типов */

return VOID_TYPE;

}

....

protected: CSymTable* pSymTable;

указатель на класс проверки типов;

};

art_corp
()

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