LINUX.ORG.RU

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

Быстрый ассоциативный массив для чтения

Форум — Development

Задача сделать констаный асоциативный массив строка -> число для С++. Т.е. после создания он изменяться не будет.

Далее

using обьект = "констаный асоциативный массив строка -> число";

Условия:

  • Обьект создается только один раз
  • Можно чтоб обьект был инициализирован до вызова main
  • Ключи (строки) и значения (числа) известны уже на этапе компиляции и не изменяются с этого момента.
  • Ключи как и значения уникальны (т.е. значения не повторяются, а одному ключу соответствует только одно значение)
  • На 90% ключей состоят ровно из 3 символов: большие буквы A-Z и/или цифры 0-9. Остальные 10% ключей не превышают в длинне 15 символов (однако могут иметь также и маленькие буквы a-z).
  • Ключи можно вычислять из строки, главное чтоб выполнялось:
    f(x) != f(y) для (x != y), (x, y) на всем множестве ключей
    f(x) == f(x) для x на всем множестве ключей
    
  • Приоритетом является быстрый доступ к значению по точному ключу
  • Требуется механизм проверки присутствует ли ключ (т.е. входные данные не всегда валидны)
  • Необходима возможность добавления новых пар ключ-значение в последующих компиляциях (ну, чтоб по крайней мере это не было адски сложно)
  • Стандарт C++14 (и можно использовать фичи из C++17)

Желательно (но не обязательно):

  • Сборка обьекта в compile-time (напр. constexpr)
  • Возможность итерации по всем ключам обьекта
  • Чтоб значения не были слишком сильно разбросаны

Чем можно пренебречь:

  • Размером конечного обьекта (может быть ну очень большим)
  • Временем компиляции (т.е. может быть адская шаблоно-лапша, главное чтоб соответствовало условиям выше)

Сейчас, чтоб сильно не заморачиватся, используется

using namespace std::string_view_literals;

const std::unordered_map<std::string_view, int> map{
    { "key"sv, 42 },
    // ...
};

Однако появилось время покопаться, по этому прошу подсказать, как можно улучшить?

Т.е. было бы прикольно даже иметь хеш-функцию f(str) -> int которая бы гарантировала отсутствие коллизий и не слишком разбросанные значения.

 ,

KennyMinigun
()

cd автоперебор

Форум — General

работая с терминалом в ubuntu, используя cd для перехода по директориям, не хватает возможности перебора папок без указания начальных символов. то есть нажал комбинацию и тебе поставляет папку в путь, еще раз нажал сменило на другую папку и тд. просто иногда директории на кириллице и очень влом менять раскладку каждый раз. посоветуйте пакет или скрипт для решения сей проблемы. спасибо.

 ,

q3ta
()

Избежать повторения кода с помощью C++11 range-based for

Форум — Development

Допустим, есть какие-то единообразные инструкции над несколькими переменными

if(x % 2 == 0) ++x;
if(y % 2 == 0) ++y;
if(z % 2 == 0) ++z;

Как такое делается в современном c++? Я попробовал range-based for, но заработал только вариант с указателями.

for(auto t: {&x, &y, &z})
    if((*t) % 2 == 0) ++(*t);

Reference/dereference тут выглядит явно неуместно. Можно как-то по-другому?

Update

С помощью анонимусов получилось вот такое решение

#include <cstdio>
#include <initializer_list>
#include <functional>

#define rlist(x, ...) (std::initializer_list<std::reference_wrapper<decltype(x)>>({x, __VA_ARGS__}))

int main()
{
    int x = 2, y = 3, z = 4;
    for(auto t : rlist(x, y, z)) if(t % 2 == 0) ++t;
    printf("%d %d %d\n", x, y, z);
    return 0;
}

При использовнии выглядит достаточно прилично (а на макрос можно не смотреть). Требует стандарта C++11. Что с производительностью - пока не знаю.

Update 2

Решение на шаблонах от eao197

#include <iostream>
using namespace std;

template<typename F> void apply_to_all(F &&) {}

template<typename F, typename T, typename... O>
void apply_to_all(F && f, T && x, O && ...other) {
	f(forward<T>(x));
	apply_to_all(forward<F>(f), forward<O>(other)...);
}

int main() {
	int x = 2, y = 3, z = 4, v = 5, w = 6;
        apply_to_all([](int & v) { if(v % 2 == 0) ++v; },
		     x, y, z, v, w);
        apply_to_all([](int v) { cout << v << " "; },
		     x, y, z, v, w);
        cout << endl;
        return 0;
}
На c++14 можно писать auto вместо int в лямбде.

В С++17 за счет if constexpr не нужно будет делать пустую заглушку для прекращения рекурсии вызовов:

template<typename F, typename T, typename... O>
void apply_to_all(F && f, T && x, O && ...other) {
	f(forward<T>(x));
	if constexpr(0 != sizeof...(other))
		apply_to_all(forward<F>(f), forward<O>(other)...);
}

 ,

Crocodoom
()

безопасно ли читать в avx регистр концы массивов

Форум — Development

Допустим есть такой случай

uint8_t arr[33] __attribute__((aligned(64)));
....

__m256i v = _mm256_load_si256((__m256i*) arr);
...
v = _mm256_load_si256((__m256i*) arr+32);

Безопасен ли такой код? Насколько я понимаю память на x86 выделяется страницами с минимальным размером в 4кб. А то в свою очердь означает, что читая 32 байта (256 бит) по выравненому указателю (по 64 байта - 512бит) мы не можем залезть в память другого приложения (или ядра) и получить неприятные последствия от этого.

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

 , , ,

Dudraug
()

Как эффективно сохранить в память несколько элементов по различным адресам.

Форум — Development

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

То есть примерно такое

   size_t offset = calc_offset();
    
    for(size_t i = 0; i < sizeInp; ++i) {
      *(out + *(bufOffsets + offset++)) = inp[i];
    }

Можно как-нибудь оптимизировать запись в память для такого алгоритма? На данный момент это является узким местом самой тяжелой функции в системе. Остальную часть функции уже удалось оптимизировать через avx2.

Значения в bufOffsets само собой могут отличаться от соседних значений больше чем на 1 (то есть куском через тот же avx не записать). Подойдут решения как общие(с++/c), так и под асм x86(x86_64).

Заранее спасибо.

 , ,

Dudraug
()

Воскресные вкусняшки: openmw-0.42.0, plasma5, swift-3.1.1, linux-{0.0.1-4.13}

Форум — Development

Доброго времени суток мои красноглазые читатели!

За прошедшее время в bentoo вот что произошло:

  • Bump & fix deps games-engines/openmw-0.41.0 -> games-engines/openmw-0.42.0
  • Add new stuff to bentoo/bentoo-kde-17.04.3
  • Fix python_targets deps in dev-lang/{swift-3.1.1,swift-bin-3.1.1}
  • Bump sys-kernel/bentoo-sources-{4.4.80,4.9.41,4.12.5} -> sys-kernel/bentoo-sources-{4.4.81,4.9.42,4.12.6}

dev-lang/swift-3.1.1 - всё такая-же какашка. Но скорее всего это просто мы что-то делаем не так а на самом деле там всё просто шикарно. Не тратьте на нёе своё время если не хотите починить процесс сборки, получить рабочий swift и прислать нам свои заплатки.

games-engines/openmw-0.42.0 - пришлось править зависимости, знатно поменявшиеся в gentoo со времен 0.41.0.

Ах да!!! По адресу https://github.com/redeyeteam/linux те кто будет искать отыщет не совсем обычное дерево исходников ядра Linux. Чем же оно необычное? Ну как бы вот этим:

> cd linux
> git tag | grep -vh rc
v0.0.1
v1.0.0
v1.2.0
v2.0.0
v2.2.0
v2.4.0
v2.6.0
v2.6.11
v2.6.11-tree
v2.6.12
v2.6.13 
v2.6.14 
v2.6.15 
v2.6.16 
v2.6.17 
v2.6.18 
v2.6.19 
v2.6.20 
v2.6.21 
v2.6.22 
v2.6.23 
v2.6.24 
v2.6.25 
v2.6.26
v2.6.27
v2.6.28
v2.6.29
v2.6.30
v2.6.31
v2.6.32
v2.6.33
v2.6.34 
v2.6.35 
v2.6.36 
v2.6.37 
v2.6.38 
v2.6.39 
v3.0 
v3.1 
v3.10 
v3.11 
v3.12 
v3.13 
v3.14 
v3.15 
v3.16 
v3.17 
v3.18 
v3.19 
v3.2 
v3.3 
v3.4 
v3.5 
v3.6 
v3.7 
v3.8 
v3.9 
v4.0 
v4.1 
v4.10 
v4.11 
v4.12 
v4.2 
v4.3 
v4.4 
v4.5 
v4.6 
v4.7 
v4.8 
v4.9

> du -hs .git                   
2,1G    .git    

А зачем это всё это ненужно конкретно вам и что теперь с этим всем делать решать тебе мой красноглазый читатель.

 , , , ,

init_6
()

Briar Beta

Новости — Open Source
Группа Open Source

Briar — это приложение для обмена сообщениями, созданное для людей, которым необходимо средство безопасного и простого способа общения. В отличии от популярных на данный момент средств обмена сообщениями, Briar не зависит от центрального сервера — сообщения синхронизируются напрямую между устройствами пользователя. Если Интернет становится недоступным, то Briar может обеспечивать связь посредством Bluetooth или Wi-Fi.

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

В числе разработчиков есть люди, которые приложили свою руку к таким проектам, как I2P, Freenet и LimeWire.

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

Сборки Briar доступны в Google Play, а также в виде apk для тех пользователей, которые предпочитают не использовать Google Play. Подробнее о установке и использованию можно прочитать в официальном руководстве пользователя.

На данный момент разработчики сконцентрированы на мобильном приложении под Android, но для имплементации протокола в рамках приложения для десктопа нет никаких преград, так как (цитата) «Briar был создан модульным настолько, насколько это возможно».

Исходные коды проекта распространяются по лицензии GNU GPLv3.

>>> Подробности

 , ,

Deleted
()

Тормоза при дисковых операциях

Форум — Desktop

Здравствуйте

Так было всегда, просто достало. При копировании, сохранении, и т.п. дисковые операции виснет все. Туго открываются новые окна, например. Все нормализуется по окончанию этого копирования.

Как-то наверно можно ситуацию улучшить. Конфигом ядра?

Может просто система засралась (устанавливал в 2012)

Сюда пишу, так как не могу грамотно это сформулировать в поисковике.

Заранее благодарен.

 , ,

brothermechanic
()

Баг в systemd это не баг, а исторически сложившаяся фича

Форум — Talks

В systemd выявлена ошибка, приводящая к выполнению сервисов с правами другого пользователя, если в параметрах запуска указано имя пользователя, начинающееся с цифры. Например, если в сервисе указан «User=0day» и пользователь 0day присутствует в системе, то сервис будет запущен с идентификатором 0, т.е. с правами root. Леннарт Поттеринг отказался исправлять ошибку и закрыл уведомление с меткой «not-a-bug».

Позиция Поттеринга: В Linux исторически не разрешено использовать имена пользователей, начинающиеся с цифры, которые считаются некорректными. Например, в утилитах из состава shadow-utils применяется ограничение «[a-z_][a-z0-9_-]*[$]». Подобное ограничение принято чтобы избежать путаницы между передачей UID и имени пользователя в качестве аргументов типовых утилит. В systemd если имя начинается с цифры, то цифровая часть воспринимается как цифровой идентификатор пользователя (UID), поэтому имя 0day будет обработано как UID 0.

Фактически ситуация такова: systemd выполняет из-под рута команды при очевидно некорректных входных данных.

Натабуго-пруф: https://github.com/systemd/systemd/issues/6237

 ,

MimisGotAPlan
()

Proxmox VE 5.0

Новости — Кластеры
Группа Кластеры

4 июля состоялся релиз Proxmox VE 5.0.

Proxmox — это система виртуализации, являющаяся надстройкой над QEMU и LXC, то есть поддерживающая как полную, так и контейнерную виртуализацию. Возможна работа с кластерами из нескольких серверов с общими хранилищами и живая миграция виртуальных машин. Продукт распространяется под лицензией GNU AGPL, однако для получения доступа к репозиторию с актуальными стабильными обновлениями нужно приобрести подписку. Предоставляется как ISO-образ, основанный на Debian GNU/Linux, так и репозиторий пакетов для установки на уже имеющуюся инсталляцию Debian.

( читать дальше... )

>>> Примечания к выпуску

>>> Подробности

 , ,

te111011010
()

Bash, XCB, эвенты

Форум — Development

Привет. Скажу сразу, но это, скорее всего, к делу не относится, но всё равно спросит кто да нибудь: использую wmutils и lemonbar-xft, lemonbar, также, для рисования заголовков окон не maximized. Мне нужно в скрипте получить уведомление того что пользователь перетащил(нажав левой кнопкой мыши на заголовок окна и не отпуская, обычный drag) окно к краю или углу экрана или корневого окна. Мои исследования в гугле привели меня к XCB_EVENT_MASK_BUTTON_MOTION. Так вот, скрипт запускается при нажатии на заголовок окна, и при отпускании кнопки мыши eventloop уничтожается. Для начала мне нужно узнать как слушать эвенты XCB в пределах башь скрипта, так как я не знаю. Далее я протестирую уже сам функционал на различных оконных менеджерах и без. Спасибо за внимание.

 , ,

little-boy
()

Материнка для виртуализации.

Форум — Linux-hardware

Решил собрать ПК, а т.к. живу не один и имею в наличии пару мониторов захотелось мне побаловаться виртуализацией. Хочу на базе одного системного блока создать два «рабочих места». Планирую взять CPU от intel(kaby lake i5 или i7 без «K» и прочих суффиксов, но с intel HD), видеокарту(nvidia 730/1050 или ati 460) и ещё для гостевой купить pci-e - usb контроллер и pci звуковую карту. Т.е. в гостевую надо будет пробросить видеокарту, usb контроллер и звуковую карту сидящие на pci-e/pci шинах.

Какая материнка c 200-ым чипсетом и ценой до 10К деревянных, способна пробросить столько шин?

 , , , ,

verdugo
()

Тест Nvidia тиринг и ForceCompositionPipeline = On

Форум — Games

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

Я записал сравнение ForceCompositionPipeline = On и Off и почему опция On непригодна к использованию.
Почему- кадры «тиринга» никуда не исчезают, но вместо отображения тиринга я вижу на экране вот что, словами:
При включенной опции ForceCompositionPipeline = On я вижу «рывок» между двумя(возможно больше промежуток) кадрами и это очень хорошо заметно в любой даже самой плавной игре(не быстрым поворотом камеры) или банальной прокрутке браузера,но рывок это не самое страшное самое страшное это- отсутствие отклика от системы во время этого «рывка» никакие кнопки не работают как будто иксы зависают на долю секунды.
И количество таких рывков, очевидно зависят от загрузки системы(от ФПС)- если открыть одну вкладку в браузере и никаких больше окон вообще в системе то и рывков будет минимум(один в пару минут)
но если открыть пару вкладок в браузере, стим, любое окно в вайне, пару текстовых редакторов, терминал и пару файл-менеджеров, плюс запущенная игра-это все потребляет 50% CPU и 50-70% GPU
и количество «фризов» в каждом окне станет невыносимым-банально печатая текст в текст редакторе вводя «привет» вы напечатаете «приввет»(две буквы) потому что во время ввода «в» был «физ» и иксы не получили события «отжатия кнопки» и на долю секунды кнопка «в» была нажата и очевидно текстовый редактор по таймеру напечатал еще одну «в» так как в памяти «в» все еще нажата

и это весь интерфейс фризится-даже движения мышки «дергаются», хотя и показано что ФПС 60(или выше если без Vsync) и визуальный ФПС в таких условиях «ощущается» что ниже 20
к этому добавляется появление «бага рывка экрана» после альт-таба из/в любое приложение случайно начинают рывки идти с определенной очередностью и .... это неюзабельно вобщем(на видео ниже есть демонстрация,видео 13 и 8)

однако если выключить ForceCompositionPipeline = Off то система станет идеально отзывчивой,да будет тиринг при выделении(файлов в файл редакторе/раб столе к примеру) тиринг при перетаскивании окон,но при этом интерфейс не фризится и система отвечает на нажатие клавиш в любой момент

тоесть эта опция ForceCompositionPipeline = On заменяет «тиринг» ожиданием полного кадра во время ожидания кадра иксы «замораживаются» не отвечая на любой ввод

теперь по записи:
во первых- в записи со включенным ForceCompositionPipeline = On в видео(кадрах) есть тиринг, почему- потому что ffmpeg берет кадр из памяти, и в памяти во время «фриза» находится кадр с тирингом но этот кадр не отображается на экране и я вижу «фриз» но ffmpeg записывает кадр с тирингом, тоесть все кадры с тирингом в записи с ForceCompositionPipeline = On в этот момент мой экран был заморожен и я не видел кадра с тирингом, я видел кадр до и после тиринга
второе это опции записи- все видео записаны в 1080p на 60ФПС (даже те в которых 30ФПС), опция записи для всех видео одинакова и нагрузка системы идентична, вот строка

ffmpeg -video_size 1920x1080 -framerate 60 -f x11grab -i :0.0 -f pulse -ac 2 -channel_layout stereo  -i default -vcodec nvenc -preset slow -b:v 8M -maxrate 8M -bufsize:v 8M -bf 2 -refs 1 -bf 2 -refs 1 -g 120 -i_qfactor 1.1 -b_qfactor 1.25 -qmin 1 -qmax 70 -threads 0 -strict -2 </file>

в третьих- для местных форумных ботов, которые ниразу в жизни не видели тиринг и считают что он не существует
идите сюда http://codepen.io/anon/pen/rjoGwB (чтоб скачать- Export снизу справа с сохраните ZIP, распакуйте после скачки и откройте index.html) (вот клон http://liveweave.com/67C4N2 (скачать- сверху Tools-...as zip)), если в браузере не работает-просто скачайте любой из указанных.
Теперь запустите два Разных браузера на весь экран на двух рабочих столах(если у вас i7 восьмиядерный то три-четыре браузера(Firefox chromium midori qupzilla для примера,вообще любые)) и откройте скачанный файл или онлайн на весь экран
один из браузеров начнет лагать(количество окон в браузере не важно,достаточно одного,все невидимые окна не нагружают систему) и у вас будет тиринг
если включить ForceCompositionPipeline = On то тиринга не будет, но будут невероятные рывки (а если записывать в этот момент ffmpeg-ом то на видео будет дичайший тиринг(а на экране не будет да,а будут рывки))

Теперь видео-пруфы(везде где Vsync- с включенной вертикальной синхронизацией
1.Vsync ForceCompositionPipeline = Off ровный ФПС только при малом количестве объектов в кадре
2.ForceCompositionPipeline = On дергается даже при малом количестве объектов в кадре хотя ФПС показывает одинаковый даже лучше чем в прошлом
3.On и Off с 00:00 по 1:55 Vsync ForceCompositionPipeline = Off , с 1:56 до конца On, также тест лага мышки...плохо заметно на записи ибо «курсор движется» в кадрах ffmpeg когда у меня на экране все замирает включая курсор но всеравно заметно медленнее чем на 30ФПС на Off
4.Vsync ForceCompositionPipeline = Off никаких «лагов» в отзывчивости,мгновенная реакция на кнопки но есть тиринг(но его мало во всем видео) кадры тиринга 7679 12238 12328 http://imgur.com/a/ehx4y
5.Vsync ForceCompositionPipeline = On гдето раз в 5 сек идет один-два лага на «кадр тиринга» смотри ссылку ниже
6.раскадровка прошлого видео с 2231 кадра прошлого видео 115 следующих кадров, тиринг 00:02(кубы справа снизу) 00:07(тоже справа снизу) 00:32(две полосы по центру экрана) 00:52(нижняя часть экрана под полосой прокрутки ютуба) 1:49(чуть выше середины экрана), напоминаю- я на экране не вижу тиринга, на экране просто пропадает кадр тиринга и во время этого кадра весь «ввод» заморожен
7.1080 Vsync ForceCompositionPipeline = Off в начале видео «плавность анимаций в меню», на 30 ФПС сравните со следущим видео, также в конце движение мыши
8.1080 ForceCompositionPipeline = On сравнивайте плавность этого с предыдущем видео(надо быть слепым чтоб не увидеть разницу) и добавьте к этом то что весь «ввод» клавиатура и мышь работает с такимиже «лагами» тоесть во время этого «фриза» что ярко видно на видео даже клавиатура не отвечаает,даже переключение индикаторов типа Намлока на клавиатуре не работает(а в прошлом все прекрасно работает никакого лага для «ввода») также в конце лаги мыши-хорошо виден синхрон мыши к лагу
9.720 ForceCompositionPipeline = On выключены тени чтоб получить 60ФПС и 720 разрешение игры, лагов меньше но даже в начале видео в меню в «конце анимации» можно видеть лаг, также такойже как в прошлом видео лаг во время всего видео но меньше конечно за счет более высокого ФПС
10.720 Vsync ForceCompositionPipeline = Off 720 и без теней на 60ФПС сравните плавность с прошлым видео
11.Vulkan Vsync ForceCompositionPipeline = Off сравнивайте со следущим
12.Vulkan Vsync ForceCompositionPipeline = On все эти «маленькие рывки» воспринимаются нормально, но не забывайте- во время всех этих рывков у меня лагает весь «ввод»(что очевидно критично в такой игре которая показана)
13.Vulkan ForceCompositionPipeline = On без всинка, видео в полной мере показывает чем плоха эта опция ибо весь GUI интерфейс всей системы вот так вот лагает, вы думаете в таких лагах можно хотяб текст в альттабе печатать- буквы нажимаются по 2 раза и выделение мышкой ездит как захочет(во время лага курсор мыши продолжает двигаться сам по себе в направлении которое было до лага выделяя больше места)

TLDR- смотрите видео и читайте коммент к 6 и 8 и 13 (не забываем смотреть на фреймрейт слева свурху), и вывод ниже

Вывод-Когда запущена «одна игра» или «один браузер» или «одно окно редактора» опция ForceCompositionPipeline = On практически никак не отличается с Off режимом, но когда окрыто множество окон- опция On делает весь UI «лагающим» и неверно реагирующим на ввод с клавиатуры и мыши,при этом визуальный ФПС не соответствует показываемому(счетчиком).
Наиболее ощутимы лаги когда ФПС становится ниже 60,а это даже два окна файл менеджера и выделяя файлы в одном из них-ФПС уже просядет до 30-50
По результатам тестов- опция ForceCompositionPipeline = On не показывает(визуально на экране) кадр с тирингом и во время кадра(возможно двух кадров,лаги сильно ощутимы) с тирингом вся система «заморожена» но программы продолжают работать и могут брать «текущий кадр» и этот кадр который «не был показан» будет с тирингом.
Также- «визуальный ФПС» не соответствует тому что показан на счетчике в игре, можно убедиться в видео.

Все игры на видео,без записи у меня идут на 60ФПС+(даже tomb raider в 1080), нагрузка на CPU была от 20 до 50% максимум(и опция On Off не влияет на нагрузку), GPU только в tomb raider до 80%
сразу уточню-нагрузка на GPU даже 100% никак не влияет на запись/кодирование ffmpeg(будут потеряно чуть больше кадров но показанные фризы еслиб были из за нагрузки на GPU былиб и в опции Off, а их небыло)
на запись влияет только нагрузка CPU(если 100% CPU то ffmpeg будет дублировать много кадров давая всего 5-10ФПС в сек), нагрузка CPU в обоих режимах одинакова...
Лагает точно также без записи но вместо ffmpeg достаточно запустить пару окон браузера с файл менеджером(текстовый редактору уже будет неюзабельным)

Все видео записаны на последнем драйвере 378.09 и XFCE
Я тестировал эту опцию уже более года уж точно, пробовал на KDE(там все еще хуже по очевидным причинам-слишком много элементов просаживают ФПС ниже 60 очень часто) там такиеже лаги, также версия ядра/иксов/нвидиа дров/дистрибутива не влияют на результат
пробовал на двух дистрибутивах(второй убунта) и трех обновлениях opensuse- лаги идентичны
и да на это не влияет «железо» пробовал на более старой видеокарте нвидиа и совершенно другом железе- точно такиеже лаги
проблема очевидна- во включенной опции ForceCompositionPipeline = On
как она работает- не буду гадать, она работает как будто в «железе» тоесть в видеокарте это объяснялобы пропуск кадров и что иксы не отвечают и что пропущенный кадр можно взять из памяти но видеокарта его не показывает
но тогда почему настолько визуально разный ФПС при записи- еслиб это была только опция видеокарты тех лагов что на видео выше при On небылоб и видео былиб идентичны с Off
такчто думайте сами

Мне нужен «мгновенный отклик» от интерфейса,а со включеной опцией ForceCompositionPipeline = On я даже альт-табнуться не могу мгновенно приходится по два раза наживать хоткеи
про текст я уже писал, и вот еще один пример-я последние пол года играл в одну игру и записыввал ее на ютуб,вот пример видео
игра очень мало требовательна 20% CPU и 20% GPU(да она через эмулятор) и тиринг есть в некоторых видео на старте и в нескольких кадрах в процессе
https://www.youtube.com/watch?v=QH5GUd5d5Lw на 2:13 (на протяжении всей секунды к 2:14) можно видеть тиринг вот выделил на скриншоте http://imgur.com/a/0vXTv (между выделенными красными линиями спрайт горы разрезан по горизонту) поставив 0.25 скорость на ютубе это видно
так вот игра идет идеально и если включить ForceCompositionPipeline = On то появляются эти описанные «лаги» и я не могу реагировать и не вижу множества кадров,так как игра активная и требует реакции- в игре бывает по 1-2 кадра на «атаку» на которую нужно реакцию мгновенную делать,но «лаг»-мало того что может просто не показать кадр с «атакой» так еще даже если прошлый кадр был с анимацием атаки,и я должен на нее реагировать-я не могу потому что следущий кадр (случайно так выходит) не показывается потмоу что с тирингом,и в этот момент у меня не работает ни одна кнопка-тоесть моя реакция игрой не воспринимается. Поэтому всегда стоит Off у меня.

Как включить у себя ForceCompositionPipeline = On в терминал написать:

nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceCompositionPipeline = On }"

nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceCompositionPipeline = Off }"
чтоб выключить (ребутов или рестарта иксов не надо,после выполнения On экран моргнет(на пол секунды как минимум) но если вы записываете видео в этот момент с экрана- на видео этого «черного экрана» не будет)

 ,

lwx51033
()

Материалы с конференции C++ CoreHard Winter 2017

Форум — Development

12 февраля в Минске прошла конференция для С++ разработчиков. Организатором выступило сообщество CoreHard.by. Параллельно с выступлениями шла прямая трансляция на YouTube-канале. Для тех же, кто не поехал в Минск и не смотрел конференцию online, доступно видео подборка всех выступлений. Смотрите и прокачивайте свой программистский level:

 , ,

HardCpp
()

установка плагинов firefox из консоли

Форум — Desktop

Приветствую! Есть ли возможность установить на голый firefox плагины и записать значения в about:config не через браузер вручную, а из консоли линукса баш скриптом? Хочется автоматизировать процесс заточки браузера.

Просто скопировать чистый профиль из ~/.mozilla/firefox/ как-то не уверен что правильно...

 ,

hikikomori
()

Получение заголовка страницы на ссылке с фокусом (помимо url)

Форум — Desktop

Собственно, сабж: есть ли способ получить не только url, но и заголовок страницы, на которую ведёт сфокусированная ссылка? Браузер FF.

На вопрос «зачем» — url не слишком информативен, а использовать приватные режимы для сомнительных ссылок не особо удобно.

 ,

Karthago
()

Поиск по меню

Форум — Desktop

Помнится, в незапамятные времена, ещё при четверокедах, были потуги вяда разработчиков подружиться с appmenu. Одной из самых удачных идей тогда была интеграция меню в krunner с возможностью поиска. Всё это было совершенно сырое и ужасающе глючило, но сама идея была революционной. А потом оно сдохло так и не дойдя до юзабельного состояния.

А есть ли где-то сейчас такая функция? Неужели такая крутая идея так и канула в лету?

 ,

Axon
()

Ищу библиотеку для работы с диапазонами

Форум — Development

Привет, ЛОР! Мне нужна твоя помощь.

Я ищу библиотеку для работы с диапазонами. Что я хочу в ней видеть:

  • Тип «диапазон» (например, 5..45).
  • Операции над диапазонами.
  • Список диапазонов, что-то вроде {5..45, 60..65, 80..89}.
  • Операции над списком диапазонов, например, получить все пропущенные диапазоны из списка.
  • Экономия памяти, в каждом экземпляре-диапазоне должно храниться только начало и конец.

Что-то есть такое на просторах интернета? Я искал, но безуспешно.

 ,

MyLittleGentoo
()

Unittest for snprintf etc

Форум — Development

Добрый день! А нет ли у кого набора юниттестов для snprintf? Желательно в формате gtest. пришлось писать свою реализацию, хотелсь бы получше покрыть тестами.

 ,

vromanov
()

lemonbuddy 2.0

Новости — Open Source
Группа Open Source

Состоялся релиз lemonbuddy 2.0 — легкого и простого в использовании инструмента для создания панелей информации.

Программа написана на C++ и распространяется под лицензией MIT.

( читать дальше... )

>>> Скриншоты и подробности

 lemonbuddy,

cetjs2
()