LINUX.ORG.RU

Избранные сообщения Pavval

Где почитать HOWTO по реализации (circular/ring) буфера?

Форум — Development

Нужно именно про буфер с несколькими «читателями»

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

Сам я додумываю только что должно как-то определяться по последнему, самому медленному читателю. Тогда не только пишущий поток должен ориентироваться на позицию чтения самого медленного, но и остальные читатели должны «не торопитьтся». Верно ли?

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

 ,

deep-purple
()

ужасов реквест

Форум — Talks

Температура 38°C, заняться абсолютно нечем, моск не работает, реквестирую годных фильмов ужасов, за которыми можно будет скоротать болезнь.

Котирую HELLRAISER, BRAINDEAD, EVIL DEAD, иными словами котирую либо чистую философскую чернуху, либо чернуху с юмором. Кстати последние зловещие мертвецы совсем не понравились, обычная беспросветная чернуха, утерявшая юмор и не обретшая философии, как и не понравился последний хелрэйсер, утерявший свою философию.

 , ,

newpunkies
()

Покрытие кода тестами

Форум — Development

Есть ли под онтопик инструменты более продвинутые в части интеграции с IDE по сравнению с gcov/lcov? Хотелось бы особенно иметь заточенность под Qt и новый Qt Creator. Видел уже плагин для старого креатора на жидхабе, но он по понятным причинам, даже не скомпилировался у меня.

 , code coverage,

LongLiveUbuntu
()

Нет пунктов «Suspend» и «Hibernate» в меню, хотя сами по себе ожидание и спячка работают.

Форум — Desktop

Добрых суток уважаемым лоровцам.

Обновил я тут на своем ПК Дебиан ГНУ/Линукс Джесси, причем основательно — более двух тысяч пакетов, что накопились за полгода, т. е. почти все, что было установлено.

Первое, на что напоролся — из ка-дэ-ешного меню (а значит и из krunner’а) пропали пункты «Leave › Suspend» и «Leave › Hibernate», хотя сами функции, если приказать прямо: # pm-suspend и # pm-hibernate соответственно, прекрасно работают.

Подскажите, пожалуйста, где начинать копать?

 , , ,

Zmicier
()

Amarok 2.8 и Cue-списки

Форум — Desktop

Всем добрый день. Недавно установил на ноутбук Mint 17, чем вроде как и доволен, но амарок вовсю отказывается понимать cue-списки. На Debian Wheezy более старая версия работает нормально. Сомневаюсь, что девелоперами так и было задумано. Как можно заставить его понимать cue-sheet?

P.S. Попрошу троллей воздержаться от холиваров. Мне нужен именно амарок, читающий нормально мою фонотеку.

 , , , ,

Russian_Vodka
()

Как отлаживать event loop?

Форум — Development

Пламенный куку!

Есть средних размеров проект с десятком плагинов, часть из которых ожидают всяких событий извне, часть — от других плагинов. Все живут на основном цикле обработке событий, созданы искусственные условия, когда источники внешних событий выключены, а значит никаких событий в системе не гоняется (по крайней мере теоретически, CPU usage 0). Создаю плагин, слушающий запросы из сети (QTcpSocket). В пустом проекте он откликается 2к раз в секунду (нам этого хватает с запасом, переписывать на более нормальную сетевую библиотеку не в приоритете). Теперь засовываем плагин в основной проект и имеем 40/сек, CPU usage 0.

Следующий эксперимент — в этом же проекте запускаем плагин в отдельном потоке со своим event-loop-ом, получаем те 2к/сек.

Есть предположение, что какие-то плагины делают что-то не так и впадают в кратковременное ожидание в основном потоке либо явным sleep-ом, либо неявно блокирующим открытием соединения с БД и тому подобными вещами.

Код всего есть. Эксперименты с поочередным отключением плагинов затруднены из-за уж совсем черезжопной конфигурации всего этого. Сейчас я по всей видимости этим займусь, но хочется варианта отладки попроще, если не сейчас то на будущее. Посему вопрос, как «посмотреть», что происходит в основном цикле обработки событий программы (QCoreApplication)? В принципе достаточно чего-то вроде такого лога (с временем, конечно):

пока нет событий, жду новых
есть новые события!
начинаю обработку события Х
заканчиваю обработку события Х
начинаю обработку события Y
заканчиваю обработку события Y
пока нет событий, жду новых

 

staseg
()

Что почитать по concurrency и memory model в С++11

Форум — Development

Интересуют atomics, CAS, memory barriers, false sharing detection and prevention, lock-free структуры данных, разные примеры happens before и т.д.

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

Статьи тоже сойдут, хотя я уже их начитался.

 

vertexua
()

timertt — библиотека с реализацией таймерных нитей для C++11

Форум — Development

Дабы выбросить из своего проекта ACE Framework пришлось сделать свою реализацию таймеров. Получилась небольшая библиотека, которая не имеет внешних зависимостей и использует только возможности стандартной библиотеки C++11. Проверялась под Windows (MSVC++2013, MinGW-w64 GCC 4.9.1) и Linux (GCC 4.9.1).

Лицензия: 3-х секционная BSD. Т.е. использоваться может без проблем как в открытых, так и в закрытых проектах.

Библиотека поддерживает только таймеры на основе тайм-аутов, т.е. таймеры, которые должны сработать через сколько-то миллисекунд (секунд, минут и т.д.) после момента активации таймера. wallclock-таймеры не поддерживаются.

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

Библиотека поддерживает три таймерных механизма: timer_wheel, timer_heap и timer_list, у каждого из которых есть свои преимущества и недостатки. Может поддерживаться большое количество таймеров (сотни тысяч, миллионы или даже десятки миллионов) и обеспечивается высокая скорость обработки таймеров (до нескольких миллионов в секунду, но это зависит от времени работы связанных с таймером пользовательских событий).

В коде все это выглядит приблизительно следующим образом:

#include <iostream>
#include <cstdlib>

#include <timertt/all.hpp>

using namespace std;
using namespace std::chrono;
using namespace timertt;

int main()
{
	timer_wheel_thread_t tt;

	// Timer thread must be started before activation of timers.
	tt.start();

	// The simple single-shot timer.
	tt.activate( milliseconds( 20 ),
			[]() { cout << "Simple one-shot" << endl; } );

	// The simple periodic timer.
	// Will work until timer thread finished.
	tt.activate( milliseconds( 20 ), milliseconds( 20 ),
			[]() {
				static int i = 0;
				cout << "Simple periodic (" << i << ")" << endl;
				++i;
			} );

	// Allocation of timer and explicit activation.
	auto id1 = tt.allocate();
	tt.activate( id1, milliseconds( 30 ),
			[]() {
				cout << "Preallocated single-shot timer" << endl;
			} );

	// Periodic timer with timer preallocation, explicit activation
	// and deactivation from the timer action.
	auto id2 = tt.allocate();
	tt.activate( id2, milliseconds( 40 ), milliseconds( 15 ),
			[id2, &tt]() {
				static int i = 0;
				cout << "Preallocated periodic (" << i << ")" << endl;
				++i;
				if( i > 2 )
					tt.deactivate( id2 );
			} );

	// Single-shot timer with explicit activation and deactivation
	// before timer event.
	auto id3 = tt.allocate();
	tt.activate( id3, milliseconds( 50 ),
			[]() {
				cerr << "This timer must not be called!" << endl;
				std::abort();
			} );
	tt.deactivate( id3 );

	// Wait for some time.
	this_thread::sleep_for( milliseconds( 200 ) );

	// Finish the timer thread.
	tt.shutdown_and_join();
}

Скачать можно с SourceForge: только header-only вариант или же полный вариант с тестами/примерами. Документация там же в Wiki (пока на русском языке, потихоньку будет переводиться на английский).

Еще чуть-чуть подробностей по релизу здесь.

Сразу поясню для желающих спрашивать «нафига это нада?» и/или «афтар, а чем это лучше/хуже?». Если вы в своем проекте уже используете какой-то фреймворк/библиотеку, предоставляющий таймеры (например, ACE/Boost/Qt/wxWidgets/libuv/libev/libevent/you-name-it), то, скорее всего, timertt вам не нужен. Если только вы не обнаружите, что ваш инструмент не очень хорошо справляется с миллионом таймеров или же вам надоело натягивать свою прикладную логику на API вашего инструмента (актуально, например, для ACE, где таймерные очереди реализованы здорово, на вот API для них несколько своеобразный и не всегда удобный).

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

Ну а вообще делал для себя, но не вижу причин не выложить в виде OpenSource.

 

eao197
()

Кому-нибудь нужна еще одна либа с реализацией spinlock-ов для C++11?

Форум — Development

У меня внутри одного проекта валяется, по-сути, полностью автономная, header-only библиотека с реализацией single-reader/single-writer и multi-reader/single-writer спинлоков: spinlocks.hpp

Базируется она на информации из документации к стандартной библиотеке C++11, идеях Дмитрия Вьюкова (так же известного как remark, одного из ведущих разработчиков Thread Sanitizer, невероятно крутого гуру в области многопоточности), исходных текстов LLVM и libcds. Собственно, код rw_spinlock, это калька с реализации аналогичного спинлока Димы из LLVM.

Так вот, если у кого-то будет интерес, то можно будет выделить spinlocks.hpp в отдельный подпроект, снабдить его примерами, более развернутой документаций. И публиковать ее релизы и дистрибутивы как релизы самостоятельного проекта. Получится такая легковесная библиотека со spinlock-ами, базирующаяся только на стандартной библиотеке C++11, без дополнительных внешних зависимостей.

Интересно/нужно это кому-то?

Если интересно или нужно, то какое имя будет подходить этой библиотеке? Например, stdcxx_spinlocks/stdcxx_spins/cxx11_spinlocks/cxxspinlocks?

 ,

eao197
()

А как вы питаете свои самодельные устройства?

Форум — Talks

Если в толксах не нужно, перенесите в engineering.
Многие тут делают всякие поделки на атмегах и чём-то посложнее. Если устройство работает с компьютером, лучше брать питание от USB, если устройство стационарное, берём дешевый китайский блок питания. А как поступать если устройство портативное? Раньше всегда было простое решение, сейчас это не очень актуально, т.к. большинство микрошем хотят на входе питания 3.3V, а иногда и меньше, так что имеет смысл voltage regulator 5V->3V3, а всякие 9V/12V/24V будут очень большими и горячими.
Разумно было бы использовать какой-нибудь популярный аккумулятор для мобильников (например, BL-5C). На отдельной плате развести зарядку, разрядку и защиту для аккума, поставить аккумуляторный разъём... Какой разъём использовать для подлючения питания к устройствам? Этот хорош, но великоват. Нужно, чтобы были варианты для монтажа на плату и на кабель. MiniUSB неплох в этом плане.
Как идея? Накидайте критики и вариантов, как сделать такой удобный источник питания.

 , , , ,

CYB3R
()

Разбираю монитор — подлежит ли ремонту?

Форум — Linux-hardware

Друг подарил монитор XEROX xa7-19i

http://iqs.biz.ua/televizory-i-monitory/lcd-tv-monitory/156-osobennosti-remon...

Монитор на секунду при включении загорается серым и издаёт звук сгоревшей лампы дневного света как в фильмах ужасов, хотя лампы все светят.

Вот что я нашел, разобрав его — это же ненормально?

https://dl.dropboxusercontent.com/u/48351790/DSC_5022.JPG

Я просто в железках не особо шарю, но по цвету предположительно сгорели трансформаторы, да? Можно ли их поменять? Паяльник есть, руки не из жопы.

P.S. — эта плата сейчас не под напряжением. Можно её трогать руками? Она же по идее должна выдавать высоковольтный ток для ламп.

 , ,

emostar
()

Что-нибудь почитать по QML и Qt Quick

Форум — Development

В общем хочу понять как работать с Qt Quick. Для интереса решил написать небольшое окно с вертикальным деревом из разноцветных прямоугольников в узлах(писал когда-то подобное на C++, с этого началось мое изучение Qt вообще)

Посоветуете литературу, примеры создания своих виджетов, способы создания простой интерактивности и взаимодействия элементов без использования C++.

Спасибо!

 , ,

deterok
()

Проверка, что список закольцован

Форум — Development

В голове вертится только два алгоритма:
1. Попытаться измерить длину - если при вычислении счетчик опрокинулся - то список кольцевой.
2. При чтении завести массив адресов, в который вносить прочитанные адреса, а затем при прочитывании каждого следующего пытаться искать его в массиве.

Есть канонiчный метод?

 ,

sambist
()

Х**к, х**к и в продакшен

Форум — Talks

А накидайте пожалуйста картинок типа http://bit.ly/1znEqam и https://pbs.twimg.com/media/BqYYTZ2IgAAvhYj.png с издевательствами над книжками O'Reilly на айтишную тематику.

drull
()

Какие принципы ООП лучше всего юзать?

Форум — Development

Demetra SOLID YAGNI KISS DRY

Прочие. Какие аргументы за. Просто напрмер YAGNI противоречит SOLID, какие принципы все же лучше.

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

 

pozitiffcat
()

Meta/Win и меню «пуск» KDE

Форум — Desktop

Клавиша Win сама по себе никак не биндится на приложение «Классическое меню запуска приложений», при её нажатии для бинда появляется Meta + ... и одидается нажатие ещё одной кнопки. Как сделать чтобы она сама по себе функционировала? Также «Классическое меню запуска приложений» у меня находится на панеле в нижнем левом углу, но если провести по самому правому краю, то там кнопка приложения не активна, как это можно исправить?

 ,

Eldar7
()

«Rust by Example» и «Rust for C++ programmers»

Форум — Development

Привет лор. Это опять я и опять с Ржавчиной, точнее с парочкой ссылок по этой теме :) .

http://rustbyexample.com - изучение языка на основе очень коротких примеров с минимумом комментариев (очевидно влияние gobyexample.com).

Rust for C++ programmers - постепенно растущий цикл статей для С++ программистов.

На данный момент 7 статей:

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

P.S.: и между делом упомяну, что все-таки решили добавить оптимизацию хвостовых вызовов, но уже после выпуска стабильной версии:

Rust, tail call optimization (комментарий)

 

ozkriff
()

Программирование ARM

Форум — Science & Engineering

Ко мне пришли долгожданные посылки.

Итак, имеется:

1) Минимальная плата с STM32F103.

2) Китайский ST-LINK V2

3) USB-адаптер на базе FT232 со всеми выведенными пинами (можно эмулировать JTAG с помощью bitbang)

4) Ноутбук с Debian Testing

Имеется опыт программирование AVR с помощью avr-gcc, Makefile и текстового редактора. Уже смог скомпилировать st-flash из исходников и для теста очистить память МК - st-flash всё сделал и вывел параметры моего МК, значит я всё подключил правильно.

Что мне делать? Для начала - какой компилятор нужен? Желательно из репозиториев. Во-вторых, откуда взять заголовочные файлы для конкретных ядер? Опять же было бы не плохо из репозиториев. С AVR было просто - все компоненты качались из реп, в итоге я мог не беспокоиться на наличии подключаемых файлов и стандартных библиотек.

 , , , ,

KivApple
()

Посоветуйте мультиметр

Форум — Talks

Нужна относительно высокая точность, вплоть до 0.01В, желательна возможность измерения ёмкости и индуктивности. Последнее штука наверное редкая, так что заодно можете ткнуть носом в отдельный хороший LC-метр.

Ещё есть вопрос по питанию, у всех современных мультиметров, которые проходили через мои руки, батарея находится внутри девайса, это нормально? Как узнать когда её следует заменить?

Deleted
()

Почему все темы с фейлами кто-то добавляет к себе в «избранное»?

Форум — Talks

как возникает какая-нибудь проблема, которой по-идее быть не должно, типа такой

Проблема установки: low-graphics. Ubuntu

так сразу на треде хоп и «звездочка» избранности...

Indaril_Shpritz
()