LINUX.ORG.RU

Сообщения vvviperrr

 

vim, man plugin

Обнаружил в виме отличный стандартный плагин Man, выдодящий ман страницу в отдельном окне (в отличии от корявого встроенного shift + k), да еще и с тагами. однако он не обрабатывает groff форматирование, и выглядит это так: http://s017.radikal.ru/i435/1302/e8/b09356ce5bdd.png

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

 , ,

vvviperrr ()

чтение из потока с ограничением символов

сабж. как в крестах организовать сишный аналог

int i;
const char *str = "10203040";
sscanf(str, "%02d", &i);
assert(i == 10);

чтобы можно было писать

istringstream ss("1020304050");
int i;
ss >> i;
assert(i == 10);

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

 ,

vvviperrr ()

bash-completion не работает в xterm

gentoo, установил bash-completion, через eselect настроил. в консоле работает, в Eterm-е работает, в xterm/aterm/urxvt не работает.

в чем может быть проблема?

 ,

vvviperrr ()

vim, дополнение из всех открытых буферов

Сабж. Хочется, чтобы при нажатии C-X C-P/N поиск соответствий происходил по всем открытым буферам, а не только по текущему. Выяснил, что за это отвечает опция complete. судя хелпу

'complete' 'cpt'	string	(default: ".,w,b,u,t,i")
			local to buffer
			{not in Vi}
	This option specifies how keyword completion |ins-completion| works
	when CTRL-P or CTRL-N are used.  It is also used for whole-line
	completion |i_CTRL-X_CTRL-L|.  It indicates the type of completion
	and the places to scan.  It is a comma separated list of flags:
	.	scan the current buffer ('wrapscan' is ignored)
	w	scan buffers from other windows
	b	scan other loaded buffers that are in the buffer list
	u	scan the unloaded buffers that are in the buffer list
	U	scan the buffers that are not in the buffer list
	k	scan the files given with the 'dictionary' option
	kspell  use the currently active spell checking |spell|
	k{dict}	scan the file {dict}.  Several "k" flags can be given,
		patterns are valid too.  For example: >
			:set cpt=k/usr/dict/*,k~/spanish
<	s	scan the files given with the 'thesaurus' option
	s{tsr}	scan the file {tsr}.  Several "s" flags can be given, patterns
		are valid too.
	i	scan current and included files
	d	scan current and included files for defined name or macro
		|i_CTRL-X_CTRL-D|
	]	tag completion
	t	same as "]"

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

vvviperrr ()

пользователям thinkpad x220

В данной теме прошу отписаться обладателям сабжа. Есть ли у вас претензии к качеству светодиодной подсветки? При любой яркости, кроме максимальной, начинается мерцание подсветки, из-за низкой частоты ШИМ. Что (теоретически) вредно для зрения. Через камеру телефона эти мерцания видны отчетливо. пруф - http://www.youtube.com/watch?v=SpDdy9jSx7Y. Для оффтопика есть утилита, позволяющая увеличить частоту ШИМ. Линуксовый интеловый драйвер это не поддерживает (как обычно). Некоторые советуют выкручивать яркость на полную, подсветкой же рулить программно (через xcalib например).

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

Прошу отписаться, какая у вас модель, какой тип экрана (IPS, TN), возникает ли дискомфорт, какие меры предпринимали.

Пс. Случай не гарантийный, обменять/вернуть не получится.

 , ,

vvviperrr ()

mount android device

Такая проблема. При подключении гуглофона к усб в системе определяется только устройство (/dev/sdd например), но без разделов. в dmesg при этом пишется

[19075.567105] sd 4:0:0:0: [sdd] Attached SCSI removable disk

но если попытаться примонтировать это устройство, он естественно отругается, но зато в этот момент появляется раздел sdd1. в dmesg в этот момент льется

[19161.952520] sd 4:0:0:0: [sdd] 15523840 512-byte logical blocks: (7.94 GB/7.40 GiB)

[19161.956511] sd 4:0:0:0: [sdd] No Caching mode page present

[19161.956515] sd 4:0:0:0: [sdd] Assuming drive cache: write through

[19161.964514] sd 4:0:0:0: [sdd] No Caching mode page present

[19161.964517] sd 4:0:0:0: [sdd] Assuming drive cache: write through

[19161.968276] sdd: sdd1

[19162.175024] EXT3-fs (sdd): error: can't find ext3 filesystem on dev sdd.

[19162.187017] EXT2-fs (sdd): error: can't find an ext2 filesystem on dev sdd.

[19162.218019] EXT4-fs (sdd): VFS: Can't find ext4 filesystem

[19162.246016] FAT-fs (sdd): bogus number of reserved sectors

[19162.246020] FAT-fs (sdd): Can't find a valid FAT filesystem

[19162.271280] FAT-fs (sdd): bogus number of reserved sectors

[19162.271283] FAT-fs (sdd): Can't find a valid FAT filesystem

[19162.568393] UDF-fs: warning (device sdd): udf_load_vrs: No anchor found

[19162.723764] UDF-fs: warning (device sdd): udf_load_vrs: No anchor found

[19162.723768] UDF-fs: warning (device sdd): udf_fill_super: No partition found (1)

после этого можно примонтировать sdd1 и с ним уже работать. почему возникают FAT-fs ошибки неясно, на телефонной флешке fat32 (отформатирована самим устройством).

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

пс. с обычными флешками такой проблемы нет.

 

vvviperrr ()

vim мерцание выпадающего списка

такая проблема. при изменении активной строчки в выпадающем списке дополнения (ctrl+p, ctrl+n) он полностью перерисовывается, что и вызывает мерцание. чем список больше, тем сильнее мерцание. раньше как-то не обращал на это внимание, но с новым монитором с более высоким разрешением это действительно начало напрягать. мерцает как в обычном виме, так и в гуишном. особенно это заметно при выпадении clang-овского списка дополнения, например пространства std. список получается очень широким (из-за описания полной сигнатуры функций, а не только ее имени) и очень длинным, соответственно и мерцает нереально. в некоторых случаях и небольшой список мерцает, в некоторых - даже большой мерцает не сильно. от чего зависит - неясно.

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

спасибо.

пс. кто хочет проверить у себя - откройте большой файл (хотя бы ~5000 строк) и вызовите автодополнение по строкам (c-x l)

vvviperrr ()

Язык программирования D

http://www.books.ru/books/yazyk-programmirovaniya-d-827252/?show=1

Вышел перевод книги Александреску «The D Programming Language», который, надеюсь, послужит популяризации языка в Этой Стране. Кто-нибудь уже читал? Как качество издания/перевода?

 ,

vvviperrr ()

Отрисовать изображение с альфа каналом

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

painter.fillRect(rect(), Qt::black);
...
const QImage &image = model().backgroudImage();
painter.drawImage(rect().center() - image.rect().center(), image);

как заставить его правильно отрисоваться с использованием альфа канала? спасибо.

 ,

vvviperrr ()

Qt, клонирование QObject

Добрый день. Вопрос к специалистам Qt. Делаю своеобразный редактор. Создаю иерархию классов. Базовый класс в ней (назовем RBase) наследуется от QWidget. Хочу, чтоб любой визуальный объект в редакторе можно было скопировать (выделили объект - копировать). Для этого в RBase добавил

virtual RBase *clone() const = 0;
чтобы в конкретных классах ее переопределять. каждый новосозданный объект создает некоторые соединения сигнал-слот.

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

Сейчас свойства копирую через мета информацию объекта (property(), setProperty()). Как скопировать инфу о соединениях не знаю. Заново вызывать для нового объекта connect не хотелось бы. Все коннекшены создаются в MainWindow, и лезть туда не хочется. Хочется извлечь эту инфу из копируемого объекта.

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

vvviperrr ()

бинарное отношение, дискретка

Небольшой вопрос.

задано бинарное отношение R = a - b > 3 на множестве натуральных чисел. Необходимо выяснить, является ли оно антисимметричным.
из определения антисимметричности имеем:
aRb ^ bRa ==> a = b. но a - a = 0, 0 !> 3, получается, что отношение не антисимметрично.

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

как в данном случае нужно правильно доказать антисимметричность? спасибо.

vvviperrr ()

[C] странный варнинг

не пойму, что приводит к варнингу в этом коде

#include <stdio.h>

static int arr[][2][2] = {
    {
        { 0, 0 },
        { 1, 1 }
    },
    {
        { 1, 1 },
        { 2, 2 }
    },
    {
        { 2, 2 },
        { 3, 3 }
    },
};

void foo(const int (*m)[2])
{
}

int main()
{
    foo(arr[0]);
    return 0;
}

main.c:42: warning: passing argument 1 of ‘foo’ from incompatible pointer type

main.c:36: note: expected ‘const int (*)[2]’ but argument is of type ‘int (*)[2]’

vvviperrr ()

слетает разрешение монитора

такая проблема. имеется какой то 17 дюймовый асер. 1280х1024 жестко прописал в хорге, какое то время работает нормально, но в какой то момент может загрузиться с разрешением 1024х780. xrandr говорит, что моник не поддерживает разрешения выше. но если в меню монитора сделать reset, то после перезапуска хорга все опять норм, но временно. сам монитор в порядке (имеется около 30 таких моников, проблема иногда всплывает на разных). в самой системе ничего не запущено, кроме браузера. с чем может быть связано и куда копать? (пс. сменить монитор не советовать, у человека «на винде все работало нормально»)

спасибо

vvviperrr ()

g++ + pimpl + auto_ptr

добрый день. имеется код

a.h

class A_impl;

class A {
public:
	A();

private:
	std::auto_ptr<A_impl> m_p;
};

a.cpp

#include "header.h"

using namespace std;

class A_impl {
public:
	A_impl()
	{
		cout << "created" << endl;
	}

	~A_impl()
	{
		cout << "destroyed" << endl;
	}
};

A::A() : m_p(new A_impl)
{

}

main.cpp

#include "a.h"

int main()
{
	A a;
	return 0;
}

в нем есть ошибка (auto_ptr не может удалить объект неполного типа, если деструктор класса А не описать в месте определения типа, в данном случае в a.cpp). VS срет праведными варнингами, g++ (4.4.4, 4.5.2) почему то молчит. собирать пытался так:

g++ -Wall -Wextra --pedantic a.cpp main.cpp
ни единого разры[ESC]bcwварнинга. можно ли заставить? спасибо.

пс. воинам интернета. мне просто интересно, почему g++ молчит. auto_ptr в пимплах я не использую

vvviperrr ()

Шифрование раздела

Добрый день. Имеется следующая задача.
Есть Linux, есть раздел на хдд. Цель - запретить монтироваться этому разделу на системе, отличной от начальной (на которой настроили шифрование). Т.е например заменили мать - не монтироваться, соответственно запретить возможность чтения этого раздела любыми способами. Если же система родная, монтирование должно происходить без всяких паролей. Я так понимаю паролем должна служать какая то контрольная сумма/хеш id железа, подозреваю, что автоввод пароля можно настроить через fstab.

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

Цель - не дать наклонировать юзерам хард с ПО, даже если они обратятся к крутым хацкерам (опять же, вопрос в том, насколько легко/сложно это взламывается). Я с этим никогда не сталкивался, надеюсь у кого нить есть подобный опыт.

Всем спасибо за ответы

vvviperrr ()

постоянно падает fs

добрый день. есть комп с линуксом (гента), fs ext3 (3 раздела, boot, swap, root). на компе крутится музыкальная прога, люди суют денюжку, заказывают песню. последнее время некоторые компы перестали загружаться с ошибкой Unexpected inconsistency, run fsck manually. (автоматическая проверка харда производится после 30-и монтирований, чтоль). ну не проблема, запущу вручную (обычно делал это под live cd на немонтированном устройстве, все по феншую). немного поработает, и опять та же проблема. последнее время даж fsck перестал помогать, и при загрузке уже kernel panic - not syncing: VFS: unable to mount root fs on unknown.

что меня удивляет из всей этой истории, за 3 года юзания генты на домашнем компе и ноуте НИ РАЗУ не было подобной хрени (обрушение фс). С железом сразу скажу, все ок, харды новые (знаю я вас, любителей на железо пинять :) )

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

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

вопросы следующие: - может ли из за этого рушиться фс? здравый смысл подсказывает, что да

- чем чревато отключение запланированной проверки по кол-ву монтирований? вроде через tunefs это можно сделать

- может есть какие нить специальные правила/настройки для стабильной работы компа (в моем случае с фс) без вмешательства админа?

всем спасибо за ответы

vvviperrr ()

плеер для музыкального автомата

добрый день. появилась необходимость написать программу музыкального автомата под эти ваши линуксы. какой плеер более подойдет под основу? желательно удобное внешнее управление, например через dbus, поддержка плейлистов не нужна, т.к в проге свой плейлист, поэтому всякие монстры типа amarok не нужны. поигрался с audacious, вроде подходит. + поддерживает различные плагины (ladspa в том числе), ибо заказчикам не нравится чистый вывод альсы. звуковые заменили вместо встроенных интелов, проблема с качеством вроде отпала, но мало ли чего им взбредет еще. есть ли смысл вокруг mpd это реализовывать? в принципе, это обычный фронтенд. либо кто нить посоветует что нить более подходящее? всем спасибо за ответы

vvviperrr ()

audigy se щелчки

добрый день. имеется звуковая карта audigy se. завелась нормально, звук есть. но при переключении треков в плейлисте происходит непрятный щелчок. вывожу через alsa. на просторах интернетов пишут об этом эффекте, но как излечить - не известно. для intel hd audio рекомендуют поставить опцию модуля power_save в 0, но у модуля этой карточки (snd_ca0106) такой опции нет. аналогичная проблема тут http://www.linux.org.ru/forum/linux-hardware/3572149 без решения. кто нить докопался? может можно как нить заставить ее работать постоянно? пока придумал только пускать параллельно пустой трек, чтобы карта работало постоянно, но от такого костыля аж плакать хочется. заранее спасибо

vvviperrr ()

sqlite + cp1251

есть gui либа, написанная на opengl. все писалось под винды. я ее портировал на linux. все нормально заработало, за исключением понимания уникодовых строк. она сильно завязана на cp1251 (текст рендерится вручную, с помощью freetype, глифы грузятся в списки отображения и выводятся как текстуры). времени на допил под utf-8 просто нет. прога, использующая эту либу, должна юзать sqlite. собственно в чем вопрос. как тут правильно поступить? ставиль локаль в cp1251? либо в базе хранить в utf-8, при выдергивании конвертить в cp1251(не хотелось бы этого). либо есть еще какие то варианты? всем спасибо за ответы

vvviperrr ()

qt виджет в динамической библиотеке

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

описываю интерфейс:

class ShapeInterface {
public:
        virtual ~ShapeInterface() {}

   virtual void up() = 0;
   virtual void down() = 0;
   virtual void left() = 0;
   virtual void right() = 0;
};

реализую интерфейс в динамической библиотеке, и экспортирую функции создания/удаления виджета.

class RectangleShape : public QWidget, public ShapeInterface {
public:
   RectangleShape(QWidget *parent = 0) : QWidget(parent) {}
   ~RectangleShape() {}

public:
   void up() {}
   void down() {}
   void left() {}
   void right() {};
};


extern "C" ShapeInterface *create_object(QWidget *parent)
{
   return new RectangleShape(parent);
}


extern "C" void destroy_object(ShapeInterface *pObj)
{
   delete pObj;
}

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

   QLibrary myLib(objPath);
   typedef ShapeInterface *(*create_object)(QWidget *);
   create_object myNew =
        (create_object) myLib.resolve("create_object");

   if (myNew) {
      ShapeInterface *shapeInterface = myNew(this);
   }

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

в идеале, мне нужно поместить в библиотеку виджет, чтобы динамически подгружать и отображать его на главном окне приложения (на любом parent вобщем). смотрел классическую систему плагинов qt, но там как я понял, вообще виджеты нельзя запихнуть, только надстройку наж ними. Да и не хочется использовать qt-шные плагины, а остаться на стандартной архитектуре (с экспортом своих ctors/dtors).

спасибо за внимание

vvviperrr ()

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