Kategorie: Programmierung

RSyntaxTextArea ist eine Java-Komponente, die einem eine erweiterte Textarea zur Verfügung stellt. Diese unterstützt das Syntaxhighlighting von rund 25 Sprachen. Ebenfalls in der Bibliothek enthalten ist eine Komponente zur Realisierung von CodeCompletion.

Ein einfaches Beispiel:

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import org.fife.ui.rsyntaxtextarea.CodeTemplateManager;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
import org.fife.ui.rsyntaxtextarea.templates.CodeTemplate;
import org.fife.ui.rsyntaxtextarea.templates.StaticCodeTemplate;
import org.fife.ui.rtextarea.RTextScrollPane;

public class RSyntaxTextAreaTest extends JFrame{

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                RSyntaxTextAreaTest theRSyntaxTextAreaTest = new RSyntaxTextAreaTest();
                theRSyntaxTextAreaTest.setVisible(true);
            }
        });

    }

    private RSyntaxTextAreaTest() {
        JPanel theJPanel = new JPanel(new BorderLayout());

        RSyntaxTextArea theTextArea = new RSyntaxTextArea();
        theTextArea.setSyntaxEditingStyle( SyntaxConstants.SYNTAX_STYLE_JAVA);
        RTextScrollPane theRTextScrollPane = new RTextScrollPane(theTextArea);
        theJPanel.add(theRTextScrollPane);

        RSyntaxTextArea.setTemplatesEnabled(true);
        CodeTemplateManager theCodeTemplateManager = RSyntaxTextArea.getCodeTemplateManager();

        CodeTemplate theCodeTemplate = new StaticCodeTemplate("sout", "System.out.println(", ");");
        theCodeTemplateManager.addTemplate(theCodeTemplate);

        setContentPane(theJPanel);
        setTitle("Test mit RSyntaxTextArea");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(400, 300);
        setLocationRelativeTo(null);
    }

}

Und so kann dann das Ergenis aussehen:

rsntaxtextarea

Die Bibliothek steht aktuell in Version 1.4.0 zur Verfügung und wurde unter der LGPL veröffentlicht. Das Projekt RText zeigt das Zusammenspiel der einzelnen Komponenten in einem noch größerem Zusammenhang.

Twitter hat ja bekanntlicherweise eine API mit Hilfe derer der Status geupdatet werden kann, Timelines gelesen werden können und so weiter. Möchte man diese API nun in einem Java-Programm nutzen, so muss man das Rad nicht neu erfinden, sondern kann auf fertige Libraries zurück greifen, die einem Wrapper-Methoden für die gängigsten Aufgaben zur Verfügung stellen.

Eine dieser Libraries ist Twitter4J. Komplett in Java implementiert benötigt es selber keine weiteren Bibliotheken. Die Handhabung ist denkbar einfach. So kann man schon mit zwei Zeilen den eigenen Status updaten:

Twitter theTwitter = new Twitter(username, passwort);
try {
      Status theStatus = theTwitter.updateStatus("Ich teste Twitter4J");
} catch (TwitterException e) {
      e.printStackTrace();
}

Das Lesen einer Timeline ist dann ähnlich einfach:

Twitter theTwitter = new Twitter(username, passwort);
List<Status> theStatuses = null;
try {
      theStatuses = theTwitter.getFriendsTimeline();
} catch (TwitterException e) {
      e.printStackTrace();
}
for (Status theStatus : theStatuses) {
      System.out.println(theStatus.getUser().getScreenName() + ":" + theStatus.getText());
}

Das sind nur zwei Beispiele, so kann man auch problemlos weitere Timelines laden oder auch Direktnachrichten schreiben. Wer auf die Eingabe von Benutzername / Passwort verzichten will / kann / muss, dem sei OAuth empfohlen, denn auch dieses Protokoll zur Benutzerautorisierung wird von Twitter4J unterstützt.

Twitter4J ist ist unter einer BSD-artigen Lizenz veröffentlicht und besteht aktuell in der Version 2.0.10.

Da ich kürzlich ein Video erstellen durfte, musste ich mich logischerweise auf die Suche nach einem geeigneten Programm für Linux machen. Recht bald bin ich da auf Kdenlive gestoßen, welches einen positiven Eindruck machte.

Das Prinzip ist einfach erklärt. Man kann aus verschiedenen Ton- und Bildspuren (dabei ist es egal, ob das Ganze nun ein Foto oder ein schon ein existentes Video ist) einen Film zusammen stellen. Bestehende Filme können bearbeiten werden und so zum Beispiel mit den verschiedensten Effekten und Übergängen versehen werden. Den so entstandenen Spaß kann man sich in der Vorschau angucken und letztlich zu einem kompletten Film rendern. Wobei die Ausgabeformate vielfältig sind.

kdenlive

Das Ganze hat recht gut geklappt, wobei ich keine Vergleichsmöglichkeiten habe. Einzig ein paar winzige Stolpersteine gab es. So kam es zum Beispiel unregelmäßig zu Abstürzen, die Sache mit den Übergängen hat sich mir nicht gleich erschlossen (Bilder, zwischen denen es einen Übergang geben soll, müssen sich zeitlich überschneiden), es gab ein paar Darstellungsfehler im Programm oder in der Vorschau kam der Ton nicht ganz nach. Was letztlich mit meinem System und / oder meinem System zusammen hing, kann ich jetzt nicht genau sagen. ;)

Das folgende Video gibt noch mal einen schnellen Überblick über die Grundfunktionen von Kdenlive:

Aus meiner Sicht ist das Programm vollkommen ausreichend für die einfachen Ansprüche. Man findet sich gut und schnell zurecht und irgendwann hat man dann den Dreh auch raus. Das das Programm noch dazu unter einer OpenSource-Lizenz steht, rundet das Bild ab. Verfügbar ist Kdenlive aktuell in Version 0.7.5 für Linux, Mac OS X und FreeBSD.

Drüben bei PHP hates me gibt es eine nette kleine Liste, welche wichtige Kriterien die bei der Auswahl des richtigen Frameworks greifen sollten auflistet.  Auch wenn der Artikel ein "PHP" in der Überschrift hat, lassen sich diese Kriterien doch auch problemlos auf andere Sprachen / Arten von Frameworks / Bibliotheken übertragen.

Mit GUIDE ist ein GUI Builder (irgendwie n blödes Wort) für Java Oberflächen in einer Beta-Version verfügbar. Das Dingen ist wirklich sehr einfach zu handhaben, hatte auf den ersten Blick keine schwerwiegenden Bugs und ist meiner Meinung nach sehr komfortabel und schnell. Der einzige Nachteil ist der, dass es ein Closed-Source-Projekt ist und das Programm letztlich Geld kosten soll.

guide

via Biggle

Hier habe ich ein kleines Snippet gefunden, wie man mit Java einen Screenshot des Desktops machen kann und mal ein klein wenig abgewandelt:

package test;

import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class Main {

    public static void main(String[] args) {
        try {
            Robot theRobot = new Robot();
            Rectangle theRectangle = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
            BufferedImage theBufferedImage = theRobot.createScreenCapture(theRectangle);
            ImageIO.write(theBufferedImage, "png", new File("/home/rtauchnitz/blubb.png"));
        } catch (AWTException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

Aber irgendwie hat das kleine Programm ein Problem mit KDE. Teile des Bildschirms wollte es nämlich nicht mit ins Bild packen...

Das Thema Aspektorientierte Programmierung steht bei mir schon seit einer kleinen Weile aus der "Guck-es-dir-mal-genauer-an"-Liste. Da kommt mir dieser Artikel gerade recht. Einfach mal durchlesen und die Vorzüge des Ganzen kennen lernen. Um es kurz zu machen - es geht dabei im Wesentlichen darum, bestimmte Routinen, Codesegmente (wie auch immer) in Code einzuweben, was durchaus vorteilhaft sein kann für wiederkehrende Aufgaben.

zuletzt bei Twitter

Twitter Updates