Июн 19

Как известно, Amarok позволяет одинаково легко работать как с локальной, так и с внешними коллекциями, а также копировать и перемещать между ними дорожки. Однако порой простого копирования бывает недостаточно. Например, когда ваш портативный плеер не поддерживает формат, в котором лежат файлы локальной коллекции, или когда нужно уместить больше файлов на носителе. Или когда просто пользователь хочет перекодировать WMA-файлы, принесённые на флешке друга, в нечто более удобное.

Для этого в будущих версиях Amarok появится перекодировка на лету, над которой в рамках GSoC2010 работает Teo Mrnjavac и его наставник Nikolaj Hald Nielsen. При копировании дорожек пользователю будут предложены на выбор три действия — простое копирование, перекодировка с предопределёнными параметрами и перекодировка с собственными настройками.

Текущая реализация использует FFmpeg, но благодаря использованию в коде класса-»обёртки» разработчикам не составит труда перейти на что-то иное. Сам код практически готов, осталось интегрировать его в Amarok. Кстати, Teo уже участвовал в прошлогоднем GSoC — именно он добавил в Amarok многоуровневую сортировку в Списке воспроизведения.

Тем временем Jeff Mitchell занимается портированием плеера на QtSql, что позволит Amarok использовать не только MySQL/MySQL Embedded, но и SQLite. А также облегчит разработку варианта Amarok для мобильных устройств, над которым сейчас работает Jeff.

Правда, перед этим пришлось исправить несколько недостатков в самом QtSql. Прежде всего, Jeff реализовал отдельные драйверы для MySQL и MySQL Embedded, которые должны появится в Qt 4.8. Сейчас и для первого, и для второго используется один и тот же драйвер, причём выбор можно сделать только на стадии линковки (в Amarok этот выбор является обычной run-time опцией). Также он сделал возможным указывать собственные опции для MySQL-сервера (в частности, каталог для хранения БД), а не только определённые здесь.

После выхода Qt 4.8 и окончания работы по наведению некоторого порядка в исходниках самого Amarok (выделение ядра и платформо-специфичных участков кода в отдельные библиотеки, стандартизация пространств имён и заголовков) Jeff приступит к непосредственному портированию на QtSql и разработке мобильного интерфейса на Qt Kinetic.

Июн 09

Не секрет, что Qt4 отличается, помимо всего прочего, ещё и тем, что её портировали уже на очень большое количество платформ. Особое внимание компания Nokia, как владелец Qt Software, уделила портированию на свою мобильную платформу Symbian. Но если до этого статус разработки в данном направлении был скорее экспериментальным (пусть и с очень хорошими результатам), то теперь Nokia наряду с другими производителями мобильных устройств анонсировала об официальном подписывании пакетов Qt для платформы Symbian.

С выходом Qt версии 4.6.3 владельцы смартфонов на мобильной платформе Symbian смогут беспрепятственно установить библиотеки Qt. Это значит, что владельцы сотовых телефонов Satio (и подобные ему) от Sony Ericsson смогут использовать приложения Qt наравне с пользователями Nokia.

Разработчики уже выразили большую благодарность Sony Ericsson за открытость новым технологиям.

Если вы являетесь обладателем одного из устройств Nokia или Sony Ericsson на платформе Symbian и хотите попробовать одно из демо-приложений Qt, то просто перейдите по ссылке:

http://bit.ly/qt463demos

в вашем телефоне и установите .sis файл приложения. По окончании установки автоматически будет запущено приложение для демонстрации простых приложений Qt. И убедитесь, что у вас самая последняя версия прошивки, перед тем как начинать установку.

Внимание: На Satio не устанавливается Open C 1.6 – это нормально, т.к. последняя версия прошивки для Satio уже содержит в себе свежую версию библиотек Open C. Поэтому попросту пропускайте все предупреждения об отстутствии Open C или PIPS компонентов во время установки.

Qt 4.6.3 на Satio

Одно из демонстрационных приложений запущенных на Satio

Кроме того, Samsung также согласились сотрудничать с разработчиками Qt и подписать пакеты Qt для Symbian как производитель! К сожалению это заявление было сделано слишком поздно, чтобы попасть в релиз 4.6.3, однако это лишь вопрос времени и со следующим же выпуском этот недочёт будет исправлен.

мая 12

Замечательный человек по имени Aurélien Gâteau представил на проходящим сейчас Maverick Ubuntu Developer Summit (UDS) новую реализацию глобального меню. Сама поддержка осуществлена в виде патча для Qt, а значит нет зависимости от стилей и библиотек KDE. Но главная «вкусность» этой реализации в другом: поскольку она основана на DBusMenu (ещё одно детище Aurélien, позволяющее передавать содержимое меню и управлять им через DBus), то может показывать меню не только Qt-, но и GTK-приложений! Аналогично, меню приложений Qt и GTK могут отображаться в Gnome (нативно!), да и вообще в любой среде, для которой написан соответствующий апплет.

Читать далее »

Апр 26

OpenCL — это открытый набор библиотек для параллельного программирования в гетерогенной среде.

Начнём с конца. Что значит «в гетерогенной среде»? OpenCL позволяет запускать C-код на вычислительных мощностях вашей видеокарты. Или же на вашем центральном процессоре — ему всё равно.

Что же касается параллельного программирования — OpenCL предназначен не просто для того, чтобы производить вычисления на GPU, но и для распределения нагрузки между всеми ядрами CPU и GPU, до которых он только сможет дотянуться. Идея в том, что программисту не нужно предпринимать дополнительных усилий по написанию очередей обработки — OpenCL делает это для вас, и ваше приложение без каких-либо изменений масштабируется для выполнения на одном, двух или же на двадцати четырёх ядрах.

Разработчики Qt заинтересовались возможностями OpenCL, и недавно они представили библиотеку QtOpenCL.

Читать далее »

Мар 11

Каждый разработчик, знакомый с Qt, знает об используемом в этой библиотеке паттерне сигналов и слотов. Традиционно синтаксис соединения сигналов и слотов в PyQt и PyKDE выглядел очень похоже на аналогичный синтаксис в C++:

from PyQt4 import QtCore
from PyQt4 import QtGui
from PyKDE4 import kdeui

class MyGUI(QtGui.QWidget):

    def __init__(self, parent=None):
        super(MyGUI, self).__init__(parent)
        self.pushbutton = kdeui.KPushButton()
        self.pushbutton.setText("Push me!")

        QObject.connect(self.pushbutton, QtCore.SIGNAL("clicked()"),
                               self.button_pushed)

    def button_pushed(self):
        print "Button clicked"

Однако в PyQt 4.5 была добавлена поддержка нового стиля соединений:

from PyQt4 import QtCore
from PyQt4 import QtGui
from PyKDE4 import kdeui

class MyGUI(QtGui.QWidget):

    def __init__(self, parent=None):
        super(MyGUI, self).__init__(parent)
        self.pushbutton = kdeui.KPushButton()
        self.pushbutton.setText("Push me!")
        # New style
        self.pushbutton.clicked.connect(self.button_pushed)

    def button_pushed(self):
        print "Button clicked"

Будучи основанной на PyQt4, PyKDE4 также теперь поддерживает этот синтаксис. Как видите, код таких соединений выглядит гораздо компактнее и выразительнее, и более «по-питоновски». Кроме того, если раньше было трудно отследить возможные ошибки, допустив опечатку в названии сигнала или слота, то теперь любая опечатка вызовет исключение AttributeError.

Подробнее использование нового стиля описано в документации к PyQt.

Обратите внимание: если вы решили перейти с PyQt на PySide, то этот синтаксис вам пока ещё не доступен. Тем не менее, разработчики PySide планируют исправить это в будущих версиях библиотеки. Детали реализации нового стиля сигналов и слотов в PySide описаны в этом документе.

Мар 10

Разработчики QtWebKit приняли решение отделиться от процесса подготовки релизов Qt, чтобы иметь возможность выпускать обновления чаще, чем выходят новые версии основной библиотеки. Первый независимый релиз QtWebKit будет называться QtWebKit 2.0 и выйдет в мае. Эта версия будет совместима с Qt 4.6 и Qt 4.7. Новые релизы Qt будут по-прежнему включать текущую стабильную версию QtWebKit.

В прошлом медленный цикл развития QtWebKit тормозил разработку новых возможностей таких приложений, как Arora, Rekonq и WebKit KPart. Сейчас его сообщество активно растят, и более частый выпуск новых версий поможет динамичному развитию проекта — достаточно глянуть на серию заметок «This week in QtWebKit trunk»

Кроме того, используемая в QtWebKit ветка WebKit всегда синхронизируется с текущей стабильной веткой при выходе значительных релизов Qt (4.5, 4.6), из-за чего новые версии браузеров на основе QtWebKit могли долгое время отставать в реализации поддержки веб-стандартов от других WebKit-браузеров. Теперь же, работая по независимому от Qt графику, разработчики QtWebKit могут легко привязаться к выходу новых версий WebKit.

Фев 15

Продолжая мобильную тему, сегодня было объявлено о выходе Qt 4.6.2 для Maemo 5.

И если более ранние версии Qt для Maemo выходили с приставкой beta, то теперь этот порт считается стабильным. Конечные пользователи получат Qt 4.6.2 в составе обновления PR1.2

Фев 15

Сегодня разработчики Nokia и Intel объявили о том, что проекты Maemo и Moblin будут объединены с целью создания новой мобильной платформы MeeGo. MeeGo будет поддерживать широкий спектр устройств, включая мобильные компьютеры, нетбуки, таблетки, смартфоны, телевизоры и бортовые компьютеры автомобилей. Первые устройства на основе MeeGo должны появиться уже в этом году.

MeeGo будет основана на Linux, а основным фреймворком для разработчиков будет Qt. В пресс-релизе подчёркивается, что Qt позволяет разработчикам однажды создав приложение, поддерживать его на множестве различных платформ, а также продвигать в Ovi Store от Nokia и AppUpSM Center от Intel.

Обещают, что проект будет поддерживаться Linux Foundation и управляться согласно с лучшими практиками OpenSource модели.

Замечу, что буквально пару дней назад было объявлено о начале работ над портированием Qt на платформу Android энтузиастами при помощи средств проекта Lighthouse

Дек 17

Недавно один из разработчиков Qt Labs Paul Olav Tvete рассказал о проекте Lighthouse, целью которого является упростить портирование Qt на различные платформы. Идея проекта проста: изолировать весь платформенно-зависимый код, и создать фреймворк для написания «бэк-эндов» под различные платформы и устройства вывода.

Сейчас поддержка многих устройств реализована в рамках проекта Qt for Embedded Linux. Это очень гибкая платформа, которая развивается уже более десятка лет, но некоторые её аспекты не соответствуют современным тенденциям. Например, Qt/E включает в себя полноценный оконный менеджер, который нужен далеко не на всех платформах, тем более, во многих из них реализованы свои системы управления окнами. Читать далее »

Дек 01

Сегодня вышла Qt 4.6, и среди прочего заявлена поддержка multi-touch навигации и жестов. Marco «notmart» Martin заранее был снаряжён Tablet PC с поддержкой multi-touch и заданием от Nokia сделать что-нибудь интересное с новыми возможностями Qt. Вот что у него получилось, когда он поэкспериментировал с Marble и Plasma:

Хорошие новости: всё это будет включено уже в KDE 4.4. Но даже если у вас где-то завалялся Tablet PC, не спешите туда ставить Linux: увы, в X11 поддержка multi-touch пока ещё не реализована, так что все эти возможности будут доступны только в Windows- и Mac-сборках.

Если вас интересуют детали реализации, то почитайте описание классов QGesture и QTouchEvent. Первый позволяет вам реагировать на заранее определённые события вроде «жест для вращения» или «жест для скроллинга», а второй даёт непосредственный доступ к координатам нескольких нажатий.

Вот здесь представлено ещё несколько демонстрационных видеороликов.