LINUX.ORG.RU

Сообщения pathfinder

 

Использование тулкита GTK

Мне нужно писать кое-какой гуй на с++. Причем очень важно, чтобы он был кроссплатформенным. Т.е. в основном он должен работать под оффтопиком, но поддержка сборки под линукс обязательна. В частности ПО должно работать под ОС Астра Линукс. Сейчас использую Qt. Технически меня всё устраивает, но политически... терзают сомнения.

Если рассматривать в качестве альтернативы GTK, то насколько жизнеспособно писать кроссплатформенный гуй на нем? На сегодняшний день, естественно.

Если кто-то даст качественный объективный ответ, без холиварных моментов, буду ему очень благодарен. :)

 

pathfinder
()

udp+bind()+тупняк = Invalid argument

Что-то не могу понять. Раньше с UDP работал мало. Сейчас задаю удаленный адрес и порт через connect(), а локальный порт выбирает ОС. Так все работает. Но нужно задать фиксированный локальный порт. bind() возвращает ошибку - Invalid argument.

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

memset(&addr_local,0,sizeof(addr_local));
addr_local.sin_family = AF_INET;
addr_local.sin_port = htons(local_port);
addr_local.sin_addr.s_addr = htonl(INADDR_ANY);
bind(fd,(struct sockaddr*)&addr_local,sizeof(addr_local)) );

Что же не так?

 ,

pathfinder
()

Посоветуйте книгу

Посоветуйте хорошую книгу на русском языке, где подробно описано всё, что связано с динамическими библиотеками. Работу всяких /etc/ld.so.cache, линковку, PIC и прочее.

Весьма желательно, если будет ссылка, где можно будет купить бумажную версию.

 , ,

pathfinder
()

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

Что-то не могу понять почему код не компилируется? У меня код вида:

class MyClass
{
public:
   class MyNestedClass
   {
   public:
       MyClass* owner;
       MyNestedClass(MyClass* owner_p) : owner(owner_p) {}
       MyNestedClass(const MyNestedClass&)=delete;
   }nested_class = this; // <--- вот тут если заменить на nested_class{this};  то все будет компилироваться

   MyClass();
   MyClass(const MyClass&)=delete;
};

Ошибка имеет вид: use of deleted function ‘MyClass::MyNestedClass::MyNestedClass(const MyClass::MyNestedClass&)’

 ,

pathfinder
()

Зачем нужен анонимус?

Вопрос в заглавии не стоит воспринимать как некий призыв к действию, просто интересно.

Мне временами кажется, что анонимус нужен только для того, чтобы регистрант мог оскорбить кого-нибудь или ещё как-то нарушить правила форума, не боясь при этом получить бан от модераторов.

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

Изначальный смысл утрачен. :(

Сейчас Анонимус не просто сущность в логике работы форума, это какой-то социально-культурный феномен.

И вот вопрос: А нужен он в таком виде? Какую ценность видит сообщество/модераторы/создатель ресурса в той части постоянных посетителей сайта, которые постят под анонимусом?

Можно ли считать, что если не было «нашего любимого анонимуса», то ресурс бы потерял что-то... эээ.... важное?

 

pathfinder
()

Как правильно указать путь до библиотеки?

Питаюсь собрать одну программу, которая зависит от библиотеки, которая зависит от другой библиотеки. :'(

Ситуация. Надо задать параметры/опции для скрипта configure так, чтобы он искал библиотеку по определенному пути. Я пробовал это делать через задание параметров "-I" в CFLAGS и "-L" в LDFLAGS.

Но скрипт ./configure всё равно говорит:

checking for gmp.h... no
configure: error: gmp.h header not found

Вопрос: А как правильно указать путь до нужной библиотеки?

 

pathfinder
()

Вопрос по makecontext(), swapcontext()

Кто-нибудь пользовался функциями makecontext(), swapcontext()? Безопасно ли ими пользоваться, если пишешь программу на с++?

 , fibers

pathfinder
()

pthread_rwlock + shared + robust

Я раньше не пользовался pthread_rwlock. Вроде этой блокировке можно выставить атрибут shared, но нигде не могу найти описание выставления атрибута robust.

Вопрос: Как этим пользоваться, если я хочу разместить эту блокировку в общей памяти, разделенной между процессами?

 

pathfinder
()

Какой смысл у этого кода?

days = div((int &)IN.tv_sec, SECONDS_PER_DAY);

Кусочек кода взят из одного open source проекта. Мне непонятно, что автор хотел с этим "(int&)"?

 

pathfinder
()

CMake компиляция под ARM и пути до библиотек

Собираю под arm компилятором. CMake живет своей жизнью и упорно в параметры линковки вставляет пути вида "-L/usr/lib/x86_64-linux-gnu", хотя я об этом эго не просил. Естественно не собирается. Как это побороть?

 

pathfinder
()

Чем плох GLOB для задания исходных кодов в проектах CMake?

Собственно сабж

 

pathfinder
()

stty виснет

Я пытаюсь в своей программе через system() запустить stty c параметрами для того, чтобы настроить скорость COM-порта (/dev/ttyS0). И (иногда) процесс stty «зависает», соответственно вызов system() не заканчивается никогда.

Разве должны быть какие-то блокирующие процесс операции при настройке параметров порта? Чего оно может ждать? Почему ожидание длится вечность?

 

pathfinder
()

Вопрос про mmap() файлов в память.

Предположим у меня есть файл большого размера с данными в некоторой древовидной структуре.

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

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

Или я слишком много хочу от ОС?

 

pathfinder
()

Нужен альтернативный аллокатор для контейнеров

Есть несколько STL контейнеров, которые в некоторый момент хранят в себе огромное количество мелких объектов съедая большое количество памяти. Потом все данные этих контейнеров освобождаются. Но из-за фрагментации данных в куче стандартный аллокатор не отдает ОС память.

Есть ли какие-нибудь готовые аллокаторы для таких случаев? Или надо писать свой велосипед?

 

pathfinder
()

Нубский вопрос про чтение данных

Раньше я с базами данных не работал а тут неожиданно пришлось иметь дело.

Есть БД на postgresql. В ней есть таблица на 1-2 млн. записей. В конечном итоге надо её всю считать, и записать данные на диск разбив по группам. Группы определяются значением полей. На группу приходится около 10 тыс. записей

Вопрос:

Что рациональнее с точки зрения производительности и потребляемой памяти - переложить выборку по группам на БД или делать это самому?

Насколько быстрее запросы вида " SELECT ... WHERE some_field='some_id' " выполняются по сравнению с ручной обработкой?

 ,

pathfinder
()

Несколько libstdc++

Есть железка, на ней нормально запускаются программы, собранные gcc 4.9.2

Но кое-что собрано gcc 5.1. Эти бинарники не хотят запускаться из-за несовместимости библиотеки libstdc++.

Можно как-то сделать, чтобы было несколько версий libstdc++, а загружаемая выбиралась сама?

Под оффтопиком есть же redistributable package?

 ,

pathfinder
()

msync() vs fsync()/fdatasync()

Пускай у нас есть некий файл, который через mmap() отображается в память. Запись в отображаемую память делается редко и лишь в небольшой части. После каждой записи надо сбрасывать изменения на диск.

Так как у диском у нас является флешь, хотелось бы поменьше операций записи. Если в этом плане разница между msync()/fsync()/fdatasync()? Что лучше использовать?

 ,

pathfinder
()

Проблема с удаленной отладкой

Пытаюсь я запустить отладку приложения, запущенного на другой машине через gdbserver.

При нажатии кнопки «с» в gdb вылетает SIGSEGV:

(gdb) target remote 10.19.32.24:10000
Remote debugging using 10.19.32.24:10000
Reading symbols from /lib/ld-linux.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/ld-linux.so.2
0xb7fdfd00 in ?? () from /lib/ld-linux.so.2
(gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0xb7feebf4 in ?? () from /lib/ld-linux.so.2

Если просто запустить приложение на удаленной машине, то все нормально запускается.

Если сначала запустить удаленное приложение, а потом к нему подключить gdbserver через параметр attach, то тоже все нормально отлаживается.

Может кто сталкивался с чем-то подобным и может сказать в чем дело?

 ,

pathfinder
()

GC и большое количество объектов

Предположим, что надо написать некую программу с GUI, назовем её «конфигуратор». И этот конфигуратор должен работать с очень большим количеством объектов в памяти. Пускай, типичная конфигурация представляет собой сложную древовидную структуру, состоящую из нескольких миллионов объектов.

Насколько я понимаю, если запустится сборщик мусора, то программа надолго зависнет на весьма заметный промежуток времени.

Можно ли утверждать, что С#/Java для написания таких программ не подходят?

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

 

pathfinder
()

Использование workqueue

Вынужден писать драйвер ядра для одной железяки. :(

Работа с устройством ведется через активный поллинг. Мне нужно некое подобие нити, которая будет просыпаться каждые 10мс и опрашивать устройство.

Хочу сделать это через workqueue в который заталкивается «вечный» work, который в цикле опрашивает устройство и засыпает на 10мс и т.д.

Вот думаю, можно ли так делать? Может есть способ лучше?

 ,

pathfinder
()

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