Archiv

Archiv für die Kategorie ‘Technologie’

KDE: Plasmoiden mit JavaScript

23. Juli 2010
Logo of the KDE Project "KDE, K Desktop E...
Image via Wikipedia

Der freie Desktop KDE hat mit der Version 4.0 eine neue Desktop-Shell namens Plasma eingeführt. Die ganze Oberfläche wird dabei aus einer Vielzahl von Widgets, sogenannter Plasmoiden, zusammengesetzt. Plasmoiden können dabei prinzipiell jede mögliche Funktion realisieren. Es existieren  bereits eine Vielzahl von Uhren, Kalendern, Taschenrechnern aber auch komplexere Applikationen wie etwa ein Twitter-Client oder . Auch die Grundelemente des Desktops wie die Taskleiste aber auch der Desktop selbst sind spezielle Widgets. Der Benutzer kann dabei selbst entscheiden welche Plasmoiden er wo verwenden möchte. Neue Plasmoiden können einfach über das Netz nachgeladen werden.

In den Anfangszeiten war die Entwicklung von Plasmoiden recht kompliziert und erforderte neben Kenntnissen in C++ tiefe Einblicke in das Plasma-Framework. Seit KDE 4.4 können Plasmoiden nun sehr einfach mit Hilfe von Skriptsprachen wie JavaScript erstellt werden. Wie einfach das von statten geht, möchte ich euch hier gerne demonstrieren.

Los gehts

Ganz traditionell fangen wir hier mit einem einfachen “HelloWorld” an. Zunächst müssen wir einen Ordner anlegen, der unseren Plasmoiden erhalten soll. Dieser erhält den Namen hello_world:

mkdir hello_world

In diesem Ordner benötigen wir eine Datei mit dem Namen metadata.desktop.

touch hello_world/metadata.desktop

Diese Datei beschreibt den Plasmoiden, kann mit jedem Editor (z.B. KWrite) bearbeitet werden, und sollte in etwa folgenden Inhalt haben:

[Desktop Entry]
Name=Hello World
Comment=Eine kurze Beschreibung des Plasmoiden
Icon=kate
Type=Service
X-KDE-ServiceTypes=Plasma/Applet
X-Plasma-API=javascript
X-Plasma-MainScript=main.js
X-Plasma-DefaultSize=300,100
X-KDE-PluginInfo-Author=Steffen Schloenvoigt
X-KDE-PluginInfo-Email=steffen@schloenvoigt.de
X-KDE-PluginInfo-Name=hello_world
X-KDE-PluginInfo-Version=0.0.1
X-KDE-PluginInfo-Website=http://plasma.schloenvoigt.de/
X-KDE-PluginInfo-Category=Examples
X-KDE-PluginInfo-Depends=
X-KDE-PluginInfo-License=GPL
X-KDE-PluginInfo-EnabledByDefault=true

Die Datei ist größtenteils selbsterklärend. Als Icon für das Plasmoid hab ich hier einfacherweise das bereits im System vorhandene des Programms KWrite verwendet. Man könnte hier aber auch einen Dateinamen eines eigenen Icons angeben. Wichtig ist noch der Parameter X-Plasma-MainScript. Er gibt den Namen der Datei an, die später unseren Code enthält.

Alle weiteren Dateien, die zum Plasmoid gehören, müssen in einem Unterordner namens contents abgelegt werden. Diesen erstellen wir nun:

mkdir hello_world/contents

In diesem Ordner legen wir nun die Datei main.js an, die später den Code des Plasmoids enthält:

touch hello_world/contents/main.js

Das erste Programm

Um einfach den Schriftzug “Hallo Welt” anzuzeigen, reicht folgender Code aus:

layout = new LinearLayout( plasmoid );
label = new Label( );
label.text = "Hallo Welt";
layout.addItem( label );

In Zeile 1 erstellen wir ein LinearLayout für den Plasmoiden. Die Variable plasmoid ist eine statische Variable, die vom Plasma Framework bereitgestellt wird. Das LinearLayout ist ein Container, der alle in ihm enthaltenen Elemente nacheinander (oder untereinander wenn die Orientierung auf Vertikal umgestellt wurde) in gleichmäßiger Größe anordnet. In der zweiten Zeile erstellen wir dann ein Label-Objekt, dessen Eigenschaft “text” wir in der dritten Zeile den später anzuzeigenden Text “Hallo Welt” zuweisen. Zu guter Letzt wird das label in Zeile 4 zum Layout-Container hinzugefügt.

Das ist im Prinzip auch schon alles. Nun können wir uns den Plasmoiden mit dem Programm plasmoidviewer einfach ansehen:

plasmoidviewer hello_world

Wenn wir alles richtig gemacht haben, sollte sich nun folgendes Fenster öffnen:

Die "Hallo Welt"-Applikation im plasmoidviewer

Benutzerinteraktion

Natürlich wollen wir nich nur einfach einen Schriftzug anzeigen sondern auch auf Benutzereingaben reagieren können. Wir erweitern das Programm deswegen folgendermaßen:

layout = new LinearLayout( plasmoid );
label = new Label( );
label.text = "Hallo Welt";
layout.addItem( label );

layout.orientation = QtVertical;

inputField = new LineEdit( );
layout.addItem( inputField );

button = new PushButton( );
button.text = "Klick mich";
button.clicked.connect( onButtonClick );
layout.addItem( button );

function onButtonClick( )
{
 if( inputField.text != "" )
 {
   anotherLabel = new Label( );
   anotherLabel.text = inputField.text;
   layout.addItem( anotherLabel );
   inputField.text = "";
 }
}

Zunächst setzen wir hier zusätzlich die Orientierung auf vertikal indem wir der orientation Eigenschaft des Layouts die globale Konstante QtVertical zuweisen. Als nächstes erzeugen wir  in den Zeilen 8 und 9 ein einfaches Texteingabefeld und fügen es zum Layout hinzu. In den Zeilen 11-14 erzeugen wir einen Button mit der Aufschrift “Klick mich”, der die Funktion onButtonClick aufruft, wenn er gedrückt wird.

In den Zeilen 16-25 wird dann diese onButtonClick Funktion implementiert. Hier prüfen wir zuerst, dass das Eingabefeld nicht leer ist. Ist etwas im Eingabefeld enthalten, wird ein neues Label Objekt erzeugt und der Inhalt des Eingabefelds an dessen text Eigenschaft zugewiesen. Das neue Label wird dann ebenfalls an das Layout angehängt und der Inhalt des Eingabefelds geleert.

Wenn wir uns den Plasmoiden nun wieder im plasmoidviewer ansehen, sollte nach ein paar Eingaben der Inhalt in etwa folgendermaßen aussehen:

Die erweiterte Hello World Applikation

Installieren und Paketieren

Wenn wir mit unserem Plasmoiden zufrieden sind, können wir ihn mit Hilfe des Tools plasmapkg installieren:

plasmapkg -i hello_world

Haben wir alles richtig gemacht, können wir unseren Plasmoiden jetzt einfach zum Beispiel zum Desktop hinzufügen indem wir diesen mit der rechten Maustaste anklicken und im erscheinenden Kontextmenu den Eintrag “Miniprogramme hinzufügen…” wählen (Falls diese Option nicht vorhanden ist, muss man eventuell erst die Option “Miniprogramme entsperren” anklicken). Nun können wir nach unserem Plasmoid in der Auswahlliste suchen. Da wir in den Meta-Daten die Vorgabekategorie “Example” eingestellt haben, sollte sich unser Plasmoid im Reiter “Beispiele” befinden.

Auswahl des Plasmoiden aus der ListeWenn wir unseren Plasmoiden nun aus der Liste auf den Desktop ziehen, sollte er sich dort genauso problemlos öffnen.

Hello World Plasmoid auf dem Desktop

Solange wir den Plasmoiden nur für uns entwickeln, ist die bisher vorgestellte Vorgehensweise natürlich ohne weiteres gangbar. Wollen wir den Plasmoid allerdings auch mit anderen teilen oder gar etwa auf http://opendesktop.org zum Download bereitstellen ist dieser Weg so nicht sinnvoll. Das größte Hindernis ist sicherlich die Verzeichnisstruktur und die Vielzahl der darin enthaltenen Dateien (Später können hier ja auch weitere Quelltexte, Bilder, Übersetzungen usw. hinzukommen). Das Plasma-Framework setzt daher auf .plasmoid Dateien, die im Grunde genommen nichts anderes sind als ganz normale ZIP Dateien mit einer anderen Endung (So wird das im übrigen bei vielen Dateien wie z.B. von OpenOffice oder den neuen MS Office Formaten auch gemacht). Um aus unserem Plasmoiden also ein Paket zu schnüren, gehen wir folgendermaßen vor:

cd hello_world
zip -r hello_world.zip *
mv hello_world.zip hello_world.plasmoid

Die Datei hello_world.plasmoid kann nun problemlos verteilt werden. Installiert werden .plasmoid Dateien übrigens genauso wie vorher das Verzeichnis:

plasmapkg -i hello_world.plasmoid

Wollen wir einen installierten Plasmoid wieder entfernen, verwenden wir den Schalter -r:

plasmapkg -r hello_world

Hierbei spielt es allerdings dann keine Rolle, ob aus einem Verzechnis oder aus einer .plasmoid-Datei installiert wurde, wichtig ist allein der Name des Plasmoiden, den wir in den Meta-Daten mit dem Feld X-KDE-PluginInfo-Name angegeben haben.

Weitere Informationen

Natürlich hat dieser Beitrag nur die absoluten Grundlagen der Entwicklung von Plasmoiden mit JavaScript beleuchtet. Das Framework bietet eine unmenge an weiteren Funktionalitäten wie die Abfrage oder auch Implementierung von Plasma-DataEngines (Plasma-Programme, die Daten aus verschiedensten Quellen bereitstellen), die Ausgabe von Graphen, Animationen, den Zugriff auf das Netzwerk oder das Starten vor Programmen. Einen guten Überblick bieten folgende Development Tutorials in der KDE Techbase:

Enhanced by Zemanta

Steffen Schloenvoigt , , , , ,

[Webtreff] Low Budget Usability

17. November 2009

Patric Schmid von der Uni Konstanz hat gestern auf dem Webtreff Konstanz/Kreuzlingen einen interessanten Vortrag über Usability-Testing, gerade auch mit geringem Budget, gehalten:

Themen waren unter anderem:

  • Wer hat was von Usability?
  • Lohnt sich das überhaupt?
  • Was und wie wird getestet? – Testmethoden
  • (Online)-Tools zum Usability-Testing

Während des Vortrags und im Anschluss darauf wurde angeregt über Usability und andere angelehnte Themen diskutiert.

Wer Interesse an Themen rund um das Web und Technologie oder vielleicht auch mal gerne selber einen Vortrag dort halten würde und im Raum Konstanz/Kreuzlingen zugegen ist, ist herzlich eingeladen sich zu uns zu gesellen:

Reblog this post [with Zemanta]

Steffen Schloenvoigt , , , ,

[Semantic Web Technologien] Slides zu Vorlesung 3: RDF

22. Oktober 2009

Mit dem Resource Description Framework (RDF) steigen wir nun richtig in die Sprachen des Semantic Web ein.
Es wird der Graph als Datenmodell des RDF und dessen Zerlegung in Triple aus Subjekt, Prädikat und Objekt behandelt.
Mit RDF/XML, Turtle und RDFa werden die wichtigsten Serialisierungsformate für RDF-Graphen besprochen. Anschließend beschäftigen wir uns mit den Details von RDF wie der Behandlung von Literalen (inkl. Datatypes und Sprachangaben), Blind Nodes, Listen und Collections.

Download: 3 – SprachenDesSW – RDF

Literatur:

Reblog this post [with Zemanta]

Steffen Schloenvoigt , , ,

Die Zukunft des Internets

6. Oktober 2009
Graphic representation of a minute fraction of...

Image via Wikipedia

Im folgenden Video wird nichts weniger als die Zukunft des Internets beschrieben – und das auf eine sehr schöne, verständliche Art und Weise (allerdings leider auf Englisch).

Grundsätzlich geht es bei der Zukunft des Internets um die Tatsache, dass die Datenmenge im Internet Jahr für Jahr exponentiell steigt. Neue Technologien werden entwickelt, Geräte mit dem Netz verbunden. Man denke hier etwa nur an Internet-fähige Kühlschränke, wie sie uns von technischen Visionären bereits vor Jahren vorgestellt wurden, die sich ihre Inhalte nachbestellen, sobald diese zur Neige gehen. Aber auch andere Automaten, beispielsweise für Fahrkarten, sind mit dem Netz verbunden.

Digitage Web 2.0

Image by ocean.flynn via Flickr

Durch das Web 2.0, also das Social Web oder “Mitmach Web”, wird es jedermann auf einfache Art ermöglicht, selbst Informationen im Netz bereit zu stellen. Und die Nutzer tun dies auch fleißig. Eines der besten Beispiele hierfür ist wohl die Wikipedia, die sich seit ihrer Ent

stehung im Jahr 2001 zur umfangreichsten (die englische Wikipedia enthält seit August 2009 über 3 Millionen Artikel) und korrektesten (Laut diverser Studien braucht sich die Wikipedia nicht hinter etablierten Enzyklopädien wie Encyclopaedia Britannica und dem Brockhaus zu verstecken und übertrifft diese sogar in vielen Bereichen) Ansammlung menschlichen Wissens entwickelt hat. Doch natürlich posten die User nicht nur nützliches Wissen ins Netz – Soziale Netzwerke wie Facebook und studiVZ werden mit persönlichen Informationen sowie Bildern der letzten Parties befüllt, auf Twitter erzählt so mancher von seinen täglichen Lebensgewohnheiten.

**Web ser **Веб-служба

Image via Wikipedia

Doch das Web 2.0 hat auch noch eine andere Seite: Mehr und mehr Dienste öffnen sich und stellen ihre Daten über vorwiegend XML-basierte Web Services zur Verfügung. Dadurch lassen sich neue Seiten und Dienste erstellen, die die Funktionalität dieser Web Services verwenden und kombinieren. Eine große Liste der verfügbaren Services und APIs findet sich beispielsweise unter programmableweb.com Der größte Anbieter solcher Dienste ist sicherlich Google und der am häufigsten in fremde Seiten eingebettete Dienst warscheinlich Google Maps. Wer sich solch ein sogenanntes “Mashup” einmal ansehen möchte, findet beispielsweise unter TwitterMap.de eines, das die Karten von Google Maps mit Benutzern und ihren “Tweets” von Twitter verknüpft und so anzeigt, wer von wo twittert.

Ein Problem dieser Mashups ist jedoch, dass fast jeder Dienst auf seinem eigenen Datenformat beruht und diese so nicht ohne weiteres untereinander ausgetauscht werden können. Ändert ein Anbieter etwas an seinem Dienst, so zerbricht oft die Funktionalität der Dienste, die den Web Service des Anbieters verwenden.

Wie wir sehen, bietet das Web uns schon heute eine immense Fülle an mehr oder minder wichtigen Informationen und Diensten, deren Anzahl und Umfang auch in den kommenden Jahren extrem weiterwachsen wird. Um diesen gigantischen Datenmengen Herr zu werden und noch das zu finden, was wir auch suchen, sind wir auf die Mithilfe von Maschinen angewiesen. Das Problem dabei ist, dass das heutige Netz nicht gerade maschinenfreundlich ist. Nur mit großem Aufwand lässt sich für Maschinen der Sinn und Zweck einer Webseite erahnen. Von Bildern und Videos ganz zu schweigen. Herkömmliche Keyword basierte Suchtechniken liefern viel zu viele nicht relevante und vor allem auch nicht jedes relevante Ergebnis zurück. Die menschliche Sprachenvielfalt verstärkt diesen Effekt noch zusätzlich. Hinzu kommen die unterschiedlichen Schnittstellen und Protokolle der Web Service Anbieter. Das Hauptproblem bei all dem ist das Fehlen von Bedeutung.

Semantic Web Rubik's Cube

Image by dullhunk via Flickr

An diesem Punkt versucht das Semantic Web beziehungsweise das Netz der Dinge anzusetzen. Jedem “Ding” auf der Welt wird hier eine eigene Adresse in Form einer URI zu

gewiesen. Über einfache Aussagen können diese Dinge dann miteinander verknüpft oder auch verschmolzen werden. Dabei bedient man sich unter anderem an Techniken der künstlichen Intelligenz. Kernphilosophie beim Semantic Web ist es jedoch, die Dinge einfach zu halten (KISS-Prinzip). Doch das Semantic Web ist nicht neu, es wird bereits seit vielen Jahren von einer großen Anzahl an Organisationen unter dem Dach des Internetkonsortiums W3C vorangetrieben. Die Ergebnisse der Arbeit lassen sich in Form von Spezifikationen auf den Seiten der Semantic Web Working Group einsehen.

Doch nun erst einmal das Video:

Und warum interessiere ich mich für das Thema? Nun, außer der Tatsache, dass ich mich als Technikfreak selbstverständlich ständig mit neuen Entwicklungen befasse, war das Semantic Web Thema meiner, Anfang diesen Jahres erfolgreich abgeschlossen, Diplomarbeit mit dem Titel “Konzept und Implementierung von Integrationsszenarien mit Semantic Web Technologien”, die ich in Zusammenarbeit mit der HTWG Konstanz und meinem jetzigen Arbeitgeber, der TechniData AG, erstellt habe. Desweiteren wurde mir von der HTWG für dieses Semester ein Lehrauftrag zu diesem Thema angeboten , den ich selbstverständlich auch angenommen habe. Also bereitet euch darauf vor, in der nächsten Zeit noch mehr über dieses wunderbare Thema zu erfahren ;-)

Reblog this post [with Zemanta]

Steffen Schloenvoigt , , , , , , , , , ,

RSS-Feed online

29. April 2008

Hi zusammen,

ich biete jetzt auch einen RSS-Feed an ;-)

Da ich ja leider nicht so oft dazu komme, meine Seite zu aktualisieren, könnt ihr so einfach sehen, wenn sich doch mal wieder was getan hat…

Ihr wisst nicht was ein RSS-Feed ist? Kein Problem: Ein RSS-Feed ist eine spezielle Seite eines Internetauftritts, die den Inhalt der Webseite in einem Format darstellt, das von Maschinen lesbar ist.
Es gibt dann spezielle Programme, sogenannte “RSS-Reader”, die diese Seite in regelmässigen Abständen abrufen und nachsehen ob sich etwas geändert hat. Dazu muss man den RSS-Feed den man verfolgen möchte einfach nur im Reader seiner Wahl abonnieren. Damit man solche RSS-Feeds leicht finden kann, hat man ein spezielles Symbol erfunden:

RSS Icon


Dieses Symbol seht ihr normalerweise in der Adress- oder Statusleiste eures Browsers. Wannimmer ihr dieses Symbol seht, gibt es dort wohl irgendwo einen RSS-Feed.
In den neueren Browsern ist eigentlich immer ein RSS-Feed-Reader integriert, man kann Feeds aber zum Beispiel auch in der Sidebar von Vista oder in seinem E-Mail-Programm abonnieren (zumindest Mozilla Thunderbird kann das). Unter KDE bietet sich das Programm Akregator an, dass ein Bestandteil der PIM-Suite Kontact ist.

Wer mehr zum Thema RSS wissen möchte, wird hier sicher fündig: Wikipedia

Ach ja, damit Ihr mal seht wie ich mir hier meinen Schreibtisch eingerichtet habe:

schreibtisch_imagelarge

Reblog this post [with Zemanta]

Steffen Schloenvoigt

Additional Information