Видео ролики бесплатно онлайн

Смотреть русское видео

Официальный сайт toppromotion 24/7/365

Смотреть видео бесплатно

Kraplax 22.01.2009 17:50

Я рекомендуюMakeStatus: новый плазмоид для разработчиков!

Оригинал
Я всегда хотел создать плазмоид с тех самых пор, как появился kde4.0 но у меня просто не было достаточно интересных идей. Наконец, около 2х (на момент написания статьи автором - прим. пер.) дней назад в результате ситуации типа "помоги себе сам" у меня появилась идея.



Позвольте представить вам функциональность данного плазмоида, который я сделал для изучения Plasm'ы.



Обычно мы разработчики довольно часто собираем из сырцов. Часто мы запускаем несколько процессов сборки в фоне. И это довольно надоедает следить за процессом сборки уставившись в экран. Некоторые запускают какую-нибудь задачу только для того, чтобы обнаружить что компиляция уже давно завершилась.

Некоторые умные люди ставят echo -e '\a' на запуск сразу же после вызова make для оповещения.



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



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



Ориентируясь на такой сценарий использования (см. также Use case - прим. пер.) я разработал простой плазмоид основанный на движке данных (data-engine, термин специфичный для Plasma - прим. пер.), который состоит из трех основных компонент:

Движок данных с D-Bus интерфейсом для добавления и удаления make source, а также задания прогресса для уже добавленных make-source.
Плазмоид, который на данный момент служит для отображения общего прогресса всех процессов компиляции.
makeinvoker, отдельная программа основанная на qt-core, которая служит "оберткой" ("wrapper", если такой термин более привычен читателю - прим. пер.) для make и выбирает из вывода последнего информацию о прогрессе. Как только он находит информацию о прогрессе, то тут же передает ее движку данных с помощью D-Bus вызовов. Также makeinvoker выводит стандартные потоки вывода (stdout) и ошибок (stderr) от make в свои аналогичные потоки.



Вот скриншот работы данного апплета.





Вооружившись информацией с TechBase я сразу уловил основы. Я действительно люблю архитектуру Plasma - гибкую, интуитивную, и при этом такую мощную :)

Однако, код MakeStatus не очень-то красиво выглядит, потому что я еще новичек в плазмоидах, движках данных и D-Bus. Понадобится время чтобы привести все к достойному виду.



Вот несолько идей, которые можно будет воплотить в жизнь:

Механизм уведомлений об окончании работы make (возможно, с подсказками об ошибках/предупреждениях, если таковые будут)Возможность приостановить/продолжить выполнение makeОтображать все процессы make с их прогрессом в extender'e (также особенность архитектуры Plasma - прим. пер.) при нажатии на плазмоид.

На данный момент есть проблема для которой, боюсь, нет легкого решения. Проблема эта в том, что "окрашивание текста" выводимого из Makefiles сделанных с помощью cmake не работает. Я незнаю как читать stdout из QProcess и перенаправлять то же самое в родительский процесс с окрашиванием текста. Любая помощь приветствуется :)



Также почему-то я не могу заставить соединение D-Bus с движком данных существовать отдельно как я хотел. Я пробовал

1
    QDBusConnection::connectToBus(QDBusConnection::SessionBus, "org.MakeStatusEngine")



Но как-то это создает соединение на ":1.125". Я, правда, мало знаю dbus - поэтому разрешу этот вопрос потом (или может быть мне кто-нибудь поможет).

Сейчас путь к интерфейсу dbus находится в соединении "org.kde.plasma".



Кстати, для мэйкфайлов созданных не с помощью cmake не существует способа получить информацию о прогрессе. Для таких систем компиляции прогресс равен либо 0%, либо 100% (да, по своей натуре он бинарен ;) )



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


Тэги: dev plasma
+ 3 -
Похожие Поделиться

Ranma 22.01.2009 19:24 #
+ 0 -
Скажите, у Вас yakuake под KDE 4 работает?
Kraplax 22.01.2009 21:50 #
+ 0 -
оффтопик, конечно. Но да, работает, причем прекрасно. И если что - yakuake есть как для 3х так и для 4х КДЕ. Причем, насколько помню - оба работали у меня адекватно.
Ranma 23.01.2009 09:38 #
+ 0 -
Да, пардон, за оффтопик, просто именно для описанных выше целей я и использую yakuake, но под KDE 4 он у меня не запускался, правда пробовал я это дело в конце декабря на Debian sid…
KblCb 22.01.2009 19:49 #
+ 0 -
Эээ... Я не понял он вызывает заместо make некую свою программу эквивалентную make+что-то?
Kraplax 22.01.2009 21:49 #
+ 0 -
насколько я понял он просто делает обертку, которая все равно потом вызывает make. Обертка нужна, опять же, как я понял, для того чтобы парсить вывод стандартного мэйка, ибо мэйкфайлы сделанные с помощью cmake обладают ценной информацией о прогрессе.
KblCb 22.01.2009 22:25 #
+ 0 -
Гм... Штука любопытная, но всё зависит от того как она реализована. Сам я использую костыль:

make install && kdialog --passivepopup 'Успех!!!'
Kraplax 22.01.2009 22:32 #
+ 0 -
ну вот в том-то и дело, что здесь смысл не столько в том чтобы узнать завершилось задание или нет, сколько в том, чтобы на панели у тебя или на рабочем столе отображался прогресс в процентах. Такими метками процентов обладают мэйкфайлы созданные с помощью CMake.
Username 22.01.2009 21:47 #
+ -1 -
идея хороша! Я лох, объясните мне на пальцах, он любой make отслеживает, или запущенный по-особому? Круто бы было время до завершения показывать, но эт я так понимаю, сложно.
Kraplax 22.01.2009 22:09 #
+ 0 -
Насчет любого мэйка или нет - незнаю, автор сего плазмоида не выложил его еще в svn даже, так что не особо понятно. Я думаю что там все настраивается. Возможно, просто вместо make нужно будет использовать makeinvoker для билда, что было бы просто прекрасно.
Насчет расчета времени - это было бы действительно удобно, однако довольно сложно и все равно неточно.
Kraplax 27.01.2009 16:07 #
+ 0 -
Плазмоид выложен в свободный доступ на Google Code!
Вот пост автора по этому поводу. Там же внизу в табличке основные данные этого проекта - как вытяеть с svn, где и что лежит. Let the hack begin! :D

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн