LINUX.ORG.RU

Сообщения riYu

 

[wine][kindle] Font antialiasing

Добрый день.

Подскажите, пожалуйста, можно ли как-нибудь заставить wine (стоит версия 1.3) делать сглаживание шрифтов? Конкретно интересует сглаживание в Amazon Kindle.

Пробовал, как советуют в интернетах, прописать в реестр следующие значения, но они почему-то ни на что не влияют.

[HKEY_CURRENT_USER\Control Panel\Desktop]
«FontSmoothing»=«2»
«FontSmoothingType»=dword:00000002
«FontSmoothingGamma»=dword:00000578
«FontSmoothingOrientation»=dword:00000001

riYu ()

[С чего начать] Написание client-side web-приложения

Добрый день.

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

Хотелось бы, чтобы само приложение было исключительно client-side'овым. Т. е. на сервере есть JSON API, сам сервер выдает только статику, а всю работу делает JavaScript у пользователя в браузере, запрашивая данные по API.

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

riYu ()

[Compiz] Запретить показывать окна на нескольких столах одновременно

Добрый день.

Мучаюсь с Unity. :) В обычном Gnome, если поместить окно так, что часть его будет уходить за край экрана, то эта часть просто больше не будет нигде видна, а тут - это окно отображается на другом рабочем столе. Облазил уже все настройки Compiz'а - никак не могу найти, где отключить эту штуку.

Подскажите, пожалуйста, можно ли отключить такое поведение.

riYu ()

[Ubuntu 10.10 NR] Как убрать кнопки слева?

Всем привет.

В Ubuntu 10.04 Netbook Remix сделали отличную модификацию Gnome для удобства работы на маленьких экранах, но вот в 10.10 похоже решили все испортить, добавив слева кнопки, которые практически не несут никакой пользы, но при этом отъедают довольно солидную часть экрана.

Подскажите, пожалуйста, можно ли как-нибудь их убрать и вернуться к тому, что было в 10.04?

riYu ()

[pdf] Обрезать ненужную информацию по краям

Добрый день.

Есть pdf-документ, в котором у станицы очень большие поля со всякой рекламой, а в центре - полезная информация. Не подскажете, чем без особого геморроя можно обрезать данную pdf-ку, чтобы в результате осталось только то, что в центре, т. е. по-просту сделать crop (по аналогии с gimp)?

riYu ()

[Qt] Сборка под Windows

Решил собрать свое Qt-приложение под Windows, но ему требуется поддержка SSL, поэтому пришлось перекомпилировать Qt. И как я его только не компилил... :) Ничего не получается, причем с разными опциями разные ошибки. Вот, к примеру, такое она выдает при компиляции через configure && mingw32-make:

g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -mthreads -Wl -shared -Wl,--out-implib,c:\Qt\2010.02.1\qt\lib\libQtWebKitd4.a
 -o ..\..\..\..\lib\QtWebKitd4.dll object_script.QtWebKitd.Debug  -L"c:\Qt\2010.
02.1\qt\lib" -L"c:\Qt\2010.02.1\qt\lib" obj\debug\QtWebKitd_resource_res.o -lwin
mm -lgdi32 -luser32 -lwinmm -ladvapi32 -lgdi32 -lshell32 -lshlwapi -luser32 -lve
rsion -lphonond4 -lQtXmlPatternsd4 -lQtGuid4 -lQtNetworkd4 -lQtCored4
Creating library file: c:\Qt\2010.02.1\qt\lib\libQtWebKitd4.a
./obj\debug\QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x5a): undefi
ned reference to `vtable for WebCore::FormDataIODevice'
./obj\debug\QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x12c): undef
ined reference to `vtable for WebCore::FormDataIODevice'
./obj\debug\QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x1f1): undef
ined reference to `vtable for WebCore::FormDataIODevice'
./obj\debug\QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x293): undef
ined reference to `vtable for WebCore::FormDataIODevice'
./obj\debug\QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x335): undef
ined reference to `vtable for WebCore::FormDataIODevice'
./obj\debug\QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0x820): undef
ined reference to `vtable for WebCore::QNetworkReplyHandler'
./obj\debug\QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0xa9e): undef
ined reference to `vtable for WebCore::QNetworkReplyHandler'
./obj\debug\QNetworkReplyHandler.o:QNetworkReplyHandler.cpp:(.text+0xd22): undef
ined reference to `WebCore::QNetworkReplyHandler::processQueuedItems()'
./obj\debug\FrameLoaderClientQt.o:FrameLoaderClientQt.cpp:(.text+0x314b): undefi
ned reference to `QWebPage::unsupportedContent(QNetworkReply*)'
./obj\debug\FrameLoaderClientQt.o:FrameLoaderClientQt.cpp:(.text+0x425e): undefi
ned reference to `QWebPage::downloadRequested(QNetworkRequest const&)'
collect2: ld returned 1 exit status
mingw32-make[2]: *** [..\..\..\..\lib\QtWebKitd4.dll] Error 1
Подскажите, пожалуйста, ЧЯДНТ.

riYu ()

[Qt] Удаление объектов и сигналы

Добрый день. Перерыл всю документацию по Qt, но ответа так и не нашел.

Есть объект A. К его сигналам подключены слоты объекта B. При генерации сигнала A::error() мне нужно удалить объект A. Как мне это сделать? В слоте B::on_a_error() я не могу непосредственно удалить объект A через delete, т. к. это может привести к порче памяти, и вынужден использовать deleteLater(). Но тут возникает другая проблема. deleteLater() удалит объект не сразу, а следовательно он за это время сможет сгенерировать еще кучу сигналов (или уже сгенерировал, но они просто пока что стоят в очереди). Но мне необходимо, чтобы после генерации A::error() вся его сознательная жизнь прекратилась - чтобы он не смог ни принять сигналы, не сгенерировать их. Отменить генерацию сигналов можно через QObject::blockSignals(), а отсоединить слоты через QObject::disconnect(), но это повлияет только на те сигналы, которые будут сгенерированы после вызова этих функций, но что делать с теми сигналами, которые уже порождены и просто ожидают в очереди?

riYu ()

Изучаю Qt - возникли вопросы

Начал изучать Qt и вот в процессе программирования стали возникать вопросы. Буду очень благодарен, если поможете с ответами. :)

1. В GTK при присоединении обработчика к сигналу можно передать опциональный параметр, а в gtkmm даже полноценный объект. В Qt же единственное, что мне удалось найти для решения подобной проблемы - это QSignalMapper. Есть ли какие-нибудь другие средства?

2. Ребята из Nokia в документации говорят использовать qmake и переводы хранить в *.ts-файлах, но вот если посмотреть на KDE-приложения, то оказывается, что там повсюду используется cmake + *.po. Т. е. если я сегодня напишу приложение в Qt-стиле, то если в последствии захочется внедрить в него функционал KDE, у меня возникнут проблемы. Может быть кто-нибудь знает какую-нибудь хорошую HOWTO-статью по этому поводу, в которой подробно разъясняется, чем обусловлен данный выбор и т. п? Также в сторону *.po-файлов есть еще одно преимущество - их поддерживает Launchpad, а *.ts-файлы - нет, или я не прав, и он все-таки позволяет коллективно переводить *.ts-файлы?

3. При взаимодействии с сетью, когда происходит какая-либо ошибка, можно получить ее строковое значение при помощи QNetworkReply::errorString(), но эта строка будет на английском языке. Можно ли как-нибудь получить переведенный вариант? Переводы Qt я подключил, но это не помогает:

QTranslator qtTranslator;
qtTranslator.load("qt_" + QLocale::system().name(),
QLibraryInfo::location(QLibraryInfo::TranslationsPath));
app.installTranslator(&qtTranslator);
4. В Glib::ustring и boost::format очень удобные и многофункциональные функции форматирования строк («текст %1 текст %2»), в которых можно задавать параметры форматирования каждого аргумента и которые представлены в качестве шаблонов, принимающих любые объекты и требующие всего лишь наличия operator<< для данного объекта, что очень удобно. В Qt, насколько я понял, единственное, что нам доступно - это QString(«текст %1 текст %2»).arg(arg_1).arg(arg_2), где arg_1 и arg_2 уже должны быть строками, что очень неудобно. Неужели нет более удобного способа форматирования текста?

riYu ()

[vim] Заставить не реагировать на #warning'и

Добрый день.

Подскажите, пожалуйста, можно ли как-нибудь сделать так, чтобы при сборке проекта через :make Vim игнорировал в выводе компилятора расставленные в коде #warning'и и не перемещал позицию курсора на них, как на ошибку?

riYu ()

[не флейма ради] GTK/gtkmm vs Qt

Добрый день.

Довольно длительное время пишу под Linux на GTK и некоторое количество времени на gtkmm. В итоге сложилось довольно странное о нем впечатление: как пользователю мне GTK нравится гораздо больше чем Qt, но вот с точки зрения программирования многое не устраивает. К примеру, если взять GTK, то написать на нем собственный виджет с нуля - это целое приключение, с его объектной моделью и пр. (на gtkmm думаю, гораздо проще, но пока не пробовал, хотя из-за одной только возможности наследовать виджеты разрабатывать приложения на gtkmm по сравнению с GTK, имхо, значительно легче). Так же хотелось бы вместо GTK что-то вроде большого кроссплатформенного фреймворка, который бы предоставлял классы для работы с сетью, файлами, XML и т. п. Да, есть, к примеру, GNet, но C++-биндингов для него нету, хотя хотелось бы писать именно на C++ ну и вообщем много чего не хватает...

Ну и всвязи с этим в последнее время начал поглядывать на Qt, плюсов много, единственное, что пока не нравится - это то, что она написана не в стиле C++ - сигналы реализованы через макросы, а не через шаблоны, как в gtkmm, исключения не используются и т. п. Но несмотря на это, у меня прочно засела идея поставить на виртуалки Windows и Mac OS X и попробовать пописать что-нибудь кросплатформенное на C++/Python и Qt.

И вот собственно вопрос: может быть я все-таки недооцениваю GTK, и у него есть множество своих плюсов, которых нет у Qt? Буду благодарен, если подарите ссылки на какие-нибудь статейки, объективно сравнивающие GTK и Qt (как, например, вот эта - http://www.wikivs.com/wiki/GTK_vs_Qt).

riYu ()

[GTK] Определить, где генерируется сообщение GTK об ошибке

Добрый день.

Если программа выдает что-то вроде
(program:10038): Gtk-CRITICAL **: gtk_widget_event: assertion `WIDGET_REALIZED_FOR_EVENT (widget, event)' failed
можно ли как-нибудь определить, где оно генерируется, чтобы поставить там точку останова и отследить, кто виноват?

riYu ()

[libnotify] Отобразить одновременно несколько сообщений

Добрый день.

Столкнулся с такой вот проблемой. Может быть, подскажете что-нибудь.

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

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

riYu ()

[gtkmm] Отобразить собственный объект в Gtk::TreeView

Добрый день.

Возникла необходимость отобразить собственный объект (просто какой-то свой класс) в Gtk::TreeView. По сути нужно просто, чтобы Gtk::CellRendererText вызывал для данного объекта, к примеру, метод Object::get_string() и отображал полученную строку. В гугле ничего подходящего найти не удалось. Может быть, вы подскажите что-нибудь?

riYu ()

Autotools: импорт *.po и *.pot файлов из другого проекта

Добрый день.

Есть проект, который в себе содержит еще один проект-библиотеку, подключаемую при помощи AC_CONFIG_SUBDIRS. Оба проекта генерируют *.po и *.pot файлы, и хотелось бы, чтобы главный проект при генерации своих *.po и *.pot файлов сливал их с *.po и *.pot файлами библиотеки, т. к. она линкуется с ним статически. Каким образом это можно сделать?

riYu ()

Запуск приложения с другой версией библиотеки

Собственно проблема в следующем. Обновился до Ubuntu 9.10 и заметил, что Firefox стал ужасно тормозить. В Google Reader, в котором я провожу большую часть времени в интернете, при скроллинге получается жутко тормозное слайд-шоу. :(

Долго искал проблему, потом скачал GTK на пару версий младше, чем в дистрибутиве, скомпилил, прописал в LD_PRELOAD и запустил бинарную сборку Firefox, скачанную с сайта мозиллы.

После этого все заработало нормально, но вот только проблема... Если Firefox запускает какое-либо приложение (при скачивании файлов и т. п.), то оно сразу же падает, т. к. наследует Firefox'овский LD_PRELOAD, но при этом скомпиленно с другой версией GTK.

Подскажите, пожалуйста, можно ли как-нибудь заставить только Firefox использовать данную старую версию GTK, и чтобы запускаемые им приложения использовали версию, установленную в системе?

riYu ()

Какие сигналы должно обрабатывать уважающее себя приложение?

man 7 signal читал. :)

А вопрос вот в чем: хочу, чтобы когда кто-нибудь пытается завершить мое приложение при помощи сигнала, оно не падало, а аккуратно завершало свою работу. Насколько я понимаю, если пользователь захочет корректно завершить приложение, то он пришлет мне SIGINT или SIGQUIT, но вот что делать когда он завершает работу системы? Как в данном случае система оповещает приложения о том, что необходимо завершиться?

riYu ()

volatile - нужен ли при pthread_mutex_lock()?

Собственно вопрос.

Если при доступе к переменной я окружаю код вызовами pthread_mutex_lock()/pthread_mutex_unlock(), то нужно ли при ее объявлении использовать квалификатор volatile?

Где-то слышал, что компиляторы гарантируют, что после вызова функции в регистрах не окажется закэшированного значения переменной, но не уверен, так ли это. Да и даже если так, то что тогда произойдет, если pthread_mutex_lock() - inline-функция или макроопределение?

Просветите, пожалуйста.

riYu ()

[Gnome, metacity] Отключить перерисовку окна при перетаскивании

Google не дает ответа. :(

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

riYu ()

Считать данные побайтно из stdin и из окна GtkWindow

Собственно нужно написать небольшую обертку над MPlayer'ом, которая будет иметь собственное GTK-окно.

Необходимо сохранить контроль над MPlayer'ом, а именно:

1) При нажатии пользователем на какую-либо клавишу на клавиатуре внутри моего GTK-окна ретранслировать ее MPlayer'у в stdin, как будто она была нажата в его терминале.

2) При нажатии пользователем на какую-либо клавишу в терминале, когда запущена моя программа, также ретранслировать ее MPlayer'у.

С обоими ситуациями проблемы:

1) Привязываюсь к сигналу key_press_event окна и выполняю

Glib::ustring string(1, gdk_keyval_to_unicode(event->keyval));
write(mplayer_stdin, string.data(), string.size());
Работает, но только с простыми клавишами, представляющими собой цифры и буквы, а для стрелок и пр. - нет.

2) С stdin'ом приложения тоже косяк. Слежу за ним при помощи

const Glib::RefPtr<Glib::IOSource> io_source = Glib::IOSource::create(fd, Glib::IO_IN | Glib::IO_HUP);
io_source->connect(sigc::ptr_fun(&io_handler));
io_source->attach(Glib::MainContext::get_default());
и читаю read()'ом. В итоге получается, что данные передаются приложению только после того, как пользователь нажмет на Enter, что, естественно, меня не устраивает - видимо дело в readline или в чем-то еще.

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

riYu ()

Видеоплеер для просмотра фильмов с субтитрами

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

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

Есть предложения? :)

riYu ()

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