LINUX.ORG.RU

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

unsuspend

Форум — Linux-hardware

А как воообще устроен unsuspend в линаксе и железе, регулируется ли он программно, из биоса или аппаратно? Можно ли запретить машине просыпаться по сигналу с клавиатуры или тачпада, так что бы она реагировала только на нажатие кнопки power?

 

thunar
()

литературное тестирование (по следам Дональда нашего Кнута)

Форум — Development

Асилив наполовину книжку Владимира Хорикова «Принципы юнит-тестирования» я что то вернулся к одной своей старой идее. Я занимаюсь разработкой всякого академического софта, и у нас юнит-тестирование делать не принято. С одной стороны проекты маленькие и без него как то можно жить, с другой его практически никто не умеет делать.

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

Документация пишется разумеется в техе. Примеры оформляются в окружении verbatim, хотя можно выбрать какое то другое. В теховский документ добавляются специальные команды закомментированные для теха (начинающиеся с символа %), но влияющие на поведение утилиты тестирования.

  1. Может быть создано один или несколько файлов в которых накапливается код тестов по мере обработки теховской документации. Для создания файлов используется комбинация
%@> имена файлов через пробел 

созданные файлы могут быть активными (по умолчанию) или замороженными. Если файл активен, все что начинается с одиночного % или находится в окружении verbatim дублируется в этот файл. Для заморозки используется комбинация %@- имена файлов, для разморозки %@+ имена файлов, для закрытия файла %@. имена файлов. Для записи отдельной строки в файл или группу файлов (вне зависимости от их состояния) используется

%@(имена файлов) какой то код 

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

  1. если в окружение verbatim встречается комбинация
выражение --> результат

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

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

  2. Точно нужно будет настраивать как какие тесты собирать и запускать, аналогично через какой то вариант вроде %@$ … Ну и наверное для запуска тестов можно заюзать gnu make.

  3. Отдельная история с тестированием готовых приложений (небольших), на них ведь тоже пишется документация с примерами. В общем все то же самое но для запуска shell, при этом результаты сравниваются как строки?

Как то так. Cast @bugfixer, @pon4ik, @thunar, @Vit

 , , , ,

AntonI
()

matplotlb, поворот ticks для заданного субплота

Форум — Science & Engineering

Для _текущего_ субплота можно использовать plt.xticks(rotation=...). Естественно, когда суплотов много вручную вызывать это совершенно не удобно. У самих субплотов, такого метода по загадочной причине нет. Сам plt.xticks при их налчии действует на последний добавленный. А как тогда достучаться до тех что нужны?

 ,

thunar
()

Генератор уникальных псевдослучайных чисел (C++)

Форум — Development

Нужно из случайного индекса вектора брать данные и копировать во второй вектор. Соостветственно нужны случайные итераторы которые не будут повторятся. Ничего кроме как городить проверяющий цикл с условием – не придумаю. Есть ли решения с использованием STL и <random>?

Казалось бы элементарная проблема, но завис на ней.

 , ,

Artamudo
()

c++ шаблон zip-like итератора?

Форум — Development

В python есть крайне полезные функции zip, enumerate, range. Мне нужно что-то подобное для cpp/cuda (c++17). Если c range и enumerate более менее понятно, то как реализовать zip не соображу. Семантически это должно быть variadic template

template<typename t, typename... ts>
class zip : zip<ts...>{
	zip(t arg, ts... args);
	struct iterator;
	begin() -> iterator;
	end()   -> iterator;
};
Где итератор возвращает кортеж ссылок на элементы что с контейнерами можно было работать как:
for(auto [x,y,z] : zip(xs,ys,zs))
Рекурсивное наследование должно быть ограничено тривиальным случаем одного аргумента. Но, кажется, я думаю не в правильную сторону, в частности, не соображу как рекурсивно вывести тип возвращаемых итератором кортежей:
using ret_type = tuple<decltype(begin(declval<t>())), decltype(???)>

$cast AntonI, может у вас кто такое делал?

 , ,

thunar
()

c++ обёртка над zlip

Форум — Development

Подскажите какую ни будь обёртку над zlib, инкапсулирующую низкоуровневую работу с архивами во что-то более похожее на работу с обычными файлами фс. Нужна возможность создать архив, добавить в него файл и писать в файл поток данных; открыть архив, получить список файлов и работать с каждым как с обычным несжатым потоком байтов.

 , ,

thunar
()

python сохранить массив функций

Форум — Development

Скрипт в результате работы генерирует массив функций аля [<function __main__.<lambda>>, <function __main__.<lambda>>, ... ]. Как можно сохранить этот массив в файл что бы использовать в другом скрипте?

 , массив функций

thunar
()

gimp, @#$% запятые вместо точек!

Форум — Multimedia

То-ли разработчики gовноtk укурились в очердной раз, то-ли разработчики gimpа, но ВНЕЗАПНО оказалось, что в 2.9 в виджетах для чисел с плавающей точкой везде стали ЗАПЯТЫЕ, причём он не только отображает их так, но и требует вводить. Кто виноват и делать? Очередной HIGотизм запихали в мейнстрим?

 , ,

thunar
()

matplotlib > html5?

Форум — Science & Engineering

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

 

thunar
()

Вопрос по дизайну/архитекуте .hpp файлов (кого куда и как включать)

Форум — Development

Есть некая библиотека (моя), солянка из разных, местами слабо связанных фрагментов кода.

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

В библиотеке есть файл dump.hpp (условно) обеспечивающий запись разных объектов в бинарном формате, и он входит в ту часть которую нужно копировать. Этот файл определяет какие то служебные (шаблонные) методы а потом их как то специализует по необходимости для всего что есть в библиотеке. Понятно что он инклюдит кучу всего, в том числе кучу того что копировать не хочется. Вопрос - че с этим делать?

Я вижу два решения, оба кривые:

  1. перенести части dump.hpp работающие с конкретными объектами в .hpp файлы где эти объекты объявлены. Минусы - все же этот код лучше выглядит когда лежит кучно, кроме того все станет зависеть от dump.hpp (сейчас это не так и хотелось бы что бы оно так и осталось).

  2. понатыкать в dump.hpp директив условной компиляции, т.е. что бы соотве фрагмент кода для объекта A включался только если .hpp файл с этим объектом уже был включен. Это немного странно выглядит, dump.hpp всегда должен будет выключаться последним.

cast @pon4ik, @monk

 

AntonI
()

LaTeX <-> python

Форум — General

А есть-ли для python пакеты, позволяющие автоматически преобразовывать LaTeXную диакритику в utf8 и обратно? Например

{Tom\'{a}\v{s}} <-> Tomáš

 , ,

thunar
()

Существуют ли бесплатные конвертеры текста на русском языке в речь?

Форум — General

Сабж

Главные требования:
1) Чтобы было более-менее качественно. Хотя бы ударения правильно ставило.

Крайне желательно:
1) Поддержка смешанного текста (русский со вкраплениями английских слов)
2) Хотя бы пара голосов

Если бесплатных нормальных нет, то подскажите платные за вменяемый ценник.

 

Qwentor
()

ubuntu 16.04, cuda и кривая установка

Форум — Linux-hardware

Устанавливал cuda-10.1 с официального сайта, через run-файл т.к. официальная версия из пакетов битая. Гасил исксы и следовал инструкции инсталлятора, однако он то-ли не собирает dkms-модуль, то ли не грузит его, или грузит неправильно. В результате, ни gl, y куда не работают. Как это продиагностировать. В логи иксов вообще треш

[   995.321] (II) LoadModule: "nvidia"
[   995.321] (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.so
[   995.321] (II) Module nvidia: vendor="NVIDIA Corporation"
[   995.321]    compiled for 4.0.2, module version = 1.0.0
[   995.321]    Module class: X.Org Video Driver
[   995.321] (II) UnloadModule: "nvidia"
[   995.321] (II) Unloading nvidia
[   995.321] (II) Failed to load module "nvidia" (already loaded, 21880)
[   995.321] (II) LoadModule: "nouveau"
[   995.322] (II) Loading /usr/lib/xorg/modules/drivers/nouveau_drv.so
[   995.322] (II) Module nouveau: vendor="X.Org Foundation"
[   995.322]    compiled for 1.18.1, module version = 1.0.12
[   995.322]    Module class: X.Org Video Driver
[   995.322]    ABI class: X.Org Video Driver, version 20.0
Получается, нвидия грузится, потом грузится ещё раз, потом грузится нуво несмотря на то, что явно запрещён в блэклисте
cat /etc/modprobe.d/nvidia-installer-disable-nouveau.conf
# generated by nvidia-installer
blacklist nouveau
options nouveau modeset=0
glxinfo стабильно показывает
glxinfo 
name of display: :0
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  154 (GLX)
  Minor opcode of failed request:  24 (X_GLXCreateNewContext)
  Value in failed request:  0x0
  Serial number of failed request:  37
  Current serial number in output stream:  38
Итак, как оттуда напроч вычистить все остатки установки, все драйвера и пр. И как эту куду заинсталлить нормально, вместе с libgl, glx, драйвером, вдапу и самим тулкитом?

 , , инсталлер

thunar
()

параллельное перемешивание массива

Форум — Development

Например, есть массив xs[N] и M тредов, M<N в среднем. Нужно случайно перемешать элементы массива как можно более быстрым способом. При этом, «качество» рандомизации не играет роли, скорее нужно что бы в среднем, каждый элемент массива побывал в каждой позиции. Как это правильно называется на английском языке, и какими алгоритмами реализуется?

 , ,

thunar
()

асинхронная дефрагментация массива

Форум — Development

Например, имеются массивы data[N], hole[M], N≥M. В data хранятся данные, а в hole — в порядке возрастания, индексы, отмечающие пустые точки. Нужно дефрагментировать этот массив, т.е. обменять элементы так что бы данные лежали непрерывно. При этом, порядок в котором они они пишутся не важен. Что-то вроде:

8 holes:
	3 5 6 16 22 23 25 26
in:
	00 01 02 -- 04 -- -- 07 08 09 10 11 12 13 14 15 -- 17 18 19 20 21 -- -- 24 -- -- 27 28 29
out:
	00 01 02 29 04 28 27 07 08 09 10 11 12 13 14 15 24 17 18 19 20 21 -- -- -- -- -- -- -- --
Как называется этот алгоритм и как реализовать его параллельный вариант для произвольного количества тредов?

В наивной последовательной реализации (набросал на python)

id_hole = len(hole)-1
id_tail = len(data)-1
for j in range(0,len(hole)):
	dst = hole[j]
	while(id_hole>=j):
		if hole[id_hole] >= id_tail:
			#skip
			id_tail = id_tail-1 #atomic
			id_hole = id_hole-1 #atomic
		else:
			#move
			data[dst],data[id_tail] = data[id_tail],data[dst]
			id_tail = id_tail-1 #atomic
			break
получается две шаренные переменные, т.е. если параллелить цикл по j, то на каждый шаг будет не менее двух атомарных операций, что нехорошо. Как тут можно переделать?

Предполагается, что с этим будет работать код на CUDA, в пределах одного блока тредов.

 , , ,

thunar
()

bibtex

Форум — General

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

 ,

thunar
()

Бинарный формат для обмена данными между c++-библиотекой и python-кодом?

Форум — Development

Ищу header-only библиотеку для бинарного-формата, поддерживающего хранение многомерных массивов, скляров и строк которые можно писать/читать из c++ и читать/писать из numpy-массивов. Оценочный размер файлов от единиц-мегабайт, до десятков гигабайт — поэтому, нужна воможность считав заголовок файла, найти нужные смещения, а данные грузить уже по необходимости. Что для этого лучше использовать? Подходит-ли для моих задач hdf5?

 , , ,

thunar
()

странное поведение imagemagic

Форум — Desktop
/tmp convert --version
Version: ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules OpenMP
Delegates: bzlib cairo djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png rsvg tiff wmf x xml zlib

/tmp convert out.pdf out.png 
convert: not authorized `out.pdf' @ error/constitute.c/ReadImage/412.
convert: no images defined `out.png' @ error/convert.c/ConvertImageCommand/3210.

и так со всеми pdf

Это я идиот, или?

 

thunar
()

Визуализация данных

Форум — Development

Привет всем. Как лучше визуализировать очень-очень большой двумерный (обычный в котором 2 оси x и y) график, без всяких многомерных проекций? Чтобы был понятен масштаб - скажем он начинается от полутора миллиона точек до 20-30 миллионов, значения тоже колеблются нехило (десятки миллиардов типичные значения). Хочется на него глазками посмотреть, есть ли в нём какие-то закономерности, вроде синусоиды и так далее, при том я не знаю масштабов на которых они будут видны (теоретически обязаны быть, но на практике...) Так что хочется чего-то, что можно маштабировать. Желательно из кода на Python-е. matplotlib навевает на меня тоску, он с более маленькими объёмами тонет в производительности, надо самому ручками выбирать тогда какие точки рисовать, ну и никакого масштабирования, а хочется чего-то умного, что не будет лишние точки рисовать.

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

Матплотлиб работает, да, но хочется про альтернативы послушать.

 , ,

peregrine
()

Задачка на подумать (диагональный сдвиг по Z-кривой Мортона)

Форум — Development

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

Нужно зная сдвиг ячейки от начала D-мерного массива найти сдвиг ее ближайшего соседа по диагонали (вперед-вверх).

Я знаю только такое решение

const uint64_t zmasks[16]={
  0xffffffffffffffff, 0x5555555555555555, 0x9249249249249249, 0x1111111111111111,
  0x1084210842108421, 0x1041041041041041, 0x8102040810204081, 0x0101010101010101,
  0x8040201008040201, 0x1004010040100401, 0x0080100200400801, 0x1001001001001001,
  0x0010008004002001, 0x0100040010004001, 0x1000200040008001, 0x0001000100010001 
};

template <int D, typename T> T zoff_diag_shift(T offset){  
  for(int i=0; i<D; i++){
    T omask = zmasks[D-1]<<i, imask = ~omask, fix = offset&imask;
    offset = (((offset|imask)+1)&omask)|fix;
  }
  return offset;
}

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

 

AntonI
()