Filary KDE 4
Po sobotnich prezentacjach nastąpił czas na wykłady bezpośrednio dotyczące KDE. Były one podzielone na dwie sesje. Poniżej streszczenie.
Spis treści |
[edytuj] Filary KDE 4
[edytuj] Strigi
Jos van den Oever przedstawił historię wyszukiwania danych w KDE. Implementacja wyszukiwania rozpoczęła się od KFind (1996), potem wprowadzono KFileMetaInfo (2001) oraz Kat (2005). Na aKademy 2006 zaprezentowano projekty Nepomuk i Strigi. Nepomuk korzysta z semantycznej techniki przechowywania danych opierając się na technice FreeDesktop.org (Xesam). Strigi składa się z modułów pobierania, indeksowania i wyszukiwania danych.
Te dwa nowe elementy KDE są częścią podstaw - filarów KDE 4. Problemem istniejących wyszukiwarek była konieczność radzenia sobie z wieloma formatami plików, wieloma narzędziami oraz interfejsami. KIO (w KDE) oraz VFS (w GNOME) nie sprawdzają się w wielu przypadkach i nie są najlepszym rozwiązaniem problemu wyszukiwania danych.
Strigi wykorzystuje strumień informacji poddawany analizie na różnych poziomach. Testy wykazały, że Strigi jest dużo szybszy niż Beagle, jindex czy Tracker (indeksowanie 10 000 plików, łącznie 168 MB). Jeden z projektów Summer of Code ma na celu umożliwienie indeksowania przez Strigi 18 nowych formatów danych chemicznych.
[edytuj] Flake
Boudewijn Rempt zaprezentował nową technologię dostępną w KOffice 2 - Flake. Pozwala on na komponowanie dokumentów z różnych obiektów: ramek z tekstem, zdjęć, grafiki wektorowej czy tabel. Boudewijn pokazał jak się to odbywa. KoTool tworzy KoShape a na nim tworzony jest KoCanvas. Każda aplikacja ma specyficzny dla siebie canvas. Tworzone na nim obiekty mogą być tworzone ręcznie, na podstawie szablonów, mogą być osadzane, grupowane, rozmieszczane. Obiekty "wiedzą" jak mają być narysowane oraz jak załadować inne kształty. Problemem są kolory, gdyż mogą mieć różne odcienie jeśli pochodzą z różnych urządzeń takich jak skanery czy aparaty fotograficzne. We Flake nie są dostępne jeszcze wszystkie typy obiektów. Brakuje obiektów tabel, wideo oraz mapy. Jedne z projektów Summer of Code ma na celu stworzenie obiektu dźwiękowego.
Więcej informacji w artykule Droga do KDE 4: Nowe techniki w KOffice.
[edytuj] ThreadWeaver
ThreadWeaver ułatwia życie programisty w erze procesorów wielordzeniowych i wprowadza ulepszenia wydajności i funkcjonalności. Mirko Boehm mówi, że wykorzystanie ThreadWeaver to jak "chodzenie i żucie gumy w tym samym czasie". ThreadWeaver pozwala na lepsze przydzielanie zasobów procesora do zadań oraz pozwala także na tymczasowe zatrzymywanie zadań takich jak na przykład indeksowanie plików przez Strigi. Aby wykorzystać zalety ThreadWeavera w aplikacji musi tylko zostać zaimplementowana klasa zadania, potem należy wstawić ją w kolejkę i poczekać na zakończenie zadania. Demonstrując tą funkcjonalność Boudewijn Rempt pokazał jak w programie Krita zaimplementowano tworzenie podglądu nakładanego filtru. Aby zapobiec "zawieszeniu się" interfejsu aplikacji zastosowano właśnie ThreadWeaver.
[edytuj] Sonnet
Początkową implementacją sprawdzania pisowni w KDE był KSpell1. W pełni opierał się on na silniku ispell, co wiązało się z wieloma problemami często związanymi z niekompatybilnością kolejnych wersji ispella. Po kilku większych wydaniach KSpell1 zupełnie przestał działać. Operając się na wcześniejszych doświadczeniach Zack Rusin stworzył KSpell2, który był niezależny od backendu i był dostępny od wydania KDE 3.2. Niestety ta kolejna implementacja była niezwykle skompilowana i posiadała słabo zaprojektowane API.
Sonnet jest już trzecim podejściem do sprawdzania pisowni w KDE. Ma on na celu uproszczenie API (poprzednia implementacja składała się z aż 7 komponentów, Sonnet składa się tylko z jednego), poprawę wydajności (KSpell uruchamiał kilka procesów backenda na potrzeby sprawdzania pisowni w locie) oraz dodanie wsparcia dla większej ilości języków. Podstawowym problemem podczas sprawdzania pisowni w językach takich jak tajski czy japoński jest rozpoznawania znaczenia słów na podstawie kontekstu. Sonnet aktualnie posiada wsparcie dla języków: angielskiego, francuskiego, niemieckiego oraz polskiego.
[edytuj] Akonadi
Akonadi jest nowym frameworkiem projektu KDE-PIM. Akonadi ma API oparte na KJob, co pozwala lepiej dostosować funkcje monitorujące. To z kolei pozwala na wprowadzenie wielu nowych funkcji. Zamiast pisać plugin do każdej aplikacji PIM programiści będą mogli stworzyć agenta, który będzie reagował na zmianę danych. Został zaprezentowany nowy aplet Plasmy wyświetlający powiadomienia o nowych emailach oraz konsola Akonadi wyświetlająca komunikaty.
[edytuj] Quasar
Po wystąpieniu w wykładzie na temat Sonneta, Zack przedstawił Quasar - bibliotekę dla efektów graficznych. Quasar pozwala programistom na nakładanie na siebie filtrów graficznych bez konieczności znania całej matematyki obsługującej dany filtr. Aktualnie programiści Quasara pracują nad zwiększeniem wydajności przy przetwarzaniu dużych obrazów (+30 000 x 30 000 pikseli).
[edytuj] Decibel
Tobias Hunger rozpoczął swój wykład od wyjaśnienia dlaczego potrzebny jest Decibel. Pokazał wykres aplikacji i protokołów używanych do komunikacji, ale nie pozwalających na komunikację pomiędzy sobą. Jest to problemem dla użytkowników, gdyż muszą używać kilku komunikatorów, aby móc porozumieć się ze wszystkimi.
Dla programistów ta sytuacja wygląda podobnie. Aplikacje muszą wspierać wiele protokołów i konieczne są bardzo duże nakłady pracy. Pracy wymagają nie tylko protokoły (często własnościowe i trudne do zaimplementowania), ale także interfejs programu, narzędzia konfiguracyjne i funkcje zależne od danego protokołu.
Decibel wydziela obsługę protokołów (za pomocą pluginów). Pozwala na przechowywanie danych kont i kontaktów. Najbardziej interesującą funkcją Decibela jest menadżer komponentów. Komponent jest to interfejs wykorzystujący i prezentujący funkcjonalność. Decibel wspiera profile komponentów, dzięki czemu można na przykład być pewnym, że podczas pracy dostaniemy wiadomość z komunikatora, a kiedy nas nie ma w biurze odpowiedni profil zadba o to aby włączyła się "automatyczna sekretarka".
Aktualnie Decibel wymaga jeszcze trochę pracy, ale Tobias zapewnił nas, że będzie mógł pokazać działający komponent telefonu jeśli tylko komponent ten zadziała po hibernacji. Decibel do komunikacji wykorzystuje D-BUS oraz system Telepathy, który pozwala na przekazywanie komunikatów D-BUS poprzez sieć.
[edytuj] WebKit
Lars Knoll przedstawił zastosowanie Webkit w KDE. Lars opowiedział historię KHTML. Na początku swego istnienia KDE posiadało prosty menadżer plików - KFM, ale szybko pojawiła się potrzeba posiadania silnika obsługującego HTML. W międzyczasie silnik HTML został wzbogacony o obsługę DOM, CSS oraz skryptów. KHTML bardzo popularny w latach 2000-2003 kiedy to jako jeden z pierwszych uzyskał wsparcie dla języków pisanych od prawej do lewej strony i miał duży udział w rynku na systemach Linux/UNIX.
Latem 2001 roku Apple stworzyło fork, a w dwa lata później wydało Safari. Społeczność była dumna z tego, że Apple doceniło jakość KHTML ale programiści byli mniej szczęśliwi. Apple początkowo nie chciało współdziałać ze społecznością, wydając tylko co jakiś czas jedną wielką paczkę kodu źródłowego. Zdenerwowanie społeczności rosło aż do czasu, kiedy Zack Rusin opisał brak współpracy ze strony Apple na swoim blogu. Apple odpowiedziało i rozpoczęło projekt Webkit, powoli otwierając jego rozwój. Ostatecznie w roku 2006 został zainicjowany projekt przeniesienia Webkita do KDE. Udział Webkita w runku wyniósł 5% dzięki zastosowaniu go w Safari oraz telefonach Nokia S60. Nad Webkit pracują nie tylko Apple i Nokia, ale także Adobe i Trolltech.
Trolltech szukając wieloplatformowego silnika HTML wysokiej jakości pracuje nad integracją Webkit w Qt 4.4. Dyskusje and zastąpieniem KHTML w KDE Webkitem ciągle trwają, ale według Larsa, ujednolicenie Webkita i KHTML byłoby najlepszym wyjściem. Pomimo początkowego sceptycyzmu Apple wspiera wysiłki Trolltecha dążące do integracji Webkita w Qt i KDE.
[edytuj] Programowanie
[edytuj] API KDE dla innych języków programowania
Równolegle z sesją dotyczącą Filarów KDE Simon Edwards poprowadził sesję na temat API KDE dla innych języków programowania i opisał proces tworzenia aplikacji KDE w Python. Rozpoczął od omówienia cech Pythona ale, że wielu z uczestników było weteranami tego języka, więc Simon szybko przeszedł do tematu wykładu. Simon programował od długiego czasu w C++, ale nie był z niego zadowolony. Potem odkrył Pythona i natychmiast go pokochał. Zaczął programować narzędzia konfiguracyjne dla Kubuntu wykorzystując Pythonowe API KDE/Qt. Simon pokazał podobieństwa pomiędzy kodem w Python-KDE/Qt i C++. API jest łącznikiem pomiędzy składnią C++ a Pythona, zachowując wiele fajnych cech Qt. Największą wadą programowania aplikacji KDE w Pythonie jest duże zużycie pamięci przez interpreter Pythona.
Następnie Simon pokazał jak osadzić aplikacje Pythonowe w KControl pisanym w C++. Oczekuje on, że Pythonowe dowiązania do KDE 4 będą publikowane równolegle z wersjami beta KDE 4. Potem omówił zalety programowania aplikacji KDE w Pythonie. Według Simona PyQT i PyKDE wniosą więcej zabawy w programowanie aplikacji.
Po wykładzie Simona wysłuchaliśmy wykładu na temat API KDE dla C#. Zostanie to jednak omówione w jednym z późniejszych artykułów.
[edytuj] KJSEmbed i QtScript
Po przerwie na kawę Richard Moore opowiedział o KJSEmbed i QtScript. Te dwa narzędzia wnoszą wiele nowych możliwości do aplikacji. Po pierwsze, część aplikacji może być wykonana w skryptowym języku wysokiego poziomu. Po drugie można rozszerzać możliwości aplikacji poprzez dołączanie do nich skryptów. Kolejną zaletą jest to, że użytkownicy będą mogli pisać skrypty aby zautomatyzować niektóre działania lub rozszerzyć możliwości aplikacji.
Po prezentacji skryptów w programach takich jak Emacs, Dreamweaver czy Paintshop Pro, Richard omówił cechy jakie powinien mieć każdy język skryptowy wbudowany w aplikację. KJS został napisany dla przeglądarki internetowej, podczas gdy QtScript został stworzony specjalnie dla tworzenia skryptów w aplikacjach Qt.
Kent Hanson skupił się na pokazaniu przykładów i możliwości QtScript. Pokazał jak system skryptów wykorzystuje mechanizm sygnałów i slotów i pokrótce omówił API.
[edytuj] Inne wykłady
Tego dnia odbyły się także inne wykłady: o okularze, kryptografii, Kexi, Krita oraz seria krótkich wykładów o grach KDE (każdy po 4 minuty). Jeśli jesteś zainteresowany szczegółami zajrzyj na stronę aKademy, gdzie znajdziesz slajdy i filmy z prezentacji.

