Java String in Base64 konvertieren

Posted: November 26th, 2013 | Filed under: Java, Programmieren, Tutorials | Tags: , , , , , , , | No Comments »

Mittels Base64 kann man beliebige Binärdaten oder Strings in eine Zeichenfolge aus lesbaren ASCII-Zeichen umwandeln. Momentan setzte ich Base64 ein, um sonderzeichenbehaftet Datei-Pfade in “harmlose” Strings umzuwandeln.  Ein wenig erstaunt hat mich, dass Java dies von Haus aus nicht kann.

Um ein String in Java problemlos in eine Base64-Zeichenketten umzuwandeln könnt ihr die Bibliothek commons-codec aus dem Hause Apache verwenden:

Herunteladen der Bibliothek

Ladet die aktuelle Version der Bibliothek hier runter:

http://commons.apache.org/proper/commons-codec/download_codec.cgi

Zum Beispiel diese hier: http://apache.mirror.iphh.net//commons/codec/binaries/commons-codec-1.8-bin.zip

Entpacken

In der Zip-Datei befinden sich häufig viele *.jar-Dateien, ihr benötigt lediglich die rot markiert Datei. Entpackt diese.

image

Bibliothek ins Projekt importieren

Jetzt müsst ihr die Bibliothek in Form der Jar-Datei in euer Projekt importieren. In eclipse könnt ihr das über die Projekteigenschaften umsetzen. Idealerweise kopiert ihr eure verwendeten Bibliotheken in ein Verzeichnis innerhalb des Projektes, zum Beispiel in den Ordner Libs: [projektname]\lib\commons-codec-1.8.jar

image

image

image

image

image

String in Base64

Nachdem ihr die Bibliothek commons-codecs erfolgreich eingebunden habt, könnt ihr wie folgt Strings nach Base64 codieren.

import org.apache.commons.codec.binary.Base64;

public class ConvertStringToBase64 {

    public static void main(String[] args) {

        String text = "Hallo, was geht ab!";

        // Einen String in Base64 konvertieren (encode)
        String base64 = new String(Base64.encodeBase64(text.getBytes()));

        System.out.println(base64);

        // Einen Base64-String wieder zurück konvertieren (decode)
        String text2 = new String(Base64.decodeBase64(base64));

        System.out.println(text2);
    }
}

Konsolenausgabe:

SGFsbG8sIHdhcyBnZWh0IGFiIQ==
Hallo, was geht ab!

Das war’s auch schon, hoffe ich konnte dem ein oder anderen von euch helfen  😉


Java: Internetseiten auslesen – Web Scraping mit jSoup

Posted: November 4th, 2013 | Filed under: Internet, Java, Programmieren, Tutorials | Tags: , , , , , , , , | 2 Comments »

imageUm Informationen aus einer Webseite heraus zu extrahieren (engl. web scraping), gibt es viele verschiedene Vorgehensweisen und Frameworks. Nach langer Suche bin ich endlich auf ein einfaches und gut dokumentiertes Framework gestoßen: jSoup

jSoup ist eine Java-Bibliothek mit der es möglich ist mittels CSS-Selektoren und dem Document Object Model (DOM), Seiteninhalte extrem einfach abzugreifen. Das folgende Beispiel erläutert die Funktionsweise des Frameworks und die Einfachheit der Handhabung.

Webseite analysieren

Ziel unseres Tutorial ist es, auf der Wikipedia Startseite die Ereignisse der “Was geschah am <aktuelles Datum>?”-Kategorie auszulesen.

Mit Hilfe der Debug-Konsole im Google Chrome Browser und dem Inspektor ist es möglich die HTML-Struktur zu genau zu analysieren. Unsere Informationen die wir abgreifen möchten befinden sich in einer Liste innerhalb des DIV mit der Id hauptseite-ereignisse.

image

Beispiel – Wikipedia parsen

Herunterladen könnt ihr die Java-Bibliothek jSoup hier: http://jsoup.org/download

Nachdem ihr die .jar-Datei jsoup-X.X.X.jar in euer Projekt eingebunden habt (so wird’s gemacht http://www.javabeginners.de/Grundlagen/Bibliothek_einbinden.php), könnt die das Framework wie folgt verwenden:

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class jSoupExample {

    public static void main(String[] args) {

        try {
            // Wikipedia Seite laden
            Document doc = Jsoup.connect("http://de.wikipedia.org/wiki/Wikipedia:Hauptseite").get();
           
            // Alle Listenelemente über den entsprechenden Selektor markieren
            // Ein Leerzeichen initiert ein Kindelement des Elternelementes (links)
            // div#hauptseite-ergeignisse  => Der DIV mit der ID hauptseite-ereignisse (# => id)
            // div.inhalt => Der DIV mit der Klasse inhalt (. => class)
            Elements ereignisse = doc.select("div#hauptseite-ereignisse div.inhalt ul li"); 

            // Selektierte Elemente ausgeben ohne HTML-Tags
            for (Element e : ereignisse) {
                System.out.println(e.text());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Konsolenausgabe

Führt man das obige Quellcode-Stück aus, so wird unser gewünschter Inhalt zeilenweise wie folgt ausgegeben:

1763 – In Havanna wird mit dem Bau der Festungsanlage San Carlos de La Cabaña begonnen.
1813 – Der an der badischen Revolution von 1848/49 beteiligte Politiker Lorenz Brentano, nach deren Scheitern im US-Exil und dort 1877 bis 1879 Kongress­abgeordneter, kommt zur Welt.
1913 – Am Königlichen Hoftheater Stuttgart wird Walter Braunfels’ Oper Ulenspiegel uraufgeführt.
1913 – Ein von Marseille kommender Schnellzug kollidiert bei Melun mit einem Postzug.
1988 – Die Uraufführung von Thomas Bernhards Drama Heldenplatz am Wiener Burgtheater löst einen Skandal aus.

Alternativen

Viel Spaß beim Auslesen!


Ubuntu: Oracle JDK7 via Konsole installieren

Posted: November 3rd, 2013 | Filed under: Programmieren, Tutorials | Tags: , , , , , , , | 1 Comment »

oracle_java-100026145-largeDa die vorinstallierte JavaVM-Implementierung OpenJDK häufig Probleme macht habe ich mich dazu entschlossen auf meinem Server Oracle JDK7 zu installieren. Standardmäßig sind diese Pakete seltsamerweise jedoch nicht in den normalen Ubuntu Repos zu finden. Hier eine kleine Anleitung wie ihr Oracles JDK7 schnell und einfach dennoch per APT-Paketverwaltung installieren könnt.

Anleitung

Paketquelle von webupd8team hinzufügen:

sudo add-apt-repository ppa:webupd8team/java

Neueinlesen der Paketlisten:

sudo apt-get update

Oracle JDK7 installieren:

sudo apt-get install oracle-jdk7-installer

image

Oracle Java7 aktivieren, indem ihr die entsprechende VM per Eingabe auswählt (siehe Screenshot 2):

sudo update-alternatives –-config java

image


Java Liste mit Strings alphabetisch auf- bzw. absteigend sortieren

Posted: März 21st, 2013 | Filed under: Java, Programmieren, Tutorials | Tags: , , , , , , , , , | 8 Comments »

In Zukunft will ich mal wieder öfters was zum Thema Java schreiben. Ich werde versuchen ein Sammelsurium an Java Grundlagen zu erarbeiten so dass nach und nach eine Art Nachschlagewerk entsteht.

Anfangen will ich mit dem Sortieren von Listen welche Strings enthalten. Über die Klasse Collections besteht die Möglichkeit Listen automatisiert zu sortieren bzw. neu anzuordnen. Das folgende Beispiel beschreibt wie einfach dies zu realisieren ist.

Beispiel – ArrayList alphabetisch sortieren


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class SortableExample {
  public static void main(String[] args) {
    
    /* Liste anlegen, die Strings enthält */
    List<String> namen = new ArrayList<String>();
    
    /* Namen hinzufügen */
    namen.add("Peter");
    namen.add("Frank");
    namen.add("Hans");
    
    /* Liste alphabetisch aufsteigend sortieren (a...z) */
    Collections.sort(namen);
    
    /* Ausgabe: Frank Hans Peter */
    for(String name : namen){
      System.out.println(name);
    }
    
    /* Liste alphabetisch absteigend sortieren (z...a) */
    Collections.sort(namen);
    Collections.reverse(namen);
    
    /* Ausgabe: Peter Hans Frank */
    for(String name : namen){
      System.out.println(name);
    }
  }
}

UML Diagramm aus Java Code erzeugen

Posted: Januar 8th, 2013 | Filed under: Java, Software | Tags: , , , | 1 Comment »

Aus Dokumentationsgründen ist es oft notwendig aus bestehendem Quellcode UML-Diagramme zu erzeugen. Seit einiger Zeit benutze ich das schwedische Tool EssModel, welches einfach und schnell zu bedienen ist.

Über den “File > Open folder …” könnt ihr einfach den Source-Ordner eures Java-Projekts angeben.

image

Um alle Assoziationen und Vererbungen im UML-Diagramm anzuzeigen, sollte in der Hauptansicht unter Connections folgender Wert ausgewählt werden:

image

Unter dem Menüpunkt “Diagram > Save as picture…” kann man das ausgewählte Diagramm schließlich exportieren.

Download

Herunterladen könnt ihr EssModel hier: http://essmodel.sourceforge.net/