Bernhard Häussner
Journal: Neueste Artikel erscheinen hier (Seite 6 von 23)

Drehmomente und Kräfte mit Processing

20.04.2010, 14:57

Zu meinem Blogeintrag mit Stills aus den Physik-Inspirierten Processing-Sketches wollte ich noch einiges zur Methodik, Physik und Umsetzung notieren.

Achtung: Was hier steht muss nicht alles wissenschaftlich korrekt sein. Ich habe zwar bei einem Mathe-/Physiklehrer über die Grundprinzipien referiert, das schließt natürlich Mängel nicht aus. Der interessierte und/oder fachundige Leser kann ja einen Kommentar hinterlassen, falls Klärungsbedarf besteht. Mir fehlt leider die Zeit, alles nachzuprüfen.

Einführung und Methodik

Dies ist ein Antwortversuch auf die Frage, wie sich ein starrer Körper verhält, wenn auf eine Kraft - nicht am Schwerpunkt - einwirkt. Ich versuchte das Zusammenspiel aus Rotation und Translation zu beschreiben.

Im Lehrplan Physik steht ein ganzer Haufen einfachster Formeln für ein paar wenige Spezialfälle. Man lernt recht viel über Kräfte, Drehmoment, Federn, Druck, Optik, ein bisschen Wärmelehre und Energie. Dann noch ein paar Dinge mit Elektronen, die man als Grundwissen für die Kernchemie braucht. Dumm nur, dass man das alles Stückchenweise beigebracht bekommt, und vor allem ohne dabei die Rechentechniken dahinter zu beherrschen. Integrale und Vektoren lernt man erst in der Mathematik der Kollegstufe komplett. Jetzt, wo ich einigermaßen rechnen kann, habe ich aber kein Physik mehr. Trotzdem will ich noch ein bisschen aus meinen Physik-Kenntnissen schöpfen, zumal sich mit physikalisch inspirierten Berechnungen interessante Simulationen am Computer erstellen lassen.

Erstaunlich zutreffend stellt Wolf Wagner in „Uni-Angst und Uni-Bluff“ fest:

»Das Lesen und Lernen ohne eigene Fragestellung ist also nicht nur ineffektiv. Es ist auch anstrengender, weil Langeweile die Konzentration erschwert «
Wagner, Wolf:
Uni-Angst und Uni-Bluff. Wie studieren und sich nicht verlieren,
Hamburg 2002. S. 105.

Da kam mir eine Fragestellung gerade recht. Die schiefe Ebene, der Kraftstoß und einiges anderes wurde ausführlichst behandelt. Jedoch greifen alle Kräfte (engl. force) immer am Schwerpunkt an. Zwar habe ich auch mal etwas vom Drehmoment (engl. torque) gehört und sogar die Veränderung des Trägheitsmoments (engl. rotational inertia) in Kindheitsjahren auf einem Karussell zu spüren bekommen, doch eine Synthese dieser sämtlichen Bewegungsparameter fehlte immer: Was passiert, wenn eine Kraft eben nicht am Schwerpunkt angreift?

Nach ein paar Feldversuchen hat man ungefähr das Bewegungsverhalten wie im folgenen Video im Kopf. Feldversuche hieß für mich mit einem Zirkel (genauer: seiner Nadel vorne) einen Bierdeckel auf dem Tisch herum schleifen. Wegen unpräziser Motorik und störender Reibung habe ich mich aber dann auf die Computersimulation verlagert. Um die Thesen zu bestätigen müsste ich das Experiment vielleicht auf einem Air Hockey filmen. So oder so ergibt sich wohl keine genaue experimentelle Bestätigung, aufgrund der feinen Abhängigkeit von der Startparametern. Jedoch kann man versuchen den Bewegungsablauf auf Energieerhaltung zu prüfen, wo die einzelnen Formeln experimentell bestätigt werden können.


Simulation mit 1 Scheibe

Man überlegt sich schnell, dass die Kraft wohl in eine Translations-Komponente und eine Rotations-Komponente zerlegt werden muss. Die Translationskomponente deutet vom Schwerpunkt weg (Der Physiker nennt das: Die Wirkungslinie verläuft durch den Schwerpunkt) und die Rotationskomponente verläuft senkrecht dazu. Mit der Translationskomponente kann man dann (hoffentlich) wie gewohnt weiter rechen. Also die Kraft wirkt auf die Masse und bewirkt eine Beschleunigung (engl. acceleration), die die Geschwindigkeit (engl. velocity) verändert, und diese wiederum die Position.

Bei dieser Prozedur muss man stets integrieren. Weil das nicht ganz einfach ist (und mit dem Computer nicht mit einfachsten Mitteln lösbar) bedient man sich der „Eulermethode“. Den Begriff habe ich so im Englischen gefunden - bei uns: „Methode der kleinen Schritte“. Pro „Frame“ addiert man die Beschleunigung auf die Geschwindigkeit, und diese wieder auf die Position, die Faktor Zeit wir im einfachsten Fall in Frames gemessen und fällt als 1 Frame weg. Dabei muss man sich um wenig rechnerisches kümmern, und wenn man die Schrittchen sehr klein macht (ich habe eine Euler-Auflösung eingebaut, die ich anpassen kann, um genauer oder schneller zu rechnen) extrapoliert sich das System irgendwann mit zufriedenstellender Genauigkeit.

Für die Drehung muss man die Restkraft einberechnen. Da funktionieren die altbekannten Formeln zum Drehmoment. Jedoch fehlte mir zunächst das Rotationsäquivalent zu Masse. Interessanterweise hängt dieses nicht nur von der Masse, sondern auch von der Entfernung zum Dreh-/Schwerpunkt ab. Grob gesagt: Doppelt so weit entfernte Masse macht viermal so viel Ärger (also ein n²-Gesetz, ähnlich dem vom Strahlenschutz bekannten Abstandsquadratgesetz nur nicht reziprok). Die Berechnung läuft also auf das Integrieren eines Parabel-Rotationskörpers (um die y-Achse) hinaus.

Jetzt wird zum ersten Mal einbezogen, wie der Körper eigentlich aussieht, also wie die Masse um den Schwerpunkt und die Drehachse verteilt ist. Da die Prozedur zur Übersicht zweidimensional bleiben soll und wegen der Berechnung des Trägheitsmoments wählt man eine Scheibe mit konstanter Dichte, also gleich verteilter Masse. Dann überlegt man sich das Trägheitsmoment:

Kleine Formelsammlung

Trägeheitsmoment J der Masse m mit Abstand zur Drehachse r einer Scheibe mit Volumen V, konstanter Dichte ρ, Radius r', Höhe h und Grundfläche A.

Trägeheitsmoment J der Masse m mit Abstand zur Drehachse r einer Scheibe mit Volumen V, konstanter Dichte ρ, Radius r', Höhe h und Grundfläche A.

Auf Wikipedia bin ich auf diese Vereinfachung aufmerksam geworden:

Mit diesem Trägheitsmoment kann man jetzt endlich rechnen. Wie die Natur so will, bzw. die Mathematik vereinfacht, verhalten sich Rotation und Translation analog:

Analogie von Rotation und Translation: <br/>Beschleunigung a ~ Winkelbeschleunigung α<br/>Geschwindigkeit v ~ Winkelgeschwindigkeit ω<br/>Position x ~ Ausrichtung φ<br/>Kraft F ~ Drehmoment M<br/>Masse m ~ Trägheitsmoment J

Analogie von Rotation und Translation:
Beschleunigung a ~ Winkelbeschleunigung α
Geschwindigkeit v ~ Winkelgeschwindigkeit ω
Position x ~ Ausrichtung φ
Kraft F ~ Drehmoment M
Masse m ~ Trägheitsmoment J

Weil konstante Kräfte eher unspektakulär sind und sich vor allem die betroffenen starren Körper unendlich weit bewegen, halten wir sie mit einer Feder im Rahmen.

Hookesches Gesetz mit Federhärte d und Auslenkung Δl

Hookesches Gesetz mit Federhärte d und Auslenkung Δl

Videos

Diese ganzen hübschen Formeln füttert man der JVM und bastelt mit Processing.org noch eine schöne graphische Darstellung.


Viele Scheiben, jeweils nur 3 Punkte markiert

Die physikalische Grundlage ist nicht mehr ganz so leicht zu erkennen:


Simulation mit einigen Scheiben

Mit etwas Spiel lassen sich die wildesten Sachen treiben:


Chaos theory experiment "Disk"

Natürlich waren neben den Formeln noch weitere Überlegungen möglich:

Möglich sind einige verschiedene Repräsentationen der Position, an der die Kräfte an den Scheiben angreifen. Einerseits die Position relativ zu Position und Drehung der Scheibe. Diese wird von den Federn gespeichert, damit sich ihr Angriffspunkt auf der Scheibe nicht verschiebt. [/p]

Diesen dreh-relativen Ortsvektor lassen die Federn jedoch von der Scheibe umrechnen in eine absolute Position, mit der sie dann den Abstand von ihrer eigenen, festen und absoluten Position berechnen können. Die Entfernung wird für die Berechnung des Kraftbetrags benötigt, der Positionsunterschied für die Richtung der Kraft.

Wenn die errechnete Kraft dann auf die Scheibe angewendet wird, wird diese jedoch wieder mit einer relativen Positionierung arbeiten. Da jedoch eine Drehung aller Kräfte einen Umweg bedeuten würde, bleibt die relative Position diesmal umgedreht.

Da von Vektoren lediglich der Betrag berechnet wird, muss man auch herausfinden, in welche Richtung der Kraftvektor für den Drehmoment zeigt, da sich hierdurch das Vorzeichen ändert. Dazu rotiert man den Positionsvektor um 90°. Wenn alle beide Koordinatenvorzeichen von diesem rotierten Vektor und dem Kraftvektor gleich sind, sind die Vektoren gleichgerichtet. Danach kann man das Vorzeichen für den Drehmoment wählen. Dann müssen die Drehmonte nur noch aufaddiert werden und mit dem Trägheitsmoment zur Winkelgeschwindigkeit und damit zur Drehung verrechnet werden.

Eigentlich ist das gesamte Verfahren eher unkompliziert, da es jedoch kein Schulstoff ist, und auch sonst kaum Dokumentiert, hat es doch einige Knobelarbeit gekostet, die richtigen Einfälle und Formeln zu kombinieren.

Erläuterungen zur Umsetzung

Interessant ist vielleicht noch die Java-Architektur dahinter. Die Scheiben implementieren ein Interface Pullable. Die Federn bekommen eine Scheibe zugewiesen (die ziehbar ist), könnten theoretisch aber auch alles andere ziehen, da alle Berechnungen, die von der Scheibe abhängen dort Eingekapselt sind und von der Feder nur die im Interface festgelegten allgemeinen Funktionen verwendet werden.

Auch die Marker, verantwortlich für das Ziehen der Linien, bekommen ein ziehbares Obejekt zugewiesen. Denn sie verwenden das selbe Interface wie die Federn um ihre Absolutposition zu berechnen von einem auf der Scheibe fixierten Punkt aus. Zusätzlich zur Scheibe bekommen sie ein Objekt delegiert, das das Interface Coorddrawer implementiert, also Koordinaten zeichnen kann.

Ich habe zwei verschiedene Coorddrawer implementiert. Im letzten Video verwende ich zwei primitivere Marker. Der rote zeichnet nur jeweils einen Punkt, der blaue merkt sich die letzte gezeichnete Koordinate und zieht dann eine Linie von ihr.

Der Koordinatenzeichner des anderen künstlerischen Videos wird nicht nur mit einer Farbe vorkonfiguriert, sondern merkt sich auch einen „Rattenschwanz“ von 2000 Koordinaten, sodass er nach dem Löschen der Zeichenfläche wieder eine lange Linie nachzeichnen kann.

Was ich auf physikalischer Seite natürlich ganz außen vor gehalten habe sind Impuls und Reibung, jedoch lässt sich das wohl auch noch leicht kombinieren.

In einem gesonderten Blogeintrag gibt es noch ein paar Stills aus den Physik-Inspirierten Processing-Sketches.

Kommentare: 6 Einträge

Howto: Start using Subversion

31.01.2010, 14:46
Subversion

Subversion

Sometimes you want to start using Subversion code control with an existing project. This tutorial explains the steps required to create a repository and add the files of the existing project.

Start by creating a repository:

svnadmin create /dir/to/store/repo/repository-name

This will create a directory „repository-name“ containing the database of files and revisions.

Then let's add some internal directories to our repository:

svn mkdir file:///dir/to/store/repo/repository-name/trunk \
 -m "Creating repo directory structure"

Now that you have created the repo-directory that should contain all the files, import the existing project files. Start by checking out the empty repo-dir to into your project dir. This will make your project dir a working copy (that is: create a dir named „.svn“ containig some internal info) but won't change anything else.

cd /existing/poject/dir
svn checkout file:///dir/to/store/repo/repository-name/trunk .

Then go on adding (or planing to add) all the files:

svn add *

This command will list all the files that will be loaded into the repository. You can always look at the planned changes with svn st.

You probably want to exclude some files such as configuration files, runtime data. You just have to revert the add-command again:

svn revert runtimedata # exclude whole dir
svn revert config/my.ini # exclude single file

Then apply the changes to your repository (commit it):

svn commit \
-m "initial import"

And that's it. You project is added to the repository without extra files. That can be crucial if your runtime data has a huge file size. If you're paranoid or just curious check the repository for success:

svnlook tree /dir/to/store/repo/repository-name

This should show the imported directory tree. Now you can start making changes to your files and commit them as usual.

vim app.cpp
svn commit -m "typo"
svn log -r 1:HEAD #show full revision history

If you ever got stuck, you may use the built in help:

svn help #list commands
svn help commit #list options
svnlook help tree #works too

I will start using subversion for everything... soon.

Kommentare: 4 Einträge

Tags!?

31.01.2010, 12:31
Visualisierung von Tag-Beziehungen
Visualisierung von Tag-Beziehungen

Wann solle man Tags benutzen? Wann nicht? Warum überhaupt? Wie bereichern Tags meine Webseiten? All diese Fragen habe ich mir gestellt, als ich laß, dass Robert Hartl sich gegen Tags ausspricht und zwar zugunsten der „Einfachheit“. Ich hatte die Tags eigentlich immer für eine Bereicherung gehalten, nicht nur für reinen Web-2.0-Trend. Und warum?

Ich achte durchaus minimalistische Konzepte. Zu viele Funktionen sind verwirrend (feature creep). Aber Webdesign sollte wohl nicht möglichst minimalistisch sein, wie etwa about:blank, sondern eher möglichst minimalistisch aussehen. Das bedeutet Features werden vor dem flüchtigen Betrachter „versteckt“ und lenken nicht ab, wenn jedoch eine bestimmte Funktion gesucht wird, war sie die ganze Zeit dort zu erreichen, wo man sie erwartet hat. Kurze Suche (intuitiv) und kleine Ablenkung (übersichtlich) sind beide erstrebenswert. Da gilt es Kompromisse zu finden. Am einfachsten ist es Funktionsumfang, der nicht gefragt ist, zu entfernen. Aber sind Tags nutzlos?

Zunächst sollten wir uns axiomaisch auf eine sinvolle Definition des Begriffs „Tag“ einigen. Tags sind Schlagwörter, die Informationsstücken, wie Blogartikeln, zugeordnet werden, in einer N:M-Relation. In meinem Blogdesign verwende ich als „Übersetzung“ meist „Themen“. Heute ist mir aufgefallen, auch mashable.com nutzt „Topics“. Der Begriff des Themas weckt schon einige Assoziationen: Ein Thema ist etwas großes, umfassendes. Tags, die nur mit einer Minimalanzahl Informationsstückchen zu verbinden sind, sind irreführend; ebenso mehrere Tags (fast) das selbe Thema vertretend. Dann ist die Zuordnung zu schwammig, ein einheitlicher Überbegriff und bessere Differenzierung ist gefragt. Ihre volle Stärke entfalten Tags, wenn sich ihre Themengebiete nicht zu viel, aber auch nicht gar nicht überschneiden.

Robert Hartl benutzt in seinem Blog „Kategorien“, die ich mit dem Konzept der Tags beschreiben würde, denn der Begriff „Kategorien“ kann mit Ausschließlichkeit konnotiert werden und ein Eintrag ist nicht nur einer Kategorie zugeordnet. Nur finden sich diese Kategorien als hierarchische Gliederungspunkte in der Navigation. Außerdem ist die Anzahl der Kategorien klein. Sogar die Kategorien eines Eintrags werden in der Art eines Breadcrumbs angezeigt. Durch all diese Design-Signale erscheinen uns die Kategorien wie paarweise disjunkte Mengen, haben aber bei näherem Betrachten große Überschneidungen, die bei Kategorien unerwartet sind, hier liegt die Domäne der Tags. Tags sind nicht als Kategorie, etwa in Navigationsmenüs zu missbrauchen, auch nicht konzeptionell.

Die konventionelle Darstellung des Konzepts „Tag“ ist die Tagcloud, in der die Tags, meist alphabetisch angeordnet, je größer Dargestellt werden, desto mehr Einträge mit ihnen verknüpft sind. Diese Darstellung gibt dem Leser eine Übersicht, zu welchen Themen die meisten Informationen verfügbar sind. Gerade bei Informationsquellen mit sehr diversen Themen, wie einer privaten Website, kann der Leser allein an der Label-Identität selten erkennen, woran er ist. Durch eine alphabetische Sortierung wird ein gezielter Suchvorgang nach genau einem Interessengebiet erleichtert.

Mashable.com: Tagcoud mit Topics dezent im Foooter platziert

Mashable.com: Tagcoud mit Topics dezent im Foooter platziert

Um die „Einfachheit“ beizubehalten, zeige ich in meiner Sidebar nur ein paar wenige, wichtige Tags an, denn zu diesen umfangreichen Themen ist beim Stöbern, also dem erkundenden Surfen, mit hoher Wahrscheinlichkeit „für jeden etwas dabei“. Nahe findet sich der Link zur ausführlichen Tagcloud mit vollem Umfang auf einer eigenen Seite, denn es sammeln sich doch einige Tags an, obwohl ich versuche die Zahl der Tags klein zu halten, nicht nur aus ideologischer „Einfachheit“, sondern um die oben genannten Forderungen der klaren Differenzierung und Singularität zu erfüllen.

Dabei bekomme ich leider einen Nachteil der Tags zu spüren: den erheblichen Pflegeaufwand. Aufgrund ihrer Größe (zweidimensionale Fläche zurzeit 5696) und rekursiven Ähnlichkeitsberechnungen sind die Tagbeziehungen schwierig zu analysieren (ich helfe mit mir einer 3D-Tagcloud mit Processing) und darum auch schwierig herzustellen, ohne dabei zu viel Redundanz zu schaffen. Mit wachsender Anzahl wird die Gefahr einer Vernachlässigung seltener und alter Tags immer größer. Da jedoch auch die Anzahl analysierbarer Verbindungen steigt, kann der Computer immer besser helfen. Implementiert habe ich mir eine Funktion die, nachdem ich einige Tags zu dem Eintrag gewählt habe, über andere Einträge verknüpfte Tags vorschlägt. Noch raffinierter wäre es, Tags von Einträgen vorzuschlagen, die nach N-Gramm-Analyse einen hohen Dice-Koeffizient aufweisen. Selbst dann ist das Anlegen neuer Tags noch nicht einfach.

Glücklicherweise wächst mit mehr Pflege auch der Informationsgehalt der Tags. Ich habe stundenlang das selbstorganisierende 3D-Clustering meiner Tags angesehen, durch die Zufallsstartpositionen ergibt sich jedes Mal eine neue Anordnung, immer entdeckte ich erstaunliche Systematik in der Anordnung. Der Computer scheint (gewisse Aspekte) meines eigenen Werks besser zu kennen als ich selbst.

Wie selbstverständlich argumentiert Robert Hartl mit der möglichen Überforderung neuer User mit der (für das schnelllebige Internet schon traditionellen) Tagcloud. Dies scheint mir jedoch schon sehr bald nicht mehr zeitgemäß. Die junge Internet-Generation erweist sich Konzeptverständig und Medienkompetent. Das Argument erübrigt sich also schon bald aus sozialen und biologischen Gründen. Polemisch formuliert: Die Zielgruppe der Internetseiten sind Internetnutzer, also warum auf Offliner Rücksicht nehmen? Ich frage mich, ob man bei der Einführung der allgemeinen Schulpflicht begonnen hat, beim Schreiben auf Analphabeten-Verständlichkeit zu achten. Um wieder auf die sachliche Ebene zurückzukehren: Erfahrene User wollen auch ihre „Power-Tools“, finden diese aber bei geschickter Gestaltung auch wenn die Zusatzfunktionen die unbeholfenen Benutzer nicht verschrecken.

Bei Tag-Kombinationen mit boolescher Algebra wird es schon eher kompliziert. Dass auch das übersichtlich machbar ist, beweist einer der Vorreiter in Sachen Social-Tagging, delicious:

Vergessen darf man auch nicht, dass das Konzept des Taggings eigentlich nicht neu ist: In Bibliotheken (Ja, mit Büchern und so) werden die Medien im Katalog mit Schlagwörtern versehen, sodass der Benutzer Literatur zu einem bestimmten Thema finden kann. Keine Bibliothek verzichtet deshalb auf Kategorien wie Fachbereiche, aber diese sind eben ausreichend groß und klar gewählt, so dass sich (meistens) keine Konflikte ergeben. Zusätzlich braucht man jedoch eine weitere Organisationsmöglichkeit im Kleinen. Weil sich hier die Bereiche überschneiden wählt man Schlagworte, die sich nicht gegenseitig ausschließen.

Die Nische in der die Tags einzusetzen sind ist also die filigrane Themenzuordnung. Und die Internet-Form der Schlagwörter „Tags“ mit Erscheinungsbild „Tagcloud“ wird vielleicht bald ein unumstrittenes Werkzeug dazu sein.

Kommentare: keine

Pimp deine MOTD

26.01.2010, 10:50

Jedes mal, wenn man eine Shell öffnet und sich einloggt, begrüßt die Message of the Day. Diese habe ich mit einem „coolen“ Schriftzug „aufgewertet“.

Viele Systemadministratoren lassen die MOTD einfach leer. Ich habe bisher meist einen Begrüßungssatz hineingesetzt, so dass ich (und andere), beim Arbeiten an vielen Computern gleichzeitig über remote shells, wie ssh, leichter die Übersicht behalten kann. Bei Computern, die von vielen verschiedenen Anwendern benutzt werden (z.B. an der Uni) findet man dort Benutzungsregeln, Hinweise auf Downtime und was die IT-Abteilung gerade neues installiert hat. Wenn der Administrator einen Clown gefrühstückt hat, auch mal einen guten Witz.

Als ich vor kurzem frisch eingeloggt auf ein langwieriges rekursives grep wartete, habe ich mir nach einem Routinecheck sämtlicher Logfiles beim Betrachten der nicht sehr kreativen MOTD gedacht, ich könnte sie doch etwas ausschmücken, „make it pop out“, damit die Programmierer zu Beginn ihrer Arbeit motivierend begrüßt werden.

Wie wäre es mit einem ASCII-Art-Schriftzug? Bei Google ganz oben stand der ASCII-Generator. Man kann bei diesem Generator auch eine Schrift „_all fonts with your text_“ auswählen, sodass man nicht ständig klicken muss. Damit die Chefetage nicht die ganze IT-Fraktion als kindisch abstempelt, wählte ich die Schrift „big“.

Dann habe ich mir kurz die Privilegien verschafft, um die /etc/motd zu bearbeiten, und siehe da... jeder, der sich seither auf dem Server tummelt, bekommt sein halbes Terminal mit einem protzigen Schriftzug vollgespammt. Das scheint glücklicherweise niemanden gestört zu haben... eher im Gegenteil. Zumindest passiert jetzt hoffentlich nicht mehr das wohl jedem bekannte „Oh ich habe gedacht ich arbeite auf Aquarium.Buckelwal und aus versehen auf Pool.Badeente die ganzen Backups gelöscht“. Und nicht vergessen:

 o8o      .                                   oooo                 .o. 
 `"'    .o8                                   `888                 888 
oooo  .o888oo    oooo d8b  .ooooo.   .ooooo.   888  oooo   .oooo.o 888 
`888    888      `888""8P d88' `88b d88' `"Y8  888 .8P'   d88(  "8 Y8P 
 888    888       888     888   888 888        888888.    `"Y88b.  `8' 
 888    888 .     888     888   888 888   .o8  888 `88b.  o.  )88b .o. 
o888o   "888"    d888b    `Y8bod8P' `Y8bod8P' o888o o888o 8""888P' Y8P 

Oh das ist ja zweideutig...

Kommentare: keine

Servicemenüs für Dolphin (neu)

15.01.2010, 18:44

Wenn man häufig ein paar einfache Scripte über verschiedene Dateien laufen lassen will, kann man die ensprechenden Befehle mit Dolphin über ein frei einstellbares Servicemenü aufrufen. Man benötigt lediglich eine besonders formatierte .desktop-Datei und dann kann man das Skript in Zukunft über das Kontextmenü aufrufen.

Die Datei sieht z.B. so aus:

[Desktop Entry]
Encoding=UTF-8
Type=Service
ServiceTypes=KonqPopupMenu/Plugin,all/allfiles
Actions=timeBu

[Desktop Action timeBu]
Name=Create backup
Name[de]=Backup erstellen
Icon=document-revert
Exec=cp %U %U.`date +%%Y-%%m-%%d.%%H-%%M-%%S` && kdialog --title "Backup" --passivepopup "Backup of `basename %U` created. " 5

Unter ServiceTypes kann man die mine-typen angeben, bei denen das Script im Aktionen-Menü angezeigt werden soll, unter Name steht der Text, der dann angezeigt wird. Man kann Übersetzungen anbieten. Das Icon ist am besten eines der KDE-Icons. Nach Exec steht dann der Code, der ausgeführt werden soll. Mit %U lässt sich der Dateiname der ausgewählten Datei referenzieren, %% wird zu % umgewandelt. Diese Datei kommt dann in den Ordner:

~/.kde4/share/kde4/services/ServiceMenus

Neben dem Beispiel habe ich auch noch ein Menüeintrag erstellt, um optipng auszuführen:

auf ähnliche weise lassen sich auch andere praktische Sachen verwirklichen. Ich habe z.B. noch Servicemenüs für Konqueror erstellt, die sich mit einem Skript konvertieren lassen. Eine paar duzend Servicemenüs finden sich auch auf kde-apps.org.

Kommentare: keine
 
Χρόνογραφ
© 2008-2017 by Bernhard Häussner - Impressum - Login
Kurz-Link zu dieser Seite: http://1-co.de/bj