Strigi i pobieranie informacji z plików
Po krótkiej przerwie kolejne informacje na temat technik KDE 4. W tym tygodniu omówię Strigi - system pozyskiwania informacji, który będzie dostępny w KDE 4.0. KDE już wcześniej mogło pobierać informacje o plikach różnych typów i mógł wykorzystywać je w różny sposób, na przykład wyświetlając je w oknie Właściwości. Strigi wprowadza wiele zmian w tym mechanizmie.
Strigi jest to biblioteka pracująca na poziomie niższym niż KDE. Napisana jest w C++ i udostępnia różne wywołania, które można wykorzystać w programie, aby uzyskać informacje na temat pliku lub plików. Biblioteka ta posiada także funkcje wyszukiwawcze, na których jednak nie będę się skupiał w tym artykule.
Biblioteki Strigi wykorzystywane są do pobierania z plików informacji, takich jak na przykład wymiarów obrazka, długości nagrania, ilości linii, informacji o licencji w przypadku pliku z kodem źródłowym lub po prostu do wyszukiwania tekstu. Strigi posiada wiele zalet: może pracować na plikach archiwów i plikach skompresowanych. Jego możliwości wykorzystują programy zwane deepgrep i deepfind. Są to narzędzia działające w linii poleceń pozwalające na wyszukiwanie informacji w plikach binarnych lub tekstowych. KDE wykorzystuje te możliwości, dzięki czemu ma możliwość pobierania informacji z plików takich jak na przykład .tgz. Jest także prototyp kio_jstreams który wykorzystuje Strigi i pozwala traktować archiwa tak jak normalne katalogi i umożliwia wejście na przykład do /home/user/tarball.tar.gz/icons/... Działa to świetnie z aplikacjami KDE, ale przy próbie uruchomienia innego programu pojawiają się problemy. Dla przykładu: jeśli przeglądamy archiwum Konquerorem i chcemy otworzyć plik znajdujący się wewnątrz tego archiwum w Gimpie - nie poradzi sobie z tym. Z tego właśnie powodu jest to eksperymentalne io_slave i prace będą kontynuowane dopiero jeśli jakoś ominie się tą wadę. (Innym problemem jest traktowanie pliku tgz lub odp jednocześnie jako plik i katalog.)
Jest wiele sposobów w jakie Strigi może zwracać dane. Dla przykładu Jos mówi: "Program xmlindexer jest wykorzystywany do pobierania danych z plików xml. Zwraca on także xml, dzięki czemu dane wyjściowe mogą być w łatwy sposób wykorzystane w innym programie. Inne wyszukiwarki takie jak Beagle i Tracker mogłyby skorzystać na wykorzystaniu xmlindexera." xmlindexer to normalny program, dzięki czemu inne programy mogą go łatwo wywoływać bez wykorzystywania Qt lub C++.
Biblioteki KDE już wcześniej posiadały mechanizmy do ekstrakcji informacji (takie jak KFileMetaInfo) z plików, ale w wielu przypadkach było to powolne lub zbytnio ograniczone. Ze Strigi, zyskaliśmy kilkukrotne zwiększenie szybkości dla pobierania danych z plików PNG.
W KDE aktualnie nie ma żadnego miejsca, gdzie można by pokazać Strigi w akcji na zrzucie ekranu, bo jak na razie to tylko biblioteka. Efekty będą widoczne dopiero, kiedy obiekty takie jak okienko właściwości będzie wykorzystywało Strigi zamiast KFileMetaInfo. Strigi ma być także wykorzystane do wyświetlania rzeczy takich jak miniaturki i metadane podczas przeglądania plików. Tutaj też odczujemy zwiększenie prędkości. Jak na razie dla końcowego użytkownika nie widać żadnych efektów wykorzystania Strigi. Im więcej podsystemów KDE będzie korzystało z tej biblioteki tym więcej zastosowań znajdziemy dla jej wykorzystania.
Na przykład: Jednym z projektów, który najwięcej przysłużył się rozwojowi Strigi jest NEPOMUK. Według Josa: "Nepomuk jest dużym europejskim projektem badawczym mającym pozwolić na lepsze współdziałanie aplikacji. Nepomuk-KDE jest implementacją tych standardów i pomysłów w KDE. Pracuję z ludźmi z projektu NEPOMUK, a szczególnie z Sebastianem Trueg z Nepomuk-KDE aby upewnić się, że wszystko działa tak jak powinno. Aktualnie Sebastian pisze dodatkową implementację indeksów dla Strigi." Projekty te wykorzystują duże ilości metadanych oraz informacji z plików (takich jak na przykład logi z IRCa) aby ułatwić wyszukiwanie danych.
Strigi tylko zbiera dane, które inne aplikacji takie jak Dolphin/Konqueror czy okienko właściwości pliku będą prezentować. Aktualnie trwają prace nad przeportowaniem KFilePlugins, aby korzystały z nowego mechanizmu. Aktualny status projektu można znaleźć na stronie Porting KFilePlugins Progress.
Aby dowiedzieć się więcej o Strigi odwiedź stronę Strigi lub wejdź na kanał #strigi na serwerze irc.kde.org.

